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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa51679f40d2362bf2da0a15423c8e4c1d429fbbd251712b34da77860763cbe2
4
- data.tar.gz: c3bb466c875167945f57679a5d5240817a2c242bf5decb6359a7cda7a9a678c4
3
+ metadata.gz: c2f085d038b12359165c075857540df062c5a28fded2d7bc7e81c5ba86227e21
4
+ data.tar.gz: 614f5c8fcc4840804c81244a7ec8ff486316f059947689c9d94d6c92f443656b
5
5
  SHA512:
6
- metadata.gz: 82484fce2c6034c1a94fb01266145beac95e5e71ddda57857b1f60b539fb80c68390b5b492d74ed075525914dbe352e4c7fda4663b99bebe0c507dd04a599a56
7
- data.tar.gz: de76543c3ec225ec19bbc1e67fed1ffb819c040909ac82dc90d0694185e930ecc8980b34968471ca62cf6ba615567e45f7446713fd1ce78ddeb3fd6ca7300912
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ledmon
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.10"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ledmon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmed Al Hafoudh