summaryrefslogtreecommitdiff
path: root/src/client/app/common/scripts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-29 15:13:04 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-29 15:13:04 +0900
commitc6b64e57f1812ae63abc57ae9d347fc0eee9db61 (patch)
treed59781ff7cdb84e7a05acb1cbd092ca5f0b1deb5 /src/client/app/common/scripts
parentImprove usability (diff)
downloadsharkey-c6b64e57f1812ae63abc57ae9d347fc0eee9db61.tar.gz
sharkey-c6b64e57f1812ae63abc57ae9d347fc0eee9db61.tar.bz2
sharkey-c6b64e57f1812ae63abc57ae9d347fc0eee9db61.zip
いくつかの文字列関数を追加
Diffstat (limited to 'src/client/app/common/scripts')
-rw-r--r--src/client/app/common/scripts/aiscript.ts48
1 files changed, 28 insertions, 20 deletions
diff --git a/src/client/app/common/scripts/aiscript.ts b/src/client/app/common/scripts/aiscript.ts
index a3e499fc88..fe9a295000 100644
--- a/src/client/app/common/scripts/aiscript.ts
+++ b/src/client/app/common/scripts/aiscript.ts
@@ -51,26 +51,30 @@ type TypeError = {
};
const funcDefs = {
- if: { in: ['boolean', 0, 0], out: 0, category: 'flow', icon: faShareAlt, },
- not: { in: ['boolean'], out: 'boolean', category: 'logical', icon: faFlag, },
- or: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: faFlag, },
- and: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: faFlag, },
- add: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faPlus, },
- subtract: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faMinus, },
- multiply: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faTimes, },
- divide: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faDivide, },
- eq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: faEquals, },
- notEq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: faNotEqual, },
- gt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faGreaterThan, },
- lt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faLessThan, },
- gtEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faGreaterThanEqual, },
- ltEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faLessThanEqual, },
- rannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: faDice, },
- random: { in: ['number'], out: 'boolean', category: 'random', icon: faDice, },
- randomPick: { in: [0], out: 0, category: 'random', icon: faDice, },
- dailyRannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: faDice, },
- dailyRandom: { in: ['number'], out: 'boolean', category: 'random', icon: faDice, },
- dailyRandomPick: { in: [0], out: 0, category: 'random', icon: faDice, },
+ if: { in: ['boolean', 0, 0], out: 0, category: 'flow', icon: faShareAlt, },
+ not: { in: ['boolean'], out: 'boolean', category: 'logical', icon: faFlag, },
+ or: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: faFlag, },
+ and: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: faFlag, },
+ add: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faPlus, },
+ subtract: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faMinus, },
+ multiply: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faTimes, },
+ divide: { in: ['number', 'number'], out: 'number', category: 'operation', icon: faDivide, },
+ eq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: faEquals, },
+ notEq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: faNotEqual, },
+ gt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faGreaterThan, },
+ lt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faLessThan, },
+ gtEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faGreaterThanEqual, },
+ ltEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: faLessThanEqual, },
+ strLen: { in: ['string'], out: 'number', category: 'text', icon: faQuoteRight, },
+ strPick: { in: ['string', 'number'], out: 'string', category: 'text', icon: faQuoteRight, },
+ strReplace: { in: ['string', 'string', 'string'], out: 'string', category: 'text', icon: faQuoteRight, },
+ strReverse: { in: ['string'], out: 'string', category: 'text', icon: faQuoteRight, },
+ rannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: faDice, },
+ random: { in: ['number'], out: 'boolean', category: 'random', icon: faDice, },
+ randomPick: { in: [0], out: 0, category: 'random', icon: faDice, },
+ dailyRannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: faDice, },
+ dailyRandom: { in: ['number'], out: 'boolean', category: 'random', icon: faDice, },
+ dailyRandomPick: { in: [0], out: 0, category: 'random', icon: faDice, },
};
const blockDefs = [
@@ -413,6 +417,10 @@ export class AiScript {
subtract: (a, b) => a - b,
multiply: (a, b) => a * b,
divide: (a, b) => a / b,
+ strLen: (a) => a.length,
+ strPick: (a, b) => a[b - 1],
+ strReplace: (a, b, c) => a.split(b).join(c),
+ strReverse: (a) => a.split('').reverse().join(''),
random: (probability) => Math.floor(seedrandom(`${this.opts.randomSeed}:${block.id}`)() * 100) < probability,
rannum: (min, max) => min + Math.floor(seedrandom(`${this.opts.randomSeed}:${block.id}`)() * (max - min + 1)),
randomPick: (list) => list[Math.floor(seedrandom(`${this.opts.randomSeed}:${block.id}`)() * list.length)],