compiled_query.js
· 3.7 KiB · JavaScript
原始文件
Playground
/*
|
lightning struck $x $y
, $something is at $x $y?
, $something has inventory $inventory?
, $inventory has item $item?
, $item is $class?
, $class is conductive?
|
$something is struck by lightning
*/
plans._lightning_struck_x_y = function (match, patterns) {
for(let [_x, _y] of patterns._lightning_struck_x_y) {
match.state._lightning_struck_x_y = true;
match.vars._x = _x;
match.vars._y = _y;
if (
match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) &&
) {
return true;
} else { return false; }
}
}
plans._something_is_at_x_y = function (match, patterns) {
for(let [_something, _x, _y] of patterns._something_is_at_x_y) {
match.state._something_is_at_x_y = true;
match.vars._something = _something;
match.vars._x = _x;
match.vars._y = _y;
if (
match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, patterns) &&
match.state._lightning_struck_x_y || plans._lightning_struck_x_y(match, patterns) &&
) {
return true;
} else { return false; }
}
}
plans._something_has_inventory_inventory = function (match, patterns) {
for(let [_something, _inventory] of patterns._something_has_inventory_inventory) {
match.state._something_has_inventory_inventory = true;
match.vars._something = _something;
match.vars._inventory = _inventory;
if (
match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) &&
match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) &&
) {
return true;
} else { return false; }
}
}
plans._inventory_has_item_item = function (match, patterns) {
for(let [_inventory, _item] of patterns._inventory_has_item_item) {
match.state._inventory_has_item_item = true;
match.vars._inventory = _inventory;
match.vars._item = _item;
if (
match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, patterns) &&
match.state._item_is_class || plans._item_is_class(match, patterns) &&
) {
return true;
} else { return false; }
}
}
plans._item_is_class = function (match, patterns) {
for(let [_item, _class] of patterns._item_is_class) {
match.state._item_is_class = true;
match.vars._item = _item;
match.vars._class = _class;
if (
match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) &&
match.state._class_is_conductive || plans._class_is_conductive(match, patterns) &&
) {
return true;
} else { return false; }
}
}
plans._class_is_conductive = function (match, patterns) {
for(let [_class] of patterns._class_is_conductive) {
match.state._class_is_conductive = true;
match.vars._class = _class;
if (
match.state._item_is_class || plans._item_is_class(match, patterns) &&
) {
return true;
} else { return false; }
}
}
1 | /* |
2 | | |
3 | lightning struck $x $y |
4 | , $something is at $x $y? |
5 | , $something has inventory $inventory? |
6 | , $inventory has item $item? |
7 | , $item is $class? |
8 | , $class is conductive? |
9 | | |
10 | $something is struck by lightning |
11 | |
12 | */ |
13 | |
14 | plans._lightning_struck_x_y = function (match, patterns) { |
15 | for(let [_x, _y] of patterns._lightning_struck_x_y) { |
16 | match.state._lightning_struck_x_y = true; |
17 | match.vars._x = _x; |
18 | match.vars._y = _y; |
19 | if ( |
20 | match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) && |
21 | |
22 | ) { |
23 | return true; |
24 | } else { return false; } |
25 | } |
26 | } |
27 | |
28 | |
29 | |
30 | |
31 | plans._something_is_at_x_y = function (match, patterns) { |
32 | for(let [_something, _x, _y] of patterns._something_is_at_x_y) { |
33 | match.state._something_is_at_x_y = true; |
34 | match.vars._something = _something; |
35 | match.vars._x = _x; |
36 | match.vars._y = _y; |
37 | if ( |
38 | match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, patterns) && |
39 | match.state._lightning_struck_x_y || plans._lightning_struck_x_y(match, patterns) && |
40 | |
41 | ) { |
42 | return true; |
43 | } else { return false; } |
44 | } |
45 | } |
46 | |
47 | |
48 | |
49 | |
50 | plans._something_has_inventory_inventory = function (match, patterns) { |
51 | for(let [_something, _inventory] of patterns._something_has_inventory_inventory) { |
52 | match.state._something_has_inventory_inventory = true; |
53 | match.vars._something = _something; |
54 | match.vars._inventory = _inventory; |
55 | if ( |
56 | match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) && |
57 | match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) && |
58 | |
59 | ) { |
60 | return true; |
61 | } else { return false; } |
62 | } |
63 | } |
64 | |
65 | |
66 | |
67 | |
68 | plans._inventory_has_item_item = function (match, patterns) { |
69 | for(let [_inventory, _item] of patterns._inventory_has_item_item) { |
70 | match.state._inventory_has_item_item = true; |
71 | match.vars._inventory = _inventory; |
72 | match.vars._item = _item; |
73 | if ( |
74 | match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, patterns) && |
75 | match.state._item_is_class || plans._item_is_class(match, patterns) && |
76 | |
77 | ) { |
78 | return true; |
79 | } else { return false; } |
80 | } |
81 | } |
82 | |
83 | |
84 | |
85 | |
86 | plans._item_is_class = function (match, patterns) { |
87 | for(let [_item, _class] of patterns._item_is_class) { |
88 | match.state._item_is_class = true; |
89 | match.vars._item = _item; |
90 | match.vars._class = _class; |
91 | if ( |
92 | match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) && |
93 | match.state._class_is_conductive || plans._class_is_conductive(match, patterns) && |
94 | |
95 | ) { |
96 | return true; |
97 | } else { return false; } |
98 | } |
99 | } |
100 | |
101 | |
102 | |
103 | |
104 | plans._class_is_conductive = function (match, patterns) { |
105 | for(let [_class] of patterns._class_is_conductive) { |
106 | match.state._class_is_conductive = true; |
107 | match.vars._class = _class; |
108 | if ( |
109 | match.state._item_is_class || plans._item_is_class(match, patterns) && |
110 | |
111 | ) { |
112 | return true; |
113 | } else { return false; } |
114 | } |
115 | } |
116 | |
117 |