compiled_query.js
· 3.7 KiB · JavaScript
Brut
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 |