essytas 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +19 -0
- data/README +3 -0
- data/Rakefile +44 -0
- data/bin/essytas +2 -0
- data/lib/animation.rb +74 -0
- data/lib/config.rb +63 -0
- data/lib/core.rb +242 -0
- data/lib/cursor.rb +43 -0
- data/lib/def/animations/explosion1.anim +103 -0
- data/lib/def/characters.def +132 -0
- data/lib/def/de/dialogues/test.dlg +4 -0
- data/lib/def/de/enemies.trans +6 -0
- data/lib/def/de/items.trans +84 -0
- data/lib/def/de/skills.trans +48 -0
- data/lib/def/de/spells.trans +31 -0
- data/lib/def/en/dialogues/test.dlg +4 -0
- data/lib/def/en/enemies.trans +6 -0
- data/lib/def/en/items.trans +78 -0
- data/lib/def/en/skills.trans +48 -0
- data/lib/def/en/spells.trans +31 -0
- data/lib/def/enemies.def +8 -0
- data/lib/def/enemies/wolf.bhv +11 -0
- data/lib/def/init.def +5 -0
- data/lib/def/items.def +153 -0
- data/lib/def/loot.def +2 -0
- data/lib/def/particles.def +66 -0
- data/lib/def/recipies.def +18 -0
- data/lib/def/skills.def +40 -0
- data/lib/def/spells.def +42 -0
- data/lib/def/spells.rb +16 -0
- data/lib/def/weapons.def +9 -0
- data/lib/ext/astar/AMap.rb +146 -0
- data/lib/ext/astar/node.rb +72 -0
- data/lib/ext/astar/priority_queue.rb +44 -0
- data/lib/ext/shader.rb +116 -0
- data/lib/game/alchemy/recipe.rb +26 -0
- data/lib/game/character.rb +102 -0
- data/lib/game/combat/bar.rb +119 -0
- data/lib/game/combat/battle.rb +345 -0
- data/lib/game/combat/control.rb +18 -0
- data/lib/game/combat/gui.rb +190 -0
- data/lib/game/combat/gui/select_item.rb +11 -0
- data/lib/game/combat/gui/select_spell.rb +38 -0
- data/lib/game/constitution.rb +48 -0
- data/lib/game/equipment.rb +34 -0
- data/lib/game/inventory.rb +37 -0
- data/lib/game/item.rb +54 -0
- data/lib/game/magic.rb +33 -0
- data/lib/game/map/events.rb +29 -0
- data/lib/game/map/fog.rb +41 -0
- data/lib/game/map/map.rb +247 -0
- data/lib/game/map/map_animation.rb +26 -0
- data/lib/game/map/map_loader.rb +177 -0
- data/lib/game/map/map_object.rb +208 -0
- data/lib/game/map/map_particle.rb +27 -0
- data/lib/game/map/player.rb +78 -0
- data/lib/game/map/tile.rb +35 -0
- data/lib/game/mind.rb +24 -0
- data/lib/game/npc/behaviour.rb +45 -0
- data/lib/game/npc/bubble.rb +28 -0
- data/lib/game/npc/goal.rb +93 -0
- data/lib/game/npc/npc.rb +95 -0
- data/lib/game/npc/task.rb +73 -0
- data/lib/game/osd/magic.rb +24 -0
- data/lib/game/party.rb +42 -0
- data/lib/game/skills.rb +64 -0
- data/lib/game/spell.rb +35 -0
- data/lib/game_window.rb +95 -0
- data/lib/glsl/contrast.frag +12 -0
- data/lib/glsl/fade.frag +11 -0
- data/lib/glsl/mezzotint.frag +20 -0
- data/lib/glsl/noise.frag +20 -0
- data/lib/glsl/pixelate.frag +42 -0
- data/lib/glsl/radialblur.frag +28 -0
- data/lib/glsl/sepia.frag +15 -0
- data/lib/glsl/shockwave.frag +24 -0
- data/lib/glsl/tv_screen.frag +17 -0
- data/lib/graphics/animations/credits.txt +1 -0
- data/lib/graphics/animations/explosion2.png +0 -0
- data/lib/graphics/backgrounds/white_ties_grass.png +0 -0
- data/lib/graphics/chars/ejera.png +0 -0
- data/lib/graphics/chars/salyjea.png +0 -0
- data/lib/graphics/chars/tharat.png +0 -0
- data/lib/graphics/combat/tharat.png +0 -0
- data/lib/graphics/cursors/normal.png +0 -0
- data/lib/graphics/fog/clouds1.png +0 -0
- data/lib/graphics/gui/bar_center.png +0 -0
- data/lib/graphics/gui/bar_left.png +0 -0
- data/lib/graphics/gui/bar_right.png +0 -0
- data/lib/graphics/gui/button_background.png +0 -0
- data/lib/graphics/gui/button_close.png +0 -0
- data/lib/graphics/gui/button_close_hi.png +0 -0
- data/lib/graphics/gui/button_highlight.png +0 -0
- data/lib/graphics/gui/charequip_background.png +0 -0
- data/lib/graphics/gui/charselect_background.png +0 -0
- data/lib/graphics/gui/container_background.png +0 -0
- data/lib/graphics/gui/drop_item.png +0 -0
- data/lib/graphics/gui/equip_Etarae.png +0 -0
- data/lib/graphics/gui/equip_Mensch.png +0 -0
- data/lib/graphics/gui/equipslot_background.png +0 -0
- data/lib/graphics/gui/iteminfo_background.png +0 -0
- data/lib/graphics/gui/msg_background.png +0 -0
- data/lib/graphics/gui/scrollbar_background.png +0 -0
- data/lib/graphics/gui/scroller.png +0 -0
- data/lib/graphics/gui/tile_32.png +0 -0
- data/lib/graphics/gui/tile_32_highlight.png +0 -0
- data/lib/graphics/icons/items/arrow.png +0 -0
- data/lib/graphics/icons/items/bandage.png +0 -0
- data/lib/graphics/icons/items/boots_leather.png +0 -0
- data/lib/graphics/icons/items/bow.png +0 -0
- data/lib/graphics/icons/items/credits.txt +8 -0
- data/lib/graphics/icons/items/harness_leather.png +0 -0
- data/lib/graphics/icons/items/knife.png +0 -0
- data/lib/graphics/icons/items/shirt_linen.png +0 -0
- data/lib/graphics/items/none.png +0 -0
- data/lib/graphics/menu/ingame_background.png +0 -0
- data/lib/graphics/menu/ingame_background.xcf +0 -0
- data/lib/graphics/menu/start_background.png +0 -0
- data/lib/graphics/missing.png +0 -0
- data/lib/graphics/osd/magic_bg.png +0 -0
- data/lib/graphics/particles/leaf.png +0 -0
- data/lib/graphics/particles/smoke.png +0 -0
- data/lib/graphics/pixel.png +0 -0
- data/lib/graphics/tiles/test.png +0 -0
- data/lib/gui/base.rb +278 -0
- data/lib/gui/button.rb +93 -0
- data/lib/gui/char_equip.rb +118 -0
- data/lib/gui/char_selector.rb +54 -0
- data/lib/gui/context_menu.rb +115 -0
- data/lib/gui/draggable.rb +18 -0
- data/lib/gui/grid.rb +118 -0
- data/lib/gui/image.rb +17 -0
- data/lib/gui/inventory.rb +42 -0
- data/lib/gui/item_info.rb +33 -0
- data/lib/gui/slider.rb +10 -0
- data/lib/gui/textfield.rb +57 -0
- data/lib/layer.rb +64 -0
- data/lib/load.rb +31 -0
- data/lib/main.rb +18 -0
- data/lib/maps/def/test.bhv +26 -0
- data/lib/maps/def/test.rb +14 -0
- data/lib/maps/test.tmx +133 -0
- data/lib/maps/test2.tmx +94 -0
- data/lib/maps/test3.tmx +29 -0
- data/lib/maps/test3_lower.tmx +25 -0
- data/lib/maps/test3_upper.tmx +25 -0
- data/lib/maps/test_left.tmx +25 -0
- data/lib/maps/test_upper.tmx +25 -0
- data/lib/music/Butterfly Tea - A New Hope 2K11.mp3 +0 -0
- data/lib/music/Greendjohn - Rebirth.mp3 +0 -0
- data/lib/music/credits.txt +8 -0
- data/lib/parse.rb +605 -0
- data/lib/parse_tmx.rb +114 -0
- data/lib/particles.rb +127 -0
- data/lib/sample.rb +29 -0
- data/lib/save.rb +44 -0
- data/lib/song.rb +41 -0
- data/lib/sounds/click1.wav +0 -0
- data/lib/sounds/credits.txt +2 -0
- data/lib/sounds/error1.wav +0 -0
- data/lib/sprite.rb +35 -0
- data/lib/states/menus.rb +17 -0
- data/lib/states/menus/alchemy.rb +53 -0
- data/lib/states/menus/equip.rb +79 -0
- data/lib/states/menus/ingame.rb +34 -0
- data/lib/states/menus/magic.rb +31 -0
- data/lib/states/menus/options.rb +54 -0
- data/lib/states/menus/start.rb +38 -0
- data/lib/states/states.rb +154 -0
- data/lib/tileset.rb +42 -0
- data/lib/tools/world.rb +103 -0
- data/lib/tools/worldmap_editor.rb +221 -0
- data/lib/translate.rb +368 -0
- metadata +255 -0
data/lib/gui/image.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
module Core::GUI
|
3
|
+
|
4
|
+
class Image < Element
|
5
|
+
attr_accessor :color
|
6
|
+
def initialize(x, y, img)
|
7
|
+
@img = Core.sprite("gui/#{img}")
|
8
|
+
w, h, = @img.width, @img.height
|
9
|
+
super(x, y, w, h)
|
10
|
+
@color = Gosu::Color.new(255, 255, 255, 255)
|
11
|
+
end
|
12
|
+
def draw
|
13
|
+
@img.draw(@x, @y, Core::GUI_Z + 10, 1, 1, @color)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
module Core::GUI
|
3
|
+
class Inventory < Container
|
4
|
+
include Core
|
5
|
+
attr_reader :inv
|
6
|
+
def initialize(x, y, w, h, char, filter=[:all], item_height=24)
|
7
|
+
super(x, y, w, h, item_height)
|
8
|
+
@item_height = item_height
|
9
|
+
@inv = char.inventory
|
10
|
+
@filter = filter
|
11
|
+
@item = nil
|
12
|
+
assemble_items
|
13
|
+
end
|
14
|
+
|
15
|
+
def assemble_items
|
16
|
+
@items = []
|
17
|
+
items = {}
|
18
|
+
y = 0
|
19
|
+
@inv.each { |item|
|
20
|
+
if @filter.include?(:all) or @filter.include?(item.type)
|
21
|
+
if items[item.name] != nil
|
22
|
+
items[item.name][1] += 1
|
23
|
+
else
|
24
|
+
items.store(item.name, [item, 1])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
}
|
28
|
+
items.each_value { |ary|
|
29
|
+
item = ary[0]
|
30
|
+
amount = ary[1]
|
31
|
+
@items.push(Button.new(@x, @y+(y*@item_height), @w-24, @item_height, "#{amount}x #{Trans.item(item.name)}", lambda { clicked(item) }, false, :left, 24))
|
32
|
+
y += 1
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def inventory=(inv)
|
37
|
+
@inv = inv
|
38
|
+
assemble_items
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
module Core::GUI
|
3
|
+
|
4
|
+
class ItemInfo < Element
|
5
|
+
include Core
|
6
|
+
def initialize(x, y)
|
7
|
+
super(x, y, 672, 160)
|
8
|
+
@bg = Core.sprite("gui/iteminfo_background")
|
9
|
+
@img = Core.sprite("items/none")
|
10
|
+
@bigfont = Core.font(Core::DEFAULT_FONT, 32)
|
11
|
+
@font = Core.font(Core::DEFAULT_FONT, 24)
|
12
|
+
@item = nil
|
13
|
+
end
|
14
|
+
def item=(item)
|
15
|
+
@item = item
|
16
|
+
if @item
|
17
|
+
@img = @item.img
|
18
|
+
else
|
19
|
+
@img = Core.sprite("items/none")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
def draw
|
23
|
+
super
|
24
|
+
@bg.draw(@x, @y, Core::GUI_Z + 9, @w/@bg.width.to_f, @h/@bg.height.to_f)
|
25
|
+
@img.draw(@x, @y, Core::GUI_Z + 10, @h/@img.width.to_f, @h/@img.height.to_f)
|
26
|
+
if @item
|
27
|
+
@bigfont.draw(Trans.item(@item.name), @x+@h+4, @y+4, Core::GUI_Z + 11, 1, 1, Gosu::Color::BLACK)
|
28
|
+
@font.draw(Trans.item("#{@item.name}_desc"), @x+@h+4, @y+36, Core::GUI_Z + 11, 1, 1, Gosu::Color::BLACK)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/gui/slider.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
|
2
|
+
module Core::GUI
|
3
|
+
# Displays text in the given font and alignment
|
4
|
+
class Textfield < Element
|
5
|
+
|
6
|
+
attr_accessor :max_width
|
7
|
+
|
8
|
+
def initialize(x, y, w, h, txt="", size=20, align=:left, fixed=true, maxw=w)
|
9
|
+
super(x, y, w, h)
|
10
|
+
@bg = Core.sprite("gui/container_background")
|
11
|
+
@font = Core.font(Core::DEFAULT_FONT, size)
|
12
|
+
@align = align
|
13
|
+
@fixed = fixed
|
14
|
+
@max_width = maxw
|
15
|
+
set_text(txt)
|
16
|
+
end
|
17
|
+
|
18
|
+
def text=(text)
|
19
|
+
if !@fixed
|
20
|
+
@w = @max_width
|
21
|
+
end
|
22
|
+
@text = Core.multiline(text, @w, @font)
|
23
|
+
if !@fixed
|
24
|
+
@w = 8 + @font.text_width(@text.sort_by { |line| line.length}.reverse!.first)
|
25
|
+
@h = 8 + @text.size * (@font.height)
|
26
|
+
end
|
27
|
+
@fws = []
|
28
|
+
@text.each { |line|
|
29
|
+
@fws.push(@font.text_width(line))
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
alias :set_text :text=
|
34
|
+
|
35
|
+
def draw
|
36
|
+
@bg.draw(@x+@xoff, @y+@yoff, Core::GUI_Z + @zoff, (@w)/@bg.width.to_f, @h/@bg.height.to_f)
|
37
|
+
y = 0
|
38
|
+
if @text.size == 1
|
39
|
+
y += 4
|
40
|
+
end
|
41
|
+
i = 0
|
42
|
+
@text.each { |line|
|
43
|
+
case @align
|
44
|
+
when :center
|
45
|
+
@font.draw(line, @x + @xoff + (@w/2) - (@fws[i]/2), @y + @yoff + (@font.height/9) + y, Core::GUI_Z + 10 + @zoff, 1, 1, Gosu::Color::BLACK)
|
46
|
+
when :left
|
47
|
+
@font.draw(line, @x + @xoff + 4, @y + @yoff + (@font.height/9) + y, Core::GUI_Z + 10 + @zoff, 1, 1, Gosu::Color::BLACK)
|
48
|
+
when :right
|
49
|
+
@font.draw(line, @x + @xoff + (@w-@fws[i]), @y + @yoff + (@font.height/9) + y, Core::GUI_Z + 10 + @zoff, 1, 1, Gosu::Color::BLACK)
|
50
|
+
end
|
51
|
+
y += @font.height
|
52
|
+
i += 1
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
data/lib/layer.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
|
2
|
+
module Core
|
3
|
+
class Layer
|
4
|
+
attr_reader :properties, :tileset
|
5
|
+
attr_accessor :filled
|
6
|
+
def initialize(w, h, props, tiles, tileset=nil)
|
7
|
+
@properties = props
|
8
|
+
@z = Core::MAP_Z
|
9
|
+
@z += props[:z].to_i if props[:z]
|
10
|
+
create_tilemap(w, h, tiles)
|
11
|
+
if tileset
|
12
|
+
fill_tilemap(tileset)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_tilemap(w, h, tiles)
|
17
|
+
@tiles = Array.new(h) { [] }
|
18
|
+
@filled = @tiles.dup
|
19
|
+
wi = hi = 0
|
20
|
+
tiles.each { |int|
|
21
|
+
@tiles[hi].push(int)
|
22
|
+
wi += 1
|
23
|
+
if wi >= w
|
24
|
+
wi = 0
|
25
|
+
hi += 1
|
26
|
+
end
|
27
|
+
}
|
28
|
+
end
|
29
|
+
def fill_tilemap(tileset)
|
30
|
+
@tileset = tileset
|
31
|
+
@filled = Array.new(@tiles.size) { [] }
|
32
|
+
h = w = 0
|
33
|
+
@tiles.each { |ary|
|
34
|
+
ary.each { |gid|
|
35
|
+
@filled[h][w] = tileset.tile(gid-1, w*32, h*32, @z)
|
36
|
+
w += 1
|
37
|
+
}
|
38
|
+
w = 0
|
39
|
+
h += 1
|
40
|
+
}
|
41
|
+
return @filled
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class CollisionLayer
|
46
|
+
attr_reader :tiles
|
47
|
+
def initialize(w, h, tiles)
|
48
|
+
create_tilemap(w, h, tiles)
|
49
|
+
end
|
50
|
+
def create_tilemap(w, h, tiles)
|
51
|
+
@tiles = Array.new(h) { [] }
|
52
|
+
wi = hi = 0
|
53
|
+
tiles.each { |int|
|
54
|
+
@tiles[hi].push(int)
|
55
|
+
wi += 1
|
56
|
+
if wi >= w
|
57
|
+
wi = 0
|
58
|
+
hi += 1
|
59
|
+
end
|
60
|
+
}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
data/lib/load.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
module Core
|
3
|
+
|
4
|
+
def self.load_game(name="autosave")
|
5
|
+
f = File.open("#{Core::SAVE_DIR}#{name}.esf")
|
6
|
+
inflate = Zlib::Inflate.new
|
7
|
+
str = Base64.decode64(inflate.inflate(f.read))
|
8
|
+
inflate.close
|
9
|
+
f.close
|
10
|
+
map_obj = []
|
11
|
+
map_misc = []
|
12
|
+
lines = str.lines.to_a
|
13
|
+
puts Core::States.constants.inspect
|
14
|
+
state = Core::States.const_get("#{lines.shift.sub("\n", "")}".to_sym)
|
15
|
+
lines.each do |line|
|
16
|
+
line.sub!("\n", "")
|
17
|
+
puts line.inspect
|
18
|
+
end
|
19
|
+
party = nil
|
20
|
+
Core.window.advance(state.new(Core.window, party))
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def self.map_object(line)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.map_misc(line)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/lib/main.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
require "rubygems"
|
3
|
+
require_relative "core.rb"
|
4
|
+
require_relative "game_window.rb"
|
5
|
+
|
6
|
+
# :main:EH
|
7
|
+
|
8
|
+
begin
|
9
|
+
g = Core::GameWindow.new
|
10
|
+
g.show
|
11
|
+
Core.exit(0)
|
12
|
+
rescue Interrupt
|
13
|
+
warn("Interrupted!")
|
14
|
+
Core.exit(1)
|
15
|
+
rescue => ex
|
16
|
+
puts("#{ex.class}: #{ex}\n#{ex.backtrace.join("\n").gsub("#{Core::LIBRARY_PATH}/", "")}")
|
17
|
+
Core.exit(1)
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
npc_1 {
|
3
|
+
init = [
|
4
|
+
<particles @x|@y smoke follow>
|
5
|
+
]
|
6
|
+
trigger = [
|
7
|
+
]
|
8
|
+
update = [
|
9
|
+
]
|
10
|
+
motion = [
|
11
|
+
<path_to 19|14 wait>
|
12
|
+
<path_to 0|0 wait>
|
13
|
+
]
|
14
|
+
}
|
15
|
+
|
16
|
+
npc_2 {
|
17
|
+
init = [
|
18
|
+
]
|
19
|
+
trigger = [
|
20
|
+
<msg :test_npc2_greeting>
|
21
|
+
]
|
22
|
+
update = [
|
23
|
+
]
|
24
|
+
motion = [
|
25
|
+
]
|
26
|
+
}
|
data/lib/maps/test.tmx
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<map version="1.0" orientation="orthogonal" width="20" height="15" tilewidth="32" tileheight="32">
|
3
|
+
<properties>
|
4
|
+
<property name="fog" value="clouds1"/>
|
5
|
+
<property name="foga" value="125"/>
|
6
|
+
<property name="fogb" value="130"/>
|
7
|
+
<property name="fogg" value="255"/>
|
8
|
+
<property name="fogr" value="130"/>
|
9
|
+
<property name="fogx" value="0.5"/>
|
10
|
+
<property name="fogy" value="0.25"/>
|
11
|
+
<property name="left" value="test_left"/>
|
12
|
+
<property name="lower" value="test2"/>
|
13
|
+
<property name="music" value="Butterfly Tea - A New Hope 2K11"/>
|
14
|
+
<property name="name" value="Test 1"/>
|
15
|
+
<property name="right" value="test3"/>
|
16
|
+
<property name="tonea" value="20"/>
|
17
|
+
<property name="toneb" value="100"/>
|
18
|
+
<property name="toneg" value="100"/>
|
19
|
+
<property name="toner" value="255"/>
|
20
|
+
<property name="upper" value="test_upper"/>
|
21
|
+
</properties>
|
22
|
+
<tileset firstgid="1" name="Test1" tilewidth="32" tileheight="32">
|
23
|
+
<image source="../graphics/tiles/test.png" width="256" height="1312"/>
|
24
|
+
<tile id="98">
|
25
|
+
<properties>
|
26
|
+
<property name="collide" value="true"/>
|
27
|
+
</properties>
|
28
|
+
</tile>
|
29
|
+
</tileset>
|
30
|
+
<layer name="ground1" width="20" height="15">
|
31
|
+
<properties>
|
32
|
+
<property name="z" value="1"/>
|
33
|
+
</properties>
|
34
|
+
<data encoding="csv">
|
35
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
36
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
37
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
38
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
39
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
40
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
41
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
42
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
43
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
44
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
45
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
46
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
47
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
48
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
49
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
50
|
+
</data>
|
51
|
+
</layer>
|
52
|
+
<layer name="ground2" width="20" height="15">
|
53
|
+
<properties>
|
54
|
+
<property name="z" value="2"/>
|
55
|
+
</properties>
|
56
|
+
<data encoding="csv">
|
57
|
+
0,0,0,0,0,0,0,0,0,0,10,11,12,0,0,0,0,0,0,0,
|
58
|
+
0,0,0,0,0,0,0,0,0,0,10,11,12,0,0,0,0,0,0,0,
|
59
|
+
0,0,0,0,0,0,0,0,0,2,3,11,12,0,0,0,0,0,0,0,
|
60
|
+
0,0,0,0,0,0,0,0,0,10,11,11,12,0,0,0,0,0,0,0,
|
61
|
+
0,0,0,0,0,0,0,0,0,10,11,19,20,0,0,0,0,0,0,0,
|
62
|
+
0,0,0,0,0,0,0,2,3,3,11,3,4,0,0,0,0,0,0,0,
|
63
|
+
0,0,0,0,0,0,2,3,11,11,11,11,12,0,0,0,0,0,0,0,
|
64
|
+
0,0,0,0,0,0,10,11,11,11,11,11,12,0,0,0,0,0,0,0,
|
65
|
+
0,0,0,0,0,0,10,11,11,11,11,11,12,0,0,0,0,0,0,0,
|
66
|
+
0,0,0,0,0,0,18,19,11,11,11,19,20,0,0,0,0,0,0,0,
|
67
|
+
0,0,0,0,0,0,0,18,19,11,19,20,0,0,0,0,0,0,0,0,
|
68
|
+
0,0,0,0,2,3,3,3,3,11,12,0,0,0,0,0,0,0,0,0,
|
69
|
+
0,2,3,3,3,11,11,11,11,11,12,0,0,0,0,0,0,0,0,0,
|
70
|
+
0,10,11,11,11,11,19,19,19,19,20,0,0,0,0,0,0,0,0,0,
|
71
|
+
0,10,11,19,19,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0
|
72
|
+
</data>
|
73
|
+
</layer>
|
74
|
+
<layer name="ground3" width="20" height="15">
|
75
|
+
<properties>
|
76
|
+
<property name="z" value="3"/>
|
77
|
+
</properties>
|
78
|
+
<data encoding="csv">
|
79
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
80
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,26,0,0,
|
81
|
+
0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,
|
82
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
83
|
+
0,0,0,0,25,26,0,0,0,0,0,12,0,0,0,0,0,0,0,0,
|
84
|
+
0,0,0,0,0,0,0,0,0,10,0,12,0,0,0,0,0,0,0,0,
|
85
|
+
0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,
|
86
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,97,98,99,100,101,0,0,
|
87
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,105,106,107,108,109,0,0,
|
88
|
+
0,0,0,0,0,0,0,10,0,0,0,12,0,0,0,0,0,0,0,0,
|
89
|
+
0,0,25,26,0,0,0,0,10,0,12,0,0,0,0,0,0,0,0,0,
|
90
|
+
0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,
|
91
|
+
0,0,0,0,10,0,0,0,0,0,0,0,25,26,0,0,0,0,0,0,
|
92
|
+
0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
93
|
+
0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
94
|
+
</data>
|
95
|
+
</layer>
|
96
|
+
<layer name="air1" width="20" height="15">
|
97
|
+
<properties>
|
98
|
+
<property name="nocollide" value="true"/>
|
99
|
+
<property name="z" value="400"/>
|
100
|
+
</properties>
|
101
|
+
<data encoding="csv">
|
102
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
103
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
104
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,57,58,59,60,61,0,0,
|
105
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,65,66,67,68,69,0,0,
|
106
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,73,74,75,76,77,0,0,
|
107
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,81,82,83,84,85,0,0,
|
108
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,89,90,91,92,93,0,0,
|
109
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
110
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
111
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
112
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
113
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
114
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
115
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
116
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
117
|
+
</data>
|
118
|
+
</layer>
|
119
|
+
<objectgroup color="#00aa00" name="events1" width="20" height="15">
|
120
|
+
<object name="npc_1" type="npc" x="224" y="64" width="32" height="32">
|
121
|
+
<properties>
|
122
|
+
<property name="file" value="ejera"/>
|
123
|
+
<property name="name" value="Ejera"/>
|
124
|
+
</properties>
|
125
|
+
</object>
|
126
|
+
<object name="npc_2" type="npc" x="160" y="224" width="32" height="32">
|
127
|
+
<properties>
|
128
|
+
<property name="file" value="salyjea"/>
|
129
|
+
<property name="name" value="Salyjea"/>
|
130
|
+
</properties>
|
131
|
+
</object>
|
132
|
+
</objectgroup>
|
133
|
+
</map>
|