compiled_query.js
· 3.7 KiB · JavaScript
Raw
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 | plans._something_is_at_x_y = function (match, patterns) { |
| 31 | for(let [_something, _x, _y] of patterns._something_is_at_x_y) { |
| 32 | match.state._something_is_at_x_y = true; |
| 33 | match.vars._something = _something; |
| 34 | match.vars._x = _x; |
| 35 | match.vars._y = _y; |
| 36 | if ( |
| 37 | match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, patterns) && |
| 38 | match.state._lightning_struck_x_y || plans._lightning_struck_x_y(match, patterns) && |
| 39 | |
| 40 | ) { |
| 41 | return true; |
| 42 | } else { return false; } |
| 43 | } |
| 44 | |
| 45 | |
| 46 | |
| 47 | |
| 48 | plans._something_has_inventory_inventory = function (match, patterns) { |
| 49 | for(let [_something, _inventory] of patterns._something_has_inventory_inventory) { |
| 50 | match.state._something_has_inventory_inventory = true; |
| 51 | match.vars._something = _something; |
| 52 | match.vars._inventory = _inventory; |
| 53 | if ( |
| 54 | match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) && |
| 55 | match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) && |
| 56 | |
| 57 | ) { |
| 58 | return true; |
| 59 | } else { return false; } |
| 60 | } |
| 61 | |
| 62 | |
| 63 | |
| 64 | |
| 65 | plans._inventory_has_item_item = function (match, patterns) { |
| 66 | for(let [_inventory, _item] of patterns._inventory_has_item_item) { |
| 67 | match.state._inventory_has_item_item = true; |
| 68 | match.vars._inventory = _inventory; |
| 69 | match.vars._item = _item; |
| 70 | if ( |
| 71 | match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, patterns) && |
| 72 | match.state._item_is_class || plans._item_is_class(match, patterns) && |
| 73 | |
| 74 | ) { |
| 75 | return true; |
| 76 | } else { return false; } |
| 77 | } |
| 78 | |
| 79 | |
| 80 | |
| 81 | |
| 82 | plans._item_is_class = function (match, patterns) { |
| 83 | for(let [_item, _class] of patterns._item_is_class) { |
| 84 | match.state._item_is_class = true; |
| 85 | match.vars._item = _item; |
| 86 | match.vars._class = _class; |
| 87 | if ( |
| 88 | match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) && |
| 89 | match.state._class_is_conductive || plans._class_is_conductive(match, patterns) && |
| 90 | |
| 91 | ) { |
| 92 | return true; |
| 93 | } else { return false; } |
| 94 | } |
| 95 | |
| 96 | |
| 97 | |
| 98 | |
| 99 | plans._class_is_conductive = function (match, patterns) { |
| 100 | for(let [_class] of patterns._class_is_conductive) { |
| 101 | match.state._class_is_conductive = true; |
| 102 | match.vars._class = _class; |
| 103 | if ( |
| 104 | match.state._item_is_class || plans._item_is_class(match, patterns) && |
| 105 | |
| 106 | ) { |
| 107 | return true; |
| 108 | } else { return false; } |
| 109 | } |
| 110 |