ledmon 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/DOCS.md +47 -0
- data/lib/ledmon/monster/interaction.rb +15 -0
- data/lib/ledmon/monster/movement.rb +71 -0
- data/lib/ledmon/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2f085d038b12359165c075857540df062c5a28fded2d7bc7e81c5ba86227e21
|
4
|
+
data.tar.gz: 614f5c8fcc4840804c81244a7ec8ff486316f059947689c9d94d6c92f443656b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb3460de9684c2c6849b96cfac1e601b81e986c60091bb0790563097db302e8d11611b36640dd2f1e3f9c157beafe79559ca413ea21a75cbe267c99bf60216d2
|
7
|
+
data.tar.gz: ba28cb6f47f36f9a3e0a97cc563c7b95a0fcad4afbcffcd9d89e3e02f9c26c670cdf349458c29eb80f439f00f3439ca3032b9fe2bdbbfabf035631047520db20
|
data/DOCS.md
CHANGED
@@ -119,6 +119,22 @@ if key == 'm'
|
|
119
119
|
end
|
120
120
|
```
|
121
121
|
|
122
|
+
### `path_to(x, y)`
|
123
|
+
Nájde, akým smerom máš ísť k zadanému cieľu. Táto metóda vidí iba mapu o veľkosti look-u, takže sa môže v prípade steny väčšej ako váš rozhľad príšerka nasledujúca túto metódu zaseknúť.
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
if key == 'b'
|
127
|
+
x = ask("x: ").to_i
|
128
|
+
y = ask("y: ").to_i
|
129
|
+
new_heading = path_to(x, y)
|
130
|
+
while !new_heading.nil?
|
131
|
+
turn_towards(new_heading)
|
132
|
+
move_forward
|
133
|
+
new_heading = path_to(x, y)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
```
|
137
|
+
|
122
138
|
## 👀 Rozhliadanie sa
|
123
139
|
|
124
140
|
### `look`
|
@@ -188,6 +204,37 @@ slot = ask("Slot: ")
|
|
188
204
|
unequip_item(slot)
|
189
205
|
```
|
190
206
|
|
207
|
+
### `storage_transfer(item, take)`
|
208
|
+
Vyberie/Vloži item zo storage-u.
|
209
|
+
|
210
|
+
```ruby
|
211
|
+
item = ask("Item: ")
|
212
|
+
take = yes?("take: ")
|
213
|
+
storage_transfer(item, take)
|
214
|
+
```
|
215
|
+
|
216
|
+
### `storage_list`
|
217
|
+
Vráti všetky predmety v storage-i.
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
say storage_list.inspect
|
221
|
+
```
|
222
|
+
|
223
|
+
### `consume_item(item)`
|
224
|
+
Zkonzumuje item.
|
225
|
+
|
226
|
+
```ruby
|
227
|
+
item = ask("item: ")
|
228
|
+
consume_item item
|
229
|
+
```
|
230
|
+
|
231
|
+
### `get_remaining_consumable_duration`
|
232
|
+
Vráti, koľko ešte bude trvať efekt skonzumovaného itemu.
|
233
|
+
|
234
|
+
```ruby
|
235
|
+
say get_remaining_consumable_duration
|
236
|
+
```
|
237
|
+
|
191
238
|
## 🔨 Crafting a výskum
|
192
239
|
|
193
240
|
### `craft(recept)`
|
@@ -85,6 +85,21 @@ module Ledmon::Monster
|
|
85
85
|
client.attack(Ledmon::Empty.new)
|
86
86
|
end
|
87
87
|
|
88
|
+
def storage_transfer(item, take)
|
89
|
+
client.storage_transfer(Ledmon::StorageTransferData.new(item:, mode: if take then :TAKE else :DEPOSIT end))
|
90
|
+
end
|
91
|
+
|
92
|
+
def storage_list
|
93
|
+
client.storage_list(Ledmon::Empty.new).items.to_a
|
94
|
+
end
|
95
|
+
|
96
|
+
def consume_item(item)
|
97
|
+
client.consume_item(Ledmon::ItemInfo.new(item:))
|
98
|
+
end
|
99
|
+
def get_remaining_consumable_duration
|
100
|
+
client.get_remaining_consumable_duration(Ledmon::Empty.new).time
|
101
|
+
end
|
102
|
+
|
88
103
|
def look
|
89
104
|
look_data = client.look(Ledmon::Empty.new)
|
90
105
|
tiles = []
|
@@ -48,6 +48,77 @@ module Ledmon::Monster
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
def path_to(x, y)
|
52
|
+
return nil if get_position.x == x && get_position.y == y
|
53
|
+
|
54
|
+
tiles = look
|
55
|
+
look_distance = (tiles.size-1)/2
|
56
|
+
|
57
|
+
def mapWalkable(x, y, look_distance, tiles)
|
58
|
+
row = tiles[y-get_position.y+look_distance]
|
59
|
+
return nil if row.nil?
|
60
|
+
row[x-get_position.x+look_distance]&.walkable
|
61
|
+
end
|
62
|
+
|
63
|
+
def distance(a, b)
|
64
|
+
Math.sqrt((a[0].to_f-b[0].to_f)**2.0+(a[1].to_f-b[1].to_f)**2.0)
|
65
|
+
end
|
66
|
+
def tileId(pos)
|
67
|
+
pos[0] + 1000*pos[1]
|
68
|
+
end
|
69
|
+
|
70
|
+
start = [get_position.x, get_position.y]
|
71
|
+
stop = [x, y]
|
72
|
+
openset = [start]
|
73
|
+
gScore = []
|
74
|
+
fScore = []
|
75
|
+
cameFrom = {}
|
76
|
+
gScore[tileId(start)] = 0
|
77
|
+
fScore[tileId(start)] = distance(start, stop)
|
78
|
+
|
79
|
+
nextPosition = nil
|
80
|
+
|
81
|
+
while !openset.empty?
|
82
|
+
current = openset.min_by {|tile|fScore[tileId(tile)] || Float::INFINITY}
|
83
|
+
if current == stop || mapWalkable(current[0], current[1], look_distance, tiles).nil?
|
84
|
+
walk = current
|
85
|
+
while cameFrom[tileId(walk)] != start
|
86
|
+
walk = cameFrom[tileId(walk)]
|
87
|
+
end
|
88
|
+
nextPosition = walk
|
89
|
+
break
|
90
|
+
end
|
91
|
+
openset.delete(current)
|
92
|
+
for offset in [[1, 0], [-1, 0], [0, 1], [0, -1]]
|
93
|
+
neighbor = [current[0]+offset[0], current[1]+offset[1]]
|
94
|
+
walkable = mapWalkable(neighbor[0], neighbor[1], look_distance, tiles)
|
95
|
+
if walkable.nil? || walkable == true
|
96
|
+
tg = (gScore[tileId(current)] || Float::INFINITY) + distance(current, neighbor)
|
97
|
+
if tg < (gScore[tileId(neighbor)] || Float::INFINITY)
|
98
|
+
cameFrom[tileId(neighbor)] = current
|
99
|
+
gScore[tileId(neighbor)] = tg
|
100
|
+
fScore[tileId(neighbor)] = tg + distance(stop, neighbor)
|
101
|
+
unless openset.include?(neighbor)
|
102
|
+
openset << neighbor
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
return nil if nextPosition.nil?
|
110
|
+
case([nextPosition[0]-get_position.x, nextPosition[1]-get_position.y])
|
111
|
+
when [1, 0]
|
112
|
+
"east"
|
113
|
+
when [-1, 0]
|
114
|
+
"west"
|
115
|
+
when [0, 1]
|
116
|
+
"south"
|
117
|
+
when [0, -1]
|
118
|
+
"north"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
51
122
|
def update_movement(movement)
|
52
123
|
@position = movement.position
|
53
124
|
@heading = movement.heading
|
data/lib/ledmon/version.rb
CHANGED