Compare commits

...

39 Commits

Author SHA1 Message Date
Shadow15510 3461399823 Merge branch 'dev' 2023-01-06 13:28:22 +01:00
Shadow15510 c4b2f9de75 Minor fix on spell purchase 2023-01-06 11:27:31 +01:00
Shadow15510 5bb9a29f38 Merge branch 'dev' 2023-01-05 15:51:21 +01:00
Shadow15510 811ef62748 Minor fix 2023-01-05 15:50:24 +01:00
Shadow15510 01869395de Fix entity behavior 2023-01-05 15:31:57 +01:00
Shadow15510 dc97c16c7f Add tiled maps 2023-01-05 15:25:45 +01:00
Shadow15510 a523e52f89 Add maps and fix bugs on magical fights 2023-01-05 15:25:08 +01:00
Shadow15510 f0a164dd5a Re-update repo 2022-09-02 08:27:02 +02:00
Shadow15510 9b3e91afd4 Update .gitignore 2022-09-02 08:26:31 +02:00
Shadow15510 e7ade8cbba Update repo 2022-09-02 08:22:30 +02:00
Shadow15510 20dd7fc659 Minor changement 2022-07-13 09:38:42 +02:00
Shadow15510 9d9cea8dc0 re-organize repo 2022-07-12 12:53:44 +02:00
Shadow15510 e3853d453e Merge branch 'dev' 2022-07-12 11:19:15 +02:00
Shadow15510 b280dd80a7 store factoring 2022-07-12 11:18:04 +02:00
Shadow15510 e5b2c7f5ff Update NPC's id 2022-06-24 13:36:40 +02:00
Shadow15510 43af744569 Scenario generator added 2022-06-24 13:23:44 +02:00
Shadow15510 13903d57e3 Merge branch 'dev' 2022-06-24 13:22:42 +02:00
Shadow15510 a6e8ac6c86 Fix bug with houses and shops 2022-06-10 10:36:11 +02:00
Shadow15510 2d2f61a5f6 Add an empty new scenario folder 2022-04-18 11:03:48 +02:00
Shadow15510 430459c378 Add an empty scenario generator 2022-04-18 10:58:53 +02:00
Shadow15510 c88e98029c Update charts 2022-04-18 10:05:07 +02:00
Shadow15510 dfb7a8c9fa Add magic point on HUD 2022-04-17 23:08:45 +02:00
Shadow15510 bc52d3112a Add magic points on HUD 2022-04-17 23:08:05 +02:00
Shadow15510 7f2221f5c3 Add a HUD \o/ in the low bar 2022-04-17 22:46:18 +02:00
Shadow15510 0c40574e4b Minor fix 2022-04-17 22:43:36 +02:00
Shadow15510 8778fdafcd Fix accents and update Asci to 1.8.2 2022-04-17 22:29:26 +02:00
Shadow15510 2b050e0136 Add map's image 2022-04-16 14:16:08 +02:00
Shadow15510 21fd0f4172 Update .gitignore 2022-04-16 14:14:47 +02:00
Shadow15510 36e49db03e Review spell casting and improve random dialogues 2022-04-15 15:59:29 +02:00
Shadow15510 b4785aa86d Minor change 2022-04-15 15:52:08 +02:00
Shadow15510 43ab375d95 Review spell casting and random dialogues 2022-04-15 15:49:59 +02:00
Shadow15510 424e7cc99f fix bug 2022-02-28 17:19:15 +01:00
Shadow15510 6f0a697b3a fix bug 2022-02-28 17:18:10 +01:00
Shadow15510 8b59e7a727 Update Asci and fix bug on quicksave 2022-02-28 17:05:16 +01:00
Shadow15510 a0bdc54aff Fix .gitignore 2022-02-28 17:03:19 +01:00
Shadow15510 49773dfcaa Deleting DLC 2022-02-28 17:02:49 +01:00
Shadow15510 ce3cc9162b Update Asci 1.7.2 -> 1.8.1 and some other fixes 2022-02-28 16:58:59 +01:00
Shadow15510 22f9d6cc03 Update .gitignore 2022-02-28 16:57:20 +01:00
Shadow15510 ec6cc70fe5 Beginning of DLC 2022-02-26 23:12:11 +01:00
34 changed files with 2579 additions and 1584 deletions

5
.gitignore vendored
View File

@ -1,5 +1,4 @@
__pycache__/
tiled_map/__pycache__/
src/__pycache__/
demo/__pycache__/
notes.txt
idk/__pycache__/
idk/dlc_idk.py

BIN
cartes/alfheim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

BIN
cartes/asgard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

BIN
cartes/jotunheim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

BIN
cartes/midgard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

BIN
cartes/muspellheim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

BIN
cartes/nidavellir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

BIN
cartes/niflheim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

38
cartes/notes.txt Normal file
View File

@ -0,0 +1,38 @@
------------------------
Liens entre les mondes
------------------------
Alfheim Asgard Muspellheim
↑ ↑ ↑
Vanaheim ← Midgard → Nidavellir
↓ ↓ ↓
Jotunheim Niflheim Svartalfheim
------------------------
Notes sur chaque monde
------------------------
Alheim
Monde des elfes clairs, peu présent dans ce premier opus.
Asgard
Monde des dieux Ases, une des deux grande famille du panthéon nordique. Mené par Odin et Thor, il s'agit des dieux de la guerre.
Muspellheim
Le monde du feu, dirigé par un géant. Également secondaire pour l'instant.
Vanaheim
Royaume des dieux Vanes, la deuxième grande famille. Mené par Freyja et Freyr, il s'agit des dieux de l'amour, de la beauté et de l'érotisme.
Midgard
Le monde des Hommes. Protégés des autres mondes par un océan gardé par Jormungandr, un serpent géant qui entoure complètement le monde.
Nidavellir
Le Royaume des Nains.
Jotunheim
Le monde des Géants.
Niflheim (ou Helheim)
Le royaume des morts, gardé par la déesse Hel.
Svartalfheim
Le monde des elfes noirs, sortes de créatures maléfiques. Il est, en plus d'être secondaire dans ce jeu, très dur d'accès puisqu'il faut passer par Nidavellir qui est un véritable labyrinthe.

BIN
cartes/svartalfheim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

BIN
cartes/vanaheim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

180
gen_sce Executable file
View File

@ -0,0 +1,180 @@
#! /usr/bin/env python3
from sys import argv
def nouveau_scenario(nom):
functions = (
"asgard_po",
"asgard_npc",
"h_9_npc",
"h_10_npc",
"h_11_npc",
"h_12_npc",
"h_13_npc",
"h_14_npc",
"h_15_npc",
"h_16_npc",
"h_17_npc",
"h_18_npc",
"h_19_npc",
"h_20_npc",
"vanaheim_po",
"vanaheim_npc",
"h_21_npc",
"h_22_npc",
"alfheim_po",
"alfheim_npc",
"h_23_npc",
"h_24_npc",
"midgard_po",
"midgard_npc",
"h_25_npc",
"h_26_npc",
"h_27_npc",
"h_28_npc",
"niflheim_po",
"niflheim_npc",
"h_29_npc",
"h_30_npc",
"jotunheim_po",
"jotunheim_npc",
"h_31_npc",
"h_32_npc",
"h_33_npc",
"h_34_npc",
"h_35_npc",
"h_36_npc",
"nidavellir_po",
"nidavellir_npc",
"h_37_npc",
"h_38_npc",
"h_39_npc",
"h_40_npc",
"h_41_npc",
"muspellheim_po",
"muspellheim_npc",
"h_42_npc",
"h_43_npc",
"h_44_npc",
"svartalfheim_po",
"svartalfheim_npc",
"h_45_npc",
"h_46_npc",
"h_47_npc",
"h_48_npc")
default_content = """from idk_lib import *
try:
import dlc_{0} as dlc
spells = dlc.dlc_spells
spells_level = dlc.dlc_spells_level
spells_effect = dlc.dlc_spells_effect
weapons = dlc.dlc_weapons
armors = dlc.dlc_armors
dlc_entities = dlc.dlc_entities
except:
dlc = None
dlc_entities = ()
# Game
def npc(data, stat, entities, identifiant):
npc_data = (
asgard_npc,
vanaheim_npc,
alfheim_npc,
midgard_npc,
niflheim_npc,
jotunheim_npc,
nidavellir_npc,
muspellheim_npc,
svartalfheim_npc,
h_9_npc, h_10_npc, h_11_npc, h_12_npc, h_13_npc, h_14_npc, h_15_npc, h_16_npc, h_17_npc, h_18_npc, h_19_npc, h_20_npc,
h_21_npc, h_22_npc,
h_23_npc, h_24_npc,
h_25_npc, h_26_npc, h_27_npc, h_28_npc,
h_29_npc, h_30_npc,
h_31_npc, h_32_npc, h_33_npc, h_34_npc, h_35_npc, h_36_npc,
h_37_npc, h_38_npc, h_39_npc, h_40_npc, h_41_npc,
h_42_npc, h_43_npc, h_44_npc,
h_45_npc, h_46_npc, h_47_npc, h_48_npc)
if dlc:
event = dlc.dlc_npc(data, stat, entities, identifiant)
if event: return "dlc", event
return npc_core(npc_data[data[1]], data, stat, entities, identifiant)
def point_of_interest(data, stat, entities, identifiant):
po_data = (
asgard_po,
vanaheim_po,
alfheim_po,
midgard_po,
niflheim_po,
jotunheim_po,
nidavellir_po,
muspellheim_po,
svartalfheim_po
)
coords = data[2], data[3]
event = po_data[data[1]](coords, identifiant)
if not event: return [0, "Il n'y a rien à voir ici."]
else: return event
entities = asgard_entities + vanaheim_entities + alfheim_entities + midgard_entities + niflheim_entities + jotunheim_entities + nidavellir_entities + muspellheim_entities + svartalfheim_entities + dlc_entities
print(center("{0}", 21, " "))
print("Entrez '{0}()' pour\\nune nouvelle partie.")
events = {{"*": npc, "?": point_of_interest}}
keys = {{4: display_stat, 7: spell, 8: misc_stat, 6: inventory, 9: sleep, "s": quick_save}}
def {0}(save_code=None):
# stat = [0 - PV, 1 - pièces d'or, 2 - [vitesse, agilité, attaque, defense, magie], 3 - [arme, armure], 4 - ticks, 5 - nom, 6 - classe, 7 - sorts connus : (id, level), 8 - sous-quêtes terminées]
if not save_code:
stat = init_stat()
name = stat[5]
data = [{{"main": 0}}, 3, 44, 66]
print_text("introduction")
else:
stat, data = decode_save(save_code)
idk_game = Asci(maps, entities, events, keys)
stat, data = idk_game.mainloop(1, stat, data, routine=routine, low_bar=low_bar, door="^_", walkable=".,`' ", exit_key="q")
if stat[9] != -1: data[0]["main"] -= stat[9]
if data[0]["main"] == 1:
print_text("conclusion")
else:
print("{0}(\\"{{}}\\")".format(encode_save(data, stat[:-1])))
# Scenario
def shop_interaction(data, stat, nb_choice, *events):
for choice in range(nb_choice):
if data[0]["main"] == stat[9] + choice + 1:
stat[9] = -1
if stat[1] < events[choice][0]: return events[choice][2], choice + 1
else: return events[choice][1], choice + 1
""".format(nom)
for fn in functions:
if fn.endswith("_po"):
default_content += f"\n\n\n# - - - {fn[:-3].title()} - - - #\ndef {fn}(coords, identifiant):\n pass"
else:
default_content += f"\n\n\ndef {fn}(data, stat, entites, identifiant):\n pass"
with open(f"{nom}.py", "w") as file:
file.write(default_content)
nouveau_scenario(argv[1])

179
gen_scenario Executable file
View File

@ -0,0 +1,179 @@
#! /usr/bin/env python3
from sys import argv
def nouveau_scenario(nom):
functions = (
"asgard_po",
"asgard_npc",
"h_9_npc",
"h_10_npc",
"h_11_npc",
"h_12_npc",
"h_13_npc",
"h_14_npc",
"h_15_npc",
"h_16_npc",
"h_17_npc",
"h_18_npc",
"h_19_npc",
"h_20_npc",
"vanaheim_po",
"vanaheim_npc",
"h_22_npc",
"alfheim_po",
"alfheim_npc",
"h_23_npc",
"h_24_npc",
"midgard_po",
"midgard_npc",
"h_25_npc",
"h_26_npc",
"h_27_npc",
"h_28_npc",
"niflheim_po",
"niflheim_npc",
"h_29_npc",
"h_30_npc",
"jotunheim_po",
"jotunheim_npc",
"h_31_npc",
"h_32_npc",
"h_33_npc",
"h_34_npc",
"h_35_npc",
"h_36_npc",
"nidavellir_po",
"nidavellir_npc",
"h_37_npc",
"h_38_npc",
"h_39_npc",
"h_40_npc",
"h_41_npc",
"muspellheim_po",
"muspellheim_npc",
"h_42_npc",
"h_43_npc",
"h_44_npc",
"svartalfheim_po",
"svartalfheim_npc",
"h_45_npc",
"h_46_npc",
"h_47_npc",
"h_48_npc")
default_content = """from idk_lib import *
try:
import dlc_{0} as dlc
spells = dlc.dlc_spells
spells_level = dlc.dlc_spells_level
spells_effect = dlc.dlc_spells_effect
weapons = dlc.dlc_weapons
armors = dlc.dlc_armors
dlc_entities = dlc.dlc_entities
except:
dlc = None
dlc_entities = ()
# Game
def npc(data, stat, entities, identifiant):
npc_data = (
asgard_npc,
vanaheim_npc,
alfheim_npc,
midgard_npc,
niflheim_npc,
jotunheim_npc,
nidavellir_npc,
muspellheim_npc,
svartalfheim_npc,
h_9_npc, h_10_npc, h_11_npc, h_12_npc, h_13_npc, h_14_npc, h_15_npc, h_16_npc, h_17_npc, h_18_npc, h_19_npc, h_20_npc,
h_21_npc, h_22_npc,
h_23_npc, h_24_npc,
h_25_npc, h_26_npc, h_27_npc, h_28_npc,
h_29_npc, h_30_npc,
h_31_npc, h_32_npc, h_33_npc, h_34_npc, h_35_npc, h_36_npc,
h_37_npc, h_38_npc, h_39_npc, h_40_npc, h_41_npc,
h_42_npc, h_43_npc, h_44_npc,
h_45_npc, h_46_npc, h_47_npc, h_48_npc)
if dlc:
event = dlc.dlc_npc(data, stat, entities, identifiant)
if event: return "dlc", event
return npc_core(npc_data[data[1]], data, stat, entities, identifiant)
def point_of_interest(data, stat, entities, identifiant):
po_data = (
asgard_po,
vanaheim_po,
alfheim_po,
midgard_po,
niflheim_po,
jotunheim_po,
nidavellir_po,
muspellheim_po,
svartalfheim_po
)
coords = data[2], data[3]
event = po_data[data[1]](coords, identifiant)
if not event: return [0, "Il n'y a rien à voir ici."]
else: return event
entities = asgard_entities + vanaheim_entities + alfheim_entities + midgard_entities + niflheim_entities + jotunheim_entities + nidavellir_entities + muspellheim_entities + svartalfheim_entities + dlc_entities
print(center("{0}", 21, " "))
print("Entrez '{0}()' pour\\nune nouvelle partie.")
events = {{"*": npc, "?": point_of_interest}}
keys = {{4: display_stat, 7: spell, 8: misc_stat, 6: inventory, 9: sleep, "s": quick_save}}
def {0}(save_code=None):
# stat = [0 - PV, 1 - pièces d'or, 2 - [vitesse, agilité, attaque, defense, magie], 3 - [arme, armure], 4 - ticks, 5 - nom, 6 - classe, 7 - sorts connus : (id, level), 8 - sous-quêtes terminées]
if not save_code:
stat = init_stat()
name = stat[5]
data = [{{"main": 0}}, 3, 44, 66]
print_text("introduction")
else:
stat, data = decode_save(save_code)
idk_game = Asci(maps, entities, events, keys)
stat, data = idk_game.mainloop(1, stat, data, routine=routine, low_bar=low_bar, door="^_", walkable=".,`' ", exit_key="q")
if stat[9] != -1: data[0]["main"] -= stat[9]
if data[0]["main"] == 1:
print_text("conclusion")
else:
print("{0}(\\"{{}}\\")".format(encode_save(data, stat[:-1])))
# Scenario
def shop_interaction(data, stat, nb_choice, *events):
for choice in range(nb_choice):
if data[0]["main"] == stat[9] + choice + 1:
stat[9] = -1
if stat[1] < events[choice][0]: return events[choice][2], choice + 1
else: return events[choice][1], choice + 1
""".format(nom)
for fn in functions:
if fn.endswith("_po"):
default_content += f"\n\n\n# - - - {fn[:-3].title()} - - - #\ndef {fn}(coords, identifiant):\n pass"
else:
default_content += f"\n\n\ndef {fn}(data, stat, entites, identifiant):\n pass"
with open(f"{nom}.py", "w") as file:
file.write(default_content)
nouveau_scenario(argv[1])

View File

@ -7,42 +7,42 @@ alfheim = (r"""
~~~~~ ~~~~~~~ #### ~~~~~~~ ## ~~~~~~~~
~~~ ~~~~~ || ~~~~~~~ #### __ ## ~~~~~~~
~~~ ~~~~~~~~ ## ~~~~~ ## || /[]\ #### ~~~~~
~~~ ~~~~~~~~~~~~ #### ## ## #### ` ' |__| || __ ~~~
~~~ ~~~~~~~~~~~~ #### ## ## #### ` ' |^_| || __ ~~~
~~~ ~~~~~~~~~~~~ ## || #### #### || ,' '.' / \ ~~~
~~~ ~~~~~ ~~~~ #### || || ` ' __ '`' . ` |__| ~~
~~~ ~~~~~ ~~~~ #### || || ` ' __ '`' . ` |^_| ~~
~~~ ## ~~~ || '' /[]\ ' . ## ~~
~~ #### ## _ _________________ |__| ## `.` #### ~~
~~ #### ## _ _________________ |_^| ## `.` #### ~~
~~ || #### / \ / |]O[| |]O[| \ #### __ || ~~
~~~~ || |_| /___________________\ ## ## || /[]\ ~~
~~~~ ## _ |_/ \_/ _ \_/ \_| ## ## |__| ## ~~~~
~~~~ || |^| /___________________\ ## ## || /[]\ ~~
~~~~ ## _ |_/ \_/ _ \_/ \_| ## ## |^_| ## ~~~~
~~~~ #### / \ |_| |_|/^\|_| |_| __ #### ~~~~
~~~~ || _ |_| ## ## / \ `' || ~~~~
~~~~ / \ ### ### ## ## |__| . , ~~~~
~~~~~~~~~ |_| _ ##### ##### `' `_ ,, , ~~~
~~~~ || _ |^| ## ## / \ `' || ~~~~
~~~~ / \ ### ### ## ## |^_| . , ~~~~
~~~~~~~~~ |^| _ ##### ##### `' `_ ,, , ~~~
~~~~~~~~~ /o\ ### ### ' _ ``' / \ ~~~
~~~~~~~~~~~ |_| /-\ /-\ , / \ |_| ~~~~ ~~~
~~~~~~~~~~~~ ### ### ' ,|_| .' _ ~~~~~ ~~~
~~~~~~~~~~~ |^| /-\ /-\ , / \ |^| ~~~~ ~~~
~~~~~~~~~~~~ ### ### ' ,|^| .' _ ~~~~~ ~~~
~~~~~~ ~~~~~~~ ### ##### ` ##### . ` .,. / \ ~~~~~ ~~~
~~~~~ ~~~~~~~ ##### ### ' ### _ ` , _ |_| _ ~~~~~~ ~~~
~~~~~ ~~~~~~~ ##### ### ' ### _ ` , _ |^| _ ~~~~~~ ~~~
~~~~~ __ ~~ ### /-\ /-\ ` / \ , /o\ / \ ~~~~~~~~~~
~~~~~~ / \ /-\ ' . '``,'' |_|` |_| |_| ~~~~~~~~~~
~~~~~~ |__| ,. ' .` ', ~~~~~~~~~~
~~~~~~ / \ /-\ ' . '``,'' |^|` |^| |^| ~~~~~~~~~~
~~~~~~ |_^| ,. ' .` ', ~~~~~~~~~~
~~~~~~ __ ### ., _ . , _ ,. ~~~~~~~~~~
~~~~~~~~ / \ ##### ### / \ ` ' /o\__ `. ~~~~~~~~~
~~~~~~~~~ |__| ### ##### ### |_| . |_ o \==| .'`. ~~~~~~~
~~~~~~~~~ |^_| ### ##### ### |^| . |_ o \==| .'`. ~~~~~~~
~~~~~~~~~~~~ ### /-\ ### ##### ,.` ||^|__| | . . ~~~~~~~
~~~~~~~~~~~~ ##### /-\ ### | .' ~~~~~~
~~~~~~~~~~~~~ ##### ### /-\ ### ### | ,`','` '',, ~~~~~~
~~~~~~~~~~~ ### ##### ### ##### ##### |==|==|==| ~~~~~
~~~~~~~~~~ ### |_| ##### ##### ### ### _ ~~~~~
~~~~~~~~~ ##### ### ##### /-\ /-\ ### _ / \ _ ~~~~
~~~~~~~~~ ##### |_| ### ### ##### / \ |_| / \ ~~~~
~~~~~~~~~ ### |_| ##### ### ### |_| |_| ~~~~
~~~~~~~~~ ##### |_| ### ### ##### / \ |^| / \ ~~~~
~~~~~~~~~ ### |_| ##### ### ### |^| |^| ~~~~
~~~~~~~ |_| ~~~~~~~ ##### ##### /-\ _ ~~~~
~~~~~~~ ~~~~~~~~~~~~~~~~~~ ### ##### / \ _ ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ |_| ### |_| / \ _ ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ |_| |_| / \ ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ |_| ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ |_| ### |^| / \ _ ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ |_| |^| / \ ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ |^| ~~~~
~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~~
~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ ~~~~~~
~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
@ -50,14 +50,14 @@ alfheim = (r"""
~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~ ### ### ~~~~~~~~~~~~
~~~~~~~~~~ __ ~~~~~~~~~~~~~~~~~~~~ __ ### ## ## ~~~~~~~~~~~~
~~~~~~~~~~ / \ ~~~~~~~~~~~~~~~~~~~~ / \ ##### ~~~~~~ ~~~~
~~~~~~~~~~ |__| ~~~~~~~~~~~~~ |__| ##### ## ## ~~~~~ ~~~~
~~~~~~~~~~ |^_| ~~~~~~~~~~~~~ |_^| ##### ## ## ~~~~~ ~~~~
~~~~~~~~~~ ### ~~~~~~~~ ### ### ### ~~ ~~~~
~~~~~~~~~ ##### ,'' |_| #### #### ~~~
~~~~~~~~ ##### ' ### ,,,. ### ~~~
~~~~~~~~ ### ### ##### `,, ##### ~~~
~~~~~~~ |_| . ##### ##### ',, __ ### ##### ~~~
~~~~~~ ### ,##### ### ` / \ ### ##### ### ~~~
~~~~~~ ##### ### , ### |_|`' ### |__| ##### ##### |_| ~~~
~~~~~~ ##### ### , ### |_|`' ### |_^| ##### ##### |_| ~~~
~~~~~~ ##### #####``|_| ### ` ##### ##### ### ~~~
~~~~~~ ### ##### ' ##### ##### ### |_| ### ~~~
~~~~~~ |_| ### ,' ##### ### |_| ##### ~~~
@ -67,28 +67,47 @@ alfheim = (r"""
~~~~~ ## || ,` ' ~~~~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~ ~~~
~~~~ #### _ ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~ ~~~
~~~~~ || /-\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~
~~~~~~ ~ |_| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~
~~~~~~ ~ |^| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~
~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
[
("palais", '?', 34, 20, 'stand by'),
("charretier", '*', 23, 17, 'stand by'),
(0, '*', 11, 4, 'stand by'),
(1, '*', 46, 6, 'stand by'),
(2, '*', 27, 54, 'stand by'),
],
# Autres mondes (Alfheim = 2)
(14, 68, 1, 28, 13), # Vanaheim
# Maisons
(34, 16, 23, 25, 19),
(52, 31, 24, 20, 19), # Librairie
(56, 8, 55, 3, 9),
(65, 10, 56, 3, 9),
(51, 12, 57, 11, 9),
(15, 14, 58, 4, 4),
(61, 15, 59, 3, 9),
(19, 17, 60, 4, 4),
(55, 18, 61, 3, 9),
(14, 19, 62, 4, 4),
(19, 21, 63, 4, 4),
(61, 21, 64, 4, 4),
(49, 22, 65, 4, 4),
(58, 24, 66, 4, 4),
(46, 26, 67, 4, 4),
(52, 26, 68, 4, 4),
(61, 26, 69, 4, 4),
(9, 27, 70, 11, 9),
(14, 30, 71, 3, 9),
(41, 30, 72, 4, 4),
(63, 37, 73, 4, 4),
(59, 38, 74, 4, 4),
(67, 38, 75, 4, 4),
(56, 41, 76, 4, 4),
(63, 42, 77, 4, 4),
(67, 43, 78, 4, 4),
(13, 51, 79, 3, 9),
(40, 51, 80, 11, 9),
(43, 58, 81, 11, 9),
)
@ -113,9 +132,6 @@ h_23 = (r"""
| | | | | | | |
| | | | | | | |
/ \______/ \_______|^|______/ \______/ \ """,
[
("Sagriel", '*', 23, 5, 'stand by'),
],
(25, 19, 2, 34, 16))
@ -140,8 +156,334 @@ h_24 = (r"""
| |
|====| |====|
|====|^|====| """,
[
("Diomwar", '*', 36, 12, 'stand by'),
(0, '*', 12, 3, 'stand by'),
],
(20, 19, 2, 52, 31))
(20, 19, 2, 52, 31))
h_55 = (r"""
|=======|-|===|
| _ /___\ |
| |_| |+++| |
| |_| |
| |_| |
| |
| _ |
| (_) |
| /=\ |
|=/^\=========|""",
(3, 9, 1, 56, 8),
)
h_56 = (r"""
|/=\/=\/=\/=\/|
| |
| +--+ |
| | | |
| | | |
| +--+ |
| |
| |
| |
|=|^|/=\/=\/=\|""",
(3, 9, 1, 65, 10),
)
h_57 = (r"""
|=============|
| |
| [=] [=] |
| /-\ /-\ |
| |
| [=] [=] |
| /-\ /-\ |
| |
| |
|=========/^\=|""",
(11, 9, 1, 0, 0),
)
h_58 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 15, 14),
)
h_59 = (r"""
|======|======|
| /=\ |
| |
| +--+ |
| | | |
| +--+ |
| (_) |
| [I] |
| |
|=/^\=========|""",
(3, 9, 1, 61, 15),
)
h_60 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 19, 17),
)
h_61 = (r"""
|=========||==|
| /__\ |
| |
| |-| |
| |-| |
| |-| |
| |
| |
| |
|=/^\=========|""",
(3, 9, 1, 55, 18),
)
h_62 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 14, 19),
)
h_63 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 19, 21),
)
h_64 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 61, 21),
)
h_65 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 49, 22),
)
h_66 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 58, 24),
)
h_67 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 46, 26),
)
h_68 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 52, 26),
)
h_69 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 61, 26),
)
h_70 = (r"""
|========|-|==|
| /---\ |
| |###| |
| |
| +---+ |
| | | |
| | | |
| | | |
| +---+ |
|=========/^\=|""",
(11, 9, 1, 9, 27),
)
h_71 = (r"""
|-------------|
| [===] [===] |
| |
| [===] [===] |
| |
| [===] [===] |
| |
| [===] [===] |
| |
|-|^|---------|""",
(3, 9, 1, 14, 30),
)
h_72 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 41, 30),
)
h_73 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 63, 37),
)
h_74 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 59, 38),
)
h_75 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 57, 38),
)
h_76 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 56, 41),
)
h_77 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 63, 42),
)
h_78 = (r"""
/======\
/ \
| |
| |
|==|^[|==|""",
(4, 4, 1, 67, 43),
)
h_79 = (r"""
|====|-|======|
| /___\ |
| |###| |
| |
| +---+ |
| | | |
| | | |
| +---+ |
| |
|=/^\=========|""",
(3, 9, 1, 13, 51),
)
h_80 = (r"""
|=============|
| _ _ _ |
| |_| |_| |_| |
| |_| |_| |_| |
| |
| +---+ |
| | | |
| +---+ |
| |
|=========/^\=|""",
(11, 9, 1, 40, 51),
)
h_81 = (r"""
|===|_|=======|
|===|_|=======|
| /{O}\ |
| |###| |
| |
| |
| |
| |
| |
|=========/^\=|""",
(11, 9, 1, 43, 58),
)
alfheim_entities = (
[0, '*', 2, 23, 17, 'stand by'],
[0, '*', 2, 11, 4, 'stand by'],
[0, '*', 2, 46, 6, 'stand by'],
[0, '*', 2, 27, 54, 'stand by'],
["Sagriel", '*', 23, 23, 5, 'stand by'],
["Diomwar", '*', 24, 36, 12, 'stand by'],
[0, '*', 24, 12, 3, 'stand by'],
)

View File

@ -1,22 +1,36 @@
# Asci (1.7.2)
# Asci (1.9.3)
from math import floor, ceil
SCREEN_WIDTH = 21
SCREEN_HEIGHT = 7
class Asci:
def __init__(self, maps, events_mapping, keys_mapping, behaviors=None, screen_width=21, screen_height=6):
# Load maps
def __init__(self, maps, entities, events_mapping, keys_mapping, behaviors=None):
# Load maps and entities
self.maps = [Map(*i) for i in maps]
self.entities = {}
entity_id = 0
for i in entities:
if not i[0]:
i[0] = entity_id
entity_id += 1
if i[0] in self.entities: raise KeyError("'{}' is already a registered entities".format(i[0]))
else: self.entities[i[0]] = Entity(*i)
# Custom functions
self._legend = list(events_mapping.keys())
self._game_events_mapping = [events_mapping[i] for i in self._legend]
self._game_keys_mapping = {key: keys_mapping[key] for key in keys_mapping if not key in (1, 2, 3, 5)}
# Custom entities behavior
self._behaviors = {"permanent": permanent, "stand by": stand_by, "follow": follow, "walk": walk}
self._behaviors = {"permanent": permanent, "stand by": stand_by, "follow": follow, "walk between": walk_between, "walk to": walk_to, "follow by player": follow_by_player}
if behaviors:
for i in behaviors: self._behaviors[i] = behaviors[i]
# Screen initialisation
self.screen = Screen(screen_width, screen_height)
self.screen = Screen()
self.current_map = None
def _looked_case(self, direction):
@ -89,18 +103,18 @@ class Asci:
return self.data[1], self.data[2], self.data[3]
def _change_map(self, new_map):
# Update entities
if self.current_map:
for i in self.current_map.entities.copy():
entity = self.current_map.entities[i]
if entity.behavior == "follow":
entity.pos_x = entity.pos_y = -1
self.maps[new_map].entities[entity.entity_id] = entity
self.maps[self.data[1]].entities.pop(i)
# Update current map
self.data[1] = new_map
# Update map id and data
old_map, self.data[1] = self.data[1], new_map
self.current_map = self.maps[self.data[1]]
self.current_map.entities = {}
# Update entities
for i in self.entities:
entity = self.entities[i]
if entity.map_id == old_map and entity.behavior == "follow":
entity.pos_x = entity.pos_y = -1
entity.map_id = new_map
if entity.map_id == new_map: self.current_map.entities[i] = entity
# Update screen configuration
self.screen.set_world(self.current_map.map_data)
@ -146,7 +160,7 @@ class Asci:
return entity.entity_id
# Mainloop
def mainloop(self, end_game, stat=None, data=None, routine=None, player="@", door="^", walkable=" ", exit_key=9, multi_move="."):
def mainloop(self, end_game, stat=None, data=None, routine=None, low_bar=None, player="@", door="^", walkable=" ", exit_key=9, multi_move="."):
if exit_key in self._game_keys_mapping:
raise ValueError("'{}' is already assigned to a function.".format(exit_key))
@ -160,7 +174,7 @@ class Asci:
# Configuration
self._legend.append(door)
self._legend.append(walkable)
self._change_map(data[1])
self._change_map(self.data[1])
self.screen.load_data(self.data)
key = 0
@ -173,13 +187,15 @@ class Asci:
data_copy = self.data[:]
for entity in self.current_map.entities.values():
self._behaviors[entity.behavior](entity, data_copy, self.stat, self.screen, walkable)
if (0 <= entity.pos_x - self.data[2] + 10 < self.screen.screen_width) and (0 <= entity.pos_y - self.data[3] + 3 < self.screen.screen_height):
if entity.map_id == self.data[1] and (0 <= entity.pos_x - self.data[2] + self.screen.pos_player[0] < SCREEN_WIDTH) and (0 <= entity.pos_y - self.data[3] + self.screen.pos_player[1] < SCREEN_HEIGHT):
self.screen.set_cell(entity.pos_x, entity.pos_y, entity.symbol)
self.screen.set_cell(self.data[2], self.data[3], player)
# Display map, get the key and update key buffer
key = convert(self.screen.display())
# Display map, low bar, get the key and update key buffer
if low_bar: bar = low_bar(self.data[:], self.stat[:])
else: bar = None
key = convert(self.screen.display(low_bar=bar))
if not key: key = self.data[4]
else: self.data[4] = key
@ -206,11 +222,10 @@ class Asci:
# Classes used by Asci
class Screen:
def __init__(self, screen_width=21, screen_height=6):
def __init__(self):
# Screen configuration
self.screen_width = screen_width
self.screen_height = screen_height
self._on_screen = [[" " for _ in range(screen_width)] for _ in range(screen_height)]
self.pos_player = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)
self._on_screen = [[" " for _ in range(SCREEN_WIDTH)] for _ in range(SCREEN_HEIGHT)]
self._asci_data = []
def load_data(self, data):
@ -225,23 +240,27 @@ class Screen:
self.map_height = len(self._world)
def set_screen(self):
x = self._asci_data[2] - 10 ; y = self._asci_data[3] - 3
for x_map in range(x, x + self.screen_width):
for y_map in range(y, y + self.screen_height):
x = self._asci_data[2] - self.pos_player[0] ; y = self._asci_data[3] - self.pos_player[1]
for x_map in range(x, x + SCREEN_WIDTH):
for y_map in range(y, y + SCREEN_HEIGHT):
self._on_screen[y_map - y][x_map - x] = " "
if 0 <= x_map < self.map_width and 0 <= y_map < self.map_height:
try: self._on_screen[y_map - y][x_map - x] = self._world[y_map][x_map]
except: pass
def display(self, return_input=True):
for line in self._on_screen:
print("".join(line))
if return_input: return input(">")
def display(self, return_input=True, low_bar=None):
for line_no in range(len(self._on_screen)):
line = "".join(self._on_screen[line_no])
if line_no + 1 == SCREEN_HEIGHT and return_input:
if not low_bar: line = line[:-6] + ">"
else: line = low_bar + ">"
print(line, end="")
return input()
else:
print(line)
def clear(self):
print("\n" * self.screen_height)
print("\n" * SCREEN_HEIGHT)
def display_text(self, string):
paragraphs = [i for i in text_formater(string) if i]
@ -253,18 +272,19 @@ class Screen:
else: input()
def set_cell(self, x, y, value):
x = x - (self._asci_data[2] - 10)
y = y - (self._asci_data[3] - 3)
if 0 <= x < self.screen_width and 0 <= y < self.screen_height:
x = x - (self._asci_data[2] - self.pos_player[0])
y = y - (self._asci_data[3] - self.pos_player[1])
if 0 <= x < SCREEN_WIDTH and 0 <= y < SCREEN_HEIGHT:
self._on_screen[y][x] = value
def get_cell(self, x, y):
x = x - (self._asci_data[2] - 10)
y = y - (self._asci_data[3] - 3)
if 0 <= x < self.screen_width and 0 <= y < self.screen_height:
x = x - (self._asci_data[2] - self.pos_player[0])
y = y - (self._asci_data[3] - self.pos_player[1])
if 0 <= x < SCREEN_WIDTH and 0 <= y < SCREEN_HEIGHT:
return self._on_screen[y][x]
else: return " "
class Event:
def __init__(self, xp, text, answer=0, *stat):
self.xp = xp
@ -274,23 +294,29 @@ class Event:
class Map:
def __init__(self, map_data, entities, *coords):
def __init__(self, map_data, *coords):
self.map_data = map_data
if entities: self.entities = {i[0]: Entity(*i) for i in entities}
else: self.entities = {}
self.coords = coords
self.entities = {}
class Entity:
def __init__(self, entity_id, symbol, x, y, behavior, *args):
def __init__(self, entity_id, symbol, map_id, x, y, behavior, *args):
self.entity_id = entity_id
self.symbol = symbol
self.map_id = map_id
self.pos_x = x
self.pos_y = y
self.behavior = behavior
self.args = list(args)
def change_behavior(self, new_behavior):
if self.behavior != "permanent": self.behavior = new_behavior
def change_behavior(self, new_behavior, *args):
if self.behavior != "permanent":
self.behavior = new_behavior
self.args = list(args)
def teleport(self, map_id, x, y):
if self.behavior != "permanent": self.map_id, self.pos_x, self.pos_y = map_id, x, y
# Functions used by Asci
@ -301,34 +327,35 @@ def convert(string, force_int=False):
else: return string
def text_formater(string, screen_width=21, screen_height=6):
def text_formater(string):
screen_displayable_height = SCREEN_HEIGHT - 1
def line_formater(string, screen_width):
def line_formater(string):
string_result = ""
while len(string) > screen_width:
stop_index = screen_width
while len(string) > SCREEN_WIDTH:
stop_index = SCREEN_WIDTH
while stop_index > 0 and not string[stop_index].isspace(): stop_index -= 1
if not stop_index: stop_index = screen_width
if not stop_index: stop_index = SCREEN_WIDTH
string_result += string[:stop_index].strip() + "\n"
string = string[stop_index:].strip()
return string_result + string
def paragraph_formater(lines, screen_height):
def paragraph_formater(lines):
paragraphs = ""
while len(lines) >= screen_height:
paragraphs += "\n".join(lines[:screen_height]) + "\n\n"
lines = lines[screen_height:]
while len(lines) >= screen_displayable_height:
paragraphs += "\n".join(lines[:screen_displayable_height]) + "\n\n"
lines = lines[screen_displayable_height:]
return paragraphs + "\n".join(lines)
lines = []
for line in string.split("\n"):
for formated_line in line_formater(line, screen_width).split("\n"):
for formated_line in line_formater(line).split("\n"):
lines.append(formated_line)
return paragraph_formater(lines, screen_height).split("\n\n")
return paragraph_formater(lines).split("\n\n")
def read_event(data, event, quest):
@ -365,6 +392,87 @@ def get_multi_move(key):
return [(convert(k), 1) for k in key]
# Motions functions
def stand_by(entity, data, stat, screen, walkable):
pass
def permanent(entity, data, stat, screen, walkable):
pass
def follow(entity, data, stat, screen, walkable):
if entity.pos_x == entity.pos_y == -1:
entity.pos_x, entity.pos_y = data[2], data[3]
elif data[4] in (1, 2, 3, 5):
direction = (data[4] - 1) if data[4] != 5 else 3
if entity.args: walkable += entity.args[0]
cases = [(data[2] + 1, data[3]), (data[2], data[3] - 1), (data[2] - 1, data[3]), (data[2], data[3] + 1)]
pos = cases[direction]
if not (0 <= pos[0] < screen.map_width and 0 <= pos[1] < screen.map_height) or (not screen.get_cell(pos[0], pos[1]) in walkable):
find = False
cases.remove(cases[(direction + 2) % 4])
for pos in cases:
if (0 <= pos[0] < screen.map_width and 0 <= pos[1] < screen.map_height) and (screen.get_cell(pos[0], pos[1]) in walkable):
find = True
entity.pos_x, entity.pos_y = pos
break
if not find:
entity.pos_x, entity.pos_y = data[2], data[3]
else:
entity.pos_x, entity.pos_y = pos
def walk_between(entity, data, stat, screen, walkable):
frame = (entity.args[0] + 1) % len(entity.args[1])
new_x, new_y = _walk_engine(entity, frame)
if screen.get_cell(new_x, new_y) in walkable:
entity.pos_x, entity.pos_y = new_x, new_y
if (entity.pos_x, entity.pos_y) == entity.args[1][frame]: entity.args[0] = frame
def walk_to(entity, data, stat, screen, walkable):
frame = entity.args[0]
print(frame, len(entity.args[1]), entity.args)
if len(entity.args[1]) == frame:
entity.behavior = "stand by"
entity.args = []
return
new_x, new_y = _walk_engine(entity, frame)
if screen.get_cell(new_x, new_y) in walkable:
entity.pos_x, entity.pos_y = new_x, new_y
if (entity.pos_x, entity.pos_y) == entity.args[1][frame]: entity.args[0] += 1
def follow_by_player(entity, data, stat, screen, walkable):
frame = entity.args[0]
if len(entity.args[1]) == frame:
entity.behavior = "stand by"
entity.args = []
return
new_x, new_y = _walk_engine(entity, frame)
if abs(data[2] - new_x) < 5 and abs(data[3] - new_y) < 3 and screen.get_cell(new_x, new_y) in walkable:
entity.pos_x, entity.pos_y = new_x, new_y
if (new_x, new_y) == entity.args[1][frame]: entity.args[0] += 1
def _walk_engine(entity, frame):
delta_x, delta_y = list(map(lambda x,y: y - x, (entity.pos_x, entity.pos_y), entity.args[1][frame]))
new_x = entity.pos_x
new_y = entity.pos_y
if delta_x: new_x += abs(delta_x) // delta_x
if delta_y: new_y += abs(delta_y) // delta_y
return new_x, new_y
# Extra functions
def print_text(text, min_value=0, max_value=0, default_value=0):
@ -385,27 +493,12 @@ def print_text(text, min_value=0, max_value=0, default_value=0):
else: input()
def stand_by(entity, data, stat, screen, walkable):
pass
def center(string, total_length, symbol):
left = floor((total_length - len(string)) / 2)
right = ceil((total_length - len(string)) / 2)
def permanent(entity, data, stat, screen, walkable):
pass
return left * symbol + string + right * symbol
def follow(entity, data, stat, screen, walkable):
if entity.pos_x == entity.pos_y == -1:
entity.pos_x, entity.pos_y = data[2], data[3]
elif data[4] in (1, 2, 3, 5):
if entity.args: walkable += entity.args[0]
cases = ((data[2] + 1, data[3]), (data[2], data[3] - 1), (data[2] - 1, data[3]), 0, (data[2], data[3] + 1))[data[4] - 1]
if not (0 <= cases[0] < screen.map_width and 0 <= cases[1] < screen.map_height): entity.pos_x, entity.pos_y = data[2], data[3]
elif screen.get_cell(cases[0], cases[1]) in walkable: entity.pos_x, entity.pos_y = cases
def walk(entity, data, stat, screen, walkable):
frame = (entity.args[0] + 1) % len(entity.args[1])
new_x, new_y = entity.args[1][frame]
if screen.get_cell(new_x, new_y) in walkable:
entity.pos_x, entity.pos_y = new_x, new_y
entity.args[0] = frame
def enumerate(data):
return [(i, data[i]) for i in range(len(data))]

View File

@ -50,54 +50,30 @@ asgard = (r"""
#### _ ### /-\ ### ### ### ~(~)~ ### /_____________\ _ ~~~~~~~~~~~~~~ ### / \ \
|| /o\ ##### /-\ /-\ /-\ /~(___)~\ /-\ |_/ \_/ \_| ### ### /o\ ~~~~~~~~~~~ ##### / \ /\
## |_| ### \~~~~~~~/ |_| |^| |_| ##### ##### |_| ~~~~~~~~~~ ### / \ / \
~ #### /-\ ### ### ### ~~~~~~~~~~ /|\ ### / \
~###### ____________ #### #### ### /-\ /|\ ### ##### ~~~~~~~~~~ ### ##### /\ \
~###### / Himinbjorg \ #### #### ##### ### ### ##### ### ~~~~~~~~ ##### ### / \
~ #### /______________\ ### ### ### ##### ##### ### ### /|\ ~~~~~~~~~ _ ### /|\ / \ /
~ || ### | ]O[ __ ]O[ | /-\ ### ### _ ##### _ /|\ ~~~~~~~~~ /o\ /|\ / \ /
~ _ ##### |_____|^^|_____| ### ### ### /-\ /-\ ### /o\ ### /o\ ------------- |_| ### /
~ /o\ ### ##### #### #### ##### |_| /|\ |_| ### ##### ###/
~ |_| /-\ ### #### #### ### ### ##### ### #####
~ /-\ ##### ### /-\ ### ### ------------- /|\ ###
~~ ### ### _ ### ### ##### ##### /|\ ~~~~~~~ ### /|\ ###
~~ ##### ##### ### ### ### /o\ /-\ ##### ### ### ### ~~~~~~~ ### ##### ####
~~ ### ### ##### ##### ##### |_| ### ### /-\ ##### ### /|\ ### ~~~~~~ ### ##### ### ###
~~ /-\ /-\ ### ### ### ___________ /-\ ##### ### ##### ##### ~~~~~ ##### ### /|\ /|\
~~ |_| |_| |_| /Sokkvabekkr\ ### /|\ ### ### ~~~~~~ ### /|\ ###
~~ /_____________\ /-\ ### /|\ /|\ ~~~~~~~ /|\ ### #####
~~ ________ ### ### ### _ /_|_/__\_/__\_|_\ ##### ### ### ~~~~~~~~ ##### ###
~~ /Alfheimr\ ##### ##### ##### /o\ |_| |^| |_| _ ### ##### ### ##### ~~~~~~~~ ### /|\
~~~ |]O[__]O[| ### ### ### |_| /o\ /-\ ### ##### ### ~~~~~~~~~ _ /|\ ###
~~~ |__|^^|__| |_| |_| |_| ##### ##### |_| /-\ ### /|\ ~~~~~~~~~~ _ /o\ #####
~~~ ##### ##### /|\ ~~~~~~~~~~ /-\ |_| ### ~
~~~ ~~~~~~~~~~~~ |_| /|\ ~~
~~~~~ ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~
~~~~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
[
('valaskjalf', '?', 120, 26, 'stand by'),
('jardin sud', '?', 51, 55, 'stand by'),
(0, '*', 34, 7, 'stand by'),
(1, '*', 121, 21, 'stand by'),
(2, '*', 117, 32, 'stand by'),
(3, '*', 29, 13, 'stand by'),
(4, '*', 19, 20, 'stand by'),
(5, '*', 28, 26, 'stand by'),
(6, '*', 46, 35, 'stand by'),
(7, '*', 57, 38, 'stand by'),
(8, '*', 82, 38, 'stand by'),
(9, '*', 22, 39, 'stand by'),
(10, '*', 8, 44, 'stand by'),
(11, '*', 58, 50, 'stand by'),
(12, '*', 83, 51, 'stand by'),
(13, '*', 32, 59, 'stand by'),
(14, '*', 104, 63, 'stand by'),
(15, '*', 46, 65, 'stand by'),
(16, '*', 16, 71, 'stand by'),
(17, '*', 138, 71, 'stand by'),
],
#### /-\ ### ### ### ~~~~~~~~~~ /|\ ### / \
###### ____________ #### #### ### /-\ /|\ ### ##### ~~~~~~~~~~ ### ##### /\ \
###### / Himinbjorg \ #### #### ##### ### ### ##### ### ~~~~~~~~ ##### ### / \
#### /______________\ ### ### ### ##### ##### ### ### /|\ ~~~~~~~~~ _ ### /|\ / \ /
|| ### | ]O[ __ ]O[ | /-\ ### ### _ ##### _ /|\ ~~~~~~~~~ /o\ /|\ / \ /
# _ ##### |_____|^^|_____| ### ### ### /-\ /-\ ### /o\ ### /o\ ------------- |_| ### /
### /o\ ### ##### #### #### ##### |_| /|\ |_| ### ##### ###/
##### |_| /-\ ### #### #### ### ### ##### ### #####
### /-\ ##### ### /-\ ### ### ------------- /|\ ###
/-\ ### ### _ ### ### ##### ##### /|\ ~~~~~~~ ### /|\ ###
##### ##### ### ### ### /o\ /-\ ##### ### ### ### ~~~~~~~ ### ##### ####
### ### ##### ##### ##### |_| ### ### /-\ ##### ### /|\ ### ~~~~~~ ### ##### ### ###
###/-\ /-\ ### ### ### ___________ /-\ ##### ### ##### ##### ~~~~~ ##### ### /|\ /|\
##### |_| |_| |_| /Sokkvabekkr\ ### /|\ ### ### ~~~~~~ ### /|\ ###
### /_____________\ /-\ ### /|\ /|\ ~~~~~~~ /|\ ### #####
/-\ ________ ### ### ### _ /_|_/__\_/__\_|_\ ##### ### ### ~~~~~~~~ ##### ### ~
/Alfheimr\ ##### ##### ##### /o\ |_| |^| |_| _ ### ##### ### ##### ~~~~~~~~ ### /|\ ~
### |]O[__]O[| ### ### ### |_| /o\ /-\ ### ##### ### ~~~~~~~~~ _ /|\ ### ~
#####|__|^^|__| |_| |_| |_| ##### ##### |_| /-\ ### /|\ ~~~~~~~~~~ _ /o\ ##### ~
### ##### ##### ~~~~~~~~~ /|\ ~~~~~~~~~~ /-\ |_| ### ~~
/-\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ |^| /|\ ~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
# Autres mondes (Asgard = 0)
(126, 71, 3, 72, 6), # Midgard
@ -136,9 +112,6 @@ h_9 = (r"""
|============| |=============|
| |
||^|| """,
[
("Forseti", '*', 19, 4, 'stand by'),
],
(15, 13, 0, 30, 11))
@ -167,9 +140,6 @@ h_10 = (r"""
|__| |__| |__| |__| |__| |__|
|__| |__| |__| |__| |__| |__|
/__\ /__\ /__\__^^__/__\ /__\ /__\ """,
[
("Odin", '*', 25, 11, 'stand by'),
],
(29, 23, 0, 116, 14),
(30, 23, 0, 116, 14))
@ -195,9 +165,6 @@ h_11 = (r"""
|======================| |======================|
|=+<>+=+<>+=+<>+=+<>+==| |==+<>+=+<>+=+<>+=+<>+=|
|^| """,
[
(0, '*', 34, 7, 'stand by'),
],
(24, 19, 0, 70, 19))
@ -222,9 +189,6 @@ h_12 = (r"""
|=-=-=-=-=-=|- - | | - -|=-=-=-=-=-=|
| - -| |- - |
/- - \_____|^^|_____/ - -\ """,
[
(0, '*', 19, 4, 'stand by'),
],
(24, 19, 0, 25, 31),
(25, 19, 0, 26, 31))
@ -245,9 +209,6 @@ h_13 = (r"""
| |
|==================| |==================|
|^| """,
[
(0, '*', 21, 8, 'stand by'),
],
(20, 14, 0, 110, 34))
@ -267,9 +228,6 @@ h_14 = (r"""
||_| |_||
|=|\/|==|\/|=| |=|\/|==|\/|=|
|^^| """,
[
(0, '*', 26, 2, 'stand by'),
],
(14, 14, 0, 63, 36),
(15, 14, 0, 64, 36))
@ -290,9 +248,6 @@ h_15 = (r"""
#### ####
| |
|^| """,
[
("Vidar", '*', 10, 6, 'stand by'),
],
(14, 14, 0, 120, 41))
@ -327,9 +282,6 @@ h_16 = (r"""
|===================| _ | | _ |===================|
(_) | | (_)
|=| |/^\| |=| """,
[
(0, '*', 50, 14, 'stand by'),
],
(29, 29, 0, 13, 43))
@ -359,9 +311,6 @@ h_17 = (r"""
| |
|======================| |=======================|
|^| """,
[
(0, '*', 36, 14, 'stand by'),
],
(24, 24, 0, 75, 50))
@ -391,9 +340,6 @@ h_18 = (r"""
|=====================/| |\=====================|
\| |/
/|^^|\ """,
[
(0, '*', 30, 9, 'stand by'),
],
(24, 24, 0, 27, 56),
(25, 24, 0, 28, 56))
@ -414,9 +360,6 @@ h_19 = (r"""
| |
| |
|=======================|^|======================|""",
[
(0, '*', 28, 7, 'stand by'),
],
(25, 14, 0, 57, 67))
@ -446,8 +389,38 @@ h_20 = (r"""
| |_| |_| |
| |
|============|^^|============|""",
[
(0, '*', 39, 9, 'stand by'),
],
(34, 24, 0, 10, 69),
(35, 24, 0, 11, 69))
(35, 24, 0, 11, 69))
asgard_entities = (
[0, '*', 0, 34, 7, 'stand by'],
[0, '*', 0, 121, 21, 'stand by'],
[0, '*', 0, 117, 32, 'stand by'],
[0, '*', 0, 29, 13, 'stand by'],
[0, '*', 0, 19, 20, 'stand by'],
[0, '*', 0, 28, 26, 'stand by'],
[0, '*', 0, 46, 35, 'stand by'],
[0, '*', 0, 57, 38, 'stand by'],
[0, '*', 0, 82, 38, 'stand by'],
[0, '*', 0, 22, 39, 'stand by'],
[0, '*', 0, 8, 44, 'stand by'],
[0, '*', 0, 58, 50, 'stand by'],
[0, '*', 0, 83, 51, 'stand by'],
[0, '*', 0, 32, 59, 'stand by'],
[0, '*', 0, 104, 63, 'stand by'],
[0, '*', 0, 46, 65, 'stand by'],
[0, '*', 0, 16, 71, 'stand by'],
[0, '*', 0, 138, 71, 'stand by'],
["Forseti", '*', 9, 19, 4, 'stand by'],
["Odin", '*', 10, 25, 11, 'stand by'],
[0, '*', 11, 34, 7, 'stand by'],
[0, '*', 12, 19, 4, 'stand by'],
[0, '*', 13, 21, 8, 'stand by'],
[0, '*', 14, 26, 2, 'stand by'],
["Vidar", '*', 15, 10, 6, 'stand by'],
["Baldr", '*', 16, 50, 14, 'stand by'],
[0, '*', 17, 36, 14, 'stand by'],
[0, '*', 18, 30, 9, 'stand by'],
[0, '*', 19, 28, 7, 'stand by'],
[0, '*', 20, 39, 9, 'stand by'],
)

440
idk/hypo.py Normal file
View File

@ -0,0 +1,440 @@
from idk_lib import *
# Game
def npc(data, stat, entities, identifiant):
npc_data = (
asgard_npc,
vanaheim_npc,
alfheim_npc,
midgard_npc,
niflheim_npc,
jotunheim_npc,
nidavellir_npc,
muspellheim_npc,
svartalfheim_npc,
h_9_npc, h_10_npc, h_11_npc, h_12_npc, h_13_npc, h_14_npc, h_15_npc, h_16_npc, h_17_npc, h_18_npc, h_19_npc, h_20_npc,
h_21_npc, h_22_npc,
h_23_npc, h_24_npc,
h_25_npc, h_26_npc, h_27_npc, h_28_npc,
h_29_npc, h_30_npc,
h_31_npc, h_32_npc, h_33_npc, h_34_npc, h_35_npc, h_36_npc,
h_37_npc, h_38_npc, h_39_npc, h_40_npc, h_41_npc,
h_42_npc, h_43_npc, h_44_npc,
h_45_npc, h_46_npc, h_47_npc, h_48_npc,
)
if identifiant == "Kvasir": return kvasir(data, stat, entities)
elif identifiant == 12: return frigg(data, stat, entities)
elif identifiant == "Freyja": return freyja(data, stat, entities)
else: return npc_core(npc_data[data[1]], data, stat, entities, identifiant)
def point_of_interest(data, stat, entities, identifiant):
po_data = (
asgard_po,
vanaheim_po,
alfheim_po,
midgard_po,
niflheim_po,
jotunheim_po,
nidavellir_po,
muspellheim_po,
svartalfheim_po,
)
coords = data[2], data[3]
event = po_data[data[1]](coords, identifiant)
if not event: return [0, "Il n'y a rien à voir ici."]
else: return event
entities = asgard_entities + vanaheim_entities + alfheim_entities + midgard_entities + niflheim_entities + jotunheim_entities + nidavellir_entities + muspellheim_entities + svartalfheim_entities + dlc_entities + (["Kvasir", "*", 3, 46, 66, "stand by"], )
print(center("L'Hydromel poetique", 21, " "))
print("---------------------")
print()
print("Entrez 'hypo()' pour\nune nouvelle partie.")
events = {"*": npc, "?": point_of_interest}
keys = {4: display_stat, 7: spell, 8: misc_stat, 6: inventory, 9: sleep, "s": quick_save}
def hypo(save_code=None):
# stat = [0 - PV, 1 - pièces d'or, 2 - [vitesse, agilité, attaque, defense, magie], 3 - [arme, armure], 4 - ticks, 5 - nom, 6 - classe, 7 - sorts connus : (id, level), 8 - sous-quêtes terminées, 9 - misc]
if not save_code:
stat = init_stat()
name = stat[5]
data = [{"main": 0}, 3, 44, 66]
print_text("A l'issue de la guerre qui opposa Ases et Vanes, Odin et Freyja conclurent un accord de paix durant lequel ils cracherent dans une meme cuve. De cette cuve naquit Kvasir, l'etre le plus sage qui soit. Venere par tous, Kvasir est tres souvent appelle au chevet des Dieux pour prodiguer ses precieux conseils. Odin et Freyja vous ont missionne pour escorter et assister Kvasir dans ses deplacements.")
else:
stat, data = decode_save(save_code)
idk_game = Asci(maps, entities, events, keys)
npc_init_position(idk_game.entities, data[0]["main"])
stat, data = idk_game.mainloop(100, stat, data, routine=routine, low_bar=low_bar, door="^_", walkable=".,`' ", exit_key="q")
if data[0]["main"] == 100:
print_text("conclusion")
else:
print("hypo(\"{}\")".format(encode_save(data, stat)))
def npc_init_position(entites, xp):
if xp < 2: entites["Kvasir"].change_behavior("follow")
elif xp < 11: entites["Kvasir"].teleport(16, 50, 16)
elif xp < 13: entites["Kvasir"].teleport(16, 29, 28)
elif xp < 24: entites["Kvasir"].teleport(16, 30, 28)
else:
entites["Kvasir"].teleport(16, 50, 16)
entites["Freyja"].teleport(16, 48, 14)
if 16 < xp < 17: entites[12].teleport(4, 79, 20)
elif 17 <= xp < 21: entites[12].teleport(4, 71, 32)
def kvasir(data, stat, entites):
if data[0]["main"] == 13: entites["Kvasir"].teleport(16, 30, 28)
return {
"base": [0, "Je suis Kvasir."],
0: [1, "Baldr m'a confie etre preoccupe par de recents reves premonitoires. Nous devrions aller le voir."],
1: [0, "Nous devrions aller voir Baldr. Il habite dans le Breidablik, a Asgard."],
2: [0, "Je vais rester ici pour veiller sur Baldr, va chercher Freyja et reviens vite !"],
13: [1, "En partant, pense a prevenir la mere de Baldr. [KVASIR SE DECALA POUR VOUS CEDER LE PASSAGE.]"],
25: [0, "Grace a toi et a Hel, Baldr est maintenant invincible ! [POUR APPUYER SES PROPOS, KVASIR DEGAINA UNE PETITE DAGUE QU'IL PORTAIT A LA TAILLE ET L'ENFONCA DANS LE VENTRE DE BALDR. LA BLESSURE NE SEMBLAIT PAS LE FAIRE SOUFFRIR LE MOINDRE DU MONDE ET CICATRISA AU FUR ET A MESURE QUE KVASIR RECUPERAIT SON ARME.]"],
28: [0, "Il me semble que Baldr a une petite commission a te demander."]
}
def frigg(data, stat, entites):
if data[0]["main"] == 16: entites[12].teleport(4, 79, 20)
elif data[0]["main"] == 17: entites[12].change_behavior("follow by player", 0, ((82, 20), (82, 32), (71, 32)))
elif data[0]["main"] == 18:
if stat[9] == -1: return [0, "[FRIGG SE TOURNA, VERS VOUS, UNE POINTE D'EMOTION DANS LA VOIX.] Nous voila devant le palais de Hel.\n1. Mais pourquoi sommes nous ici ?\n2. Que faisons-nous maintenant ?", 2]
else: return [0, "[FRIGG SE TOURNA, VERS VOUS, UNE POINTE D'EMOTION DANS LA VOIX.] Nous voila devant le palais de Hel.\n1. Mais pourquoi sommes nous ici ?\n2. Que faisons-nous maintenant ?\n3. Souhaitez-moi bonne chance !", 3]
elif data[0]["main"] == 21:
stat[9] = -1
entites[12].teleport(0, 8, 44)
return {
"base": [0, "Je suis Frigg, deesse du mariage et de la maternite."],
14: [0, "Frigg, deesse du mariage et de la maternite, que puis-je pour toi ?\n1. Pour moi rien, c'est votre fils, Baldr.", 1],
15: [0, "Que lui arrive-t-il ?\n1. Il reve de sa mort. Freyja va tenter de voir son avenir grace au Seidr.", 1],
16: [1, "Le Seidr ne fait pas tout, c'est Hel qu'il faut aller voir. On se retrouve a Helheim."],
17: [1, "Je savais que tu viendrais, suis-moi."],
19: [-1, "Les reves premonitoires ne sont jamais bon signe. Si Baldr reve de sa mort, le meilleur moyen de l'empecher de passer de l'autre cote est encore de convaincre Hel de le rendre immortel."],
20: [-2, "Il va te falloir convaincre Hel pour qu'elle rende Baldr immortel. Aucun Dieu, aucun humain, aucun animal, aucune plante ni aucune chose ne doit pouvoir le blesser ni le tuer.", 0, (9, 1)],
21: [1, "Bon courage {}. Et merci ! Pour ma part je vais retourner au chevet de mon fils.".format(stat[5])],
}
def freyja(data, stat, entites):
if data[0]["main"] == 10: data[1], data[2], data[3] = 16, 29, 28
return {
"base": [0, "Je suis Freyja, la reine des Vanes."],
7: [0, "Tu n'as pas l'air tres frais {}...\n1. Desole, je viens d'Asgard, le voyage a ete... brutal.\n2. Baldr m'envoie requerir votre aide.".format(stat[5]), 2],
8: [-1, "C'est Freyr qui t'as teleporte ? Pourtant je lui ai fait repeter le sort des dizaines de fois..."],
9: [0, "Baldr ?! Que lui arrive-t-il ?\n1. Il reve de sa propre mort, et voudrais que le Seidr eclaire son avenir.", 1],
10: [1, "Hmm... Je vais voir ce que je peux faire. As-tu prevenu Frigg, sa mere ? Tu la trouveras non loin du Breidablik. [UNE DOUCE CHALEUR VOUS ENVELOPPA, VOUS FERMEZ LES YEUX ET TOMBEZ DANS UN SOMMEIL PROFOND.]"],
25: [0, "Baldr savoure sa jeune immortalite, et ignore les avertissements du Seidr.\n1. Comment cela ?\n2. Cela n'a guere d'importance : il est immortel.", 2],
26: [2, "Il m'accuse de jouer les rabas-joie, mais je sais ce que j'ai vu, et Baldr est aussi immortel et toi et moi... enfin... surtout toi."],
27: [1, "Tu seras moins sur de toi quand il mourra."],
28: [0, "Baldr mourra. Et plus tot qu'on ne le pense."],
}
# - - - Asgard - - - #
def asgard_po(coords, identifiant):
pass
def asgard_npc(data, stat, entites, identifiant):
pass
def h_9_npc(data, stat, entites, identifiant):
pass
def h_10_npc(data, stat, entites, identifiant):
if identifiant == "Odin":
return {
"base": [0, "Je suis Odin, le plus puissant des Ases."],
29: [],
}
def h_11_npc(data, stat, entites, identifiant):
pass
def h_12_npc(data, stat, entites, identifiant):
pass
def h_13_npc(data, stat, entites, identifiant):
coords = data[2], data[3]
if coords == (21, 8):
if data[0]["main"] == 6: data[1], data[2], data[3] = 1, 54, 29
return {
"base": [0, "Freyr, pour te servir."],
2: [0, "[FREYR SE RETOURNE VERS VOUS.] Oh, bonjour {}. Que puis-je faire pour toi ?\n1. Baldr reve de sa mort et aimerait en savoir plus sur son destin.\n2. Je cherche Freyja.\n3. Que faites-vous ici ?\n4. Pouvez-vous m'envoyer a Vanaheim s'il vous plait ?".format(stat[5]), 4],
3: [-1, "Hum, je comprends... Pour ce genre de question, Freyja est plus douee que moi."],
4: [-2, "La derniere fois que je l'ai vue elle etait a Vanaheim."],
5: [-3, "Depuis la fin de la Premiere Guerre, Ases et Vanes ont echanges des Dieux en signe d'appaisement. Je suis ainsi arrive chez les Ases. Freyja vient de temps en temps me rendre visite."],
6: [1, "Mais bien sur {} ! [L'HABITUELLE TORPEUR VOUS PRIT, VOTRE VISION D'ESTOMPA DANS UNE SENSATION NAUSEEUSE DE FLOTTEMENT. LE CHOC BRUTAL CONTRE LA TERRE VOUS REVEILLA COMME D'UN MAUVAIS REVE.]".format(stat[5])],
}
def h_14_npc(data, stat, entites, identifiant):
pass
def h_15_npc(data, stat, entites, identifiant):
pass
def h_16_npc(data, stat, entites, identifiant):
if identifiant == "Baldr":
if data[0]["main"] == 1:
entites["Kvasir"].change_behavior("stand by")
entites["Kvasir"].teleport(16, 50, 16)
elif data[0]["main"] == 11:
entites["Kvasir"].change_behavior("walk to", 0, ((50, 25), (29, 25), (29, 28)))
return {
"base": [0, "Baldr, fils d'Odin et de Frigg. Dieu de la lumiere, de la jeunesse, de l'amour et de la beaute."],
1: [0, "Ah ! Vous voila enfin ! Depuis quelques temps, je fais des reves etranges dans lesquels je me vois mourir. Maintenant, j'ai meme peur de sortir du Breidablik !\n1. Nous pouvons vous aider ?", 1],
2: [0, "Si vous pouviez demander de l'aide à Freyja, je vous en serais reconnaissant.\n1. En quoi Freyja peut vous aider ?\n2. Ou pouvons-nous la trouver ?", 2],
3: [-1, "Freyja pratique le Seidr, et, avec Odin, elle est la meilleure seidr de tout l'Yggdrasil. Avant que tu ne me demandes, le Seidr est une forme de magie divinatoire. Nous autres, Dieux, la pratiquons et pour certains avec beaucoup de puissance. Mais les humains peuvent aussi en faire."],
4: [-2, "Habituellement, elle reside dans son palais a Vanaheim, mais depuis la treve et en signe de paix, elle se rend regulierement au Folkvangr."],
11: [0, "Ah {} deja de retour !\n1. Freyja m'a dit qu'elle allait faire son possible.".format(stat[5]), 1],
12: [1, "Très bien ! Merci beaucoup de ton aide ! Voici quelques pieces. [+15 PO]", 0, (1, 15)],
25: [0, "Ah merci {} ! Grace a toi je ne crains plus la mort ! Odin, mon pere, n'a plus besoin de s'inquieter de rien !".format(stat[5])],
28: [1, "{}, mon ami ! Va porter ce plis a mon pere, Odin.".format(stat[5])],
}
def h_17_npc(data, stat, entites, identifiant):
pass
def h_18_npc(data, stat, entites, identifiant):
pass
def h_19_npc(data, stat, entites, identifiant):
pass
def h_20_npc(data, stat, entites, identifiant):
pass
# - - - Vanaheim - - - #
def vanaheim_po(coords, identifiant):
pass
def vanaheim_npc(data, stat, entites, identifiant):
pass
def h_21_npc(data, stat, entites, identifiant):
pass
def h_22_npc(data, stat, entites, identifiant):
pass
# - - - Alfheim - - - #
def alfheim_po(coords, identifiant):
pass
def alfheim_npc(data, stat, entites, identifiant):
pass
def h_23_npc(data, stat, entites, identifiant):
pass
def h_24_npc(data, stat, entites, identifiant):
pass
# - - - Midgard - - - #
def midgard_po(coords, identifiant):
pass
def midgard_npc(data, stat, entites, identifiant):
pass
def h_25_npc(data, stat, entites, identifiant):
pass
def h_26_npc(data, stat, entites, identifiant):
pass
def h_27_npc(data, stat, entites, identifiant):
pass
def h_28_npc(data, stat, entites, identifiant):
pass
# - - - Niflheim - - - #
def niflheim_po(coords, identifiant):
pass
def niflheim_npc(data, stat, entites, identifiant):
pass
def h_29_npc(data, stat, entites, identifiant):
pass
def h_30_npc(data, stat, entites, identifiant):
if identifiant == "Hel":
if data[0]["main"] == 24:
entites["Kvasir"].teleport(16, 50, 16)
entites["Freyja"].teleport(16, 48, 14)
return {
"base": [0, "Je suis Hel, deesse de la mort et reine de Niflheim"],
22: [0, "Un humain !? C'est chose rare ici... surtout vivant.\n1. Je viens de la part de Frigg", 1],
23: [0, "[HEL LEVA LES YEUX D'UN AIR EXASPÉRÉ.] Que veux-t-elle ?\n1. Baldr reve de sa mort et Frigg aimerait lui garantir la vie eternelle.", 1],
24: [1, "Encore !? Bon d'accord, cette fois-ci je le ferai."],
25: [0, "Oui, oui c'est bon je m'en occupe !"],
}
# - - - Jotunheim - - - #
def jotunheim_po(coords, identifiant):
pass
def jotunheim_npc(data, stat, entites, identifiant):
pass
def h_31_npc(data, stat, entites, identifiant):
pass
def h_32_npc(data, stat, entites, identifiant):
pass
def h_33_npc(data, stat, entites, identifiant):
pass
def h_34_npc(data, stat, entites, identifiant):
pass
def h_35_npc(data, stat, entites, identifiant):
pass
def h_36_npc(data, stat, entites, identifiant):
pass
# - - - Nidavellir - - - #
def nidavellir_po(coords, identifiant):
pass
def nidavellir_npc(data, stat, entites, identifiant):
pass
def h_37_npc(data, stat, entites, identifiant):
pass
def h_38_npc(data, stat, entites, identifiant):
pass
def h_39_npc(data, stat, entites, identifiant):
pass
def h_40_npc(data, stat, entites, identifiant):
pass
def h_41_npc(data, stat, entites, identifiant):
pass
# - - - Muspellheim - - - #
def muspellheim_po(coords, identifiant):
pass
def muspellheim_npc(data, stat, entites, identifiant):
pass
def h_42_npc(data, stat, entites, identifiant):
pass
def h_43_npc(data, stat, entites, identifiant):
pass
def h_44_npc(data, stat, entites, identifiant):
pass
# - - - Svartalfheim - - - #
def svartalfheim_po(coords, identifiant):
pass
def svartalfheim_npc(data, stat, entites, identifiant):
pass
def h_45_npc(data, stat, entites, identifiant):
pass
def h_46_npc(data, stat, entites, identifiant):
pass
def h_47_npc(data, stat, entites, identifiant):
pass
def h_48_npc(data, stat, entites, identifiant):
pass

View File

@ -1,16 +1,5 @@
from idk_lib import *
try:
import dlc_idk as dlc
spells = dlc.spells
spells_level = dlc.spells_level
spells_effect = dlc.spells_effect
weapons = dlc.weapons
armors = dlc.armors
except:
dlc = None
# Game
def npc(data, stat, entities, identifiant):
@ -34,11 +23,6 @@ def npc(data, stat, entities, identifiant):
h_42_npc, h_43_npc, h_44_npc,
h_45_npc, h_46_npc, h_47_npc, h_48_npc)
if dlc:
event = dlc.npc(data, stat, entities, identifiant)
if event: return event
return npc_core(npc_data[data[1]], data, stat, entities, identifiant)
@ -58,16 +42,38 @@ def point_of_interest(data, stat, entities, identifiant):
coords = data[2], data[3]
event = po_data[data[1]](coords, identifiant)
if not event: return [0, "Il n'y a rien à voir ici."]
if not event: return [0, "Il n'y a rien a voir ici."]
else: return event
poi = (
[0, '?', 0, 120, 26, 'stand by'],
[0, '?', 0, 51, 55, 'stand by'],
[0, '?', 1, 42, 20, 'stand by'],
[0, '?', 2, 34, 20, 'stand by'],
[0, '?', 3, 29, 9, 'stand by'],
[0, '?', 3, 53, 24, 'stand by'],
[0, '?', 3, 66, 45, 'stand by'],
[0, '?', 3, 52, 79, 'stand by'],
[0, '?', 4, 88, 32, 'stand by'],
[0, '?', 5, 60, 57, 'stand by'],
[0, '?', 5, 23, 70, 'stand by'],
[0, '?', 5, 60, 86, 'stand by'],
[0, '?', 6, 65, 7, 'stand by'],
[0, '?', 6, 66, 58, 'stand by'],
[0, '?', 7, 66, 8, 'stand by'],
[0, '?', 7, 65, 97, 'stand by'],
[0, '?', 8, 113, 37, 'stand by']
)
entities = asgard_entities + vanaheim_entities + alfheim_entities + midgard_entities + niflheim_entities + jotunheim_entities + nidavellir_entities + muspellheim_entities + svartalfheim_entities + poi
print(center("Island of the Dead", 21, " "))
print(center("* Kings *", 21, " "))
print("---------------------")
if dlc: print(center("DLC : {}".format(dlc.title), 21, " "))
else: print()
print()
print("Entrez 'idk()' pour\nune nouvelle partie.")
events = {"*": npc, "?": point_of_interest}
keys = {4: display_stat, 7: spell, 8: misc_stat, 6: inventory, 9: sleep, "s": quick_save}
@ -79,35 +85,28 @@ def idk(save_code=None):
name = stat[5]
data = [{"main": 0}, 3, 44, 66]
print_text("Au alentour du Ve siecle, quelque part en Scandinavie. La bataille prenait place dans un champ saccage, et la nuit etait tombee depuis quelques heures lorsque l'assaut debuta. Hache levee, a la seule lueur de la pleine lune, {0} et sa division se jeterent sur le camp adverse, mais, pris a revers, le combat tourna vite a la defaveur des assaillants qui furent reduit sans autres difficultes.\nBlesse a plusieurs endroit, {0} se trainait sur le sol, tentant de se refugier dans la nuit lorsqu'une forme humaine portant un espadon dans le dos et une lourde armure d'argent s'arreta silencieusement devant lui. La Valkyrie degaina son espadon et acheva {0} avant de l'emporter dans ses bras.\nMais Odin, septique des exploits au combat de {0}, lui refusa une retraite parmi les meilleurs guerriers, et il le renvoya dans le vaste monde avec cet ultimatum : s'il trouve la voie jusqu'a Asgard et le Valaskjalf, Odin conscent a revoir son jugement, sinon il sera condamne a errer dans le monde sans jamais trouver le repos.".format(name))
print_text("Au alentour du Ve siecle, quelque part en Scandinavie. La bataille prenait place dans un champ saccage, et la nuit etait tombee depuis quelques heures lorsque l'assaut debuta. Hache levee, a la seule lueur de la pleine lune, {0} et sa division se jeterent sur le camp adverse, mais, pris a revers, le combat tourna vite a la defaveur des assaillants qui furent reduit sans autres difficultes.\nBlesse a plusieurs endroits, {0} se trainait sur le sol, tentant de se refugier dans la nuit lorsqu'une forme humaine portant un espadon dans le dos et une lourde armure d'argent s'arreta silencieusement devant lui. La Valkyrie degaina son espadon et acheva {0} avant de l'emporter dans ses bras.\nMais Odin, septique des exploits au combat de {0}, lui refusa une retraite parmi les meilleurs guerriers, et le renvoya dans le vaste monde avec cet ultimatum : si {0} trouve la voie jusqu'a Asgard et le Valaskjalf, Odin conscent a revoir son jugement, sinon il sera condamne a errer dans le monde sans jamais trouver le repos.".format(name))
else:
stat, data = decode_save(save_code)
idk_game = Asci(maps, events, keys)
stat, data = idk_game.mainloop(102, stat, data, routine=routine, door="^_", walkable=".,`' ", exit_key="q")
idk_game = Asci(maps, entities, events, keys)
stat, data = idk_game.mainloop(102, stat, data, routine=routine, low_bar=low_bar, door="^_", walkable=".,`' ", exit_key="q")
if stat[9] != -1: data[0]["main"] -= stat[9]
if data[0]["main"] == 102:
print_text("Ainsi s'acheva la premiere guerre du monde. Les Ases garderent la tete de Mimir pour ses conseils avises, mais il n'y eu jamais de represailles. Les Ases et les Vanes se melerent ne formant ainsi qu'une seule et meme grande famille.")
else:
print("idk(\"{}\")".format(encode_save(data, stat[:-1])))
print("idk(\"{}\")".format(encode_save(data, stat)))
# Scenario
def shop_interaction(data, stat, nb_choice, *events):
for choice in range(nb_choice):
if data[0]["main"] == stat[9] + choice + 1:
stat[9] = -1
if stat[1] < events[choice][0]: return events[choice][2], choice + 1
else: return events[choice][1], choice + 1
# - - - Asgard - - - #
def asgard_po(coords, identifiant):
if identifiant == "valaskjalf": return [0, "De hautes montagnes vous entourent de toutes part. Taillees dans la roche enneigee, les marches de l'escalier qui mene a Valaskjalf se decoupent nettement. La grande demeure d'Odin et son toit d'argent domine les environs."]
elif identifiant == "jardin sud": return [0, "Tout autour de vous s'etend un riche jardin soigneusement entretenu. Dans l'alignement de l'allee nord, une fontaine complete l'ensemble. Une douce odeur de verdure emplit vos narines, l'ambiance est calme."]
if coords == (120, 26): return [0, "De hautes montagnes vous entourent de toutes part. Taillees dans la roche enneigee, les marches de l'escalier qui mene a Valaskjalf se decoupent nettement. La grande demeure d'Odin et son toit d'argent domine les environs."]
elif coords == (51, 55): return [0, "Tout autour de vous s'etend un riche jardin soigneusement entretenu. Dans l'alignement de l'allee nord, une fontaine complete l'ensemble. Une douce odeur de verdure emplit vos narines, l'ambiance est calme."]
def asgard_npc(data, stat, entites, identifiant):
@ -280,7 +279,7 @@ def h_15_npc(data, stat, entites, identifiant):
if coords == (10, 6):
if "theldis" in data[0]: return "theldis", {
"base": [0, "Vidar, dieu de la vengeance et du silence. Besoin de faire taire quelqu'un ?"],
3: [1, "Hum, j'accepte de réaliser votre vengeance, mais j'ai une condition : vous devrez vous charger d'une autre vengeance. Allez dans les montagnes au nord-est, trouvez Hargduf, c'est un orc, vous ne pouvez pas le louper. Eliminez-le."],
3: [1, "Hum, j'accepte de realiser votre vengeance, mais j'ai une condition : vous devrez vous charger d'une autre vengeance. Allez dans les montagnes au nord-est, trouvez Hargduf, c'est un orc, vous ne pouvez pas le louper. Eliminez-le."],
4: [0, "Si tu veux que justice soit faite, va tuer cet orc."],
5: [1, "Bon travail. Je m'occupe de ton affaire des que possible."]
}
@ -336,7 +335,7 @@ def vanaheim_npc(data, stat, entites, identifiant):
else: return [0, "Riethas, simple paysan. Que Nerthus vous garde !"]
if coords == (41, 45):
elif coords == (41, 45):
if "riethas" in data[0]:
if data[0]["riethas"] == 5: return [20, 20, 20, 20, 100], "Kamuel", 50, 1, "riethas"
else: return "riethas", {
@ -345,7 +344,7 @@ def vanaheim_npc(data, stat, entites, identifiant):
4: [2, "Bien sur, voila. [+50 PO]", 0, (1, 50)],
}
if identifiant == "charretier":
elif coords == (45, 39):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "[LE CONDUCTEUR DE LA CHARRETTE SE TOURNA VERS VOUS] Ou voulez-vous aller ? Je vous emmene pour 5 pieces.\n1. Midgard\n2. Jotunheim\n3. Alfheim", 3]
@ -365,17 +364,11 @@ def vanaheim_npc(data, stat, entites, identifiant):
def h_21_npc(data, stat, entites, identifiant):
coords = data[2], data[3]
if identifiant == "aubergiste":
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Cher client bonjour ! Que puis-je faire pour vous ?\n1. Manger [5 PO]\n2. Boire [2 PO]\n3. Dormir [10 PO]", 3]
else:
event, _ = shop_interaction(data, stat, 3,
(5, [-1, "Et un plat chaud, un ! [VOUS VOUS ASSEYEZ DEVANT UN TRANCHOIR DE PAIN ET UNE ASSIETTE DE SOUPE EPAISSE.]", 0, (0, 5), (1, -5)], [-1, "Tsst, quand on ne peut pas payer, on ne rentre pas."]),
(2, [-2, "Et voila ! [L'AUBERGISTE PLACA DEVANT VOUS UNE CHOPE DE BIERE]", 0, (0, 2), (1, -2)], [-2, "La maison ne fait pas credit."]),
(10, [-3, "Votre chambre est a l'etage.\n[VOUS MONTEZ A L'ETAGE ET VOUS ENDORMEZ SANS DIFFICULTES.]", 0, (0, 10), (1, -10), (4, 480)], [-3, "Allez donc voir ailleurs."]))
return event
if identifiant == "vanaheim_aubergiste":
return inn_interaction(data, stat, 3, "Cher client bonjour ! Que puis-je faire pour vous ?\n1. Manger [5 PO]\n2. Boire [2 PO]\n3. Dormir [10 PO]",
(5, [0, "Et un plat chaud, un ! [VOUS VOUS ASSEYEZ DEVANT UN TRANCHOIR DE PAIN ET UNE ASSIETTE DE SOUPE EPAISSE.]", 0, (0, 5), (1, -5)], [0, "Tsst, quand on ne peut pas payer, on ne rentre pas."]),
(2, [0, "Et voila ! [L'AUBERGISTE PLACA DEVANT VOUS UNE CHOPE DE BIERE]", 0, (0, 2), (1, -2)], [0, "La maison ne fait pas credit."]),
(10, [0, "Votre chambre est a l'etage.\n[VOUS MONTEZ A L'ETAGE ET VOUS ENDORMEZ SANS DIFFICULTES.]", 0, (0, 10), (1, -10), (4, 480)], [0, "Allez donc voir ailleurs."]))[0]
# Utarg
elif coords == (21, 6): return {
@ -486,7 +479,8 @@ def alfheim_npc(data, stat, entites, identifiant):
# * : (46; 6)
# * : (23; 17)
# * : (27; 54)
if identifiant == "charretier":
coords = data[2], data[3]
if coords == (23, 17):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "[LE CONDUCTEUR DE LA CHARRETTE SE TOURNA VERS VOUS] Ou voulez-vous aller ? Je vous emmene pour 5 pieces.\n1. Midgard\n2. Asgard\n3. Vanaheim\n4. Svartalfheim", 4]
@ -508,7 +502,7 @@ def h_23_npc(data, stat, entites, identifiant):
return {
"base": [0, "Bonjour... ?"],
44: [0, "Je suis Sagriel, alfe claire. Je peux t'aider ?\n1. Oui, je voulais connaitre la signification de ces runes.\n2. Non, rien, excusez-moi...", 2],
45: [1, "[VOUS TENDEZ LE CROQUIS D'UTARG À SAGRIEL] Hum, ces runes sont celles d'Odin. Il s'interesse de tres pres a cela. Je peux vous les traduire contre un service.\n1. Lequel ?\n2. Je trouverais quelqu'un d'autre.", 2],
45: [1, "[VOUS TENDEZ LE CROQUIS D'UTARG A SAGRIEL] Hum, ces runes sont celles d'Odin. Il s'interesse de tres pres a cela. Je peux vous les traduire contre un service.\n1. Lequel ?\n2. Je trouverais quelqu'un d'autre.", 2],
46: [-2, "Eh bien revenez quand vous vous serez decide alors..."],
47: [3, "J'ai besoin d'une potion d'eternelle jeunesse, Gullveig en vend pour 10 pieces d'or. [+10 PO]", 0, (1, 10)],
@ -523,62 +517,21 @@ def h_24_npc(data, stat, entites, identifiant):
if not (480 <= stat[4] <= 1140): return [0, "Excusez-moi, nous sommes fermes."]
if coords == (12, 3):
if not stat[7]: return [0, "Je ne peux pas vous faire oublier ce que vous ne connaissez pas."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Quel sort souhaitez-vous oublier ?\n" + "\n".join(["{0}. {1} {2}".format(nb + 1, spells[stat[7][nb][0]], spells_level[stat[7][nb][1] - 1]) for nb in range(len(stat[7]))]), len(stat[7])]
else:
for i in range(1, len(stat[7]) + 1):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
stat[7].pop(i - 1)
pts = (20 * stat[0]) // 100
return [-i, "Asseyez-vous, je vais vous faire oublier ce sort. [UN PUISSANT MAL DE TETE VOUS PRIT, LES MURS SEMBLERENT TANGUER TANDIS QUE VOTRE VUE DEVINT FLOUE. LE VERTIGE S'ESTOMPA PROGRESSIVEMENT.] Et voila ! [-{} PV]".format(pts), 0, (0, -pts)]
if coords == (36, 12):
if len(stat[7]) >= 3: return [0, "Je suis desole, vous ne pouvez pas apprendre plus de trois sorts."]
spells_sale = []
formated_spells = ""
while len(spells_sale) < 3:
sp_id = randint(0, len(spells) - 1)
sp_lvl = randint(1, len(spells_level))
check = True
for sp in spells_sale:
if sp[0] == sp_id and sp[1] == sp_lvl:
check = False
break
if check:
spells_sale.append((sp_id, sp_lvl))
formated_spells += "{0}. {1} {2}\n".format(len(spells_sale), spells[sp_id], spells_level[sp_lvl - 1])
spell_choice = print_text("Diomwar, pour vous servir. Quel sort voulez-vous acheter ?\n{}".format(formated_spells), 1, 3, 0)
if not spell_choice: return [0, "Hmm ?"]
spell_sel = spells_sale[spell_choice - 1]
if stat[1] < 10 * spell_sel[1]: return [0, "Vous n'avez pas les moyens, desole."]
spell_id = -1
for sp_id in range(len(stat[7])):
sp = stat[7][sp_id]
if spell_sel[0] == sp[0]:
if spells_sel[1] <= sp[1]: return [0, "Vous connaissez deja ce sort."]
else:
spell_id = sp_id
break
if spell_id == -1:
stat[7].append(spells_sale[i])
else:
stat[7][spell_id] = spells_sale[i]
return [0, "[DIOMWAR OUVRIT UN LIVRE RELIE DE CUIR NOIR, ET TRACA DU DOIGT DES SIGNES CABALISTIQUES SUR LE SOL. LES RUNES BRILLERENT PUISSAMMENT AVANT DE S'ETEINDRE.]", 0, (1, -10 * spells_sel[1])]
health_cost = (20 * stat[0]) // 100
return spell_deletion(data, stat,
"Quel sort souhaitez-vous oublier ?",
"Asseyez-vous, je vais vous faire oublier ce sort. [UN PUISSANT MAL DE TETE VOUS PRIT, LES MURS SEMBLERENT TANGUER TANDIS QUE VOTRE VUE DEVINT FLOUE. LE VERTIGE S'ESTOMPA PROGRESSIVEMENT.] Et voila ! [-{} PV]".format(health_cost),
"Je ne peux pas vous faire oublier ce que vous ne connaissez pas.",
health_cost)
if coords == (36, 12):
return spell_purchase(data, stat,
"Diomwar, pour vous servir. Quel sort voulez-vous acheter ?",
"[DIOMWAR OUVRIT UN LIVRE RELIE DE CUIR NOIR, ET TRACA DU DOIGT DES SIGNES CABALISTIQUES SUR LE SOL. LES RUNES BRILLERENT PUISSAMMENT AVANT DE S'ETEINDRE.]",
"Vous connaissez deja ce sort.",
"Vous n'avez pas les moyens, desole.",
"Je suis desole, vous ne pouvez pas apprendre plus de trois sorts.")
# - - - Midgard - - - #
def midgard_po(coords, identifiant):
@ -611,7 +564,7 @@ def midgard_npc(data, stat, entites, identifiant):
if stat[8] % 3: return "laard", {
"base": [0, "Laard, je suis marin de mon etat."],
0: [0, "Laard, marin. Vous cherchez un engagement ?\n1. Hmm ? Proposez toujours ?\n2. Désolé, j'ai d'autres affaires a regler.", 2],
0: [0, "Laard, marin. Vous cherchez un engagement ?\n1. Hmm ? Proposez toujours ?\n2. Desole, j'ai d'autres affaires a regler.", 2],
1: [2, "Voila, il y a quelques temps j'ai embarque dans un navire. Malheureusement, Njord ne nous a pas ete favorable et la tempete fut rude. La situation a bord est devenue tendue, nous nous sommes mutines. En represailles, Gardim, le capitaine, a fait passer quelques matelots par dessus bord. J'ai jure de les venger, mais je ne connais rien aux armes. Tu peux t'en charger pour moi ?"],
2: [-2, "Je comprends."],
3: [0, "En clair, j'aimerais que tu elimines Gardim. La paye sera bonne."],
@ -666,7 +619,7 @@ def midgard_npc(data, stat, entites, identifiant):
55: [-4, "C'est bien, passez. [ALORS QUE VOUS PASSIEZ A COTE DE IROB, UNE VIVE DOULEUR VOUS PRIT L'ABDOMEN, LE SANG ET LES CHAIRS SE REPANDIRENT SUR VOS MAINS ET VOTRE INCOMPREHENSION.]"],
}
elif identifiant == "charretier":
elif coords == (39, 49):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "[LE CONDUCTEUR DE LA CHARRETTE SE TOURNA VERS VOUS] Ou voulez-vous aller ? Je vous emmene pour 5 pieces.\n1. Vanaheim\n2. Asgard\n3. Nidavellir\n4. Niflheim", 4]
@ -697,15 +650,12 @@ def h_26_npc(data, stat, entites, identifiant):
if identifiant == "Rosahil Green":
if stat[4] >= 1320 or stat[4] <= 340: return [0, "Je suis desolee, nous sommes fermes. Revenez plus tard !"]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Rosahil Green, tenanciere de cette auberge. Vous desirez quelque chose ?\n1.De quoi manger s'il vous plait. [-5 PO]\n2.Je voudrais une chambre pour la nuit. [-10 PO]", 2]
else:
event, choice = shop_interaction(data, stat, 2,
(5, [-1, "Et voila pour vous ! [ROSAHIL POSA UNE ASSIETTE DE RAGOUT CHAUD DEVANT VOUS.]", 0, (0, 5), (1, -5)], [-1, "Reviens quand tu auras assez de pieces d'or."]),
(10, [-2, "Suivez-moi, je vais vous montrer votre chambre. [VOUS SUIVEZ ROSAHIL DANS L'AUBERGE, LA NUIT PASSA.]", 0, (0, 10), (1, -10), (4, 480)], [-2, "Je suis desolee, tu n'as pas assez !"]))
event, choice = inn_interaction(data, stat, 2, "Rosahil Green, tenanciere de cette auberge. Vous desirez quelque chose ?\n1.De quoi manger s'il vous plait. [-5 PO]\n2.Je voudrais une chambre pour la nuit. [-10 PO]",
(5, [0, "Et voila pour vous ! [ROSAHIL POSA UNE ASSIETTE DE RAGOUT CHAUD DEVANT VOUS.]", 0, (0, 5), (1, -5)], [0, "Reviens quand tu auras assez de pieces d'or."]),
(10, [0, "Suivez-moi, je vais vous montrer votre chambre. [VOUS SUIVEZ ROSAHIL DANS L'AUBERGE, LA NUIT PASSA.]", 0, (0, 10), (1, -10), (4, 480)], [0, "Je suis desolee, tu n'as pas assez !"]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Il est trop tot, revenez vers 19h."]
if choice == 2 and 360 < stat[4] < 1140: return [0, "Il est trop tot, revenez vers 19h."]
else: return event
elif coords == (17, 7):
@ -768,7 +718,7 @@ def h_29_npc(data, stat, entites, identifiant):
spells_sale = [(i, len(spells_level)) for i in range(n)]
formated_spells = ""
for sp in range(n):
formated_spells += "{0}. {1} {2}\n".format(sp + 1, spells[spells_sale[sp][0]], spells_level[spells_sale[sp][1] - 1])
formated_spells += "{0}. {1} {2}\n".format(sp + 1, spells[spells_sale[sp][0]][0], spells_level[spells_sale[sp][1] - 1])
if not (480 <= stat[4] <= 1140): return [0, "Je suis desolee, nous sommes fermes."]
@ -809,7 +759,7 @@ def h_30_npc(data, stat, entites, identifiant):
if identifiant == "Hel": return {
"base": [0, "Hel, deesse de la mort, tu veux quelque chose ?"],
35: [2, "Une guerre contre les Vanes ? Les guerriers du Valhalla vont enfin sortir affronter ceux du Folkvangr. Je m'occupe du Valhalla, retourne voir Odin. Voici quelques pieces pour ta commission. [+10 PO]", 0, (1, 10)],
35: [2, "Une guerre contre les Vanes ? Les guerriers du Valhalla vont enfin sortir affronter ceux du Folkvangr. Je m'en occupe, retourne voir Odin. Voici quelques pieces pour ta commission. [+10 PO]", 0, (1, 10)],
}
@ -885,20 +835,15 @@ def h_35_npc(data, stat, entites, identifiant):
def h_36_npc(data, stat, entites, identifiant):
coords = data[2], data[3]
if identifiant == "aubergiste":
if identifiant == "jotunheim_aubergiste":
if not (300 <= stat[4] <= 1380): return [0, "Je suis desole, nous somme ferme la nuit."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Vous voulez quelque-chose ?\n1. Je mangerai bien un truc [-4 PO]\n2. Il vous reste une chambre ? [-12 PO]", 2]
else:
event, choice = shop_interaction(data, stat, 2,
(4, [-1, "Et voila ! [LE TAVERNIER POSA UNE ASSIETTE FUMANTE DEVANT VOUS ET UN VERRE DE VIN]", 0, (0, 5), (1, -4)], [-1, "Reviens quand tu auras de quoi me payer."]),
(12, [-2, "Oui, au premier etage, au bout du couloir sur votre droite. [VOUS SUIVEZ LES INDICATIONS DU TAVERNIER ET TROUVEZ VOTRE CHAMBRE. VOUS SOMBREZ DANS LES BRAS DE NOTT.]", 0, (0, 15), (1, -12), (4, 480)], [-2, "Tu n'as pas assez."]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Il est trop tot, reviens vers 19h."]
else: return event
event, choice = inn_interaction(data, stat, 2, "Vous voulez quelque-chose ?\n1. Je mangerai bien un truc [-4 PO]\n2. Il vous reste une chambre ? [-12 PO]",
(4, [0, "Et voila ! [LE TAVERNIER POSA UNE ASSIETTE FUMANTE DEVANT VOUS ET UN VERRE DE VIN]", 0, (0, 5), (1, -4)], [0, "Reviens quand tu auras de quoi me payer."]),
(12, [0, "Oui, au premier etage, au bout du couloir sur votre droite. [VOUS SUIVEZ LES INDICATIONS DU TAVERNIER ET TROUVEZ VOTRE CHAMBRE. VOUS SOMBREZ DANS LES BRAS DE NOTT.]", 0, (0, 15), (1, -12), (4, 480)], [0, "Tu n'as pas assez."]))
if choice == 2 and 360 < stat[4] < 1120: return [-2, "Il est trop tot, reviens vers 19h."]
else: return event
# - - - Nidavellir - - - #
@ -929,18 +874,13 @@ def h_37_npc(data, stat, entites, identifiant):
if identifiant == "Muin":
if not (340 <= stat[4] <= 1380): return [0, "Nous sommes ouverts de 5 heures a 23."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bonjour, Muin pour vous servir.\n1. Bonjour je voudrais manger. [-5 PO]\n2. Vous reste-t-il des chambres ? [-15 PO]\n3. A boire ! [-3 PO]", 3]
else:
event, choice = shop_interaction(data, stat, 3,
(5, [-1, "Pas de probleme ! [MUIN REVINT QUELQUES MINUTES PLUS TARD, ET POSA UNE ASSIETTE FUMANTE DEVANT VOUS.]", 0, (0, 5), (1, -5)], [-1, "Hey la ! Reviens quand tu pourras me payer."]),
(15, [-2, "Bien sur ! Suivez-moi. [VOUS SUIVEZ MUIN DANS UNE PIECE TROGLODYTE MUNIE D'UN LIT ET D'UN COFFRE. VOUS VOUS ENDORMEZ RAPIDEMENT.]", 0, (0, 15), (1, -15), (4, 480)], [-2, "Desole, je n'ai plus une seule chambre de libre."]),
(3, [-3, "[MUIN POSA UNE CHOPPE DE BIERE MOUSSEUSE DEVANT VOUS.]", 0, (0, 3), (1, -3)], [-3, "Allez donc voir un autre etablissement, nous ne servons pas gratuitement."]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Une chambre !? Il n'est que {} heures. Reviens dans la soiree.".format(stat[4] // 60)]
else: return event
event, choice = inn_interaction(data, stat, 3, "Bonjour, Muin pour vous servir.\n1. Bonjour je voudrais manger. [-5 PO]\n2. Vous reste-t-il des chambres ? [-15 PO]\n3. A boire ! [-3 PO]",
(5, [0, "Pas de probleme ! [MUIN REVINT QUELQUES MINUTES PLUS TARD, ET POSA UNE ASSIETTE FUMANTE DEVANT VOUS.]", 0, (0, 5), (1, -5)], [0, "Hey la ! Reviens quand tu pourras me payer."]),
(15, [0, "Bien sur ! Suivez-moi. [VOUS SUIVEZ MUIN DANS UNE PIECE TROGLODYTE MUNIE D'UN LIT ET D'UN COFFRE. VOUS VOUS ENDORMEZ RAPIDEMENT.]", 0, (0, 15), (1, -15), (4, 480)], [0, "Desole, je n'ai plus une seule chambre de libre."]),
(3, [0, "[MUIN POSA UNE CHOPPE DE BIERE MOUSSEUSE DEVANT VOUS.]", 0, (0, 3), (1, -3)], [0, "Allez donc voir un autre etablissement, nous ne servons pas gratuitement."]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Une chambre !? Il n'est que {} heures. Reviens dans la soiree.".format(stat[4] // 60)]
else: return event
return [0, "Hmm ?"]
@ -955,40 +895,20 @@ def h_39_npc(data, stat, entites, identifiant):
if not (480 <= stat[4] <= 1140): return [0, "La forge de Nidavellir est ouverte de 8 heures a 18 heures."]
if coords == (9, 2):
if stat[3][0]: return [0, "Vous avez deja une arme. Allez voir mon confrere si vous voulez la vendre et revenez me voir."]
return weapon_purchase(data, stat,
"Bienvenue a la forge de Nidavellir ! Vous desirez une piece particuliere ?",
"Tres bon choix ! [LE NAIN DECROCHA L'ARME DU RATELIER ET VOUS LA TENDIT.]",
"Vous avez deja une arme. Allez voir mon confrere si vous voulez la vendre et revenez me voir.",
"Vous n'avez pas assez.")
weapons_sale = []
formated_wpn = ""
while len(weapons_sale) < 4:
wpn = randint(1, len(weapons) - 1)
if not wpn in weapons_sale:
weapons_sale.append(wpn)
formated_wpn += "{0}. {1} [-{2} PO]\n".format(len(weapons_sale), weapons[wpn], 10 * wpn)
wpn_choice = print_text("Bienvenue a la forge de Nidavellir ! Vous desirez une piece particulière ?\n{}".format(formated_wpn), 1, 4, 0)
if not wpn_choice: return [0, "Hmm ?"]
wpn = weapons_sale[wpn_choice - 1]
if stat[1] < 10 * wpn: return [0, "Vous n'avez pas assez."]
stat[3][0] = wpn
return [0, "Tres bon choix ! [LE NAIN DECROCHA L'ARME DU RATELIER ET VOUS LA TENDIT.]", 0, (1, -10 * wpn)]
if coords == (9, 4):
if stat[3][0] == 0: return [0, "Vous n'avez pas d'arme a me vendre. Allez voir mon collegue pour en acheter une."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bienvenue dans notre forge. Vous souhaitez me vendre votre arme ?\n1. Oui\n2. Non", 2]
elif data[0]["main"] == stat[9] + 1:
stat[9] = -1
cost = stat[3][0] * 8
stat[3][0] = 0
return [-1, "Marche conclu ! [+{} PO]".format(cost), 0, (1, cost)]
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [-2, "A votre guise, revenez quand vous voulez !"]
elif coords == (9, 4):
price = 8 * stat[3][0]
return weapon_sale(data, stat,
"Bienvenue dans notre forge. Vous souhaitez me vendre votre arme ?",
"Marche conclu ! [+{} PO]".format(price),
"A votre guise, revenez quand vous voulez !",
"Vous n'avez pas d'arme a me vendre. Allez voir mon collegue pour en acheter une.",
price)
def h_40_npc(data, stat, entites, identifiant):
@ -1022,19 +942,13 @@ def muspellheim_npc(data, stat, entites, identifiant):
def h_42_npc(data, stat, entites, identifiant):
coords = data[2], data[3]
if identifiant == "aubergiste":
if identifiant == "muspellheim_aubergiste":
if not (300 <= stat[4] <= 1380): return [0, "Nous sommes ouverts de 5 a 23 heures."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Besoin de quelque chose messire ?\n1. Hum, oui, j'aimerais manger. [-5 PO]\n2. Je voudrais dormir [-10 PO]", 2]
return inn_interaction(data, stat, 2, "Besoin de quelque chose messire ?\n1. Hum, oui, j'aimerais manger. [-5 PO]\n2. Je voudrais dormir [-10 PO]",
(5, [0, "Et voila pour vous !", 0, (0, 5), (1, -5)], [0, "Je regrette, vous n'avez pas assez."]),
(10, [0, "Bien sur, si vous voulez bien me suivre. [VOUS VOUS ALLONGEZ SUR LE LIT ET VOUS ENDORMEZ RAPIDEMENT.]", 0, (0, 10), (1, -10), (4, 480)], [0, "Nous ne pouvons pas nous permettre de faire credit."]))[0]
else:
event, _ = shop_interaction(data, stat, 2,
(5, [-1, "Et voila pour vous !", 0, (0, 5), (1, -5)], [-1, "Je regrette, vous n'avez pas assez."]),
(10, [-2, "Bien sur, si vous voulez bien me suivre. [VOUS VOUS ALLONGEZ SUR LE LIT ET VOUS ENDORMEZ RAPIDEMENT.]", 0, (0, 10), (1, -10), (4, 480)], [-2, "Nous ne pouvons pas nous permettre de faire credit."]))
return event
def h_43_npc(data, stat, entites, identifiant):
coords = data[2], data[3]
@ -1042,36 +956,20 @@ def h_43_npc(data, stat, entites, identifiant):
if not (480 <= stat[4] <= 1140): return [0, "L'armurerie est ouverte de 8 heures a 18 heures."]
if identifiant == "Bertfrid":
if stat[3][1]: return [0, "Vous portez deja une armure, allez voir mon confrere."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bienvenue, dans mon armurerie ! Je suis Bertfrid, besoin d'une armure ?\n1. Oui, d'une rondache. [-10 PO]\n2. d'un pavois [-20 PO]\n3. d'une cotte de mailles [-30 PO]\n4. d'une broigne [-40 PO]\n5. d'un harnois [-50 PO]", 5]
else:
shields = ("UNE RONDACHE", "UN PAVOIS", "UNE COTTE DE MAILLES", "UNE BROIGNE", "UN HARNOIS")
for i in range(1, 6):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < i * 10: return [-i, "Vous n'avez pas assez."]
stat[3][1] = i
return [-i, "C'est un bon achat. [BERTFRID DECROCHA {}]".format(shields[i - 1]), 0, (1, -i * 10)]
return armor_purchase(data, stat,
"Bienvenue, dans mon armurerie ! Je suis Bertfrid, vous cherchez quoi exactement ?",
"C'est un bon achat. [BERTFRID DECROCHA LA PIECE D'ARMURE ET VOUS LA TENDIT.]",
"Vous portez deja une armure, allez voir mon confrere.",
"Vous n'avez pas assez.")
elif coords == (13, 9):
if stat[3][1] == 0: return [0, "J'achete, je ne vend pas ! Allez voir Bertfrid du cote du four a metaux, elle vous renseignera"]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Vous voulez vendre votre piece d'armure ?\n1. Oui\n2. Non", 2]
elif data[0]["main"] == stat[9] + 1:
stat[9] = -1
cost = stat[3][1] * 8
return [-1, "C'est une affaire ! [+{} PO]".format(cost), 0, (1, cost)]
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [-2, "Revenez quand vous voulez !"]
price = 8 * stat[3][1]
return armor_sale(data, stat,
"Vous voulez vendre votre piece d'armure pour {} PO ?".format(price),
"C'est une affaire ! [+{} PO]".format(price),
"Revenez quand vous vous serez decide !",
"J'achete, je ne vend pas ! Allez voir Bertfrid du cote du four a metaux, elle vous renseignera.",
price)
elif coords == (6, 5):
return [0, "Je ne suis qu'apprenti monseigneur. Adressez-vous plutot a Bertfrid. Vous la trouverez pres du four."]
@ -1104,21 +1002,16 @@ def svartalfheim_npc(data, stat, entites, identifiant):
if coords == (120, 49) or coords == (104, 30):
if not (360 <= stat[4] <= 1200): return [0, "Hmm, hein ? Quoi ? Zavez pas vu l'heure ??"]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Hey, toi ! Tu veux traverser ?\n1. Traverser [2 PO]\n2. Ne pas traverser", 2]
choice = print_text("Hey, toi ! Tu veux traverser ?\n1. Traverser [2 PO]\n2. Ne pas traverser", 1, 2, 0)
elif data[0]["main"] == stat[9] + 1:
stat[9] = -1
if stat[1] < 2: return [-1, "Reviens quand tu auras de quoi me payer."]
if choice == 1:
if stat[1] < 2: return [0, "Reviens quand tu auras de quoi me payer."]
if coords == (104, 30): data[2], data[3] = 119, 49
else: data[2], data[3] = 103, 30
return [-1, "C'est parti !", 0, (1, -2)]
return [0, "C'est parti !", 0, (1, -2)]
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
else:
return [0, "Reviens quand tu voudras traverser."]
elif coords == (10, 24):

View File

@ -1,6 +1,7 @@
from asci import Asci, print_text
from asci import Asci, print_text, center, enumerate
import asci
from random import randint, choice
from math import floor, ceil
from math import floor
from asgard import *
from vanaheim import *
@ -22,29 +23,160 @@ maps = (
nidavellir,
muspellheim,
svartalfheim,
h_9, h_10, h_11, h_12, h_13, h_14, h_15, h_16, h_17, h_18, h_19, h_20,
h_21, h_22,
h_23, h_24,
h_9, h_10, h_11, h_12, h_13, h_14, h_15, h_16, h_17, h_18, h_19, h_20, # asgard's houses
h_21, h_22, # vanaheim's houses
h_23, h_24, # alfheim's houses
h_25, h_26, h_27, h_28,
h_29, h_30,
h_31, h_32, h_33, h_34, h_35, h_36,
h_37, h_38, h_39, h_40, h_41,
h_42, h_43, h_44,
h_45, h_46, h_47, h_48
)
h_45, h_46, h_47, h_48,
spells = ("Soin", "Flammes", "Givre", "Etincelles", "Fatigue")
h_49, h_50, h_51, h_52, h_53, h_54, # vanaheim's extra houses
h_55, h_56, h_57, h_58, h_59, h_60, h_61, h_62, h_63, h_64, h_65, h_66, h_67, h_68, h_69, h_70, h_71, h_72, h_73, h_74, h_75, h_76, h_77, h_78, h_79, h_80, h_81, # alfheim's extra house
h_82, h_83, h_84, h_85, h_86, h_87, h_88, h_89, h_90, h_91, h_92, h_93, h_94, h_95, h_96, h_97, # midgard's extra houses
h_98, h_99, h_100, h_101, h_102, h_103, h_104, h_105, h_106, h_107, h_108, h_109, h_110, # niflheim's extra houses
)
spells = (("Soin", 4, 1, True), ("Flammes", 4, -1, False), ("Givre", 4, -1, False), ("Etincelles", 4, -1, False), ("Fatigue", 0, -1, False)) # (capacity, factor, True on player; False on opponent)
spells_level = ("I", "II", "III", "IV", "V")
spells_effect = ((0, 1, True), (4, -1, False), (4, -1, False), (4, -1, False), (0, -1, False)) # (capacity, factor, True on player; False on opponent)
weapons = ("<aucune>", "Dague", "Marteau", "Masse", "Fleau", "Hache", "Epee", "Espadon", "Hache double")
armors = ("<aucune>", "Rondache", "Pavois", "Cote de maille", "Broigne", "Harnois")
# Shop functions
def inn_interaction(data, stat, nb_choice, text, *events):
choice = print_text(text, 1, nb_choice, 0) - 1
if choice == -1: return [0, None], choice
if stat[1] < events[choice][0]: return events[choice][2], choice + 1
else: return events[choice][1], choice + 1
def spell_selection(text, spells_to_display):
message = text + "\n" + "\n".join(["{0}. {1} {2}".format(nb + 1, spells[sp_id][0], spells_level[sp_lvl - 1]) for sp_id, sp_lvl in spells_to_display])
return print_text(message, 1, len(spells_to_display), 0) - 1
def spell_purchase(data, stat, text, spell_purchased, already_known, not_enough_money, too_many_spell):
spells_sale = []
while len(spells_sale) < 3:
sp_id = randint(0, len(spells) - 1)
sp_lvl = randint(1, len(spells_level))
check = True
for sp in spells_sale:
if sp == (sp_id, sp_lvl):
check = False
break
if check: spells_sale.append((sp_id, sp_lvl))
choice = spell_selection(text, spells_sale)
if choice == -1: return [0, ""]
spell_selected = spells_sale[choice]
if stat[1] < 10 * spell_selected[1]: return [0, not_enough_money]
for spell in stat[7]:
if spell_selected[0] == spell[0]:
if spell_selected[1] <= spell[1]: return [0, already_known]
else: stat[7].remove(spell)
if len(stat[7]) >= 3: return [0, too_many_spell]
stat[7].append(spell_selected)
return [0, spell_purchased, 0, (1, -10 * spell_selected[1])]
def spell_deletion(data, stat, text, spell_deleted, no_spell_known, health_cost, not_enough_health=""):
if not stat[7]: return [0, no_spell_known]
choice = spell_selection(text, stat[7])
if choice == -1: return [0, ""]
if stat[0] <= health_cost: return [0, not_enough_health]
stat[7].remove(stat[7][choice])
return [0, spell_deleted, 0, (0, -health_cost)]
def weapon_selection(text, weapons_to_display):
message = text + "\n" + "\n".join(["{0}. {1} [-{2} PO]".format(i + 1, weapons[wpn_index], 10 * wpn_index) for i, wpn_index in enumerate(weapons_to_display)])
return print_text(message, 1, len(weapons_to_display), 0) - 1
def weapon_purchase(data, stat, text, weapon_purchased, already_have_one, not_enough_money):
if stat[3][0]: return [0, already_have_one]
weapons_sale = []
while len(weapons_sale) < 3:
wpn_id = randint(1, len(weapons) - 1)
if not wpn_id in weapons_sale: weapons_sale.append(wpn_id)
choice = weapon_selection(text, weapons_sale)
if choice == -1: return [0, ""]
weapon_selected = weapons_sale[choice]
if stat[1] < 10 * weapon_selected: return [0, not_enough_money]
stat[3][0] = weapon_selected
return [0, weapon_purchased, 0, (1, -10 * weapon_selected)]
def weapon_sale(data, stat, text, weapon_sold, sale_aborted, no_weapon_owned, price):
if not stat[3][0]: return [0, no_weapon_owned]
choice = print_text(text + "\n1. Oui\n2. Non", 1, 2, 0)
if choice == 0: return [0, ""]
elif choice == 1:
stat[3][0] = 0
return [0, weapon_sold, 0, (1, price)]
else: return [0, sale_aborted]
def armor_selection(text, armors_to_display):
message = text + "\n" + "\n".join(["{0}. {1} [-{2} PO]".format(i + 1, armors[arm_index], 10 * arm_index) for i, arm_index in enumerate(armors_to_display)])
return print_text(message, 1, len(armors_to_display), 0) - 1
def armor_purchase(data, stat, text, armor_purchased, already_have_one, not_enough_money):
if stat[3][1]: return [0, already_have_one]
armors_sale = []
while len(armors_sale) < 3:
arm_id = randint(1, len(armors) - 1)
if not arm_id in armors_sale: armors_sale.append(arm_id)
choice = armor_selection(text, armors_sale)
if choice == -1: return [0, ""]
armor_selected = armors_sale[choice]
if stat[1] < 10 * armor_selected: return [0, not_enough_money]
stat[3][1] = armor_selected
return [0, armor_purchased, 0, (1, -10 * armor_selected)]
def armor_sale(data, stat, text, armor_sold, sale_aborted, no_armor_owned, price):
if not stat[3][1]: return [0, no_armor_owned]
choice = print_text(text + "\n1. Oui\n2. Non", 1, 2, 0)
if choice == 0: return [0, ""]
elif choice == 1:
stat[3][1] = 0
return [0, armor_sold, 0, (1, price)]
else: return [0, sale_aborted]
# Asci functions
def npc_core(event_fn, data, stat, entities, identifiant):
event = event_fn(data, stat, entities, identifiant)
if not event:
sel_choice = print_text("\nChoissez une action :\n1. Attaquer\n2. Voler\n3. Parler\n4. Ne rien faire", 1, 4, 3)
if not event:
msg = ("Hmm ?", "Besoin de quelque chose ?", "Vous cherchez quelqu'un ?", "Vous etes... ?", "Oui ?", "He ! Regarde ou tu vas.", "Un probleme ?")
sel_choice = print_text("{0}\n1. Attaquer\n2. Voler".format(choice(msg)), 1, 2, 0)
if sel_choice == 1:
opponent_stat = [randint(5, stat[2][i] + 5) for i in range(4)]
@ -58,11 +190,7 @@ def npc_core(event_fn, data, stat, entities, identifiant):
else:
return [0, "Votre victime vous a vu et vous a mis une raclee.", 0, (0, -10)]
elif sel_choice == 3:
msg = ("Hmm ?", "Besoin de quelque chose ?", "Vous cherchez quelqu'un ?", "Vous etes... ?", "Oui ?", "He ! Regarde ou tu vas.")
return [0, choice(msg)]
elif sel_choice == 4:
else:
return None
elif type(event) == tuple and len(event) > 2:
@ -107,9 +235,22 @@ def launch_fight(data, stat, event, quest="main"):
def routine(data, stat):
stat[4] = (stat[4] + 1) % 1440
# Health regeneration
if stat[0] < 100 and not (stat[4] % 60):
stat[0] += 1
if stat[0] > 999: stat[0] = 999
# Mana regeneration
if stat[2][4] < stat[0] // 2 and not (stat[4] % 60):
if stat[2][4] < stat[0] // 2 and not (stat[4] % 30):
stat[2][4] += 1
if stat[2][4] > 99: stat[2][4] = 99
def low_bar(data, stat):
h = stat[4] // 60
m = stat[4] % 60
if m < 10: m = "0" + str(m)
return "{0}h|{2}PV|{3}PM ".format(h, m, stat[0], stat[2][4])
# Game mecanics
@ -140,20 +281,20 @@ def fight(stat, opponent_stat, opponent_name):
print("\n" * 6 + "Sort(s) connu(s) :")
count = 0
for spell_id, level in stat[7]:
print("{0}. {1} {2}".format(count + 1, spells[spell_id], spells_level[level - 1]))
print("{0}. {1} {2}".format(count + 1, spells[spell_id][0], spells_level[level - 1]))
count += 1
spell_choice = get_input()
if spell_choice < 0 or spell_choice > 3: spell_choice = 0
if spell_choice < 0 or spell_choice > len(stat[7]): spell_choice = 0
spell_choice -= 1
spell_id, level = stat[7][spell_choice][0], stat[7][spell_choice][1]
if stat[2][4] >= level * 10:
msg += "\nVous lancez {0} de niveau {1} [-{2} PM].".format(spells[spell_id], spells_level[level - 1], level * 10)
msg += "\nVous lancez {0} de niveau {1} [-{2} PM].".format(spells[spell_id][0], spells_level[level - 1], level * 10)
stat[2][4] -= level * 10
pts = 12 * level + randint(-5, 5)
capacity, factor, apply_on_player = spells_effect[spell_id]
capacity, factor, apply_on_player = spells[spell_id][1:]
if apply_on_player:
player_stat[capacity] += factor * pts
@ -189,8 +330,7 @@ def fight(stat, opponent_stat, opponent_name):
print_text(msg)
# opponent_stat = [vitesse, agilité, attaque, défense, vie]
# player_stat = [vitesse, agilité, attaque, défense, vie]
# *_stat = [vitesse, agilité, attaque, défense, vie]
player_stat = [stat[2][0], stat[2][1], stat[2][2] + stat[3][0] * 5, stat[2][3] + stat[3][1] * 5, stat[0]]
end = False
@ -235,7 +375,7 @@ def fight(stat, opponent_stat, opponent_name):
# Fight
if player > opponent:
end = player_turn()
if end: return 2
if end: return 2, player_stat[4]
if opponent_stat[4] <= 0: return 0, player_stat[4]
opponent_turn()
@ -253,7 +393,7 @@ def fight(stat, opponent_stat, opponent_name):
def misc_stat(data, stat):
if data[1] < 9: place = ("Asgard", "Vanaheim", "Alfheim", "Midgard", "Niflheim", "Jotunheim", "Nidavellir", "Muspellheim", "Svartalfheim")[data[1]]
elif data[1] == 27: place = "chez vous"
else: place = "interieur"
else: place = "interieur"
money, ticks, player_class = stat[1], stat[4], stat[6]
hours = ticks // 60
@ -300,14 +440,14 @@ def display_stat(data, stat):
def inventory(data, stat):
weapon = weapons[stat[3][0]]
shield = armors[stat[3][1]]
armor = armors[stat[3][1]]
weapon = " |" + weapon + " " * (17 - len(weapon)) + "|"
shield = " |" + shield + " " * (17 - len(shield)) + "|"
armor = " |" + armor + " " * (17 - len(armor)) + "|"
print("<o> Inventaire <o>")
print(" |- Arme : |\n{}".format(weapon))
print(" |- Armure : |\n{}".format(shield))
print(" |- Armure : |\n{}".format(armor))
print("<o> ============= <o>")
input()
@ -328,13 +468,13 @@ def sleep(data, stat):
stat[4] += sleep_hours * 60
if stat[0] < 100: stat[0] += sleep_hours // 2
if stat[2][4] < 50: stat[2][4] += sleep_hours // 4
if stat[2][4] < 50: stat[2][4] += sleep_hours
# If the player is at home
if data[1] == 27:
if stat[0] < 100: stat[0] += 2 * sleep_hours
if stat[2][4] < 50: stat[2][4] += sleep_hours // 2
if stat[0] < 100: stat[0] += sleep_hours
if stat[2][4] < 50: stat[2][4] += sleep_hours * 2
print_text("Vous vous reposez {0} heure{1}.".format(sleep_hours, ("", "s")[sleep_hours > 1]))
@ -343,45 +483,57 @@ def spell(data, stat):
to_disp = "Magie : {} PM".format(stat[2][4])
print("<o> Sorts <o>")
print(" |" + to_disp + " " * (16 - len(to_disp)) + "|")
for i in range(3):
if i < len(stat[7]):
spell_id, level = stat[7][i]
if spell_id >= 0:
to_disp = "{0} {1}".format(spells[spell_id], spells_level[level - 1])
print(" |" + to_disp + " " * (16 - len(to_disp)) + "|")
to_disp = "{0} {1}".format(spells[spell_id][0], spells_level[level - 1])
print(" |{}.".format(i + 1) + to_disp + " " * (14 - len(to_disp)) + "|")
else:
print(" |<aucun> |")
print("<o> ============ <o>")
input()
spell_choice = get_input()
if not (1 <= spell_choice <= len(stat[7])): spell_choice = 0
if spell_choice:
spell_choice -= 1
spell_id, level = stat[7][spell_choice][0], stat[7][spell_choice][1]
spell_name, capacity, factor, apply_on_player = spells[spell_id]
if not apply_on_player:
print_text("Vous ne pouvez pas lancer ce sort.")
elif stat[2][4] >= level * 10:
msg = "".format()
stat[2][4] -= level * 10
pts = 12 * level + randint(-5, 5)
if capacity == 4: # Health
stat[0] += factor * pts
else:
stat[2][capacity] += factor * pts
cost = level * 10
if stat[6] == 3: cost = level * 8
print_text("Vous lancez {0} de niveau {1} [-{2} PM] et {3} {4} points de {5}".format(spell_name, spells_level[level - 1], level * 10, ("perdez", "gagnez")[factor > 0], pts, ("vitesse", "agilité", "attaque", "défense", "vie")[capacity]))
else:
print_text("Vous n'avez plus assez de points de Magie.")
def quick_save(data, stat):
data_copy = data[:]
data_copy[2] += 10
data_copy[3] += 3
stat_copy = stat[:-1]
stat_copy = stat[:]
print_text("\"{}\"".format(encode_save(data_copy, stat_copy)))
# Misc functions
def get_input():
string = input(">")
def get_input(string=">"):
string = input(string)
try:
return int(string)
except:
return 0
def center(string, total_length, symbol):
left = floor((total_length - len(string)) / 2)
right = ceil((total_length - len(string)) / 2)
return left * symbol + string + right * symbol
def stat_test(stat, test_id):
score = (80 + randint(-20, 20)) * stat[test_id] / 50
return randint(1, 100) <= score, floor(score)
@ -402,17 +554,22 @@ def init_stat():
if player_class == 1:
stat = [6, 6, 10, 6, 6]
elif player_class == 2:
stat = [6, 10, 6, 6, 6]
stat = [6, 20, 6, 6, 6]
elif player_class == 3:
stat = [6, 6, 6, 10, 6]
stat = [6, 6, 6, 20, 6]
elif player_class == 4:
stat = [6, 6, 6, 6, 20]
stat = [6, 6, 6, 6, 12]
elif player_class == 5:
stat = [10, 6, 6, 6, 6]
stat = [100, 10, stat, [0, 0], 360, name, player_class - 1, [], 1, -1]
if player_class == 4:
if player_class == 1:
stat[3][1] = 1
elif player_class == 4:
stat[7].append((1, 1))
elif player_class == 5:
stat[3][0] = 1
return stat
@ -439,7 +596,7 @@ def decode_save(save_code):
encoded_stat = stat.split(",")
encoded_data = data.split(",")
encoded_stat = [encoded_stat[0], encoded_stat[1], encoded_stat[2: 7], encoded_stat[7: 9], encoded_stat[9], 0, encoded_stat[11], encoded_stat[12: -1], encoded_stat[-1], -1]
encoded_stat = [encoded_stat[0], encoded_stat[1], encoded_stat[2: 7], encoded_stat[7: 9], encoded_stat[9], 0, encoded_stat[11], encoded_stat[12: -2], encoded_stat[-2], encoded_stat[-1]]
if encoded_stat[7] == ["0"]:
encoded_stat[7] = []

View File

@ -124,26 +124,6 @@ jotunheim = (r"""
~~~~~~~~ |____| ~~~~~~~~~~~~~~ |_| ##### ### |_| ##### |_| ##### |--| #### ~~~~~~~~~~
~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ### |_| ### ~~~~ ### |--| ~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|_| ~~~~~~~~~~~~~~~~|_| ~~~~~~~~~|_|~~~~~~~~~~~~|--|~~~~~~~~~~~~~~""",
[
(0, '?', 60, 57, 'stand by'),
(1, '?', 23, 70, 'stand by'),
(2, '?', 60, 86, 'stand by'),
("Utarg", '*', 34, 56, 'stand by'),
(3, '*', 25, 10, 'stand by'),
(4, '*', 39, 20, 'stand by'),
(5, '*', 3, 28, 'stand by'),
(6, '*', 34, 45, 'stand by'),
(7, '*', 53, 49, 'stand by'),
(8, '*', 19, 51, 'stand by'),
(9, '*', 64, 64, 'stand by'),
(10, '*', 54, 70, 'stand by'),
(11, '*', 8, 72, 'stand by'),
(12, '*', 40, 75, 'stand by'),
(13, '*', 72, 87, 'stand by'),
(14, '*', 6, 98, 'stand by'),
],
# Autres mondes (Jotunheim = 5)
(11, 120, 1, 56, 42), # Vanaheim
@ -174,9 +154,6 @@ h_31 = (r"""
| | |
| | | |
|============|====|^|====|=============|""",
[
(0, '*', 28, 4, 'stand by'),
],
(19, 14, 5, 29, 11))
@ -206,9 +183,6 @@ h_32 = (r"""
| |
|============| |==============|
|============|^|==============| """,
[
(0, '*', 28, 6, 'stand by'),
],
(14, 24, 5, 88, 25))
@ -238,10 +212,6 @@ h_33 = (r"""
| |
|============================| |===========================|
|=[]=[]=[]=[]=[]=[]=[]=[]=[]=|^|=[]=[]=[]=[]=[]=[]=[]=[]=[]|""",
[
(0, '*', 14, 7, 'stand by'),
(1, '*', 48, 5, 'stand by'),
],
(30, 24, 5, 89, 45))
@ -276,9 +246,6 @@ h_34 = (r"""
|==|II|================|II| |II|================|II|==|
|II| |II| |II| |II|
|II| |II|/|^=|\|II| |II| """,
[
("Thrym", '*', 26, 6, 'stand by'),
],
(34, 29, 5, 60, 50))
@ -303,9 +270,6 @@ h_35 = (r"""
| |
|======================\ /======================|
|==|/\|=|/\|=|/\|=|/\|=/^^\=|/\|=|/\|=|/\|=|/\|==|""",
[
("Gullveig", '*', 17, 5, 'stand by'),
],
(24, 19, 5, 64, 85),
(25, 19, 5, 65, 85))
@ -326,10 +290,30 @@ h_36 = (r"""
| +---+ +---+ | | [====] [====] |
| | | [====] [====] |
|=================|^^|=================|""",
[
("aubergiste", '*', 27, 10, 'stand by'),
(0, '*', 0, 0, 'stand by'),
(1, '*', 0, 0, 'stand by'),
],
(19, 14, 5, 23, 88),
(20, 14, 5, 23, 88))
(20, 14, 5, 23, 88))
jotunheim_entities = (
["Utarg", '*', 5, 34, 56, 'stand by'],
[0, '*', 5, 25, 10, 'stand by'],
[0, '*', 5, 39, 20, 'stand by'],
[0, '*', 5, 3, 28, 'stand by'],
[0, '*', 5, 34, 45, 'stand by'],
[0, '*', 5, 53, 49, 'stand by'],
[0, '*', 5, 19, 51, 'stand by'],
[0, '*', 5, 64, 64, 'stand by'],
[0, '*', 5, 54, 70, 'stand by'],
[0, '*', 5, 8, 72, 'stand by'],
[0, '*', 5, 40, 75, 'stand by'],
[0, '*', 5, 72, 87, 'stand by'],
[0, '*', 5, 6, 98, 'stand by'],
[0, '*', 31, 28, 4, 'stand by'],
[0, '*', 32, 28, 6, 'stand by'],
[0, '*', 33, 14, 7, 'stand by'],
[0, '*', 33, 48, 5, 'stand by'],
["Thrym", '*', 34, 26, 6, 'stand by'],
["Gullveig", '*', 35, 17, 5, 'stand by'],
["jotunheim_aubergiste", '*', 36, 27, 10, 'stand by'],
[0, '*', 36, 0, 0, 'stand by'],
[0, '*', 36, 0, 0, 'stand by'],
)

View File

@ -5,7 +5,7 @@ midgard = (r"""
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ ~~ ~~~~~~ ~~~ _ ~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~~~ ~~~ ~~~ /-\ ~~~~~~~ ~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~~~ ~~~ ~~~~ ~~~ |_| ~~~~~~~ ~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~~~ ~~~ ~~~~ ~~~ |^| ~~~~~~~ ~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~~~~~~ ~~ ~~~~ ~~ ~~ ~~~~~ ~ ~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~~ ~ ~~~~~ ~~ ~~~ ~~~ ~~~~ ~~~~~ ~ ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ ~ ~~ ~~~~~ ~~~ ~~ ~~~~ ~~~ ~ ~~~~~~~~~
@ -50,31 +50,31 @@ midgard = (r"""
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##### |_ o o \ ### _ ##### ~~~~~~
~~~~~~~~~~~~~~~~~~~~~ ~~~~ ### |^|_____| /-\ _ /o\___ ### ~~~~~~
~~~~~~~~~~~~~~~~~~~~~~ /-\ /o\ |_ ]O[\ /-\ ~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~ |_| |^|___| ~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~ |^| |^|___| ~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~ ### ' __ , ### _ ~~~~~~~
~~~~~~~~~~~~~~~~~~~ ##### / \ ##### / \ ~~~~~~~
~~~~~~~~~~~~~~~~~ ### ### ' |__| , ### |_| _ ~~~~~~
~~~~~~~~~~~~~~~~~ ### ### ' |^_| , ### |^| _ ~~~~~~
~~~~~~~~ ##### /-\ ### /-\ /o\ ~~~~~~
~~~~~~~~ _ ### ##### . , , |_| ~~~~~~
~~~~~~~~ _ ### ##### . , , |^| ~~~~~~
~~~~~ /-\ ### /-\ ### . , . __ _ ~~~~~~
~~~~~~~ |_| ##### /-\ ,. ' /[]\ / \ ~~~~~~~
~~~~~~ ### ' . |__| |_| ~~~~~~~~~~
~~~~~~~ |^| ##### /-\ ,. ' /[]\ / \ ~~~~~~~
~~~~~~ ### ' . |^_| |^| ~~~~~~~~~~
~~~~~~~~~~~~~~ /-\ . ' . __ _ ~~~~~~~~~~~
~~~~~~~~~~~~~~~~ /<>\ _ /-\ ~~~~~~~~~~~
~~~~~~~~~~~~~~~~ __ ' ' . |__| /o\ |_| ~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ /<>\ ' ___ |_| _ ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~ |__| / _\ .. /o\ ~~~~~~~~
~~~~~~~~~~~~~~~~~~~~ ' . |_|^| . _ _ |_| ~~~~~~~
~~~~~~~~~~~~~~~~ __ ' ' . |_^| /o\ |^| ~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ /<>\ ' ___ |^| _ ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~ |^_| / _\ .. /o\ ~~~~~~~~
~~~~~~~~~~~~~~~~~~~~ ' . |_|^| . _ _ |^| ~~~~~~~
~~~~~~~~~~~~~~~~~~~ ' /o\____/o\ ~~~~~~
~~~~~~~~~~~~~~~~~~~~ ' ' __ |==|==| o o |==|==| __ ~~~~~
~~~~~~~~~~~~~~~~~~~~ ' /[]\ | | __ | | /<>\ ~~~~~
~~~~~~~~~~~~~~~ ' |__| | |__|^^|__| | |__| ~~~~
~~~~~~~~~~~~~~~ ' |^_| | |__|^^|__| | |_^| ~~~~
~~~~~~~~~~~~~~~~~ ___ | | ~~~~~
~~~~~~~~~~~~~~~~~~~ . /]O[\ | #### #### | ~~~~~~~
~~~~~~~~~~~~~~~~~~~ . |___| | #### #### | ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~ . |__^| | #### #### | ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~ ' , __ | #### #### | ~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ / \ | | ~~~~~~~~~~~~~~
~~~~~~~~~~~~~~ . |__| | #### #### | ~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~ . |_^| | #### #### | ~~~~~~~~~~~~~~~
~~~~~~~~~~ | #### #### | ~~~~~~~~~~~~~~
~~~~~~~~~~~ | #### #### | ~~~~~~~~~~~~
~~~~~~~ ### ### | | ~~~~~~~~~~~
@ -89,33 +89,16 @@ midgard = (r"""
~~~~~~~~~~~ ##### ### ##### /|\ /|\ |--|--|--|~~~~
~~~~~~~~~~~~~ ### _ /|\ ##### ### ### ~~~~~~~~~~~
~~~~~~~~~~~~~~~ /|\ /-\ ### ### ##### ##### ~~~~~~~~~~~~
~~~~~~~~~~~~~~~~ |_| _ /|\ ##### ##### ##### ### ~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~ |^| _ /|\ ##### ##### ##### ### ~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ / \ _ ##### ### ### ### ##### ~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~ |_| / \ ### /|\ ##### /|\ ### ~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~ |_| /|\ ### /|\ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~ |^| / \ ### /|\ ##### /|\ ### ~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~ |^| /|\ ### /|\ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /|\ ~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
[
("falaises nord", '?', 29, 9, 'stand by'),
("clairiere", '?', 53, 24, 'stand by'),
("palais", '?', 66, 45, 'stand by'),
("manoir sud", '?', 52, 79, 'stand by'),
("charretier", '*', 39, 49, 'stand by'),
(0, '*', 8, 59, 'stand by'),
(1, "*", 66, 56, "stand by"),
(2, '*', 67, 46, 'stand by'),
(3, '*', 66, 56, 'stand by'),
(4, '*', 51, 60, 'stand by'),
(5, '*', 68, 71, 'stand by'),
(6, '*', 94, 85, 'stand by')
],
# Autres mondes (Migard = 3)
(72, 6, 0, 126, 71), # Asgard
(77, 62, 6, 93, 8), # Nidavellir
@ -128,6 +111,23 @@ midgard = (r"""
(44, 65, 27, 9, 16), # Maison du joueur
(60, 69, 28, 24, 14), # Mesnie fortifiée (1/2)
(61, 69, 28, 25, 14), # Mesnie fortifiée (2/2)
(58, 51, 82, 5, 4),
(51, 54, 83, 4, 9),
(69, 54, 84, 5, 4),
(89, 56, 85, 5, 4),
(71, 59, 86, 4, 9),
(81, 59, 87, 5, 4),
(61, 62, 88, 5, 4),
(69, 63, 89, 5, 4),
(29, 64, 90, 4, 9),
(82, 65, 91, 5, 4),
(36, 69, 92, 4, 9),
(88, 69, 93, 10, 9),
(32, 72, 94, 10, 9),
(42, 75, 95, 10, 9),
(33, 92, 96, 5, 4),
(38, 93, 97, 5, 4),
)
@ -149,7 +149,6 @@ h_25 = (r"""
| |==============================|
| |=|\/|=|\/|=|\/|=|\/|=|\/|=|\/||
|\/|^|\/| """,
[],
(4, 16, 3, 42, 49))
@ -167,13 +166,6 @@ h_26 = (r"""
| |------------------|
| |
|---|^|---| """,
[
("Rosahil Green", '*', 27, 6, 'stand by'),
(0, '*', 17, 7, 'stand by'),
(1, '*', 22, 7, 'stand by'),
(2, '*', 17, 8, 'stand by'),
(3, '*', 27, 8, 'stand by'),
],
(5, 12, 3, 76, 51))
@ -195,7 +187,6 @@ h_27 = (r"""
| + | |_| |
| | | |_| |
|=======|^|=======| """,
[],
(9, 16, 3, 44, 65))
@ -215,8 +206,201 @@ h_28 = (r"""
|\/|=|\/|=|\/| | | |\/|=|\/|=|\/|
|__+ +__|
|\/|^^|\/| """,
[
(0, '*', 27, 6, 'stand by'),
],
(24, 14, 3, 60, 69),
(25, 14, 3, 61, 69))
(25, 14, 3, 61, 69))
h_82 = (r"""
|==|=====|
| /#\ |
| |
| |
|===|^|==|""",
(5, 4, 3, 58, 51))
h_83 = (r"""
|<><><>|~|<><>|
| |~| |
| /{O}\ |
| |###| |
| +--+ |
| | | |
| | | |
| +--+ |
| |
|<>|^|<><><><>|""",
(4, 9, 3, 51, 54))
h_84 = (r"""
|========|
| [=]|
| /-\|
| |
|===|^|==|""",
(5, 4, 3, 69, 54))
h_85 = (r"""
|<><><><>|
|[===] |
| |
| |
|<o>|^|<>|""",
(5, 4, 3, 89, 56))
h_86 = (r"""
|=-=-=-=-=-=-=|
|[====] _ |
| (_) |
|[====] [I] |
| |
|[====] _ |
| (_) |
|[====] [I] |
| |
|<>|^|<><><><>|""",
(4, 9, 3, 71, 59))
h_87 = (r"""
|==|=====|
| /_\ |
| |
| |
|===|^|==|""",
(5, 4, 3, 81, 59))
h_88 = (r"""
|========|
|+-+ |
|| | |
|+-+ |
|===|^|==|""",
(5, 4, 3, 61, 62))
h_89 = (r"""
|========|
| |
| |
| |
|===|^|==|""",
(5, 4, 3, 69, 63))
h_90 = (r"""
|=======|_|====|
| /###\ |
| |
| +---+ |
| | | |
| | | |
| | | |
| +---+ |
| |
|==|^|========|""",
(4, 9, 3, 29, 64))
h_91 = (r"""
|==|=====|
| /#\ |
| |
| |
|===|^|==|""",
(5, 4, 3, 82, 65))
h_92 = (r"""
|<><><[I]><><>|
| [I] |
| /-\ [====]|
| |
| [====]|
| [I] |
| /-\ [====]|
| |
| [====]|
|<>|^|<><><><>|""",
(4, 9, 3, 36, 69))
h_93 = (r"""
|/\/\/\|/\/\/\|
|\/\/\/|\/\/\/|
| [I] |
| _ /-\ _ |
| |_| |_| |
| |_| |_| |
| |_| |_| |
| |
| |
|========|^|==|""",
(10, 9, 3, 88, 69))
h_94 = (r"""
|<><><><><o><><><><>|
| |
| |
| |
| |
| |
| |
| |
| |
|<><><><>|^|<><><><>|""",
(10, 9, 3, 32, 72))
h_95 = (r"""
|<><><>|<><><>|
| |
| |
| |
| |
| |
| |
| |
| |
|<><><><>|^|<>|""",
(10, 9, 3, 42, 75))
h_96 = (r"""
|========|
| +-+|
| | ||
| +-+|
|===|^|==|""",
(5, 4, 3, 33, 92))
h_97 = (r"""
|=====|==|
| /-\ |
| |
| |
|===|^|==|""",
(5, 4, 3, 38, 93))
midgard_entities = (
[0, '*', 3, 39, 49, 'stand by'],
[0, '*', 3, 8, 59, 'stand by'],
[0, '*', 3, 66, 56, "stand by"],
[0, '*', 3, 67, 46, 'stand by'],
[0, '*', 3, 66, 56, 'stand by'],
[0, '*', 3, 68, 71, 'stand by'],
[0, '*', 3, 94, 85, 'stand by'],
["Rosahil Green", '*', 26, 27, 6, 'stand by'],
[0, '*', 26, 17, 7, 'stand by'],
[0, '*', 26, 22, 7, 'stand by'],
[0, '*', 26, 17, 8, 'stand by'],
[0, '*', 26, 27, 8, 'stand by'],
[0, '*', 28, 27, 6, 'stand by'],
)

View File

@ -119,18 +119,6 @@ muspellheim = (r"""
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
[
("cote nord", '?', 66, 8, 'stand by'),
("manoir", '?', 65, 97, 'stand by'),
(0, '*', 20, 12, 'stand by'),
(1, '*', 78, 14, 'stand by'),
(2, '*', 54, 80, 'stand by'),
(3, '*', 59, 91, 'stand by'),
(4, '*', 39, 94, 'stand by'),
(5, '*', 29, 113, 'stand by'),
],
# Autres mondes (Muspellheim = 7)
(92, 9, 6, 9, 57), # Nidavellir
@ -158,13 +146,6 @@ h_42 = (r"""
| |
| |
|==============|^|================|""",
[
("aubergiste", '*', 6, 7, 'stand by'),
(0, '*', 14, 1, 'stand by'),
(1, '*', 11, 5, 'stand by'),
(2, '*', 2, 11, 'stand by'),
(3, '*', 31, 9, 'stand by'),
],
(16, 14, 7, 87, 14))
@ -184,11 +165,6 @@ h_43 = (r"""
| |
| |
|[^]|""",
[
("Berfrid", '*', 24, 4, 'stand by'),
(0, '*', 13, 9, 'stand by'),
(1, '*', 6, 5, 'stand by'),
],
(32, 14, 7, 47, 53))
@ -218,9 +194,24 @@ h_44 = (r"""
| [========] [========] |
|=|/\|==|/\|=|/\|=|/\|=| |=|/\|=|/\|=|/\|==|/\|=|
|=|\/|==|\/|=|\/|=|\/|=|^^|=|\/|=|\/|=|\/|==|\/|=|""",
[
(0, '*', 13, 20, 'stand by'),
(1, '*', 13, 2, 'stand by'),
],
(24, 24, 7, 67, 89),
(25, 24, 7, 68, 89))
(25, 24, 7, 68, 89))
muspellheim_entities = (
[0, '*', 7, 20, 12, 'stand by'],
[0, '*', 7, 78, 14, 'stand by'],
[0, '*', 7, 54, 80, 'stand by'],
[0, '*', 7, 59, 91, 'stand by'],
[0, '*', 7, 39, 94, 'stand by'],
[0, '*', 7, 29, 113, 'stand by'],
["muspellheim_aubergiste", '*', 42, 6, 7, 'stand by'],
[0, '*', 42, 14, 1, 'stand by'],
[0, '*', 42, 11, 5, 'stand by'],
[0, '*', 42, 2, 11, 'stand by'],
[0, '*', 42, 31, 9, 'stand by'],
["Bertfrid", '*', 43, 24, 4, 'stand by'],
[0, '*', 43, 13, 9, 'stand by'],
[0, '*', 43, 6, 5, 'stand by'],
[0, '*', 44, 13, 20, 'stand by'],
[0, '*', 44, 13, 2, 'stand by'],
)

View File

@ -74,17 +74,6 @@ nidavellir = (r"""
/ \ / \ / \ /\ /\ / / \ / / \ / \
/ / \ / \ / \ /\ / \ /\ / \/ / /
/ / \ / / \ / \/ \ / \ /\ / / """,
[
("plage", '?', 65, 7, 'stand by'),
("montanges", '?', 66, 58, 'stand by'),
(0, '*', 49, 21, 'stand by'),
(1, '*', 25, 31, 'stand by'),
(2, '*', 74, 46, 'stand by'),
(3, '*', 16, 55, 'stand by'),
(4, '*', 77, 61, 'stand by'),
],
# Autres mondes (Nidavellir = 6)
(93, 8, 3, 77, 62), # Midgard
(9, 57, 7, 92, 9), # Muspellheim
@ -126,13 +115,6 @@ h_37 = (r"""
| |__| | | |
| | | |
|=============|^|============|""",
[
("Muin", '*', 2, 1, 'stand by'),
(0, '*', 26, 1, 'stand by'),
(1, '*', 10, 5, 'stand by'),
(2, '*', 4, 10, 'stand by'),
(3, '*', 27, 8, 'stand by'),
],
(15, 14, 6, 69, 26))
@ -152,10 +134,6 @@ h_38 = (r"""
| |
| |
|===|^|===| """,
[
(0, '*', 12, 3, 'stand by'),
(1, '*', 19, 7, 'stand by'),
],
(15, 14, 6, 7, 31))
@ -175,10 +153,6 @@ h_39 = (r"""
| |_| |_| |
| |
|=|/\|=|/\|==|^|===|/\|=|/\|=|""",
[
(0, '*', 9, 2, 'stand by'),
(1, '*', 9, 4, "stand by"),
],
(14, 14, 6, 35, 38))
@ -198,10 +172,7 @@ h_40 = (r"""
| |
|=========| |==============|
|==========|^|===============|""",
[
(0, '*', 14, 5, 'stand by'),
],
(12, 14, 6, 22, 22))
(12, 14, 6, 22, 42))
h_41 = (r"""
@ -225,8 +196,24 @@ h_41 = (r"""
| |_| /|\ |
| |
|========|^|=======|""",
[
(0, '*', 10, 8, 'stand by'),
(1, '*', 12, 2, 'stand by'),
],
(10, 19, 6, 23, 51))
(10, 19, 6, 23, 51))
nidavellir_entities = (
[0, '*', 6, 49, 21, 'stand by'],
[0, '*', 6, 25, 31, 'stand by'],
[0, '*', 6, 74, 46, 'stand by'],
[0, '*', 6, 16, 55, 'stand by'],
[0, '*', 6, 77, 61, 'stand by'],
["Muin", '*', 37, 2, 1, 'stand by'],
[0, '*', 37, 26, 1, 'stand by'],
[0, '*', 37, 10, 5, 'stand by'],
[0, '*', 37, 4, 10, 'stand by'],
[0, '*', 37, 27, 8, 'stand by'],
[0, '*', 38, 12, 3, 'stand by'],
[0, '*', 38, 19, 7, 'stand by'],
[0, '*', 39, 9, 2, 'stand by'],
[0, '*', 39, 9, 4, "stand by"],
[0, '*', 40, 14, 5, 'stand by'],
[0, '*', 41, 10, 8, 'stand by'],
[0, '*', 41, 12, 2, 'stand by'],
)

View File

@ -13,16 +13,16 @@ _\ ### ##### ### ##### /_\ ### ##### ##### /_\ ##### /_
#### ### ##### ### |+| |_| ##### /_\##### /_\ |+| #########
#### /_\ ##### /_\ |_| ##### ##### _ |_| ### ####
### ### ### ### |+| ___ ### /_\ ###
/_\ /_\ _ /_\ /_\ |_| / \ ##### /_\
### ### |+| |___| ##### ###
/_\ /_\ _ /_\ /_\ |_| / _\ ##### /_\
### ### |+| |_|^| ##### ###
##### ##### ' ' |_| ___ _ ### #####
##### ##### __ / \ ` ' _ |+| /_\ #####
### ### _ .' ,` /()\ |___| /-\ |_| ### ###
##### ##### __ / _\ ` ' _ |+| /_\ #####
### ### _ .' ,` /()\ |_|^| /-\ |_| ### ###
/_\ /_\ |+| .` | |____ |^| _ ##### /_\
### ### |_| '' |_ () \ _ `' ` |+| #####
#### ##### ,, |^|_____| |+| ___ , |_| ###
#### ##### , `` |_| / \ , ,., /_\ ###
### ### ,` ` |___| ,, #####
#### ##### , `` |_| /_ \ , ,., /_\ ###
### ### ,` ` |^|_| ,, #####
/_\ /_\ _ ' .` _ , _ #####
### |+| _ , |+| .., |+| ###
##### |_| _ |+| , |_| __ __ . |_| /_\
@ -30,8 +30,8 @@ _\ ### ##### ### ##### /_\ ### ##### ##### /_\ ##### /_
### |_| , , ' | |____/O O\____| | ' _ ##### ###
/_\ '' ' |[]| [] | | [] |[]| , |+| ##### ####
### ___ `` '' | | | __ | | | ,'. |_| ### ### ####
##### ### / \ ` . |__|____|/^^\|____|__| ,`` #####/_\ ###
# ########## _ |___| ' ',, ` , ##### /_\
##### ### /_ \ ` . |__|____|/^^\|____|__| ,`` #####/_\ ###
# ########## _ |^|_| ' ',, ` , ##### /_\
## ### ##### |+| '` ` `' , ###
## /_\ ### |_| `` _ ` _ .. _ ` /_\ ###
# /_\ |+| . (o) ',',, (o) ``` _ ### #####
@ -40,25 +40,25 @@ _\ ### ##### ### ##### /_\ ### ##### ##### /_\ ##### /_
##### ##### |+| ` ,` , '' . ` ` ` . ### /_\
##### ### |_| _ _ ' .' _ ,'., ,, /_\ #
### /_\ . |+| ___ (o) . (o) .`. ___ ### ##
/_\ ### ` |_| / \ /-\ '', /-\ ', , / \ ##### ##
##### ### , |___| , |___| ##### #
/_\ ### ` |_| / _\ /-\ '', /-\ ', , /_ \ ##### ##
##### ### , |_|^| , |^|_| ##### #
##### ##### , ___ _ . _ `,.,`. ### /
### #### ##### .`.` , , / \ (o) ' (o) ' . /_\ ###
##### /_\ ### ', , |___| /-\ ,.` /-\ .. ___ _ #####
##### /_\ _ `, ','. , `. / \ ` |+| #####
### ### |+| '' _ ___ . . ` |___| ` |_| ###
/_\ ##### |_| ' |+| / \ , , ___ ... ### /_\
### ##### _ ', |_| |___| ', / \ ', ,''`' #####
##### ### ___ |+| , |___| ` #####
##### /_\ ___ / \ |_| '.` '` _ , ###
### / \ |___| ,. ` ' ``', , |+| , ### /_\###
## /_\ ### |___| _ . _ ` _ |_| . ##### #####
### #### ##### .`.` , , / _\ (o) ' (o) ' . /_\ ###
##### /_\ ### ', , |_|^| /-\ ,.` /-\ .. ___ _ #####
##### /_\ _ `, ','. , `. / _\ ` |+| #####
### ### |+| '' _ ___ . . ` |_|^| ` |_| ###
/_\ ##### |_| ' |+| /_ \ , , ___ ... ### /_\
### ##### _ ', |_| |^|_| ', /_ \ ', ,''`' #####
##### ### ___ |+| , |^|_| ` #####
##### /_\ ___ /[] \ |_| '.` '` _ , ###
### /_ \ |___| ,. ` ' ``', , |+| , ### /_\###
## /_\ ### |^|_| _ . _ ` _ |_| . ##### #####
### ##### , ___ |+| _ |+| . |+| ##### #####
### ##### ., / \ |_| ' |+| |_| . |_| , ### ###
## ### ., |___| _ ' |_| .`,` . /_\ /_\
### ##### ., / _\ |_| ' |+| |_| . |_| , ### ###
## ### ., |_|^| _ ' |_| .`,` . /_\ /_\
_\ /_\ ### ', |+| ___ ' '. ``,..' '.`.``` ,`..`'' ,, ###
### ##### , |_| / \ `.`` ' ,..' ``'` .' ` , . ##### ###
##### ##### . , |___| ' _ _ ##########
### ##### , |_| / _\ `.`` ' ,..' ``'` .' ` , . ##### ###
##### ##### . , |_|^| ' _ _ ##########
##### ### '`` ,` |+| |+| ### ### #####
### ### /_\ , ,' `` _ |_| |_| ### ##### /_\ ###
/_\##### '. '``, ,.. ``, |+| ##### ##### ### /_\
@ -74,15 +74,6 @@ _\ /_\ ### ', |+| ___ ' '. ``,..' '.`.`
### /_\ ##### ##### /_\ ##### ##### ### ### ### ##### /_\ ##### ##### ### ### ###
##### ##### ### ### ### /_\ /_\##### ### ### ##### /_\ /_\ /_\
##### ### /_\ /_\ /_\ ##### /_\ /_\ ### """,
[
("niflheim", '?', 88, 32, 'stand by'),
(0, '*', 95, 30, 'stand by'),
(1, '*', 57, 31, 'stand by'),
(3, '*', 39, 60, 'stand by'),
(4, '*', 108, 67, 'stand by'),
],
# Autres monde (Niflheim = 4)
(78, 19, 3, 24, 90), # Midgard
@ -90,6 +81,20 @@ _\ /_\ ### ', |+| ___ ' '. ``,..' '.`.`
(38, 21, 29, 15, 14), # Librairie
(70, 31, 30, 24, 19),
(71, 31, 30, 25, 19),
(73, 15, 98, 11, 9),
(66, 18, 99, 11, 9),
(68, 23, 100, 3, 9),
(31, 32, 101, 3, 9),
(37, 42, 102, 11, 9),
(96, 42, 103, 3, 9),
(54, 45, 104, 11, 9),
(93, 47, 105, 11, 9),
(52, 49, 106, 3, 9),
(82, 50, 107, 3, 9),
(18, 53, 108, 11, 9),
(25, 56, 109, 11, 9),
(43, 59, 110, 11, 9),
)
@ -109,9 +114,6 @@ h_29 = (r"""
| [===] [=-=] [==] [-==] |
| |
|=============|^|============|""",
[
("Merath", '*', 5, 5, 'stand by'),
],
(15, 14, 4, 38, 21))
@ -136,9 +138,196 @@ h_30 = (r"""
| |__| |__| |
| |========| |========| |
|=============| |^^| |=============|""",
[
("Hel", '*', 37, 4, 'stand by'),
(0, '*', 17, 6, 'stand by'),
],
(24, 19, 4, 70, 31),
(25, 19, 4, 71, 31))
(25, 19, 4, 71, 31))
h_98 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 73, 15))
h_99 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 66, 18))
h_100 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=|^|=========|""",
(3, 9, 4, 68, 23))
h_101 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=|^|=========|""",
(3, 9, 4, 31, 32))
h_102 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 37, 42))
h_103 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=|^|=========|""",
(3, 9, 4, 96, 42))
h_104 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 54, 45))
h_105 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 93, 47))
h_106 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=|^|=========|""",
(3, 9, 4, 52, 49))
h_107 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=|^|=========|""",
(3, 9, 4, 82, 50))
h_108 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 18, 53))
h_109 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 25, 56))
h_110 = (r"""
|=============|
| |
| |
| |
| |
| |
| |
| |
| |
|=========|^|=|""",
(11, 9, 4, 43, 59))
niflheim_entities = (
[0, '*', 4, 95, 30, 'stand by'],
[0, '*', 4, 57, 31, 'stand by'],
[0, '*', 4, 39, 60, 'stand by'],
[0, '*', 4, 108, 67, 'stand by'],
["Merath", '*', 29, 5, 5, 'stand by'],
["Hel", '*', 30, 37, 4, 'stand by'],
[0, '*', 30, 17, 6, 'stand by'],
)

View File

@ -74,17 +74,6 @@ svartalfheim = (r"""
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ /-\ ~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~""",
[
("svartalfheim", '?', 113, 37, 'stand by'),
(0, '*', 104, 30, 'stand by'), (1, '*', 120, 49, 'stand by'),
(2, '*', 105, 46, 'stand by'),
(3, '*', 22, 50, 'stand by'),
(4, '*', 15, 54, 'stand by'),
(5, '*', 25, 61, 'stand by'),
(6, '*', 121, 68, 'stand by'),
],
# Autres mondes (Svartalfheim = 8)
(109, 66, 6, 39, 19), # Nidavellir
@ -117,9 +106,6 @@ h_45 = (r"""
| |====| |====| |
|=================| | | |==================|
|^| """,
[
(0, '*', 15, 4, 'stand by'),
],
(24, 19, 8, 90, 15))
@ -134,10 +120,6 @@ h_46 = (r"""
| |
| |
|=======|^|========|""",
[
(0, '*', 13, 2, 'stand by'),
(1, '*', 13, 4, 'stand by'),
],
(9, 9, 8, 6, 24))
@ -157,10 +139,6 @@ h_47 = (r"""
| |__| |__| |
| |
|^|==========================|""",
[
(0, '*', 3, 4, 'stand by'),
(1, '*', 15, 8, 'stand by'),
],
(1, 14, 8, 91, 33))
@ -180,8 +158,20 @@ h_48 = (r"""
| \__/ \__/ \__/ \__/ |
|==| |======| |=| |=| |======| |==|
| | | | |^=| | | | | """,
[
(0, '*', 34, 5, 'stand by'),
(1, '*', 29, 8, 'stand by'),
],
(19, 14, 8, 57, 59))
svartalfheim_entities = (
[0, '*', 8, 104, 30, 'stand by'], [0, '*', 8, 120, 49, 'stand by'],
[0, '*', 8, 105, 46, 'stand by'],
[0, '*', 8, 22, 50, 'stand by'],
[0, '*', 8, 15, 54, 'stand by'],
[0, '*', 8, 25, 61, 'stand by'],
[0, '*', 8, 121, 68, 'stand by'],
[0, '*', 45, 15, 4, 'stand by'],
[0, '*', 46, 13, 2, 'stand by'],
[0, '*', 46, 13, 4, 'stand by'],
[0, '*', 47, 3, 4, 'stand by'],
[0, '*', 47, 15, 8, 'stand by'],
[0, '*', 48, 34, 5, 'stand by'],
[0, '*', 48, 29, 8, 'stand by'],
)

View File

@ -11,10 +11,10 @@ vanaheim = (r"""
/\ / \ / \ / \_ / / \
/ \ / \ /\ / \ __ |_ o\ /\ / \
/ \ / \ _ /<>\ |^|_| / \
/ \ /\ / \ /o\ |__| / \ /\
/ \ / \ |_| _ / \ / \
/ \ /\ / \ /o\ |_^| / \ /\
/ \ / \ |^| _ / \ / \
/\ / \ /\ ### . ###### ###### /o\ /\ /
\ / / \ ##### ### ###### ###### |_| / \ /
\ / / \ ##### ### ###### ###### |^| / \ /
\ /\ / \ ### '. ##### ##### ##### / \ /\
\ / \ / \ /|\ ` ### #### #### ### / \ / \
/ \ __ /|\ ##### /\ / \
@ -25,11 +25,11 @@ vanaheim = (r"""
/ \ / \ ### ``' ##### / \ /
/\ / \ / \ ##### _ __ ### /\ / \ /
\ / \ /\ / ### / \ ' /<>\ ` /|\ / \ /
\ / \ /|\ |_| . |__| .' / \ /\ /
\ / \ /|\ |^| . |^_| .' / \ /\ /
\ /\ / \ ` ``' ### , _ / \ / \
/ \ / \ /\ _ ##### ', /-\ / \
/ \ / \ . / \ ### , |_| /\ \ /
/ \ /\ / \ |_| /|\ , ` / \ /
/ \ / \ . / \ ### , |^| /\ \ /
/ \ /\ / \ |^| /|\ , ` / \ /
/ \ / \ ,. _ ',` '' / \ /\
/ \ ### _/ \ ### _____ ' / \ / \
/ \ /\ ##### /o | ##### /_____\ `' /\ / \
@ -41,7 +41,7 @@ vanaheim = (r"""
/\ / \ /\ ' ### ##### /\ \
/ \ / \ ` /|\ _ ### _ / \
/ \ / \ /\ .. /o\ ./|\ /o\ / \ /\
/ \ /\ / \ / \ .'' |_| ,'`' ',` |_| /\ / \ /
/ \ /\ / \ / \ .'' |^| ,'`' ',` |^| /\ / \ /
/ \ / \ ,., .,`, /\ ', ,` / \ /
/\ / \ /\ / \ /\ / \ / \ /\ /
/ \ / \ / \ / \ /\ / \ /\ / \ / \
@ -49,17 +49,6 @@ vanaheim = (r"""
/ \ / \ /\ / / \ / \ / \ / \ / \
/ \ / / \ / / \
/ \ / \ / \ """,
[
("vanaheim", '?', 42, 20, 'stand by'),
(0, '?', 26, 29, 'stand by'),
("charretier", '*', 45, 39, 'stand by'),
(1, '*', 31, 12, 'stand by'),
(2, '*', 41, 45, 'stand by'),
(3, '*', 52, 22, 'stand by'),
(4, '*', 52, 30, 'stand by'),
],
# Autres mondes (Vanaheim = 1)
(28, 13, 2, 14, 68), # Alfheim
(54, 29, 3, 10, 58), # Midgard
@ -67,7 +56,13 @@ vanaheim = (r"""
# Maisons
(44, 11, 21, 5, 9), # Auberge
(52, 35, 22, 20, 19),
(52, 35, 22, 20, 19), # Palais de Hel
(58, 15, 49, 7, 14),
(36, 12, 50, 15, 14),
(33, 26, 51, 5, 9),
(42, 26, 52, 4, 14),
(34, 30, 53, 5, 9),
(41, 42, 54, 10, 9),
)
@ -83,10 +78,6 @@ h_21 = (r"""
| |
| |
|===|^|=================|""",
[
("aubergiste", '*', 8, 1, 'stand by'),
(0, '*', 21, 6, 'stand by'),
],
(5, 9, 1, 44, 11))
@ -111,8 +102,132 @@ h_22 = (r"""
| | | |
|/\=/\=/\=/\=/\=/\=| |=/\=/\=/\=/\=/\==|
|\/=\/=\/=\/=\/=\/=]^[=\/=\/=\/=\/=\/==|""",
[
("Freyja", '*', 2, 8, 'stand by'),
("Freyr", '*', 36, 3, 'stand by'),
],
(20, 19, 1, 52, 35))
h_49 = (r"""
|--|--|--|--|
| |
| ### |
| #####|
| [O] |
| |
/==] [=======\
| |
| +-+ |
| | | |
| +-+ |
| |
| |
\=====|^|=====/""",
(7, 14, 1, 58, 15),
)
h_50 = (r"""
/-------------||---\
| /__\ |
| |==| |
| |
| +---+ |
| | | |
| | | |
| +---+ |
| |
| |
| |
|=/ \========/ \=|
| |
| |
\-------------|^|--/""",
(15, 14, 1, 36, 12),
)
h_51 = (r"""
|--------|
|[==][==]|
| |
| |
| |
| +-+ |
| | | |
| +-+ |
| |
|---|^|--|""",
(5, 9, 1, 33, 26),
)
h_52 = (r"""
/====[O]====[O]====\
| | | |
| |_ | | _| |
| |_| | | |_| |
| |
|-------] [-------|
| [=]|
| | | /_\|
| |_ | | |
| |_| | | |
| | | |
|-------/ \-------|
| |
| |
\==|^|======[O]====/""",
(4, 14, 1, 42, 26),
)
h_53 = (r"""
|--------|
| |
| +-+|
| | ||
| +-+|
| |
|[=] |
|/-\ |
| |
|---|^|--|""",
(5, 9, 1, 34, 30),
)
h_54 = (r"""
|======_=|
|-|--| /_\|
|# ##| |=||
|# ##| |
|# ##/ +--+ |
|# | | |
|# ##\ +--+ |
|-|--| |
| |
|===|^|==|""",
(10, 9, 1, 41, 42),
)
vanaheim_entities = (
[0, '*', 1, 45, 39, 'stand by'],
[0, '*', 1, 31, 12, 'stand by'],
[0, '*', 1, 41, 45, 'stand by'],
[0, '*', 1, 52, 22, 'stand by'],
[0, '*', 1, 52, 30, 'stand by'],
["vanaheim_aubergiste", '*', 21, 8, 1, 'stand by'],
[0, '*', 21, 21, 6, 'stand by'],
["Freyja", '*', 22, 2, 8, 'stand by'],
["Freyr", '*', 22, 36, 3, 'stand by'],
[0, '*', 49, 9, 10, 'stand by'],
[0, '*', 49, 9, 11, 'stand by'],
[0, '*', 50, 8, 5, 'stand by'],
[0, '*', 50, 8, 9, 'stand by'],
[0, '*', 51, 7, 3, 'stand by'],
[0, '*', 51, 2, 4, 'stand by'],
[0, '*', 52, 16, 9, 'stand by'],
[0, '*', 53, 5, 2, 'stand by'],
[0, '*', 54, 7, 2, 'stand by'],
[0, '*', 54, 2, 3, 'stand by'],
)

12
notes Normal file
View File

@ -0,0 +1,12 @@
Hydromel poétique
- Création de Kvasir (scène d'introduction)
- Mort de Baldr (avec les explications : rêves sur sa mort; peur des Ases, inquiétude d'Odin; serment de Frigg à Helheim; jalousie de Loki; meutre de Baldr avec le gui par Höd)
- Incinération de Baldr pendant qu'Hermod demande à Hel de ramener Baldr parmis les vivants
- Hel accepte à condition que tout le monde pleure : Thokk (une géante) ne pleura pas : Baldr restera à Helheim
- Les Ases reconnaissant la culpabilité de Loki, Kvasir les aide (épisode du filet; fuite dans les montagnes
- Kvasir se rend chez les nains où il est tué, son sang forme l'Hydromel Poétique.
- Assassinat par les nains des géants Gilling (noyé) puis de sa femme (écrasée par une meule de moulin)
- Vengeance de Suttung (fils de Gilling) qui récupère l'Hydromel Poétique
- Épisode des neufs esclaves qui fauchaient du foin et Odin avec sa pierre à aiguiser.
- Odin creuse la montagne avec le forêt, s'empare de l'Hydromel Poétique et le ramène à Asgard, poursuivit par Suttung.
- Don de l'Hydromel Poétique aux Ases et aux hommes doués de poésie (scène de conclusion)

View File

@ -1,750 +0,0 @@
from idk_lib import *
# Game
def npc(data, stat):
npc_data = (
asgard_npc,
vanaheim_npc,
alfheim_npc,
midgard_npc,
niflheim_npc,
jotunheim_npc,
nidavellir_npc,
muspellheim_npc,
svartalfheim_npc,
h_9_npc, h_10_npc, h_11_npc, h_12_npc, h_13_npc, h_14_npc, h_15_npc, h_16_npc, h_17_npc, h_18_npc, h_19_npc, h_20_npc,
h_21_npc, h_22_npc,
h_23_npc, h_24_npc,
h_25_npc, h_26_npc, h_27_npc, h_28_npc,
h_29_npc, h_30_npc,
h_31_npc, h_32_npc, h_33_npc, h_34_npc, h_35_npc, h_36_npc,
h_37_npc, h_38_npc, h_39_npc, h_40_npc, h_41_npc,
h_42_npc, h_43_npc, h_44_npc,
h_45_npc, h_46_npc, h_47_npc, h_48_npc)
return npc_core(npc_data[data[1]], data, stat)
def point_of_interest(data, stat):
po_data = (
asgard_po,
vanaheim_po,
alfheim_po,
midgard_po,
niflheim_po,
jotunheim_po,
nidavellir_po,
muspellheim_po,
svartalfheim_po
)
coords = data[2], data[3]
event = po_data[data[1]](coords)
if not event: return [0, "Il n'y a rien à voir ici."]
else: return event
print("<scenario>")
events = {"*": npc, "?": point_of_interest}
keys = {4: display_stat, 7: spell, 8: misc_stat, 6: inventory, 9: sleep, "s": quick_save}
def scenario(save_code=None):
# stat = [0 - PV, 1 - pièces d'or, 2 - [vitesse, agilité, attaque, defense, magie], 3 - [arme, armure], 4 - ticks, 5 - nom, 6 - classe, 7 - sorts connus : (id, level), 8 - sous-quêtes terminées]
if not save_code:
stat = init_stat()
name = stat[5]
data = [{"main": 0}, 3, 44, 66]
print_text("<intro>")
else:
stat, data = decode_save(save_code)
idk_game = Asci(maps, events, keys)
stat, data = idk_game.mainloop(10, stat, data, routine=routine, door="^_", walkable=".,`' ", exit_key="q")
if stat[9] != -1: data[0]["main"] -= stat[9]
if data[0]["main"] == 10:
print_text("<conclusion>")
else:
print("Pour continuer :\nscenario(\"{}\")".format(encode_save(data, stat[:-1])))
# Scenario
def shop_interaction(data, stat, nb_choice, *events):
for choice in range(nb_choice):
if data[0]["main"] == stat[9] + choice + 1:
stat[9] = -1
if stat[1] < events[choice][0]: return events[choice][2], choice + 1
else: return events[choice][1], choice + 1
# - - - Asgard - - - #
def asgard_po(coords):
# ? : (120, 26)
# ? : (51, 55)
pass
def asgard_npc(data, stat):
coords = data[2], data[3]
# * : ( 34, 7)
# * : ( 29, 13)
# * : ( 19, 20)
# * : (121, 21)
# * : ( 28, 26)
# * : (117, 32)
# * : ( 46, 35)
# * : ( 57, 38)
# * : ( 82, 38)
# * : ( 22, 39)
# * : ( 8, 44)
# * : ( 58, 50)
# * : ( 83, 51)
# * : ( 32, 59)
# * : (104, 63)
# * : ( 46, 65)
# * : ( 16, 71)
# * : (138, 71)
pass
# Forseti
def h_9_npc(data, stat):
# * : (19, 4)
pass
# Odin
def h_10_npc(data, stat):
# * : (25, 11)
pass
def h_11_npc(data, stat):
# * : (34, 7)
pass
def h_12_npc(data, stat):
# * : (19, 4)
pass
# Folkvangr
def h_13_npc(data, stat):
# * : (21, 8)
pass
def h_14_npc(data, stat):
# * : (26, 2)
pass
# Vidar
def h_15_npc(data, stat):
# * : (10, 6)
pass
def h_16_npc(data, stat):
# * : (50, 14)
pass
def h_17_npc(data, stat):
# * : (36, 14)
pass
def h_18_npc(data, stat):
# * : (30, 9)
pass
def h_19_npc(data, stat):
# * : (28, 7)
pass
def h_20_npc(data, stat):
# * : (39, 9)
pass
# - - - Vanaheim - - - #
def vanaheim_po(coords):
# ? : (42, 20)
pass
def vanaheim_npc(data, stat):
# * : (31; 12)
# * : (52; 22)
# * : (52; 30)
# * : (45; 39)
# Charrette
if coords == (45, 39):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "[LE CONDUCTEUR DE LA CHARRETTE SE TOURNA VERS VOUS] Ou voulez-vous aller ? Je vous emmene pour 5 pieces.\n1. Midgard\n2. Jotunheim\n3. Alfheim", 3]
else:
destinations = ("Midgard", "Jotunheim", "Alfheim")
dest_coords = ((3, 10, 58), (5, 11, 120), (2, 14, 68))
for i in range(1, 4):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 5: return [-i, "Je ne travaille pas gratuitement."]
else:
data[1], data[2], data[3] = dest_coords[i - 1][0], dest_coords[i - 1][1], dest_coords[i - 1][2]
return [-i, "C'est parti pour {} !".format(destinations[i - 1]), 0, (1, -5), (4, 60)]
def h_21_npc(data, stat):
# * : (8, 1)
# * : (21, 6)
coords = data[2], data[3]
if coords == (8, 1):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Cher client bonjour ! Que puis-je faire pour vous ?\n1. Manger [5 PO]\n2. Boire [2 PO]\n3. Dormir [10 PO]", 3]
else:
event, _ = shop_interaction(data, stat, 3,
(5, [-1, "Et un plat chaud, un ! [VOUS VOUS ASSEYEZ DEVANT UN TRANCHOIR DE PAIN ET UNE ASSIETTE DE SOUPE EPAISSE.]", 0, (0, 5), (1, -5)], [-1, "Tsst, quand on ne peut pas payer, on ne rentre pas."]),
(2, [-2, "Et voila ! [L'AUBERGISTE PLACA DEVANT VOUS UNE CHOPE DE BIERE]", 0, (0, 2), (1, -2)], [-2, "La maison ne fait pas credit."]),
(10, [-3, "Votre chambre est a l'etage.\n[VOUS MONTEZ A L'ETAGE ET VOUS ENDORMEZ SANS DIFFICULTES.]", 0, (0, 10), (1, -10), (4, 480)], [-3, "Allez donc voir ailleurs."]))
return event
def h_22_npc(data, stat):
# * : (36, 3)
# * : (2, 8)
pass
# - - - Alfheim - - - #
def alfheim_po(coords):
# ? : (34, 20)
pass
def alfheim_npc(data, stat):
# * : (11; 4)
# * : (46; 6)
# * : (23; 17)
# * : (27; 54)
coords = data[2], data[3]
# Charrette
if coords == (23, 17):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "[LE CONDUCTEUR DE LA CHARRETTE SE TOURNA VERS VOUS] Ou voulez-vous aller ? Je vous emmene pour 5 pieces.\n1. Midgard\n2. Asgard\n3. Vanaheim\n4. Svartalfheim", 4]
else:
destinations = ("Midgard", "Asgard", "Vanaheim", "Svartalfheim")
dest_coords = ((3, 10, 58), (0, 126, 71), (1, 28, 13), (8, 109, 66))
for i in range(1, 5):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 5: return [-i, "Je ne travaille pas gratuitement."]
else:
data[1], data[2], data[3] = dest_coords[i - 1][0], dest_coords[i - 1][1], dest_coords[i - 1][2]
return [-i, "C'est parti pour {} !".format(destinations[i - 1]), 0, (1, -5), (4, 60)]
def h_23_npc(data, stat):
# * : (23, 5)
pass
def h_24_npc(data, stat):
# * : (12, 3)
# * : (36, 12)
coords = data[2], data[3]
spells = ("Soin", "Flammes", "Givre", "Etincelles", "Fatigue")
levels = ("I", "II", "III", "IV", "V")
if not (480 <= stat[4] <= 1140): return [0, "Excusez-moi, nous sommes fermes."]
if coords == (12, 3):
if not stat[7]: return [0, "Je ne peux pas vous faire oublier ce que vous ne connaissez pas."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Quel sort souhaitez-vous oublier ?\n" + "\n".join(["{0}. {1} {2}".format(nb + 1, spells[stat[7][nb][0]], levels[stat[7][nb][1] - 1]) for nb in range(len(stat[7]))]), len(stat[7])]
else:
for i in range(1, len(stat[7]) + 1):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
stat[7].pop(i - 1)
return [-i, "Asseyez-vous, je vais vous faire oublier ce sort. [UN PUISSANT MAL DE TETE VOUS PRIT, LES MURS SEMBLERENT TANGUER TANDIS QUE VOTRE VUE DEVINT FLOUE. LE VERTIGE S'ESTOMPA PROGRESSIVEMENT.] Et voila !"]
if coords == (36, 12):
spells_sale = ((0, 2), (1, 2), (2, 4), (4, 1))
if len(stat[7]) >= 3: return [0, "Je suis desole, vous ne pouvez pas apprendre plus de trois sorts."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Diomwar, pour vous servir. Quel sort voulez-vous acheter ?\n1. Soin II\n2. Flammes II\n3. Givre IV\n4. Fatigue I", 4]
else:
for i in range(1, 5):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < spells_sale[i - 1][1] * 10: return [-i, "Vous n'avez pas les moyens, desole."]
spell_id = -1
for sp_id in range(len(stat[7])):
sp = stat[7][sp_id]
if spells_sale[i - 1][0] == sp[0]:
if spells_sale[i - 1][1] <= sp[1]: return [-i, "Vous connaissez deja ce sort."]
else:
spell_id = sp_id
break
if spell_id == -1:
stat[7].append(spells_sale[i - 1])
else:
stat[7][spell_id] = spells_sale[i - 1]
return [-i, "[DIOMWAR OUVRIT UN LIVRE RELIE DE CUIR NOIR, ET TRACA DU DOIGT DES SIGNES CABALISTIQUES SUR LE SOL. LES RUNES BRILLERENT PUISSAMMENT AVANT DE S'ETEINDRE.]", 0, (1, -spells_sale[i - 1][1] * 10)]
# - - - Midgard - - - #
def midgard_po(coords):
# ? : (29, 9)
# ? : (53, 24)
# ? : (66, 45)
# ? : (52, 79)
pass
def midgard_npc(data, stat):
# * : (67, 46)
# * : (39, 49)
# * : (66, 56)
# * : (68, 71)
# * : (8, 59)
# * : (94, 85)
# * : (51, 60)
coords = data[2], data[3]
# Charrette
elif coords == (39, 49):
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "[LE CONDUCTEUR DE LA CHARRETTE SE TOURNA VERS VOUS] Ou voulez-vous aller ? Je vous emmene pour 5 pieces.\n1. Vanaheim\n2. Asgard\n3. Nidavellir\n4. Niflheim", 4]
else:
destinations = ("Vanaheim", "Asgard", "Nidavellir", "Niflheim")
dest_coords = ((1, 54, 29), (0, 126, 71), (6, 93, 8), (4, 78, 19))
for i in range(1, 5):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 5: return [-i, "Je ne travaille pas gratuitement."]
else:
data[1], data[2], data[3] = dest_coords[i - 1][0], dest_coords[i - 1][1], dest_coords[i - 1][2]
return [-i, "C'est parti pour {} !".format(destinations[i - 1]), 0, (1, -5), (4, 60)]
def h_25_npc(data, stat):
pass
def h_26_npc(data, stat):
# * : (17, 7)
# * : (22, 7)
# * : (17, 8)
# * : (27, 8)
# * : (27, 6)
coords = data[2], data[3]
# Rosahil Green
if coords == (27, 6):
if stat[4] >= 1320 or stat[4] <= 340: return [0, "Je suis desolee, nous sommes fermes. Revenez plus tard !"]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Rosahil Green, tenanciere de cette auberge. Vous desirez quelque chose ?\n1.De quoi manger s'il vous plait. [-5 PO]\n2.Je voudrais une chambre pour la nuit. [-10 PO]", 2]
else:
event, choice = shop_interaction(data, stat, 2,
(5, [-1, "Et voila pour vous ! [ROSAHIL POSA UNE ASSIETTE DE RAGOUT CHAUD DEVANT VOUS.]", 0, (0, 5), (1, -5)], [-1, "Reviens quand tu auras assez de pieces d'or."]),
(10, [-2, "Suivez-moi, je vais vous montrer votre chambre. [VOUS SUIVEZ ROSAHIL DANS L'AUBERGE, LA NUIT PASSA.]", 0, (0, 10), (1, -10), (4, 480)], [-2, "Je suis desolee, tu n'as pas assez !"]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Il est trop tot, revenez vers 19h."]
else: return event
else: return [0, "Ui hips ?"]
def h_27_npc(data, stat):
pass
def h_28_npc(data, stat):
# * : (27, 6)
pass
# - - - Niflheim - - - #
def niflheim_po(coords):
# ? : (88, 32)
pass
def niflheim_npc(data, stat):
# * : (95, 30)
# * : (57, 31)
# * : (39, 60)
# * : (108, 67)
pass
def h_29_npc(data, stat):
# * : (5, 5)
coords = data[2], data[3]
spells_sale = ((0, 5), (1, 5), (2, 5), (3, 5), (4, 5))
if not (480 <= stat[4] <= 1140): return [0, "Je suis desolee, nous sommes fermes."]
if coords == (5, 5):
if len(stat[7]) >= 3: return [0, "Vous ne pouvez pas apprendre plus de sort, et je ne pratique pas les sorts d'oubli. Je crois qu'une librairie vers Alfheim le fait gratuitement."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Merath, je vend les sorts les plus puissants de tout l'Yggdrasil ! Quel sort voulez-vous ?\n1. Soin V\n2. Flammes V\n3. Givre V\n4. Etincelles V\n4. Fatigue V", 4]
else:
for i in range(1, 5):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 50: return [-i, "Vous n'avez pas les moyens, desolee."]
spell_id = -1
for sp_id, sp in range(len(stat[7])):
sp = stat[7][sp_id]
if spells_sale[i - 1][0] == sp[0]:
if spells_sale[i - 1][1] <= sp[1]: return [-i, "Vous connaissez deja ce sort."]
else:
spell_id = sp_id
break
if spell_id == -1:
stat[7].append(spells_sale[i - 1])
else:
stat[7][spell_id] = spells_sale[i - 1]
return [-i, "[MERATH SE RETOURNA ET S'EMPARA D'UN GRIMOIRE. ELLE L'OUVRIT ET LUT A HAUTE VOIX. UNE LOURDE TORPEUR S'ABBATIT SUR VOUS. QUAND VOUS REPRENEZ PLEINEMENT CONSCIENCE, LE SORT EST GRAVE DANS VOTRE MEMOIRE.]", 0, (1, -50)]
def h_30_npc(data, stat):
# * : (37, 4)
# * : (17, 6)
pass
# - - - Jotunheim - - - #
def jotunheim_po(coords):
# ? : (60, 57)
# ? : (23, 70)
# ? : (60, 86)
pass
def jotunheim_npc(data, stat):
# * : (25; 10)
# * : (39; 20)
# * : (3; 28)
# * : (34; 45)
# * : (53; 49)
# * : (19; 51)
# * : (34; 56)
# * : (64; 64)
# * : (54; 70)
# * : (8; 72)
# * : (40; 75)
# * : (72; 87)
# * : (6; 98)
pass
def h_31_npc(data, stat):
# * : (28, 4)
pass
def h_32_npc(data, stat):
# * : (28, 6)
pass
def h_33_npc(data, stat):
# * : (48, 5)
# * : (24, 7)
pass
def h_34_npc(data, stat):
# * : (26, 6)
pass
def h_35_npc(data, stat):
# * : (17, 5)
pass
def h_36_npc(data, stat):
# * : (11, 3)
# * : (27, 10)
# * : (9, 12)
coords = data[2], data[3]
if coords == (27, 10):
if not (300 <= stat[4] <= 1380): return [0, "Je suis desole, nous somme ferme la nuit."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Vous voulez quelque-chose ?\n1. Je mangerai bien un truc [-4 PO]\n2. Il vous reste une chambre ? [-12 PO]", 2]
else:
event, choice = shop_interaction(data, stat, 2,
(4, [-1, "Et voila ! [LE TAVERNIER POSA UNE ASSIETTE FUMANTE DEVANT VOUS ET UN VERRE DE VIN]", 0, (0, 5), (1, -4)], [-1, "Reviens quand tu auras de quoi me payer."]),
(12, [-2, "Oui, au premier etage, au bout du couloir sur votre droite. [VOUS SUIVEZ LES INDICATIONS DU TAVERNIER ET TROUVEZ VOTRE CHAMBRE. VOUS SOMBREZ DANS LES BRAS DE NOTT.]", 0, (0, 15), (1, -12), (4, 480)], [-2, "Tu n'as pas assez."]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Il est trop tot, reviens vers 19h."]
else: return event
# - - - Nidavellir - - - #
def nidavellir_po(coords):
# ? : (65, 7)
# ? : (66, 58)
pass
def nidavellir_npc(data, stat):
# * : (49, 21)
# * : (25, 31)
# * : (74, 46)
# * : (16, 55)
# * : (77, 61)
pass
def h_37_npc(data, stat):
# * : (2, 1)
# * : (26, 1)
# * : (10, 5)
# * : (27, 8)
# * : (3, 10)
coords = data[2], data[3]
if coords == (2, 1):
if not (340 <= stat[4] <= 1380): return [0, "Nous sommes ouverts de 5 heures a 23."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bonjour, Muin pour vous servir.\n1. Bonjour je voudrais manger. [-5 PO]\n2. Vous reste-t-il des chambres ? [-15 PO]\n3. A boire ! [-3 PO]", 3]
else:
event, choice = shop_interaction(data, stat, 3,
(5, [-1, "Pas de probleme ! [MUIN REVINT QUELQUES MINUTES PLUS TARD, ET POSA UNE ASSIETTE FUMANTE DEVANT VOUS.]", 0, (0, 5), (1, -5)], [-1, "Hey la ! Reviens quand tu pourras me payer."]),
(15, [-2, "Bien sur ! Suivez-moi. [VOUS SUIVEZ MUIN DANS UNE PIECE TROGLODYTE MUNIE D'UN LIT ET D'UN COFFRE. VOUS VOUS ENDORMEZ RAPIDEMENT.]", 0, (0, 15), (1, -15), (4, 480)], [-2, "Desole, je n'ai plus une seule chambre de libre."]),
(3, [-3, "[MUIN POSA UNE CHOPPE DE BIERE MOUSSEUSE DEVANT VOUS.]", 0, (0, 3), (1, -3)], [-3, "Allez donc voir un autre etablissement, nous ne servons pas gratuitement."]))
if choice == 2 and 360 < stat[4] < 1140: return [-2, "Une chambre !? Il n'est que {} heures. Reviens dans la soiree.".format(stat[4] // 60)]
else: return event
return [0, "Hmm ?"]
def h_38_npc(data, stat):
# * : (12, 3)
# * : (19, 7)
pass
def h_39_npc(data, stat):
# * : (9, 2)
# * : (9, 4)
coords = data[2], data[3]
if not (480 <= stat[4] <= 1140): return [0, "La forge de Nivallir est ouverte de 8 heures a 18 heures."]
if coords == (9, 2):
if stat[3][0]: return [0, "Vous avez deja une arme. Allez voir mon confrere si vous voulez la vendre et revenez me voir."]
elif stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bienvenue a la forge de Nidavellir ! Vous desirez une piece particulière ?\n1. Un marteau [-20 PO]\n2. Une masse [-30 PO]\n3. Un fleau [-40 PO]\n4. Une hache [-50 PO]", 4]
else:
weapons = ("UN MARTEAU", "UNE MASSE", "UN FLEAU", "UNE HACHE")
for i in range(1, 5):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < (i+1) * 10: return [-i, "Vous n'avez pas assez."]
stat[3][0] = i + 1
return [-i, "Tres bon choix ! [LE NAIN DECROCHA {} DU RATELIER ET VOUS TENDIT L'ARME.]".format(weapons[i - 1]), 0, (1, -(i+1) * 10)]
if coords == (9, 4):
if stat[3][0] == 0: return [0, "Vous n'avez pas d'arme a me vendre. Allez voir mon collegue pour en acheter une."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bienvenue dans notre forge. Vous souhaitez me vendre votre arme ?\n1. Oui\n2. Non", 2]
elif data[0]["main"] == stat[9] + 1:
stat[9] = -1
cost = stat[3][0] * 8
stat[3][0] = 0
return [-1, "Marche conclu ! [+{} PO]".format(cost), 0, (1, cost)]
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [-2, "A votre guise, revenez quand vous voulez !"]
def h_40_npc(data, stat):
# * : (14, 5)
pass
def h_41_npc(data, stat):
# * : (12, 2)
# * : (10, 8)
pass
# - - - Muspellheim - - - #
def muspellheim_po(coords):
# ? (66, 8)
# ? : (64, 97)
pass
def muspellheim_npc(data, stat):
# * : (20, 12)
# * : (78, 14)
# * : (54, 80)
# * : (59, 91)
# * : (39, 94)
# * : (29, 113)
pass
def h_42_npc(data, stat):
# * : (11, 5)
# * : (6, 7)
# * : (31, 9)
# * : (2, 11)
coords = data[2], data[3]
if coords == (6, 7):
if not (300 <= stat[4] <= 1380): return [0, "Nous sommes ouverts de 5 a 23 heures."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Besoin de quelque chose messire ?\n1. Hum, oui, j'aimerais manger. [-5 PO]\n2. Je voudrais dormir [-10 PO]", 2]
else:
event, _ = shop_interaction(data, stat, 2,
(5, [-1, "Et voila pour vous !", 0, (0, 5), (1, -5)], [-1, "Je regrette, vous n'avez pas assez."]),
(10, [-2, "Bien sur, si vous voulez bien me suivre. [VOUS VOUS ALLONGEZ SUR LE LIT ET VOUS ENDORMEZ RAPIDEMENT.]", 0, (0, 10), (1, -10), (4, 480)], [-2, "Nous ne pouvons pas nous permettre de faire credit."]))
return event
def h_43_npc(data, stat):
# * : (24, 4)
# * : (6, 5)
# * : (13, 9)
coords = data[2], data[3]
if not (480 <= stat[4] <= 1140): return [0, "L'armurerie est ouverte de 8 heures a 18 heures."]
if coords == (24, 4):
if stat[3][1]: return [0, "Vous portez deja une armure, allez voir mon confrere."]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Bienvenue, dans mon armurerie ! Je suis Bertfrid, besoin d'une armure ?\n1. Oui, d'une rondache. [-10 PO]\n2. d'un pavois [-20 PO]\n3. d'une cotte de mailles [-30 PO]\n4. d'une broigne [-40 PO]\n5. d'un harnois [-50 PO]", 5]
else:
shields = ("UNE RONDACHE", "UN PAVOIS", "UNE COTTE DE MAILLES", "UNE BROIGNE", "UN HARNOIS")
for i in range(1, 6):
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < i * 10: return [-i, "Vous n'avez pas assez."]
stat[3][1] = i
return [-i, "C'est un bon achat. [BERTFRID DECROCHA {}]".format(shields[i - 1]), 0, (1, -i * 10)]
elif coords == (13, 9):
if stat[3][1] == 0: return [0, "J'achete, je ne vend pas ! Allez voir Bertfrid du cote du four a metaux, elle vous renseignera"]
if stat[9] == -1 or data[0]["main"] == stat[9]:
stat[9] = data[0]["main"]
return [0, "Vous voulez vendre votre piece d'armure ?\n1. Oui\n2. Non", 2]
elif data[0]["main"] == stat[9] + 1:
stat[9] = -1
cost = stat[3][1] * 8
return [-1, "C'est une affaire ! [+{} PO]".format(cost), 0, (1, cost)]
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [-2, "Revenez quand vous voulez !"]
elif coords == (6, 5):
return [0, "Je ne suis qu'apprenti monseigneur. Adressez-vous plutot a Bertfrid."]
def h_44_npc(data, stat):
# * : (13, 2)
# * : (13, 20)
pass
# - - - Svartalfheim - - - #
def svartalfheim_po(coords):
# ? : (113, 37)
pass
def svartalfheim_npc(data, stat):
# * : (10; 24)
# * : (105; 46)
# * : (22; 50)
# * : (15; 54)
# * : (25; 61)
# * : (121; 68)
pass
def h_45_npc(data, stat):
# * : (15, 4)
pass
def h_46_npc(data, stat):
# * : (13, 2)
# * : (13, 4)
pass
def h_47_npc(data, stat):
# * : (3, 4)
# * : (15, 8)
pass
def h_48_npc(data, stat):
# * : (34, 5)
# * : (29, 6)
pass

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="75" height="75" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="75" height="75" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" source="Asci_tileset.tsx"/>
<layer id="1" name="Calque de Tuiles 1" width="75" height="75">
<data encoding="csv">
@ -11,42 +11,42 @@
95,95,95,95,95,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,0,0,4,4,4,4,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,
95,95,95,0,0,0,0,0,0,0,0,0,95,95,95,95,95,0,0,0,0,0,0,93,93,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,11,0,4,4,4,4,0,0,0,0,64,64,0,0,0,4,4,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,95,95,95,95,95,0,0,4,4,0,0,0,0,0,93,93,0,0,0,0,16,60,62,61,0,4,4,4,4,0,0,0,0,0,0,95,95,95,95,95,
95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,0,0,4,4,0,0,0,4,4,0,0,4,4,4,4,0,0,65,1,0,0,0,8,0,0,93,64,64,93,0,0,93,93,0,0,64,64,0,0,0,0,0,95,95,95,
95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,0,0,4,4,0,0,0,4,4,0,0,4,4,4,4,0,0,65,1,0,0,0,8,0,0,93,63,64,93,0,0,93,93,0,0,64,64,0,0,0,0,0,95,95,95,
95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,4,4,0,0,0,93,93,0,0,4,4,4,4,0,4,4,4,4,0,0,93,93,0,0,0,13,8,0,0,0,0,8,15,8,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,95,95,95,
95,95,95,0,0,0,0,0,0,95,95,95,95,95,0,0,95,95,95,95,0,4,4,4,4,0,0,0,0,0,0,0,93,93,0,0,0,93,93,0,0,0,0,0,0,65,96,8,0,0,64,64,0,0,0,8,65,8,1,15,1,65,0,0,93,64,64,93,0,0,0,0,0,95,95,
95,95,95,0,0,0,0,0,0,95,95,95,95,95,0,0,95,95,95,95,0,4,4,4,4,0,0,0,0,0,0,0,93,93,0,0,0,93,93,0,0,0,0,0,0,65,96,8,0,0,64,64,0,0,0,8,65,8,1,15,1,65,0,0,93,63,64,93,0,0,0,0,0,95,95,
95,95,95,0,0,4,4,0,0,0,0,0,0,0,0,0,95,95,95,0,0,0,93,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,8,0,0,0,16,60,62,61,0,0,0,0,0,0,0,0,8,96,15,0,0,0,0,0,4,4,0,0,95,95,
95,95,0,0,4,4,4,4,0,0,4,4,0,0,0,64,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,93,64,64,93,0,0,0,4,4,0,0,0,0,0,65,15,65,0,0,4,4,4,4,0,95,95,
95,95,0,0,4,4,4,4,0,0,4,4,0,0,0,64,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,93,64,63,93,0,0,0,4,4,0,0,0,0,0,65,15,65,0,0,4,4,4,4,0,95,95,
95,95,0,0,0,93,93,0,0,4,4,4,4,0,16,0,61,0,0,0,0,0,0,0,0,16,0,0,93,62,48,60,93,0,0,0,93,62,48,60,93,0,0,61,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,64,64,0,0,0,0,0,0,93,93,0,0,95,95,
95,95,95,95,0,0,0,0,0,0,93,93,0,0,93,64,93,0,0,0,0,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,4,4,0,0,4,4,0,0,0,93,93,0,0,16,60,62,61,0,0,0,0,0,0,0,0,0,95,95,
95,95,95,95,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,93,64,16,0,0,0,61,64,16,0,64,0,61,64,16,0,0,0,61,64,93,0,0,4,4,0,0,4,4,0,0,0,0,0,0,0,93,64,64,93,0,0,4,4,0,0,0,95,95,95,95,
95,95,95,95,0,0,0,0,0,0,93,93,0,0,93,63,93,0,0,0,0,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,4,4,0,0,4,4,0,0,0,93,93,0,0,16,60,62,61,0,0,0,0,0,0,0,0,0,95,95,
95,95,95,95,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,93,64,16,0,0,0,61,64,16,0,64,0,61,64,16,0,0,0,61,64,93,0,0,4,4,0,0,4,4,0,0,0,0,0,0,0,93,63,64,93,0,0,4,4,0,0,0,95,95,95,95,
95,95,95,95,0,4,4,4,4,0,0,0,0,0,0,0,0,0,16,0,61,0,0,0,93,64,93,0,0,0,93,64,93,16,63,61,93,64,93,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,4,4,4,4,0,0,95,95,95,95,
95,95,95,95,0,0,93,93,0,0,0,0,0,0,64,0,0,0,93,64,93,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,4,4,0,16,0,0,61,0,0,1,1,65,8,0,0,93,93,0,0,0,95,95,95,95,
95,95,95,95,0,0,0,0,0,0,0,0,0,16,0,61,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,0,0,4,4,0,93,64,64,93,0,0,15,0,0,13,0,0,0,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,93,64,93,0,0,0,64,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,65,8,1,65,64,0,13,13,1,1,13,96,1,0,0,95,95,95,
95,95,95,95,0,0,93,93,0,0,0,0,0,0,64,0,0,0,93,63,93,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,4,4,0,16,0,0,61,0,0,1,1,65,8,0,0,93,93,0,0,0,95,95,95,95,
95,95,95,95,0,0,0,0,0,0,0,0,0,16,0,61,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,0,0,4,4,0,93,63,64,93,0,0,15,0,0,13,0,0,0,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,93,63,93,0,0,0,64,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,65,8,1,65,64,0,13,13,1,1,13,96,1,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,4,4,4,0,0,0,0,0,0,32,0,0,0,0,0,0,4,4,4,0,8,1,0,0,64,0,0,0,0,0,65,65,8,0,0,16,0,61,0,0,0,0,0,0,96,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,93,64,93,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,96,13,0,0,16,0,61,0,0,0,96,0,0,0,0,0,93,64,93,0,0,95,95,95,95,0,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,96,1,8,1,13,93,64,93,0,0,15,8,0,0,0,64,0,0,0,0,0,0,95,95,95,95,95,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,93,63,93,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,96,13,0,0,16,0,61,0,0,0,96,0,0,0,0,0,93,63,93,0,0,95,95,95,95,0,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,96,1,8,1,13,93,63,93,0,0,15,8,0,0,0,64,0,0,0,0,0,0,95,95,95,95,95,0,0,95,95,95,
95,95,95,95,95,95,0,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,65,0,4,4,4,4,4,0,0,15,0,0,0,65,96,0,15,13,15,0,0,0,0,16,0,61,0,0,0,0,0,95,95,95,95,95,0,0,95,95,95,
95,95,95,95,95,0,0,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,8,0,0,4,4,4,0,0,1,1,0,0,64,0,65,1,13,0,64,0,0,0,0,93,64,93,0,64,0,0,0,95,95,95,95,95,95,0,95,95,95,
95,95,95,95,95,0,0,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,8,0,0,4,4,4,0,0,1,1,0,0,64,0,65,1,13,0,64,0,0,0,0,93,63,93,0,64,0,0,0,95,95,95,95,95,95,0,95,95,95,
95,95,95,95,95,0,0,0,64,64,0,0,95,95,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,16,14,61,0,1,1,0,0,16,14,61,0,0,65,0,0,16,0,61,0,13,0,16,80,61,0,0,0,0,0,0,16,0,61,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,16,0,0,61,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,8,96,15,0,0,8,65,65,13,8,8,0,93,64,93,65,1,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,93,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,15,96,96,1,8,0,0,0,0,1,15,65,0,0,8,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,16,0,0,61,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,8,96,15,0,0,8,65,65,13,8,8,0,93,63,93,65,1,0,93,63,93,0,0,0,0,0,0,93,63,93,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,93,64,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,15,96,96,1,8,0,0,0,0,1,15,65,0,0,8,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,1,15,13,0,0,0,0,64,0,0,0,96,15,0,1,13,0,0,64,0,0,0,0,0,0,0,13,15,96,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,16,0,0,61,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,16,0,61,0,0,96,65,0,8,0,0,16,80,61,64,64,0,0,0,0,65,15,96,0,0,0,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,93,64,64,93,0,0,0,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,4,4,4,0,0,93,64,93,0,0,1,96,15,1,0,0,93,64,0,80,0,61,30,30,93,0,15,8,65,15,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,93,63,64,93,0,0,0,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,4,4,4,0,0,93,63,93,0,0,1,96,15,1,0,0,93,64,0,80,0,61,30,30,93,0,15,8,65,15,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,4,4,4,0,16,14,61,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,0,0,0,0,13,15,65,0,0,93,93,63,93,64,64,93,0,0,93,0,15,96,0,15,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,16,14,61,0,0,0,4,4,4,0,0,0,0,0,0,96,1,0,0,0,0,93,0,96,0,0,0,0,0,0,0,0,1,15,8,96,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,16,14,61,0,4,4,4,0,0,0,4,4,4,0,0,93,0,13,65,8,13,8,65,1,8,8,13,13,0,0,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,4,4,4,4,4,0,93,30,30,93,30,30,93,30,30,93,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,4,4,4,0,0,0,0,0,93,64,93,0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,0,0,16,14,61,0,0,0,16,14,61,0,0,4,4,4,0,0,0,0,0,0,64,0,0,16,0,61,0,0,64,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,16,0,61,0,93,64,93,0,16,0,61,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,93,64,93,0,0,0,0,0,93,64,93,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,16,0,61,0,93,63,93,0,16,0,61,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,93,63,93,0,0,0,0,0,93,63,93,0,0,95,95,95,95,
95,95,95,95,95,95,95,0,0,0,0,93,64,93,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,0,16,14,61,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,16,0,61,0,0,0,0,0,64,0,0,0,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,93,64,93,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,16,0,61,0,0,64,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,16,0,61,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,93,64,93,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,93,63,93,0,0,0,0,16,0,61,0,0,64,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,16,0,61,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,
@ -54,14 +54,14 @@
95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,0,0,64,64,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,64,64,0,0,0,0,4,4,4,0,0,0,0,4,4,0,0,0,0,0,0,4,4,0,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,0,16,0,0,61,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,16,0,0,61,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,0,93,64,64,93,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,0,93,64,64,93,0,0,4,4,4,4,4,0,0,0,4,4,0,0,0,0,0,0,4,4,0,95,95,95,95,95,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,0,93,63,64,93,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,0,93,64,63,93,0,0,4,4,4,4,4,0,0,0,4,4,0,0,0,0,0,0,4,4,0,95,95,95,95,95,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,95,95,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,4,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,96,13,8,8,0,0,0,0,93,64,93,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,4,4,96,8,1,0,0,0,0,0,11,0,0,4,4,4,0,0,0,0,13,13,13,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,4,4,4,0,1,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,1,65,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,95,95,95,
95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,93,64,93,0,15,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,8,13,13,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,95,95,95,
95,95,95,95,95,95,0,0,0,0,4,4,4,0,0,0,0,0,0,96,1,13,4,4,4,4,4,0,0,0,4,4,4,0,96,65,0,0,0,0,0,16,0,0,61,0,0,4,4,4,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,13,0,4,4,4,0,0,0,0,93,64,93,65,8,0,4,4,4,0,0,93,64,64,93,0,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,93,64,93,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,13,0,4,4,4,0,0,0,0,93,64,93,65,8,0,4,4,4,0,0,93,64,63,93,0,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,93,64,93,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,65,65,93,64,93,0,4,4,4,0,0,0,65,0,4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,
95,95,95,95,95,95,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,8,0,0,0,4,4,4,4,4,0,0,1,0,4,4,4,4,4,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,4,4,4,0,0,95,95,95,
95,95,95,95,95,95,0,0,0,0,93,64,93,0,0,0,0,4,4,4,0,13,8,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,95,95,95,
@ -71,7 +71,7 @@
95,95,95,95,95,0,4,4,0,93,93,0,0,0,0,0,13,65,1,8,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,95,95,95,
95,95,95,95,0,4,4,4,4,0,0,0,0,0,64,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,95,95,95,95,95,95,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,95,95,95,
95,95,95,95,95,0,93,93,0,0,0,0,0,16,14,61,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,95,95,95,95,
95,95,95,95,95,95,0,0,95,0,0,0,0,93,64,93,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,95,95,95,
95,95,95,95,95,95,0,0,95,0,0,0,0,93,63,93,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="150" height="75" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="150" height="75" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" source="Asci_tileset.tsx"/>
<layer id="1" name="Calque de Tuiles 1" width="150" height="75">
<data encoding="csv">
@ -46,37 +46,37 @@
4,4,4,4,4,0,0,93,80,93,80,93,80,93,80,93,80,93,80,93,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,93,0,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,0,0,0,0,0,0,16,14,61,0,93,64,93,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,95,95,95,95,0,16,61,0,0,0,0,0,16,0,0,0,0,
4,4,4,4,4,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,64,0,0,0,0,0,0,95,95,95,95,95,0,16,0,0,61,0,0,0,0,0,16,61,0,0,
4,4,4,4,0,0,93,64,16,0,0,0,61,64,16,0,0,0,61,64,93,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,95,95,95,95,0,0,16,0,0,0,0,61,0,0,0,16,0,0,61,0,
0,93,93,0,0,0,93,64,93,0,0,0,93,63,93,0,0,0,93,64,93,0,0,0,16,14,61,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,95,95,95,95,0,0,16,0,0,0,0,0,0,61,0,16,0,0,0,0,61,
0,0,0,4,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,16,14,61,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,
0,93,93,0,0,0,93,64,93,0,0,0,93,63,93,0,0,0,93,64,93,0,0,0,16,14,61,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,93,0,0,93,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,95,95,95,95,0,0,16,0,0,0,0,0,0,61,0,16,0,0,0,0,61,
0,0,0,4,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,16,14,61,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,93,0,0,93,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,
0,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,16,61,0,0,0,0,0,16,0,
0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,16,0,0,
0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,95,95,95,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,16,53,73,83,90,78,83,73,70,74,78,83,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,16,61,0,16,0,0,0,0,61,0,16,0,0,0,
0,0,4,4,4,4,0,0,0,64,0,0,0,0,4,4,4,0,0,16,14,61,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,95,9,95,10,95,0,0,0,0,0,0,0,0,4,4,4,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,4,4,4,0,0,0,0,16,0,0,61,0,0,0,0,0,0,61,0,0,0,0,
0,0,0,93,93,0,0,0,16,80,61,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,16,14,61,0,0,0,16,14,61,0,0,0,0,16,95,9,64,64,64,10,95,61,0,0,0,0,0,0,16,14,61,0,0,0,0,93,64,16,0,0,61,64,16,0,0,61,64,93,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,16,80,61,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,0,0,4,4,4,4,4,0,0,16,0,0,0,0,61,0,0,0,0,0,16,61,0,0,0,
0,0,0,4,4,0,0,0,93,64,93,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,95,95,95,95,95,95,95,16,0,0,11,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,93,63,93,0,0,93,64,93,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,4,4,4,0,0,16,0,0,0,0,0,0,61,0,0,0,16,0,0,61,0,0,
95,0,4,4,4,4,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,16,93,61,0,0,0,0,0,4,4,4,0,0,0,0,16,0,0,0,0,61,0,
95,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,16,93,61,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,0,4,4,4,4,4,0,0,16,61,0,0,0,0,0,61,
95,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,41,74,78,74,79,67,75,80,83,72,0,61,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,4,4,4,4,4,0,4,4,4,0,0,16,0,0,61,0,0,0,0,0,
95,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,16,93,61,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,64,0,0,4,4,4,0,0,16,93,61,0,16,0,0,0,0,61,0,0,0,16,
95,0,0,93,93,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,93,0,62,48,60,0,0,64,64,0,0,62,48,60,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,64,0,4,4,4,4,4,0,0,0,64,0,16,93,61,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,16,80,61,0,16,93,61,0,0,0,0,0,16,0,0,0,0,0,0,61,0,16,0,
95,0,0,0,0,0,0,0,64,0,0,0,0,4,4,4,4,4,0,0,93,64,64,64,64,64,93,63,63,93,64,64,64,64,64,93,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,16,14,61,0,0,4,4,4,0,0,0,16,80,61,0,4,4,4,0,0,0,16,80,61,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,93,64,93,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,16,0,0,
95,0,0,0,0,0,0,16,80,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,93,64,93,0,16,93,61,0,0,0,93,64,93,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,16,0,0,0,
95,0,0,0,0,0,0,93,64,93,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,
95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,4,4,4,0,0,0,0,
95,95,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,16,93,61,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,16,93,61,0,4,4,4,
95,95,0,0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,16,80,61,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,
95,95,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,16,14,61,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,16,93,61,0,0,0,0,0,4,4,4,0,0,0,0,95,95,95,95,95,95,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,
95,95,0,0,0,0,16,14,61,0,0,0,16,14,61,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,16,14,61,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,11,0,0,4,4,4,4,4,0,0,0,95,95,95,95,95,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,16,93,61,0,0,0,0,0,0,16,93,61,
95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,16,52,80,76,76,87,66,67,70,76,76,83,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,95,95,95,95,95,95,0,0,0,4,4,4,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,
95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,16,93,61,0,0,95,95,95,95,95,95,95,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,4,4,0,
95,95,0,0,0,0,0,64,64,64,64,64,64,64,64,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,64,0,0,0,0,0,16,64,93,64,16,64,64,61,64,16,64,64,61,64,93,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,4,4,4,0,0,
95,95,0,0,0,0,16,34,77,71,73,70,74,78,83,61,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,16,80,61,0,0,0,0,0,0,93,64,93,0,0,93,63,93,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,16,93,61,0,0,
95,95,95,0,0,0,93,62,48,60,64,64,62,48,60,93,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,16,14,61,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,16,93,61,0,0,0,0,4,4,4,0,0,0,0,0,
95,95,95,0,0,0,93,64,64,93,63,63,93,64,64,93,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,4,4,4,0,0,0,16,93,61,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,64,0,0,0,0,16,80,61,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,16,14,61,0,0,0,93,64,93,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,95,
95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,93,61,0,0,0,95,95,
95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,
0,0,4,4,4,4,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,16,93,61,0,0,0,0,0,4,4,4,0,0,0,0,16,0,0,0,0,61,0,
0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,16,93,61,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,0,4,4,4,4,4,0,0,16,61,0,0,0,0,0,61,
0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,41,74,78,74,79,67,75,80,83,72,0,61,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,4,4,4,4,4,0,4,4,4,0,0,16,0,0,61,0,0,0,0,0,
0,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,16,93,61,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,64,0,0,4,4,4,0,0,16,93,61,0,16,0,0,0,0,61,0,0,0,16,
0,0,0,93,93,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,93,0,62,48,60,0,0,64,64,0,0,62,48,60,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,64,0,4,4,4,4,4,0,0,0,64,0,16,93,61,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,16,80,61,0,16,93,61,0,0,0,0,0,16,0,0,0,0,0,0,61,0,16,0,
0,0,0,4,0,0,0,0,64,0,0,0,0,4,4,4,4,4,0,0,93,64,64,64,64,64,93,63,63,93,64,64,64,64,64,93,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,16,14,61,0,0,4,4,4,0,0,0,16,80,61,0,4,4,4,0,0,0,16,80,61,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,93,64,93,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,16,0,0,
0,0,4,4,4,0,0,16,80,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,93,64,93,0,16,93,61,0,0,0,93,64,93,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,16,0,0,0,
0,4,4,4,4,4,0,93,64,93,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,
0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,4,4,4,0,0,0,0,
0,0,16,14,61,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,16,93,61,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,16,93,61,0,4,4,4,
0,0,0,0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,16,80,61,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,
0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,16,14,61,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,16,93,61,0,0,0,0,0,4,4,4,0,0,0,0,95,95,95,95,95,95,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,
0,0,0,4,4,4,16,14,61,0,0,0,16,14,61,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,16,14,61,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,11,0,0,4,4,4,4,4,0,0,0,95,95,95,95,95,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,16,93,61,0,0,0,0,0,0,16,93,61,
0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,16,52,80,76,76,87,66,67,70,76,76,83,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,95,95,95,95,95,95,0,0,0,4,4,4,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,
0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,64,64,64,64,64,64,64,64,64,64,64,64,64,61,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,16,93,61,0,0,95,95,95,95,95,95,95,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,4,4,0,
0,0,0,16,14,61,0,64,64,64,64,64,64,64,64,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,64,0,0,0,0,0,16,64,93,64,16,64,64,61,64,16,64,64,61,64,93,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,4,4,4,0,95,
0,0,0,0,0,0,16,34,77,71,73,70,74,78,83,61,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,16,80,61,0,0,0,0,0,0,93,64,93,0,0,93,63,93,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,0,0,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,16,93,61,0,95,
0,0,4,4,4,0,93,62,48,60,64,64,62,48,60,93,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,4,4,4,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,16,14,61,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,16,93,61,0,0,0,0,4,4,4,0,0,0,0,95,
0,4,4,4,4,4,93,64,64,93,63,63,93,64,64,93,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,4,4,4,0,0,0,16,93,61,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,64,0,0,0,0,16,80,61,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,95,
0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,16,14,61,0,0,0,93,64,93,0,0,0,0,0,0,0,0,4,4,4,0,0,0,95,95,
0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,93,61,0,0,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95
</data>
</layer>

View File

@ -19,7 +19,6 @@ def convert_to_string(filename, doors, entities):
doors_coords = []
entities_data = []
entities_count = 0
output = r""
for line_index, line in enumerate(data):
for char_index, char_id in enumerate(line):
@ -28,8 +27,8 @@ def convert_to_string(filename, doors, entities):
output += char_list[char_id]
else:
output += " "
entities_data.append(f"({entities_count}, '{char_list[char_id]}', {char_index}, {line_index}, 'stand_by'),")
entities_count += 1
entities_data.append(f"[None, '{char_list[char_id]}', , {char_index}, {line_index}, 'stand_by'],")
if char_list[char_id] in doors:
doors_coords.append(f"\t({char_index}, {line_index}, , 0, 0),")
@ -37,17 +36,17 @@ def convert_to_string(filename, doors, entities):
output += "\n"
doors_coords = "\n".join(doors_coords)
entities_data = "[\n\t" + "\n\t".join(entities_data) + "\n]"
entities_data = "(\n\t" + "\n\t".join(entities_data) + "\n)"
with open(f"{output_filename}.py", "w") as file:
file.write(f"{output_filename} = (r\"\"\"\n{output[:-1]}\"\"\",\n{entities_data},\n\n{doors_coords}\n)")
file.write(f"{output_filename} = (r\"\"\"\n{output[:-1]}\"\"\",\n{doors_coords}\n)\n\n{output_filename}_entities = {entities_data}")
filename, doors, misc = argv[1], "", ""
filename, doors, entities = argv[1], "", ""
for arg in argv[2:]:
if arg.startswith("door"):
doors = arg.split("=", 1)[1]
elif arg.startswith("entities"):
entities = arg.split("=", 1)[1]
convert_to_string(filename, doors, entities)
convert_to_string(filename, doors, entities)

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="100" height="100" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="100" height="100" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" source="Asci_tileset.tsx"/>
<layer id="1" name="Calque de Tuiles 1" width="100" height="100">
<data encoding="csv">
@ -9,7 +9,7 @@
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,95,95,95,95,95,95,0,0,0,0,95,95,95,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,95,95,95,0,95,95,0,0,0,95,95,95,95,95,95,0,0,0,0,95,95,95,0,64,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,95,95,0,95,95,95,0,0,0,0,95,95,95,0,0,0,0,95,95,95,0,16,14,61,0,95,95,95,95,95,95,95,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,0,0,95,95,95,95,95,0,95,95,95,0,0,0,95,95,95,95,0,0,0,0,95,95,95,0,93,64,93,0,95,95,95,95,95,95,95,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,0,0,95,95,95,95,95,0,95,95,95,0,0,0,95,95,95,95,0,0,0,0,95,95,95,0,93,63,93,0,95,95,95,95,95,95,95,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,0,0,95,95,95,95,95,95,0,95,95,0,0,0,95,95,95,95,0,0,0,95,95,0,0,0,0,0,0,95,95,0,0,95,95,95,95,95,0,0,0,0,95,0,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,95,95,95,95,95,0,0,95,95,95,0,95,0,0,95,95,95,95,95,0,0,95,95,0,0,0,95,95,95,0,0,0,0,95,95,95,0,0,0,95,95,95,95,0,0,0,95,95,95,95,95,0,0,0,95,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,32,0,95,95,95,95,95,95,95,0,0,0,0,95,0,95,95,0,0,95,95,95,95,95,0,0,0,0,0,0,95,95,95,0,0,0,0,95,95,0,0,0,0,95,95,95,95,0,0,0,0,95,95,95,0,0,0,0,95,0,0,0,95,95,95,95,95,95,95,95,95,
@ -28,11 +28,11 @@
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,16,61,0,0,0,0,4,4,4,4,0,4,4,93,93,0,0,0,0,0,0,0,4,4,0,4,4,4,4,0,4,4,93,93,0,4,4,4,4,0,0,0,4,4,0,4,4,4,4,0,0,0,4,4,0,0,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,4,4,0,4,4,4,4,0,0,0,0,0,0,0,0,93,93,0,0,4,4,0,4,4,4,4,0,0,4,4,4,4,0,4,4,93,93,0,4,4,4,4,0,4,4,93,93,0,0,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,95,95,95,0,0,0,0,0,16,0,0,0,0,61,0,0,0,93,93,0,4,4,4,4,0,0,0,0,32,0,0,0,0,0,0,0,93,93,0,4,4,4,4,0,0,0,4,4,0,4,4,4,4,0,0,0,4,4,0,4,4,4,4,0,0,0,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,4,0,93,93,0,4,4,4,4,0,0,0,93,93,0,4,4,4,4,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,95,95,95,95,0,0,0,0,0,0,0,0,0,0,16,61,0,93,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,93,4,4,4,4,0,0,0,0,4,4,0,4,4,0,0,0,0,0,4,4,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,95,95,95,0,0,0,0,0,0,0,64,16,0,0,61,0,0,0,0,16,61,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,4,4,0,0,0,0,93,93,4,4,4,4,0,0,0,0,93,93,0,0,4,4,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,95,0,0,0,0,16,0,0,0,0,0,61,0,0,16,0,0,61,0,0,0,0,0,0,0,0,4,4,4,4,0,0,0,4,4,0,0,4,4,0,0,0,4,4,4,4,0,0,0,0,0,0,0,4,4,4,4,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,95,95,95,0,0,0,0,16,0,0,0,0,16,61,0,0,16,0,0,0,0,61,0,0,8,0,15,0,0,4,4,4,4,0,4,4,93,93,0,4,4,4,4,0,0,0,4,4,0,0,0,4,4,0,0,0,4,4,4,4,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,93,93,0,4,4,4,4,0,0,0,93,93,0,4,4,4,4,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,95,95,95,95,0,0,0,0,0,0,0,0,0,0,16,61,0,93,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,93,0,0,0,0,0,0,0,0,4,4,0,4,4,0,0,0,0,0,4,4,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,95,95,95,0,0,0,0,0,0,0,64,16,0,0,61,0,0,0,0,16,61,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,93,93,4,4,4,4,0,0,0,0,93,93,0,0,4,4,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,95,0,0,0,0,16,0,0,0,0,0,61,0,0,16,0,0,61,0,0,0,0,0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,4,4,0,0,0,4,4,4,4,0,0,0,0,0,0,0,4,4,4,4,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,95,95,95,0,0,0,0,16,0,0,0,0,16,61,0,0,16,0,0,0,0,61,0,0,8,0,15,0,0,4,4,4,4,0,4,4,0,0,0,4,4,4,4,0,0,0,4,4,0,0,0,4,4,0,0,0,4,4,4,4,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,4,4,4,0,0,4,4,4,4,0,4,4,93,93,0,0,4,4,4,4,0,0,0,4,4,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,0,0,0,16,61,0,0,0,16,61,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,15,0,0,0,0,0,93,93,0,4,4,4,4,0,0,0,4,4,0,4,4,4,4,0,0,0,4,4,4,4,0,4,4,93,93,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,16,0,0,61,0,16,0,0,61,0,0,0,0,16,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,93,93,0,4,4,4,4,0,0,0,0,4,4,0,4,4,4,4,0,95,95,95,95,95,95,95,95,95,
@ -54,31 +54,31 @@
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,4,4,0,0,0,93,64,0,0,80,0,80,0,61,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,95,95,95,95,0,0,0,0,0,0,0,4,4,4,0,0,11,0,93,63,93,64,64,64,64,64,93,0,0,16,14,61,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,64,64,64,0,0,0,0,0,4,4,4,0,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,0,62,48,60,61,0,0,0,0,16,14,61,0,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,64,64,0,0,0,13,0,0,0,0,4,4,4,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,4,4,4,4,4,0,0,0,16,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,93,64,64,93,0,0,13,0,0,0,0,4,4,4,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,93,63,64,93,0,0,13,0,0,0,0,4,4,4,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,16,14,61,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,15,0,0,13,0,0,0,13,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,15,0,0,13,0,0,0,13,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,0,0,0,0,16,14,61,0,0,0,0,0,0,4,4,4,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,15,0,0,0,0,0,0,13,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,0,0,93,64,93,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,13,15,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,60,62,61,0,0,0,0,0,0,16,0,61,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,0,11,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,0,0,93,63,93,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,13,15,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,60,62,61,0,0,0,0,0,0,16,0,61,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,0,0,11,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,64,93,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,8,0,15,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,31,61,0,0,0,0,0,0,64,0,0,0,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,93,64,64,93,0,0,0,0,0,16,80,61,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,16,29,31,61,0,0,0,0,0,8,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,93,64,64,93,0,0,0,0,0,0,0,0,0,16,0,0,64,61,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,15,0,0,93,64,93,63,93,0,0,0,0,0,15,0,0,0,0,0,64,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,93,64,63,93,0,0,0,0,0,16,80,61,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,16,29,31,61,0,0,0,0,0,8,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,93,63,64,93,0,0,0,0,0,0,0,0,0,16,0,0,64,61,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,15,0,0,93,64,93,63,93,0,0,0,0,0,15,0,0,0,0,0,64,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,61,64,64,64,64,16,80,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,8,0,0,0,0,8,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,93,30,30,93,30,30,93,0,80,0,0,0,0,80,0,93,30,30,93,30,30,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,16,60,62,61,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,93,0,0,0,64,64,0,0,0,93,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,31,61,0,0,0,0,0,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,93,64,64,93,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,93,64,64,93,63,63,93,64,64,93,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,93,0,0,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,93,63,64,93,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,93,64,64,93,63,63,93,64,64,93,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,63,93,0,0,0,0,0,0,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,15,0,0,0,16,62,48,60,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,11,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,15,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,15,0,0,0,0,93,64,64,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,8,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,93,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,63,93,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,
@ -93,10 +93,10 @@
95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,93,14,14,93,14,14,93,14,14,93,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,4,4,4,0,0,0,0,64,0,0,0,0,0,0,0,16,93,61,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,16,93,61,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,64,0,0,0,0,0,16,93,61,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,64,0,0,0,0,0,16,93,61,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,61,0,0,0,64,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,16,0,61,0,0,0,0,0,4,4,4,0,0,0,0,16,93,61,0,0,4,4,4,4,4,0,0,0,16,93,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,16,0,61,0,0,0,0,0,4,4,4,0,0,0,0,16,93,61,0,0,4,4,4,4,4,0,0,0,16,93,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="120" height="75" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="120" height="75" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" source="Asci_tileset.tsx"/>
<layer id="1" name="Calque de Tuiles 1" width="120" height="75">
<data encoding="csv">
@ -17,16 +17,16 @@
4,4,4,4,0,0,4,4,4,0,4,4,4,4,4,0,4,4,4,0,0,0,93,12,93,0,0,0,0,0,93,64,93,0,0,0,0,0,0,4,4,4,4,4,0,0,16,64,61,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,
4,4,4,4,0,0,16,64,61,0,4,4,4,4,4,0,16,64,61,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,4,4,4,0,4,4,4,4,
4,4,4,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,16,64,61,0,0,4,4,4,
16,64,61,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,16,64,61,
0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,
16,64,61,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,16,0,0,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,16,64,61,
0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,
0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,8,96,8,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,
0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,96,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,61,0,0,0,65,96,8,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,4,4,4,4,4,0,
0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,64,0,0,0,0,0,15,8,96,13,65,0,0,0,0,0,0,0,0,0,16,9,10,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,1,96,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,4,4,4,0,0,
0,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,96,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,64,61,0,0,0,65,96,8,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,4,4,4,4,4,0,
0,0,0,4,4,4,0,0,0,4,4,4,0,0,0,0,0,64,0,0,0,0,0,15,8,96,13,65,0,0,0,0,0,0,0,0,0,16,9,10,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,63,93,0,0,0,0,1,96,0,0,0,16,14,61,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,4,4,4,0,0,
0,0,0,16,64,61,0,0,0,16,64,61,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,15,65,0,0,0,0,0,0,0,0,93,0,0,93,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,16,64,61,0,0,
4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,93,64,0,0,0,9,10,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,65,8,1,65,1,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,
4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,93,63,93,64,64,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,13,96,1,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,
4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,65,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,0,1,13,96,13,15,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,4,4,4,0,0,0,
4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,65,1,96,1,65,96,96,96,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,
4,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,65,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,16,64,0,0,61,0,0,0,0,0,0,0,1,13,96,13,15,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,4,4,4,0,0,0,
4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,65,1,96,1,65,96,96,96,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,63,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,
16,64,61,0,0,0,16,64,61,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,15,65,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,4,4,4,4,4,0,0,
0,0,0,4,4,4,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,13,0,0,96,1,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,4,4,4,0,0,0,
0,0,4,4,4,4,4,0,0,0,0,0,93,64,93,0,0,0,0,0,0,64,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,1,13,1,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,16,64,61,0,0,0,
@ -34,8 +34,8 @@
0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,13,96,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,93,64,64,64,64,16,48,0,0,48,61,64,64,64,64,93,0,0,93,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,
0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,93,60,62,93,0,60,62,0,93,0,0,0,0,93,0,60,62,0,93,60,62,93,0,0,0,0,0,13,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,4,4,4,4,
0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,0,0,65,65,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,93,0,0,0,0,93,0,64,64,0,93,0,0,0,0,93,0,0,93,0,0,0,0,1,13,8,15,0,0,0,0,0,11,93,64,93,0,0,0,0,0,0,0,0,4,4,4,0,4,4,4,0,0,4,4,4,4,
0,0,0,0,4,4,4,4,4,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,61,0,0,0,65,0,0,0,0,0,0,0,0,1,15,0,0,0,0,0,0,0,0,11,0,0,93,64,64,93,64,64,64,64,93,16,63,63,61,93,64,64,64,64,93,64,64,93,0,0,0,0,13,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,16,64,61,0,0,0,4,4,4,
4,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,96,8,0,0,0,0,0,0,0,0,0,0,1,8,13,13,1,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,32,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,16,64,61,
0,0,0,0,4,4,4,4,4,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,0,0,61,0,0,0,65,0,0,0,0,0,0,0,0,1,15,0,0,0,0,0,0,0,0,11,0,0,93,64,64,93,64,64,64,64,93,16,63,63,61,93,64,64,64,64,93,64,64,93,0,0,0,0,13,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,16,64,61,0,0,0,4,4,4,
4,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,93,63,93,64,93,0,0,96,8,0,0,0,0,0,0,0,0,0,0,1,8,13,13,1,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,32,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,16,64,61,
4,4,0,0,0,4,4,4,0,4,4,4,4,4,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,8,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,8,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,
4,4,0,0,0,16,64,61,0,0,4,4,4,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,65,65,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,64,0,0,0,0,0,15,15,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,4,4,4,0,
4,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,9,80,10,0,0,8,13,8,13,13,0,0,0,0,0,9,80,10,0,0,0,0,0,65,65,65,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,
@ -44,25 +44,25 @@
4,4,4,4,4,0,4,4,4,4,4,0,0,0,93,12,93,0,0,0,0,0,0,65,96,13,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,96,8,8,1,15,96,65,1,1,65,0,0,65,1,0,0,0,0,0,0,0,0,0,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,16,64,61,0,
4,4,4,4,4,0,0,4,4,4,0,0,0,0,93,64,93,0,0,0,0,0,96,96,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,8,0,15,8,0,0,0,0,0,64,0,0,0,13,8,15,13,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,4,
0,4,4,4,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,93,12,93,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,80,10,0,0,0,0,0,0,15,0,0,0,0,0,9,80,10,0,0,0,0,0,1,1,0,0,96,15,65,15,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,
0,16,64,61,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,96,65,0,0,0,0,0,93,64,93,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,8,8,13,0,0,0,0,16,14,61,0,0,0,0,0,0,8,13,1,13,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,
0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,1,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,
0,16,64,61,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,96,65,0,0,0,0,0,93,64,93,0,0,0,0,16,0,0,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,61,0,0,0,0,0,8,8,13,0,0,0,0,16,14,61,0,0,0,0,0,0,8,13,1,13,0,0,0,0,0,16,64,0,0,61,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,
0,0,0,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,1,0,0,0,0,93,63,93,64,93,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,4,
0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,0,0,1,13,96,96,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,15,1,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,65,13,15,13,65,15,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,16,
0,4,4,4,0,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,96,1,15,65,15,65,1,13,1,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,9,80,10,0,0,0,0,0,96,8,0,0,0,0,0,9,80,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,4,4,4,0,
4,4,4,4,4,0,16,64,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,1,13,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,16,14,61,0,0,0,13,15,65,0,0,0,0,0,0,16,14,61,0,0,0,0,0,15,15,0,0,0,0,64,64,64,0,0,0,0,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,4,4,4,4,4,
4,4,4,4,4,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,65,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,8,15,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,15,0,0,16,0,0,0,61,0,0,0,65,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,4,4,4,4,4,
0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,64,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,15,1,0,0,0,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,65,0,93,64,64,64,93,0,0,0,65,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,4,4,4,0,
0,16,64,61,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,93,12,93,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,96,0,0,0,0,0,0,0,0,64,64,64,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,16,64,61,0,
0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,8,13,0,0,93,64,93,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,8,13,1,0,0,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,96,8,13,96,13,8,8,65,8,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,93,12,93,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
0,4,4,4,0,4,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,96,1,15,65,15,65,1,13,1,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,64,61,0,0,0,0,0,0,9,80,10,0,0,0,0,0,96,8,0,0,0,0,0,9,80,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,61,0,4,4,4,0,
4,4,4,4,4,0,16,64,61,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,1,13,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,63,93,0,0,0,0,0,0,16,14,61,0,0,0,13,15,65,0,0,0,0,0,0,16,14,61,0,0,0,0,0,15,15,0,0,0,0,64,64,64,0,0,0,0,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,4,4,4,4,4,
4,4,4,4,4,0,0,0,0,0,0,0,0,16,64,61,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,65,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,8,15,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,15,0,0,16,0,0,64,61,0,0,0,65,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,4,4,4,4,4,
0,4,4,4,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,64,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,15,1,0,0,0,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,65,0,93,64,93,63,93,0,0,0,65,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,4,4,4,0,
0,16,64,61,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,93,12,93,0,0,0,0,0,16,64,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,96,0,0,0,0,0,0,0,0,64,64,64,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,16,64,61,0,
0,0,0,4,4,4,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,8,13,0,0,93,64,93,0,0,0,0,0,93,63,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,8,13,1,0,0,0,0,0,0,0,16,64,0,0,61,0,0,0,0,0,96,8,13,96,13,8,8,65,8,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
0,0,4,4,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,93,12,93,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,93,63,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
0,0,4,4,4,4,4,0,0,16,64,61,0,0,0,0,0,0,64,64,64,0,0,0,0,0,16,0,0,0,61,0,93,64,93,0,0,0,0,0,8,15,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,
0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,61,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,13,15,1,65,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,65,8,13,1,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,13,0,0,0,0,0,0,0,4,4,4,0,16,64,61,4,4,4,0,0,
4,4,0,16,64,61,0,0,4,4,4,0,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,15,96,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,65,1,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,93,64,93,0,0,0,15,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,
0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,16,64,0,0,61,0,0,0,0,93,64,64,64,93,0,0,0,0,0,0,0,0,0,0,0,13,15,1,65,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,65,8,13,1,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,13,0,0,0,0,0,0,0,4,4,4,0,16,64,61,4,4,4,0,0,
4,4,0,16,64,61,0,0,4,4,4,0,0,0,0,0,0,93,63,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,15,96,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,65,1,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,93,64,93,0,0,0,15,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,
4,4,4,0,0,0,0,4,4,4,4,4,0,13,1,0,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,1,1,0,0,0,64,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,15,96,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,
4,4,4,0,0,0,0,4,4,4,4,4,0,0,15,13,0,0,0,0,0,0,16,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,8,0,0,93,12,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,15,96,96,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,
4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,15,13,0,0,0,0,0,93,64,64,64,93,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,65,13,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,96,96,0,0,0,0,0,0,16,64,61,0,0,0,0,16,64,61,0,0,
4,4,4,0,0,0,0,4,4,4,4,4,0,0,15,13,0,0,0,0,0,0,16,0,0,64,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,8,0,0,93,12,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,15,96,96,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,4,4,4,0,0,
4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,15,13,0,0,0,0,0,93,64,93,63,93,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,65,13,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,96,96,0,0,0,0,0,0,16,64,61,0,0,0,0,16,64,61,0,0,
64,61,0,0,0,0,0,0,16,64,61,0,4,4,4,0,8,13,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,8,15,1,65,65,13,15,15,8,0,96,8,15,65,15,65,65,65,0,0,0,0,0,0,0,0,0,0,0,13,65,15,15,65,8,8,0,1,96,13,13,96,0,0,0,0,0,4,4,4,0,0,0,0,0,0,
0,0,4,4,4,0,0,0,0,0,0,4,4,4,4,4,0,96,1,13,96,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,16,0,0,0,61,0,0,0,0,65,15,65,65,1,0,0,1,8,1,13,15,15,8,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,8,65,1,15,8,96,65,1,96,13,0,0,0,0,0,0,0,96,1,1,15,0,0,0,0,0,0,4,4,4,4,4,0,4,4,4,0,
0,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,15,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,64,64,93,0,0,0,96,0,0,0,0,0,1,8,96,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
0,0,4,4,4,0,0,0,0,0,0,4,4,4,4,4,0,96,1,13,96,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,16,0,0,64,61,0,0,0,0,65,15,65,65,1,0,0,1,8,1,13,15,15,8,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,8,65,1,15,8,96,65,1,96,13,0,0,0,0,0,0,0,96,1,1,15,0,0,0,0,0,0,4,4,4,4,4,0,4,4,4,0,
0,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,0,0,0,0,15,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,63,93,0,0,0,96,0,0,0,0,0,1,8,96,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
0,4,4,4,4,4,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,8,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,13,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,0,4,4,4,4,4,
0,0,4,4,4,0,4,4,4,0,0,0,16,64,61,0,0,0,0,0,0,0,0,0,13,1,13,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,65,65,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,16,64,61,0,0,4,4,4,0,
0,0,16,64,61,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,8,15,96,8,65,65,13,96,13,15,15,1,65,65,13,0,0,0,0,0,0,93,12,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,4,4,4,4,4,0,0,0,4,4,4,0,0,0,0,0,0,0,16,64,61,0,

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="75" height="50" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="75" height="50" tilewidth="42" tileheight="85" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" source="Asci_tileset.tsx"/>
<layer id="1" name="Calque de Tuiles 1" width="75" height="50">
<data encoding="csv">
@ -15,10 +15,10 @@
0,0,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,61,64,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,
0,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,16,61,0,16,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,93,64,0,80,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,61,0,16,0,0,0,0,61,0,
0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,16,29,31,61,0,0,0,0,0,93,63,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,
16,0,0,0,0,0,0,61,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,16,80,61,0,11,0,0,93,64,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,
0,0,0,0,0,0,0,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,0,0,0,0,0,93,64,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,16,0,0,0,0,0,0,61,0,16,0,0,61,
16,0,0,0,0,0,0,61,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,16,80,61,0,11,0,0,93,64,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,
0,0,0,0,0,0,0,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,0,0,0,0,0,93,63,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,16,0,0,0,0,0,0,61,0,16,0,0,61,
16,61,0,0,0,0,0,16,0,0,0,0,61,0,16,61,0,0,0,0,0,0,4,4,4,0,0,0,15,0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0,4,4,4,4,4,4,0,0,0,0,0,0,16,80,61,0,0,0,0,16,61,0,0,0,0,16,0,0,0,0,
0,0,61,0,0,0,16,0,0,0,0,0,0,16,0,0,61,0,0,0,0,4,4,4,4,4,0,0,1,0,0,0,4,4,4,0,0,4,4,4,4,4,4,0,0,4,4,4,4,4,4,0,0,0,0,0,0,93,64,93,0,0,0,16,0,0,61,0,0,16,0,0,0,0,0,
0,0,61,0,0,0,16,0,0,0,0,0,0,16,0,0,61,0,0,0,0,4,4,4,4,4,0,0,1,0,0,0,4,4,4,0,0,4,4,4,4,4,4,0,0,4,4,4,4,4,4,0,0,0,0,0,0,93,63,93,0,0,0,16,0,0,61,0,0,16,0,0,0,0,0,
0,0,0,61,0,0,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,4,4,4,0,0,0,8,15,0,4,4,4,4,4,0,4,4,4,4,4,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,0,
0,0,0,0,61,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,0,0,16,93,61,0,0,0,0,65,96,0,4,4,4,0,0,4,4,4,4,0,0,0,0,0,0,4,4,4,4,0,0,0,4,4,4,0,0,0,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,
0,0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,1,0,16,93,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,16,61,0,0,0,0,0,0,16,0,0,0,0,61,
@ -29,11 +29,11 @@
0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,4,4,4,0,0,0,0,0,65,65,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,
16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,16,0,0,0,0,61,0,0,4,4,4,4,4,0,0,0,64,0,0,96,0,0,0,0,0,64,64,0,0,0,1,0,0,0,0,0,0,0,4,4,4,0,0,0,16,61,0,16,0,0,0,0,0,0,61,0,16,0,
0,0,61,0,16,0,0,0,0,0,0,61,0,16,61,0,16,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,16,0,61,0,8,0,0,0,0,16,29,31,61,0,0,96,65,96,0,0,0,0,0,16,93,61,0,0,16,0,0,61,0,0,0,0,0,0,0,0,16,0,0,
0,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,93,64,93,0,15,0,0,0,0,93,64,64,93,0,0,0,0,1,15,8,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,16,0,0,0,
0,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,0,0,16,93,61,0,0,0,93,63,93,0,15,0,0,0,0,93,63,64,93,0,0,0,0,1,15,8,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,16,0,0,0,
0,0,0,0,61,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,96,65,65,8,96,0,0,0,0,0,0,0,0,4,4,4,0,0,0,13,0,0,64,0,0,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,0,0,0,
0,0,0,0,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,16,61,0,0,0,0,0,0,0,0,0,0,1,0,0,64,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,8,13,0,16,14,61,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,
0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,32,0,0,0,0,15,0,16,0,61,0,0,0,0,0,0,0,0,0,4,4,4,0,13,1,0,0,93,64,93,0,0,0,0,0,0,0,0,16,61,0,0,0,0,0,0,61,0,16,
0,0,0,16,0,0,0,0,0,0,61,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,1,0,93,64,93,0,0,0,0,0,0,0,0,0,16,93,61,0,13,1,0,11,96,65,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,16,0,
0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,32,0,0,0,0,15,0,16,0,61,0,0,0,0,0,0,0,0,0,4,4,4,0,13,1,0,0,93,63,93,0,0,0,0,0,0,0,0,16,61,0,0,0,0,0,0,61,0,16,
0,0,0,16,0,0,0,0,0,0,61,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,1,0,93,63,93,0,0,0,0,0,0,0,0,0,16,93,61,0,13,1,0,11,96,65,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,16,0,
0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,0,0,0,0,0,0,13,15,96,96,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,96,8,13,65,96,8,8,96,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,0,
0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,1,96,0,64,16,0,61,0,0,0,4,4,4,0,0,0,0,64,64,64,64,64,0,0,8,0,0,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,
0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,61,0,16,61,0,0,0,0,0,4,4,4,4,4,0,0,96,0,0,16,80,0,0,93,0,0,4,4,4,4,4,0,0,16,64,64,64,64,64,61,0,65,8,0,0,0,0,0,16,61,0,0,0,16,0,0,0,0,61,
@ -45,7 +45,7 @@
0,0,0,0,0,0,16,61,0,16,0,0,0,0,0,0,61,0,16,61,0,0,0,0,0,0,0,0,0,96,1,1,8,0,0,0,4,4,4,0,0,0,0,0,0,11,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,16,61,0,0,0,0,0,0,61,
0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,0,0,0,65,96,0,0,16,93,61,0,0,64,0,0,0,0,0,0,0,0,4,4,4,0,0,0,64,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,
0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,0,0,0,0,0,1,15,15,0,0,0,0,16,80,61,0,0,0,0,0,1,15,16,93,61,0,0,16,80,61,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,
0,0,0,16,0,0,0,0,0,0,61,0,16,61,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,0,0,0,0,0,0,15,8,8,0,0,93,64,93,0,0,0,13,8,65,8,96,8,13,65,0,93,64,93,0,0,16,61,0,16,0,0,0,0,0,0,61,0,16,0,0,
0,0,0,16,0,0,0,0,0,0,61,0,16,61,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,0,0,0,0,0,0,15,8,8,0,0,93,63,93,0,0,0,13,8,65,8,96,8,13,65,0,93,63,93,0,0,16,61,0,16,0,0,0,0,0,0,61,0,16,0,0,
0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,0,0,0,13,15,13,96,1,15,13,65,13,0,0,16,61,0,0,8,13,1,13,65,0,16,0,0,61,0,0,0,0,0,0,0,0,16,0,0,0,
0,0,0,0,0,16,61,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,16,0,0,0,0,0,0,61,0,16,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,16,61,0,16,0,0,0,0,
0,0,0,0,16,0,0,61,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,0,0,0,0,0,0,0,16,0,0,61,0,0,0,16,61,0,0,0,0,0,0,0,0,16,0,0,0,0,61,0,16,61,0,16,0,0,0,0,0,0,61,0,16,0,0,61,0,0,0,0,0,