End of the scenario

This commit is contained in:
Shadow15510 2022-01-11 18:04:12 +01:00
parent ecd901266d
commit db9a6c0d99
4 changed files with 407 additions and 243 deletions

View File

@ -1,4 +1,4 @@
# Asci (version 1.5.4)
# Asci (version 1.6.0)
class Screen:
def __init__(self, screen_width=21, screen_height=6):
@ -137,6 +137,10 @@ class Asci:
# Get the event
event = self._game_events_mapping[cell_content](data_copy, self.stat)
if type(event) == tuple:
quest, event = event
else:
quest = "main"
# data modification
self.data[0] = data_copy[0]
@ -149,10 +153,10 @@ class Asci:
if data_copy[3] != y: self.data[3] = data_copy[3] - 3
if not event: return
event = read_event(self.data[0], event)
event = read_event(self.data, event, quest)
# XP and stat modification
self.data[0] += event.xp_earned
self.data[0][quest] += event.xp
for index, value in event.stat:
self.stat[index] += value
@ -160,7 +164,7 @@ class Asci:
if event.text:
answer_selected = convert(self.screen.display_text(event.text), True)
if event.answer and (0 < answer_selected <= event.answer):
self.data[0] += answer_selected
self.data[0][quest] += answer_selected
self._interaction(direction, cell_content)
def _get_map(self, direction):
@ -181,19 +185,19 @@ class Asci:
if not stat or type(stat) != list: self.stat = [100]
else: self.stat = stat
if not data: self.data = [0, 0, 0, 0]
if not data: self.data = [{"main": 0}, 0, 0, 0]
else: self.data = [data[0], data[1], data[2] - 10, data[3] - 3]
self.legend.append(door)
self.legend.append(walkable)
# Screen and map configuration
self.screen.set_world(self.maps[data[1]].map_data)
self.screen.set_world(self.maps[self.data[1]].map_data)
self.map_width, self.map_height = self.screen.get_map_size()
key = key_buffer = 0
while key != exit_key and self.stat[0] > 0 and self.data[0] < end_game:
while key != exit_key and self.stat[0] > 0 and self.data[0]["main"] < end_game:
self.screen.set_data(self.data[-2:])
self.screen.set_cell(10, 3, player)
@ -214,8 +218,8 @@ class Asci:
class Event:
def __init__(self, xp_earned, text, answer=0, *stat):
self.xp_earned = xp_earned
def __init__(self, xp, text, answer=0, *stat):
self.xp = xp
self.text = text
self.answer = answer
self.stat = stat
@ -258,9 +262,12 @@ def text_formater(string, screen_width=21, screen_height=6):
return paragraph_formater(lines, screen_height).split("\n\n")
def read_event(xp, event):
def read_event(data, event, quest):
if not quest in data[0]:
data[0][quest] = 0
if type(event) == dict:
if xp in event: event = event[xp]
if data[0][quest] in event: event = event[data[0][quest]]
else: event = event["base"]
if type(event) != list:
@ -269,9 +276,19 @@ def read_event(xp, event):
return Event(*event)
def print_text(text):
for i in text_formater(text):
if not i: continue
def print_text(text, min_value=0, max_value=0, default_value=0):
paragraphs = [i for i in text_formater(text) if i]
nb = len(paragraphs)
for index in range(nb):
print("\n" * 7)
print(i)
input()
print(paragraphs[index])
if index + 1 == nb and max_value:
result = input(">")
try: result = int(result)
except: result = default_value
if not (min_value <= result <= max_value): result = default_value
return result
else: input()

View File

@ -1,4 +1,4 @@
from asci_lib import Asci, print_text
from asci import Asci, print_text
from random import randint
from math import floor, ceil
@ -63,10 +63,7 @@ def npc(data, stat):
event = npc_data[data[1]](data, stat)
if not event:
print("\nChoissez une action :\n1. Attaquer\n2. Voler\n3. Parler\n4. Ne rien faire")
sel_choice = input(">")
try: sel_choice = int(sel_choice)
except: sel_choice = 3
sel_choice = print_text("\nChoissez une action :\n1. Attaquer\n2. Voler\n3. Parler\n4. Ne rien faire", 1, 4, 3)
if sel_choice == 1:
opponent_stat = [randint(5, stat[2][i] + 5) for i in range(4)]
@ -87,14 +84,16 @@ def npc(data, stat):
elif sel_choice == 4:
return None
elif type(event) == tuple:
return launch_fight(data, stat, event)
elif type(event) == tuple and len(event) > 2:
if len(event) == 4: quest = "main"
else: event, quest = event[:-1], event[-1]
return launch_fight(data, stat, event, quest)
else:
return event
def launch_fight(data, stat, event):
def launch_fight(data, stat, event, quest="main"):
issue = fight(stat, event[0], event[1])
if issue == 0:
@ -102,7 +101,7 @@ def launch_fight(data, stat, event):
if sum(stat[2][:-1]) >= 200: return [event[3], "Vous avez gagne le combat. [+{}PO]".format(event[2])]
print_text("Vous avez gagne le combat. [+{}PO]".format(event[2]))
data[0] += event[3]
data[0][quest] += event[3]
sel_choice = 0
while not sel_choice:
print("<o> Amelioration <o>")
@ -412,7 +411,9 @@ def quick_save(data, stat):
data_copy = data[:]
data_copy[2] += 10
data_copy[3] += 3
print("idk({0}, {1})".format(stat[:-1], data_copy))
stat_copy = stat[:-1]
print("\"{}\"".format(encode_save(data_copy, stat_copy)))
input()
@ -421,11 +422,12 @@ keys = {4: display_stat, 7: spell, 8: misc_stat, 6: inventory, 9: sleep, "s": qu
# Main function
def idk(stat=None, data=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ête en cours]
if not stat:
name = ""
def idk(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:
name = input("Entrez votre nom :\n>")
while len(name) == 0 or len(name) > 13:
print("Erreur : nom invalide.")
name = input("Entrez votre nom :\n>")
player_class = 0
@ -435,20 +437,20 @@ def idk(stat=None, data=None):
if player_class < 0 or player_class > 5: player_class = 0
if player_class == 1:
stat = [5, 5, 10, 5, 5]
stat = [6, 6, 10, 6, 6]
elif player_class == 2:
stat = [5, 10, 5, 5, 5]
stat = [6, 10, 6, 6, 6]
elif player_class == 3:
stat = [5, 5, 5, 10, 5]
stat = [6, 6, 6, 10, 6]
elif player_class == 4:
stat = [5, 5, 5, 5, 20]
stat = [6, 6, 6, 6, 20]
elif player_class == 5:
stat = [10, 5, 5, 5, 5]
stat = [10, 6, 6, 6, 6]
stat = [100, 10, stat, [0, 0], 360, name, player_class - 1, [], 0, -1]
stat = [100, 10, stat, [0, 0], 360, name, player_class - 1, [], 1, -1]
if player_class == 4:
stat[7].append((1, 1))
data = [0, 3, 44, 66]
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.")
print_text("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.".format(name))
@ -456,31 +458,17 @@ def idk(stat=None, data=None):
print_text("Mais Odin avait d'autres plan pour {0} qu'une retraite parmi les meilleurs guerriers, et il le renvoya dans le vaste monde avec cet ultimatum : si il trouve la voie jusqu'a Asgard et le Valaskjalf, Odin conscent a le garder a son service, sinon il sera condamne a errer dans le monde sans jamais trouver le repos.".format(name))
else:
stat.append(-1)
# Money check
if stat[1] < 0: stat[1] = 0
if stat[1] > 100000: stat[1] = 100000
# Stat check
for i in range(len(stat[2])):
if stat[2][i] > 50: stat[2][i] = 50
if stat[2][i] < 0: stat[2][i] = 0
# Player's class check
if not (0 <= stat[6] <= 5):
raise ValueError("classe du joueur inconnue")
if len(stat[5]) > 13:
raise ValueError("nom du joueur invalide")
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")
if stat[9] != -1: data[0]["main"] -= stat[9]
if data[0] == 102:
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({0}, {1})".format(stat[:-1], data))
print("idk(\"{}\")".format(encode_save(data, stat[:-1])))
# Misc functions
@ -503,3 +491,79 @@ def stat_test(stat, test_id):
score = (80 + randint(-20, 20)) * stat[test_id] / 50
return randint(1, 100) <= score, floor(score)
def encode_save(data, stat):
xp = ["{0}-{1}".format(key, data[0][key]) for key in data[0] if key == "main" or data[0][key]]
data = "{0},{1},{2},{3}".format(data[1], data[2], data[3], ",".join(xp))
stat[5] = 0
if not stat[7]: stat[7] = 0
else: stat[7] = ",".join(["{0}-{1}".format(i[0], i[1]) for i in stat[7]])
save_code = []
for i in stat:
if type(i) == list:
for j in i: save_code.append(str(j))
else: save_code.append(str(i))
return ",".join(save_code) + ".{}".format(data)
def decode_save(save_code):
stat, data = save_code.split(".")
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]
if encoded_stat[7] == ["0"]:
encoded_stat[7] = []
else:
spells = []
for spell in encoded_stat[7]:
s_id, s_lv = spell.split("-")
spells.append((s_id, s_lv))
encoded_stat[7] = spells
stat = str_to_int(encoded_stat)
for i in range(len(stat[7])):
stat[7][i] = tuple(stat[7][i])
# Money check
if stat[1] < 0: stat[1] = 0
if stat[1] > 100000: stat[1] = 100000
# Stat check
for i in range(len(stat[2])):
if stat[2][i] > 50: stat[2][i] = 50
if stat[2][i] < 0: stat[2][i] = 0
# Player's class check
if not (0 <= stat[6] <= 5):
raise ValueError("classe du joueur inconnue")
# PLayer's name check
name = input("Entrez votre nom :\n>")
while len(name) == 0 or len(name) > 13:
print("Erreur : Nom invalide")
name = input("Entrez votre nom :\n>")
stat[5] = name
xp = {}
for quest in encoded_data[3:]:
q_id, q_xp = quest.split("-")
xp[q_id] = int(q_xp)
data = [xp, int(encoded_data[0]), int(encoded_data[1]), int(encoded_data[2])]
return stat, data
def str_to_int(data):
result = []
for i in data:
if isinstance(i, (list, tuple)):
result.append(str_to_int(i))
else:
result.append(int(i))
return result

View File

@ -1,6 +1,6 @@
def shop_interaction(data, stat, nb_choice, *events):
for choice in range(nb_choice):
if data[0] == stat[9] + choice + 1:
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
@ -33,37 +33,42 @@ def asgard_npc(data, stat):
# * : ( 16, 71)
# * : (138, 71)
if coords == (34, 7):
if stat[8] == 4:
if data[0] == 20: return [5, 3, 7, 5, 70], "Hargduf", 10, 1
elif data[0] == 21: return [0, "[VOUS REGARDEZ LE CADAVRE D'HARGDUF. UNE FLAQUE DE SANG NOIR S'ETEND DEJA SOUS LUI.]"]
if "theldis" in data[0]:
if data[0]["theldis"] == 4: return [5, 3, 7, 5, 70], "Hargduf", 10, 1, "theldis"
elif data[0]["theldis"] == 5: return [0, "[VOUS REGARDEZ LE CADAVRE D'HARGDUF. UNE FLAQUE DE SANG NOIR S'ETEND DEJA SOUS LUI.]"]
elif coords == (121, 21):
if stat[8] == 3: return {
21: [0, "Alors ?"],
25: [1, "Je savais que je pouvais compter sur toi ! Cela n'a rien a voir, mais j'ai entendu dire que Freyr cherche un certain {}, tu le connais ? [+15 PO]".format(stat[5]), 0, (1, 15), (8, -3)]
}
else: return {
"base": [0, "Daric, je peux vous aider ?"],
16: [0, "J'ai besoin d'un coup de main.\n1. Je vous ecoute.\n2. Desole.", 2],
17: [1, "Cela fait plusieurs fois deja qu'Egel, mon voisin, s'introduit dans mon jardin. Je n'arrive pas a lui faire entendre raison.\n1. Qu'attendez-vous de moi ?\n2. Cela ne m'interesse pas, bonne journee.", 2],
19: [2, "On m'a dit que le dieu de la Justice pouvait m'aider, mais il ne m'ecoutera jamais. Tu peux interceder en ma faveur ?", 0, (8, 3)],
20: [-4, "Dans ce cas..."],
18: [-2, "Cela ne fait rien."],
if "daric" in data[0] and data[0]["daric"] == 10:
stat[8] *= 7
data[0].pop("daric")
elif stat[8] % 7: return "daric", {
0: [0, "J'ai besoin d'un coup de main.\n1. Je vous ecoute.\n2. Desole.", 2],
1: [1, "Cela fait plusieurs fois deja qu'Egel, mon voisin, s'introduit dans mon jardin. Je n'arrive pas a lui faire entendre raison.\n1. Qu'attendez-vous de moi ?\n2. Cela ne m'interesse pas, bonne journee.", 2],
3: [2, "On m'a dit que le dieu de la Justice pouvait m'aider, mais il ne m'ecoutera jamais. Tu peux interceder en ma faveur ?"],
4: [-4, "Dans ce cas..."],
2: [-2, "Cela ne fait rien."],
5: [0, "Alors ?"],
6: [0, "Alors ?"],
8: [-2, "Ah ! Mais quel...! Bon, voici 12 pieces d'or, cela devrait suffire.", 0, (1, 12)],
9: [1, "Je savais que je pouvais compter sur toi ! [+15 PO]", 0, (1, 15)],
}
else: return [0, "Daric, je peux vous aider ?"]
elif coords == (117, 32):
if stat[8] == 4: return {
"base": [0, "Alors ? Tu as reussi ?"],
22: [4, "Je savais que je pouvais te faire confiance. Je n'ai pas beaucoup d'argent a te donner [+5 PO], mais si cela peut t'aider : Niflheim a une magicienne tres puissante qui vend des sorts. Avant que j'oublie, Freyr te demande.", 0, (1, 5), (8, -4)]
}
if "theldis" in data[0] and data[0]["theldis"] == 7:
stat[8] *= 11
data[0].pop("theldis")
else: return {
elif stat[8] % 11: return "theldis", {
"base": [0, "Bonjour, je suis Theldis."],
16: [0, "C'est un peu delicat... J'ai un different avec quelqu'un qui m'a fait une offense. Depuis je prie Vidar de me venir en aide, mais il ne semble pas tres concerne. Tu peux aller le voir pour moi ?\n1. Euh, non ?\n2. Je vais voir ce que je peux faire.", 2],
17: [-1, "Je pense que tu devrais prier aussi. Pour que Vidar continue ne pas m'entendre !"],
18: [1, "Ooh, merci beaucoup ! On peut le trouver autour de Landvidi", 0, (8, 4)],
19: [0, "Alors ?"],
0: [0, "C'est un peu delicat... J'ai un different avec quelqu'un qui m'a fait une offense. Depuis je prie Vidar de me venir en aide, mais il ne semble pas tres concerne. Tu peux aller le voir pour moi ?\n1. Euh, non ?\n2. Je vais voir ce que je peux faire.", 2],
1: [-1, "Je pense que tu devrais prier aussi. Pour que Vidar continue ne pas m'entendre !"],
2: [1, "Ooh, merci beaucoup ! On peut le trouver autour de Landvidi"],
3: [0, "Alors ?, Tu as reussi a le convaincre ?"],
6: [1, "Je savais que je pouvais te faire confiance. Je n'ai pas beaucoup d'argent a te donner [+5 PO], mais si cela peut t'aider : Niflheim a une magicienne tres puissante qui vend des sorts.", 0, (1, 5)]
}
@ -71,31 +76,23 @@ def asgard_npc(data, stat):
def h_9_npc(data, stat):
coords = data[2], data[3]
if coords == (19, 4):
if stat[8] == 3: return {
if "daric" in data[0]: return "daric", {
"base": [0, "Forseti, fils de Baldr et Nanna, dieu de la Justice. Tu as besoin de moi ?"],
21: [0, "Oui, je suis bien Forseti, dieu de la Justice. Hum, je conscent a aider Daric. Mais en echange, j'ai une faveur a te demander. La guerre qui couve n'est pas fondee, il faut l'empecher. Je ne te demande rien de plus.\n1. D'accord mais comment faire ?\n2. Je ferais mon possible.\n3. J'ai d'autres engagements a tenir.", 3],
22: [-1, "Eh bien, c'est la que commence ton travail je pense."],
23: [2, "Merci ! Tu pourras dire a Daric que je m'occupe de son affaire de suite."],
24: [1, "Je comprends."],
5: [0, "Oui, je suis bien Forseti, dieu de la Justice. Hum, je conscent a aider Daric. Mais en echange, je prend une commission de 10 pieces d'or.\n1. Marche conclu ! [-10 PO]\n2. Hors de question", 2],
6: [3, "Tu peux aller dire a Daric que je m'occupe de son cas. [-10 PO]", 0, (1, -10)],
7: [1, "Reviens quand tu auras l'argent."],
}
else: return {
"base": [0, "Forseti, fils de Baldr et Nanna, dieu de la Justice. Tu as besoin de moi ?"]
}
else: return [0, "Forseti, fils de Baldr et Nanna, dieu de la Justice. Tu as besoin de moi ?"]
# Odin
def h_10_npc(data, stat):
coords = data[2], data[3]
if coords == (25, 11):
if stat[8]:
return [0, "Fini ce que tu as a faire."]
if data[0] == 0:
if data[0]["main"] == 0:
stat[3][0] = 1
return [1, "Je suis Odin, Roi des Ases. Actuellement nous avons quelques differents avec les Vanes. Vous irez donc porter cette dague a Freyja, a Vanaheim. Elle comprendra. [ODIN VOUS DONNE UNE DAGUE]"]
@ -104,7 +101,7 @@ def h_10_npc(data, stat):
1: [0, "Deja revenu !?"],
3: [1, "Bon travail. Tu peux garder la dague, une guerre se prepare, ce serait bete de mourrir deux fois quand meme ? [UN SOURIRE PASSA SUR LES LEVRES D'ODIN] Jadis Freyja m'enseigna la magie et l'astrologie. [ODIN SE FIT PENSIF. IL SE RETROURNA VERS VOUS BRUTALEMENT] Je te ferais savoir mes instructions en temps voulu. Je crois qu'il te reste quelques mondes a decouvrir."],
4: [3, "Deja revenu ?\n1. Euh, non, pas encore.\n2. Oui !", 2],
8: [-4, "Reviens quand tu auras fini."],
8: [-4, "Reviens quand tu peux, j'ai quelques missions pour toi."],
9: [0, "Bien. Les Vanes ont refuse ma treve, je vais frapper ! Et pour cela j'ai besoin de toi.\n1. Certainement pas !\n2. J'en suis.", 2],
10: [-1, "[LE REGARD D'ODIN CHANGEA. VOUS FAITES UN PAS EN ARRIERE, MAIS IL EST TROP TARD : ODIN SE JETTE SUR VOUS ET VOUS DEPECE A MAINS NUES.]", 0, (0, -stat[0] * 2)],
@ -113,17 +110,39 @@ def h_10_npc(data, stat):
13: [1, "C'est ce que je voulais entendre."],
14: [0, "Mes espions m'ont indique sa presence vers Jotunheim"],
15: [1, "Morte !? Je ne te crois pas, mes informateurs l'ont vue, et elle va tres bien ! Mais cela ne fait rien : c'est symbolique. Je veux frapper les Vanes et maintenant ils veulent un tribut pour Gullveig. J'ai besoin de m'entretenir avec les Ases. Je te donne quartier libre jusqu'a la fin de nos discussions."],
15: [12, "Morte !? Je ne te crois pas, mes informateurs l'ont vue, et elle va tres bien ! Mais cela ne fait rien : c'est symbolique. Je veux frapper les Vanes et maintenant ils veulent un tribut pour Gullveig. J'ai besoin de m'entretenir avec les Ases. Avant que tu ne partes, rejoint Lithy, tu la trouveras au sud du Palais de Midgard. Elle t'expliquera la suite."],
27: [0, "{}, ta position entre Ases et Vanes derange, il faut que tu choisisse un camp.".format(stat[5])],
31: [0, "[A VOTRE ENTREE ODIN SE RETOURNA BRUTALEMENT] Ah ! {} ! Tu as fait le bon choix !\n1. Hum, je n'ai pas encore accepte.\n2. Je suis des votres !".format(stat[5]), 2],
32: [-1, "Decide-toi vite ! Cette guerre ne t'attendra pas..."],
33: [2, "Ca, c'est un choix strategique !"],
33: [2, "Ca, c'est un choix strategique ! [ODIN SAISIT SA LONGUE LANCE ET LA JETA EN L'AIR. LE TRAIT DE FEU TRAVERSA LE CIEL EN DIRECTION DE VANAHEIM, SEMANT LA GUERRE DANS SON SILLAGE.]\nMaintenant que la guerre est declaree, tu es requisitionne ! Reviens me voir quand tu seras pret a commencer."],
35: [0, "Va querrir la deesse de la mort, Hel. Tu la trouveras dans dans son palais, a Niflheim. Annonce-lui qu'une guerre se prepare."],
37: [2, "Ainsi, Hel s'occupe de preparer les soldats du Valhalla ? Nous allons ecraser les Vanes... Va espionner du cote du Folkvangr, reviens me voir quand tu auras des informations."],
39: [0, "Alors, des nouvelles ?"],
47: [0, "Alors, des nouvelles ?\n1. Les guerriers du Folkvangr sont mobilises en vue d'un assault.", 1],
48: [0, "Quel assault ?\n1. Je n'ai pas pu le savoir.", 1],
49: [2, "Cela ne fait rien, nous attaquerons les premiers ! Rejoint nos troupes stationne au Manoir de Midgard, au sud. J'enverrais Skirnir vous porter votre ordre de mission. Va d'abord trouver Irob, le mot de passe est 'Essa'."],
51: [0, "Aller, va !"],
65: [0, "Enfin ! [ODIN VOUS LANCA UN REGARD FURIEUX] Pourquoi avez-vous attaquez Svartalfheim ??\n1. C'etait vos ordres.", 1],
66: [0, "Mais non ! Je vous ai demande d'attaquer Muspellheim ! [ODIN S'ARRETA BRUTALEMENT DE HURLER.] Rhaa Skirnir ! Il modifie le contenu des messages.\n1. Vous voulez que le l'elimine ?\n2. Qu'attendez-vous de moi ?", 2],
67: [2, "Hum... Non, il doit etre loin a present. Va plutot porter ce message a Muspellheim. Nos troupes occupent le palais au sud. Avant que tu ne partes, prend ces pieces. [+20 PO]", 0, (1, 20)],
68: [1, "Puisque nous n'avons plus de messager, tu remplira ce role. Va porter ce message a Muspellheim. Nos troupes occupent le palais au sud. Avant que tu ne partes, prend ces pieces [+20 PO]", 0, (1, 20)],
69: [0, "Il faut transite par Nidavellir. Bonne route."],
73: [0, "Bon travail : Muspellheim est nettoye, je n'y ai laisse qu'une garnison reduite, le gros de nos troupes etant repliee ici.\n1. Allons-nous attaquer Vanaheim ?\n2. Peut-etre devrions proposer une treve, cette guerre n'a pas de sens.", 2],
74: [9, "Hum, j'hesite... [UN MESSAGER ENTRA DANS LA GRANDE SALLE DU VALASKJALF ET TENDIT UN PARCHEMIN SELLE A ODIN QUI LUI ARRACHA LA MISSIVE DES MAINS] Aha ! Nous en parlions : les Vanes proposent une treve. Elle me donne rendez-vous entre les colonnes du palais de Midgard. On s'y retrouve."],
75: [6, "Aucune guerre n'a de sens. Celle-ci pas plus qu'une autre... Tu as raison, proposons une treve. [ODIN GRIFONNA QUELQUES MOTS SUR UN VELIN ET VOUS TENDIT LE PLI.] Portez cela a Freyja. Si elle accepte on se retrouve directement sous les colonnes du palais de Midgard."],
85: [17, "Bien, Freyja a juge l'echange d'otage inegal, je l'ai vu dans ses yeux. Je m'attend au pire... [UN MESSAGER ENTRA DANS LA SALLE, PORTANT A BOUT DE BRAS LA TETE DE MIMIR. IL SE PROSTERNA DEVANT ODIN ET RECULA. ODIN S'ADRESSA AU MESSAGER] Les conseils de Mimir ne vous auront pas servi tres longtemps... [ODIN PRIT LA TETE DANS SES MAINS, UNE INTENSE LUMIERE LES PARCOURUS ET LORSQUE LA LUMINOSITE REVIENT A UN NIVEAU SOUTENABLE, LA TETE AVAIT RETROUVE LA VIE.]"],
90: [0, "Tient donc ! Cela fait longtemps que je n'avais pas vu ta face, traitre !\n1. Freyja m'a demande de vous transmettre ce message.\n2. Espece de vieux barbu borgne !", 2],
91: [3, "[ODIN VOUS ARRACHA LE PARCHEMIN DES DOIGTS.] Ah ! Une treve ? Hum. Soit. [ODIN SE RETOURNA BRUTALEMENT VERS VOUS] Tu es encore la !? Hors de ma vue !"],
92: [-2, "Que croyais-tu ? [ODIN S'AVANCE VERS VOUS CALMEMENT.] C'est moi qui t'ai redonne la vie... Et je peux la reprendre. [UN FROID IMMENSE EMPLIT VOTRE POITRINE, VOUS NE PARVENEZ PLUS A RESPIRER, VOUS VOUS EFFONDREZ, FACE CONTRE TERRE, MORT.]", 0, (0, -(2 * stat[0]))],
100: [2, "[VOUS TENDEZ LA TETE A ODIN.] Les conseils de Mimir ne vous auront pas servit tres longtemps... [ODIN PRIT LA TETE DANS SES MAINS, UNE INTENSE LUMIERE LES PARCOURUS ET LORSQUE LA LUMINOSITE REVIENT A UN NIVEAU SOUTENABLE, LA TETE AVAIT RETROUVE LA VIE.]"]
100: [2, "[VOUS TENDEZ LA TETE A ODIN.] Les conseils de Mimir ne vous auront pas servi tres longtemps... [ODIN PRIT LA TETE DANS SES MAINS, UNE INTENSE LUMIERE LES PARCOURUS ET LORSQUE LA LUMINOSITE REVIENT A UN NIVEAU SOUTENABLE, LA TETE AVAIT RETROUVE LA VIE.]"]
}
@ -135,8 +154,21 @@ def h_12_npc(data, stat):
pass
# Folkvangr
def h_13_npc(data, stat):
pass
coords = data[2], data[3]
if coords == (21, 8): return {
"base": [0, "Bienvenue au Folkvangr, la demeure des soldats de Freyja."],
39: [0, "Que veux-tu l'ami ?\n1. Vous parler.\n2. Des informations sur vos mouvements de troupes.", 2],
40: [1, "Soit, mais vite, je suis presse.\n1. Des ennuis ?\n2. Je serais bref.", 2],
41: [-2, "Gaarrrdees ! [UNE DIZAINE DE FANTASSINS SE PLACERENT EN CERCLE AUTOUR DE VOUS, VOUS EMPOIGNERENT ET VOUS JETERENT SANS MENAGEMENT DANS UNE GEOLE HUMIDE ET SOMBRE.] Ici, les espions, nous les faisons parler... [VOUS MOURREZ SOUS LA TORTURE APRES AVOIR DONNE TOUTES LES INFORMATIONS EN VOTRE POSSESSION.]", 0, (0, - 2 * stat[0])],
42: [3, "Pas a proprement parler, on nous a demande de rassembler nos guerriers et de les tenir pret pour un eventuel combat.\n1. Oh, dans ce cas, je ne vous derange pas plus.", 1],
43: [0, "Je vous ecoute.\n1. Freyja m'envoie pour prendre des nouvelles des preparatifs.\n2. Je viens pour l'inspection annuelle de vos troupes.", 2],
44: [3, "Nos troupes sont en cours de preparation, conformement aux ordres de Freyja, nous avons rassemble les guerriers, ils seront pret d'ici quelques heures."],
45: [-6, "Bien essaye l'ami, mais il n'y a pas d'inspection de ce genre par ici. Gaarrddes ! [UNE DIZAINE DE GARDES SE JETTENT SUR VOUS, VOUS EN BLESSEZ UN, PEUT-ETRE DEUX, MAIS VOUS SUCCOMBEZ SOUS LE NOMBRE ET MOURREZ DE VOS BLESSURES.]", 0, (0, -2 * stat[0])],
46: [1, "Bonne journee."],
}
def h_14_npc(data, stat):
@ -148,12 +180,13 @@ def h_15_npc(data, stat):
coords = data[2], data[3]
if coords == (10, 6):
if stat[8] == 4: return {
if "theldis" in data[0]: return "theldis", {
"base": [0, "Vidar, dieu de la vengeance et du silence. Besoin de faire taire quelqu'un ?"],
19: [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."],
20: [0, "Si tu veux que justice soit faite, va tuer cet orc."],
21: [1, "Bon travail."]
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."],
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."]
}
else: return {
"base": [0, "Les taillis croissent\nEt l'herbe haute\nDans la foret du pays de Vidarr\nEt la, le fils intrepide\nDescendra de cheval\nPour venger son pere."],
}
@ -192,39 +225,41 @@ def vanaheim_npc(data, stat):
# Riethas
if coords == (31, 12):
if stat[8] == 5: return {
82: [0, "Kamuel est au sud, a la limite des montagnes."],
86: [2, "Parfait, merci beaucoup !", 0, (1, -25), (8, -5)],
if "riethas" in data[0] and data[0]["riethas"] == 7:
stat[8] *= 5
data[0].pop("riethas")
elif stat[8] % 5: return "riethas", {
0: [0, "Je suis Riethas. Kamuel me doit de l'argent. Si tu veux bien aller le chercher, je te laisserai une part.\n1. Je m'en charge.\n2. Hum, non.", 2],
1: [2, "Merci ! Tu le trouveras au sud de Vanaheim."],
2: [-2, "Cela ne fait rien."],
3: [0, "Kamuel est au sud, a la limite des montagnes."],
6: [1, "Parfait, merci beaucoup !", 0, (1, -25)],
}
else: return {
"base": [0, "Riethas, simple paysan. Que Nerthus vous garde !"],
78: [0, "Je suis Riethas. Kamuel me doit de l'argent. Si tu veux bien aller le chercher, je te laisserai une part.\n1. Je m'en charge.\n2. Hum, non.", 2],
79: [3, "Merci ! Tu le trouveras au sud de Vanaheim.", 0, (8, 5)],
80: [-2, "Cela ne fait rien."],
}
else: return [0, "Riethas, simple paysan. Que Nerthus vous garde !"]
# Kamuel
if coords == (41, 45):
if stat[8] == 5:
if data[0] == 84: return [20, 20, 20, 20, 100], "Kamuel", 50, 2
else: return {
"base": [0, "Kamuel, que puis-je pour vous ?"],
82: [0, "Kamuel, que voulez-vous ?\n1. Tu dois de l'argent a Riethas.\n2. Vous tuer.", 2],
83: [3, "Bien sur, voila. [+50 PO]", 0, (1, 50)],
if "riethas" in data[0]:
if data[0]["riethas"] == 5: return [20, 20, 20, 20, 100], "Kamuel", 50, 1, "riethas"
else: return "riethas", {
"base": [0, "Bonjour... ?"],
3: [0, "Kamuel, que voulez-vous ?\n1. Tu dois de l'argent a Riethas.\n2. Vous tuer.", 2],
4: [2, "Bien sur, voila. [+50 PO]", 0, (1, 50)],
}
# Charrette
if coords == (45, 39):
if stat[9] == -1 or data[0] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 5: return [-i, "Je ne travaille pas gratuitement."]
else:
@ -236,8 +271,8 @@ def h_21_npc(data, stat):
coords = data[2], data[3]
if coords == (8, 1):
if stat[9] == -1 or data[0] == stat[9]:
stat[9] = data[0]
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,
@ -261,8 +296,16 @@ def h_22_npc(data, stat):
# Freyja
if coords == (2, 8):
if data[0] == 45 and stat[8] == 0:
stat[8] = 1
if data[0]["main"] == 44:
check = True
for spell_id, spell_level in stat[7]:
if spell_id == 2: check = False
if check:
stat[7].append((2, 2))
return [1, "Belle victoire a Midgard, bravo ! En remerciement je vais t'apprendre le sort Givre de niveau II. [FREYJA COMMENCA A CHANTER UNE MELODIE, VOTRE VISION DEVINT FLOUE. LORSQUE VOUS REPRENEZ VOS ESPRITS, VOUS LE SORT EST GRAVE DANS VOTRE MEMOIRE.]"]
else:
return [1, "Belle victoire a Midgard, bravo ! Je vois que tu connais deja le sort Givre, voila la somme equivalente. [+20 PO]", 0, (1, 20)]
if not (360 <= stat[4] <= 1200):
return [0, "Revenez plus tard s'il vous plait : il fait nuit."]
@ -276,26 +319,28 @@ def h_22_npc(data, stat):
32: [-1, "Bien, bien, mais depeche-toi !"],
33: [1, "Voila une heureuse nouvelle !\n[FREYJA AVAIT A PEINE FINI SA PHRASE QU'UN TRAIT DE FEU TRAVERSA LE CIEL.]\nOdin nous declare la guerre ! Nous devons rassembler nos forces. Va a Jotunheim, et previent Thrym."],
44: [0, "Ah, {} !\n1. Nous avons pris le manoir de Midgard.\n2. Quels liens vous unissent aux Geants ?\n3. Savez-vous ou je peux trouver une bibliotheque ?".format(stat[5]), 3],
45: [-1, "Parfait ! Vois avec Freyr pour ta recompense."],
46: [-2, "A l'origine des Vanes est Thjazi, un Geant, il enleva Idunn, une Asyne, ce qui signa le debut de nos conflits avec les Ases. Ces differents n'ont cesses de s'amplifier avec le temps, les Ases ne perdant pas une occasion de tuer un Geant. Finalement, les Geants et nous ne formons qu'une seule et meme famille, ces liens sont encore plus forts depuis que Freyr, mon frere, s'est marie avec Gerd, une Geante. Leur monde est Jotunheim, tu peux y acceder uniquement par Vanaheim."],
47: [-3, "Hmm, je crois qu'il y en a une vers Alfheim."],
45: [0, "Ah, {} !\n1. Quels liens vous unissent aux Geants ?\n2. Savez-vous ou je peux trouver une bibliotheque ?".format(stat[5]), 2],
46: [-1, "A l'origine des Vanes est Thjazi, un Geant, il enleva Idunn, une Asyne, ce qui signa le debut de nos conflits avec les Ases. Ces differents n'ont cesses de s'amplifier avec le temps, les Ases ne perdant pas une occasion de tuer un Geant. Finalement, les Geants et nous ne formons qu'une seule et meme famille, ces liens sont encore plus forts depuis que Freyr, mon frere, s'est marie avec Gerd, une Geante. Leur monde est Jotunheim, tu peux y acceder uniquement par Vanaheim."],
47: [-2, "Hmm, je crois qu'il y en a une vers Alfheim."],
56: [0, "Tu as trouve quelque chose ?\n1. Les runes signifient 'kvasir'.", 1, (8, -2)],
56: [0, "Tu as trouve quelque chose ?\n1. Les runes signifient 'kvasir'.", 1],
57: [3, "'kvasir' ? Cela ne me dit rien... Laissons cela de cote, Va voir Freyr, il te precisera ta prochaine mission."],
74: [0, "Te voila enfin !\n1. C'est un succes.\n2. Ou en est la guerre ?", 2],
75: [3, "Bien joue {} ! Tu as merite un peu de repos. Reviens me voir quand tu sera repose.".format(stat[5])],
76: [-2, "Hum... Nous ne parvenons pas a sortir du statu quo. Chez les Ases comme chez nous, les troupes sont fatiguees. Ce ne sont que des rumeurs, mais une treve pourrait se profiler."],
78: [0, "Riethas cherche quelqu'un pour un service... Tu le trouveras a Vanaheim, dans la direction de Nordri."],
78: [0, "Pret a reprendre du service ?\n1. Oui !\n2. Pas encore.", 2],
79: [11, "Parfait ! Apres avoir convoque les autres Vanes nous avons conclu qu'il faut cesser cette guerre. Tu iras donc porter ce message a Odin. [FREYJA VOUS TEND UN PARCHEMIN SELLE.]"],
80: [-2, "Bon bon, mais ne tarde pas trop non plus."],
88: [2, "Apres avoir convoque les autres Vanes nous avons conclu qu'il faut cesser cette guerre. Tu iras donc porter ce message a Odin. [FREYJA VOUS TEND UN PARCHEMIN SELLE.]"],
81: [0, "Oh {} ! La traitrise conserve dirait-on... Que veux-tu ?\n1. Odin vous propose une treve.".format(stat[5]), 1],
82: [1, "Une treve... Bien... J'accepte de me rendre a Midgard pour discuter."],
94: [0, "Alors ?\n1. Odin a accepte la treve.", 1],
95: [1, "Parfait ! J'ai dit a Odin treve se deroulera a Midgard, sous les colonnes du palais. On se retrouve la-bas."],
95: [1, "Parfait ! Si Odin respecte ma demande, la treve se deroulera a Midgard, sous les colonnes du palais. On se retrouve la-bas."],
98: [2, "L'echange d'otage a ete tres inegal, j'ai ordonne l'execution de Mimir ! [FREYJA VOUS TENDIT LA TETE DE MIMIR.] Va donc porter cela a Odin."]
98: [2, "L'echange d'otage a ete tres inegal, j'ai ordonne l'execution de Mimir pour montrer que nous ne nous laissons pas faire. [FREYJA VOUS TENDIT LA TETE DE MIMIR.] Va donc porter cela a Odin."]
}
# Freyr
@ -303,7 +348,7 @@ def h_22_npc(data, stat):
if (not 360 <= stat[4] <= 1200):
return [0, "He ! Il fait nuit !"]
if data[0] == 2:
if data[0]["main"] == 2:
check = True
for spell_id, spell_level in stat[7]:
if spell_id == 0: check = False
@ -317,37 +362,27 @@ def h_22_npc(data, stat):
else:
return [1, "Chez les Vanes, nous rendons hommage aux messagers, voici quelques pieces d'or, faites en bon usage ! [UNE LOURDE TORPEUR S'ABATTIT SUR VOUS. VOUS VOUS SENTEZ LEGER. LE DUR CHOC CONTRE LE SOL VOUS REVEILLA.]", 0, (1, 5)]
elif data[0] == 44:
if stat[8] == 0: return [0, "Va donc annoncer la nouvelle a Freyja !"]
if stat[8] == 2: return [0, "Tsst, tu as deja eu ta recompense. Essaye plutot de comprendre ce que signifie ces runes."]
check = True
for spell_id, spell_level in stat[7]:
if spell_id == 2: check = False
if check:
stat[7].append((2, 2))
return [0, "En remerciement je vais t'apprendre le sort Givre de niveau II. [FREYR COMMENCA A CHANTER UNE MELODIE, VOTRE VISION DEVINT FLOUE. LORSQUE VOUS REPRENEZ VOS ESPRITS, VOUS LE SORT EST GRAVE DANS VOTRE MEMOIRE.]", 0, (8, 1)]
else:
return [0, "Je vois que tu connais deja le sort Givre, voila la somme equivalente. [+20 PO]", 0, (1, 20), (8, 1)]
if data[0] == 64:
if data[0]["main"] == 64:
message = input("Parfait ! (ecrivez le message dechiffre) :\n")
if message.lower() == "prenez alfheim": return [2, "Ah ! Parfait, montre-moi ca ! [VOUS TENDEZ LE MESSAGE DECHIFFRE A FREYR.]"]
if message.lower() == "prenez muspellheim": return [2, "Ah ! Parfait, montre-moi ca ! [VOUS TENDEZ LE MESSAGE DECHIFFRE A FREYR.]"]
else: return [-2, "Ca n'a aucun sens... cherche encore."]
if data[0] == 66:
if data[0]["main"] == 66:
data[1], data[2], data[3] = 6, 93, 8
return [2, "Bien, j'ai modifie le contenu du message pour attire les soldats Ases dans un piege, tu vas donne ce parchemin a Skirnir qui le portera aux Ases. Tu le trouveras vers Nidavellir. [UNE TERRIBLE FATIGUE S'ABATTIT SUR VOUS, UNE SENSATION DE CHUTE ACCOMPAGNA VOTRE PERTE DE CONSCIENCE. LE DUR CHOC CONTRE LE SOL VOUS REVEILLA.]"]
else: return {
"base": [0, "Freyr, dieu de la vie. Bienvenue a Vanaheim"],
16: [8, "J'aurais besoin de ton aide...\n1. Peut-etre plus tard ?\n2. Oui ?", 2],
25: [-9, "Si tu es toujours interesse..."],
26: [1, "Votre situation, entre Vanes et Ases nous derange. Je suis desole de ne pas etre plus edata[0]licite. Allez voir Lithy, elle se trouve a Midgard, vers le centre, dans l'alignement du grand palais. Elle vous edata[0]liquera la suite."],
16: [8, "{}, il faut que nous parlions.\n1. Peut-etre plus tard ?\n2. Oui ?".format(stat[5]), 2],
25: [-9, "Reviens me voir des que possible.."],
26: [1, "Votre situation, entre Vanes et Ases nous derange. Je suis desole de ne pas etre plus explicite. Allez voir Lithy, elle se trouve a Midgard, vers le centre, dans l'alignement du grand palais. Elle vous expliquera la suite."],
44: [0, "Ooh, bien joue pour Midgard ! Va donc en informer Freyja."],
45: [0, "Ces runes doivent bien avoir une signification..."],
60: [2, "Ah {} ! Mon messager, Skirnir, en se faisant passer pour un Ase, a intercepte un message; mais il est chiffre. [FREYR VOUS TEND UN PARCHEMIN PLIE.] Le message est : 'zmefmq kgfzmzw'. Reviens me voir quand tu auras termine.".format(stat[5])],
62: [0, "Deja fini ?\n1. Pas encore...\n2. Oui !", 2],
63: [-1, "Reviens me voir quand tu auras avance, le message est : 'zmefmq kgfzmzw'."],
63: [-1, "Reviens me voir quand tu auras avance, le message est : 'zmefmq wpshmcvceau'."],
}
@ -365,15 +400,15 @@ def alfheim_npc(data, stat):
coords = data[2], data[3]
if coords == (23, 17):
if stat[9] == -1 or data[0] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 5: return [-i, "Je ne travaille pas gratuitement."]
else:
@ -410,13 +445,13 @@ def h_24_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
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 !"]
@ -426,13 +461,13 @@ def h_24_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
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."]
@ -472,33 +507,35 @@ def midgard_npc(data, stat):
if coords == (67, 46):
return {
"base": [0, "Hmm ?"],
96: [2, "[ODIN ET FREYJA S'AVANCERENT SOUS LES COLONNES ET CRACHERENT DANS UNE CUVE. UNE EPAISSE FUMMEE S'ELEVA DE CETTE DERNIERE ET LAISSA APPARAITRE UN CORPS EN DISPARAISSANT, 'KVASIR' DIT FREYJA EN MONTRANT LE NOUVEAU DIEU. EN GUISE D'ACCORD DE PAIX, LES ASES DONNERENT MIMIR ET HOENIR TANDIS QUE LES VANES CEDERNT NJORD, FREYR ET KVASIR. FRYEYJA SE PENCHA VERS VOUS.] {}, je te rejoint a Vanaheim.".format(stat[5])]
83: [2, "[ODIN ET FREYJA S'AVANCERENT SOUS LES COLONNES DU PALAIS. MELANT LEURS SALIVES DANS LE CALICE, ILS CREERENT L'ETRE LE PLUS SAGE : KVASIR. LA TREVE SE CONCLUA SUR UN ECHANGE DE DIVINITES. LES VANES CEDERENT KVASIR, FREYR ET NJORD ALORS QUE LES ASES DONNERENT MIMIR ET HOENIR. LA TREVE TERMINEE, ODIN SE PENCHA VERS VOUS] {}, retourne a Asgard, j'ai l'impression que cette guerre n'est pas terminee.".format(stat[5])],
96: [2, "[ODIN ET FREYJA S'AVANCERENT SOUS LES COLONNES ET CRACHERENT DANS UNE CUVE. UNE EPAISSE FUMMEE S'ELEVA DE CETTE DERNIERE ET LAISSA APPARAITRE UN CORPS EN SE DISSIPANT, 'KVASIR' DIT FREYJA EN MONTRANT LE NOUVEAU DIEU. EN GUISE D'ACCORD DE PAIX, LES ASES DONNERENT MIMIR ET HOENIR TANDIS QUE LES VANES CEDERNT NJORD, FREYR ET KVASIR. FRYEYJA SE PENCHA VERS VOUS.] {}, je te rejoint a Vanaheim.".format(stat[5])]
}
# Laard
if coords == (8, 59):
if stat[8] == 1: return {
7: [0, "En clair, j'aimerais que tu elimines Gardim. La paye sera bonne."],
8: [1, "C'est un grand service que tu m'a rendu l'ami, je ne l'oublierai pas ! [+5 PO] Un courrier est passe, je crois qu'Odin requiert ta presence au plus vite.", 0, (1, 5), (8, -1)]
if "laard" in data[0] and data[0]["laard"] == 5:
stat[8] *= 3
data[0].pop("laard")
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],
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."],
4: [1, "C'est un grand service que tu m'a rendu l'ami, je ne l'oublierai pas ! [+5 PO]", 0, (1, 5)]
}
else: return {
"base": [0, "Laard, je suis marin de mon etat."],
4: [0, "Laard, marin. Vous cherchez un engagement ?\n1. Hmm ? Proposez toujours ?\n2. Désolé, j'ai d'autres affaires a regler.", 2],
5: [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 ?", 0, (8, 1)],
6: [-2, "Je comprends."],
}
# Gardim
elif coords == (94, 85):
if stat[8] == 1:
if data[0] < 7:
return [0, "Gardim, capitaine du Mantree [IL DESIGNA UN DRAKKAR]"]
elif data[0] == 7:
return [5, 2, 7, 7, 30], "Gardim", 3, 1
else: return {
"base": [0, "[A VOS PIEDS S'ETEND LE CORPS FROID DE GARDIM.]"]
}
if "laard" in data[0]:
if data[0]["laard"] < 3: return "laard", [0, "Gardim, capitaine du Mantree [IL DESIGNA UN DRAKKAR]"]
elif data[0]["laard"] == 3: return [5, 2, 7, 7, 30], "Gardim", 3, 1, "laard"
else: return "laard", [0, "[A VOS PIEDS S'ETEND LE CORPS FROID DE GARDIM.]"]
else:
if stat[8] % 3: return [0, "Gardim, capitaine du Mantree [IL DESIGNA UN DRAKKAR]"]
else: return [0, "Marli, assistant de feu Gardim, je peux vous renseigner ?"]
elif coords == (51, 60):
return {
@ -513,7 +550,7 @@ def midgard_npc(data, stat):
elif coords == (66, 56):
return {
"base": [0, "Bonjour, je suis Lithy."],
27: [0, "Je suis Lithy. Les morts au combat sont repartis entre les Ases et les Vanes. Tot ou tard tu devras choisir ton camp et renier l'autre.\n1. Sur quel critere les morts sont-ils repartis ?\n2. Freyr m'a dit que je derangeais... ?", 2],
27: [0, "Je suis Lithy. Les morts au combat sont repartis entre les Ases et les Vanes. Tot ou tard tu devras choisir ton camp et renier l'autre.\n1. Sur quel critere les morts sont-ils repartis ?\n2. On m'a dit que je derangeais... ?", 2],
28: [-1, "Les combattans morts lors d'attaques reviennent en general a Odin alors que ceux qui sont morts pour defendre leurs biens sont plutot l'apanage des Vanes."],
29: [0, "Votre position vous situe entre Ases et Vanes, a la veille d'une guerre comme celle-ci, les Vanes comme les Ases redoutent les informateurs caches. Vous allez devoir afficher clairement votre camp.\n1. Je suis oblige de choisir ?\n2. Comment je peux choisir ?", 2],
30: [-1, "Oui, ne serait-ce que parce qu'Odin n'acceptera jamais le doute : il vous fera tuer."],
@ -524,20 +561,26 @@ def midgard_npc(data, stat):
return {
"base": [0, "Hmm ?"],
42: [0, "Occupez-vous de l'interieur, je me charge du parc !"],
44: [0, "[UTARG SE RETOURNA VERS VOUS, SA DIVSION DERRIERE LUI.] Allez voir Freyja pour lui annoncer la nouvelle. Mes hommes, et moi restons ici en garnison. Avant que vous ne partiez... J'ai trouve des runes graves dans la parois. [UTARG VOUS TENDIT UN CROQUIS DES RUNES]"]
44: [0, "[UTARG SE RETOURNA VERS VOUS, SA DIVSION DERRIERE LUI.] Allez voir Freyja pour lui annoncer la nouvelle. Mes hommes, et moi restons ici en garnison. Avant que vous ne partiez... J'ai trouve des runes graves dans la parois. [UTARG VOUS TENDIT UN CROQUIS DES RUNES]"],
51: [0, "Je suis Irob, quel est le mot de passe ?\n1. Ases.\n2. Essa\n3. Sase\n4. Sesa", 4],
52: [-1, "Hum... [AVANT QUE N'AYEZ PU CORRIGER VOTRE ERREUR, IROB VOUS A DEJA TUE.]", 0, (0, -2 * stat[0])],
53: [4, "C'est bien, passez."],
54: [-3, "Vous aviez un doute ? Oui, moi aussi. [VOUS SENTEZ VOTRE TETE SE DECOLLER DU RESTE DE VOTRE CORPS.]", 0, (0, -2 * stat[0])],
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.]"],
}
# Charrette
elif coords == (39, 49):
if stat[9] == -1 or data[0] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 5: return [-i, "Je ne travaille pas gratuitement."]
else:
@ -561,8 +604,8 @@ def h_26_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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,
@ -573,16 +616,16 @@ def h_26_npc(data, stat):
else: return event
elif coords == (17, 7):
if stat[8] == 2: return {
7: [0, "Aller, file !"],
8: [1, "Merci de ton aide, voila quelques pieces. [+10 PO], un messager est passe, Odin te demande.", 0, (1, 10), (8, -2)],
}
if "asufaith" in data[0] and data[0]["asufaith"] == 5:
stat[8] *= 2
data[0].pop("asufaith")
else: return {
"base": [0, "Ui hips ?"],
4: [0, "Hey toi ! J'ai besoin de toi.\n1. Je ne crois pas, bonne journee.\n2. Je vous ecoute.", 2],
5: [-1, "Tu ne sais pas ce que tu rates l'ami."],
6: [1, "Bien. Tu vas aller au sud ouest, au fond d'un bois, il y a trois maisons. Je sais que l'une d'elle mene a Niflheim. Trouve un esprit du nom d'Asufaith et donne-lui ce mot. [L'HOMME VOUS DONNE UNE LETTRE CACHETEE D'UN SCEAU DE CIRE NOIRE.].", 0, (8, 2)],
elif stat[8] % 2: return "asufaith", {
0: [0, "Hey toi ! J'ai besoin de toi.\n1. Je ne crois pas, bonne journee.\n2. Je vous ecoute.", 2],
1: [-1, "Tu ne sais pas ce que tu rates l'ami."],
2: [1, "Bien. Tu vas aller au sud ouest, au fond d'un bois, il y a trois maisons. Je sais que l'une d'elle mene a Niflheim. Trouve un esprit du nom d'Asufaith et donne-lui ce mot. [L'HOMME VOUS DONNE UNE LETTRE CACHETEE D'UN SCEAU DE CIRE NOIRE.].", 0],
3: [0, "Aller, file !"],
4: [1, "Merci de ton aide, voila quelques pieces. [+10 PO]", 0, (1, 10)],
}
else: return [0, "Ui hips ?"]
@ -596,9 +639,13 @@ def h_28_npc(data, stat):
coords = data[2], data[3]
if coords == (27, 6):
if data[0] == 42: return [10, 10, 10, 10, 100], "Targ", 40, 2
elif data[0] == 44: return [0, "[ENCORE SUANT DU COMBAT, VOUS REGARDEZ AVEC UNE CERTAINE SATISFACTION LE TAS DE CHAIR QUI FUT VOTRE ADVERSAIRE.]"]
if data[0]["main"] == 42: return [10, 10, 10, 10, 100], "Targ", 40, 2
elif data[0]["main"] == 44: return [0, "[ENCORE SUANT DU COMBAT, VOUS REGARDEZ AVEC UNE CERTAINE SATISFACTION LE TAS DE CHAIR QUI FUT VOTRE ADVERSAIRE.]"]
else: return {
"base": [0, "Hmm ?"],
57: [2, "Ah voila {} ! Skirnir vient de repartir, nous devons prendre une tour de guet de Svartalfheim. Nous passerons par Nidavellir. On se retrouve au pied de la tour.".format(stat[5])]
}
# - - - Niflheim - - - #
def niflheim_po(coords):
@ -614,9 +661,9 @@ def niflheim_npc(data, stat):
if coords == (57, 31):
if stat[8] == 2: return {
"base": [0, "[VOUS REGARDEZ LE SOL SANS COMPRENDRE.]"],
7: [1, "Asufaith, besoin de quelque chose ? [VOUS LUI DONNEZ LA LETTRE, L'ESPRIT VOUS REGARDA SANS PARAITRE ETONNE ET S'EN EMPARA.] Notre... Ami commun vous envoie de loin. [SUR CES MOTS L'ESPRIT SE RETOURNA ET TRAVERSA LE SOL DE TERRE, VOUS LAISSANT DESEMPARE.]"],
if "asufaith" in data[0]: return "asufaith", {
3: [1, "Asufaith, besoin de quelque chose ? [VOUS LUI DONNEZ LA LETTRE, L'ESPRIT VOUS REGARDA SANS PARAITRE ETONNE ET S'EN EMPARA.] Notre... Ami commun vous envoie de loin. [SUR CES MOTS L'ESPRIT SE RETOURNA ET TRAVERSA LE SOL DE TERRE, VOUS LAISSANT DESEMPARE.]"],
4: [0, "[VOUS REGARDEZ LE SOL SANS COMPRENDRE.]"],
}
@ -630,13 +677,13 @@ def h_29_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
if data[0]["main"] == stat[9] + i:
stat[9] = -1
if stat[1] < 50: return [-i, "Vous n'avez pas les moyens, desolee."]
@ -658,7 +705,14 @@ def h_29_npc(data, stat):
def h_30_npc(data, stat):
pass
coords = data[2], data[3]
# Hel
if coords == (37, 4): 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)],
}
# - - - Jotunheim - - - #
@ -689,7 +743,7 @@ def jotunheim_npc(data, stat):
"base": [0, "Utarg, pour vous servir."],
36: [0, "Utarg, vous me cherchiez ?\n1. Oui, Thrym m'a demande de vous donner ceci [VOUS LUI DONNEZ LA LETTRE].\n2. Quelles sont les relations entre les Geants et les Ases ?", 2],
37: [3, "[UTARG LIT LE BILLET.] Hum. Thrym me demande de detacher une garnison et de me rendre a Vanaheim. On se retrouve a l'auberge, au nord de Vanaheim."],
38: [-2, "Plusieurs differents ont eloignes les Ases des Geants : meutres, enlevements, traitrises... Ce serait long a edata[0]liquer."]
38: [-2, "Plusieurs differents ont eloignes les Ases des Geants : meutres, enlevements, traitrises... Ce serait long a expliquer."]
}
@ -723,8 +777,8 @@ def h_35_npc(data, stat):
if coords == (17, 5):
if data[0] == 14: return [8, 8, 5, 5, 80], "Gullveig", 15, 1
elif data[0] == 15: return [0, "[VOUS REGARDEZ LA DEPOUILLE DESARTICULEE DE LA MAGICIENNE, ODIN SERA CONTENT.]"]
if data[0]["main"] == 14: return [8, 8, 5, 5, 80], "Gullveig", 15, 1
elif data[0]["main"] == 15: return [0, "[VOUS REGARDEZ LA DEPOUILLE DESARTICULEE DE LA MAGICIENNE, ODIN SERA CONTENT.]"]
else: return {
"base": [0, "Gullveig, magicienne Vane, pour te servir."],
44: [0, "Gullveig, magicienne Vane, besoin de quelque chose ?\n1. Pouvez-vous dechiffre ces runes pour moi ?\n2. Non, excusez-moi.", 2],
@ -742,8 +796,8 @@ def h_36_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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:
@ -771,7 +825,7 @@ def nidavellir_npc(data, stat):
if coords == (25, 31):
return {
"base": [0, "Skirnir, messager de Freyr..."],
"base": [0, "Skirnir, messager de mon etat."],
68: [0, "Skirnir, messager de Freyr...\n1. J'ai un message pour vous", 1],
69: [1, "[VOUS TENDEZ LE PARCHEMIN MODIFIE A SKIRNIR] Je vais de ce pas transmettre ce message aux Ases. Nous allons attirer les Ases dans un piege dans une tour de guet de Svartalfheim. Il ne doit pas y avoir beaucoup de soldats Ases present. Tu rendras directement compte a Freyja. Avant que tu ne partes, achetes-toi un equimement digne de ce nom. [+30 PO]", 0, (1, 30)],
}
@ -783,8 +837,8 @@ def h_37_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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:
@ -812,14 +866,14 @@ def h_39_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
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
@ -828,17 +882,17 @@ def h_39_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + 1:
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] == stat[9] + 2:
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [-2, "A votre guise, revenez quand vous voulez !"]
@ -864,7 +918,11 @@ def muspellheim_npc(data, stat):
# * : (59, 91)
# * : (39, 94)
# * : (29, 113)
pass
coords = data[2], data[3]
if coords == (39, 94):
if data[0]["main"] == 71: return [15, 20, 20, 15, 100], "Soldat Vane", 20, 2
def h_42_npc(data, stat):
@ -873,8 +931,8 @@ def h_42_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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:
@ -892,14 +950,14 @@ def h_43_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + i:
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
@ -908,16 +966,16 @@ def h_43_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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] == stat[9] + 1:
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] == stat[9] + 2:
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [-2, "Revenez quand vous voulez !"]
@ -926,7 +984,13 @@ def h_43_npc(data, stat):
def h_44_npc(data, stat):
pass
coords = data[2], data[3]
if coords == (13, 20): return {
"base": [0, "Frealas, capitaine d'Odin."],
69: [0, "Frealas, capitaine d'Odin.\n1. J'ai un message de sa part.", 1],
70: [1, "[VOUS TENDEZ LE PLIS A FREALAS] Hum... Odin nous demande de reduire les derniers Vanes present avant de nous replier. Les rapports indiquent la presence de deux ou trois groupuscules. Vous vous chargerez de celui situe a Westri, dans le village. Retournez directement voir Odin quand vous aurez termine."],
}
# - - - Svartalfheim - - - #
@ -935,6 +999,7 @@ def svartalfheim_po(coords):
def svartalfheim_npc(data, stat):
# * : (10; 24)
# * : (105; 46)
# * : (22; 50)
# * : (15; 54)
@ -945,11 +1010,11 @@ def svartalfheim_npc(data, stat):
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] == stat[9]:
stat[9] = data[0]
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]
elif data[0] == stat[9] + 1:
elif data[0]["main"] == stat[9] + 1:
stat[9] = -1
if stat[1] < 2: return [-1, "Reviens quand tu auras de quoi me payer."]
@ -958,10 +1023,18 @@ def svartalfheim_npc(data, stat):
return [-1, "C'est parti !", 0, (1, -2)]
elif data[0] == stat[9] + 2:
elif data[0]["main"] == stat[9] + 2:
stat[9] = -1
return [0, "Reviens quand tu voudras traverser."]
elif coords == (10, 24):
if data[0]["main"] == 59:
if stat[3][0] == 8 and stat[3][1] == 5: return [2, "Voici un peu d'argent [+20 PO]. Selon nos espions, la tour est vide ou presque. Tu rentres, tu elemines les Vanes, pendant ce temps, on surveille les alentours.", 0, (1, 20)]
else:
if stat[3][0] < 8: stat[3][0] += 1
if stat[3][1] < 5: stat[3][1] += 1
return [2, "Voici un equipement de meilleure qualite, avec ca, tu ne peux pas perdre le combat ! Selon nos espions, la tour est vide ou presque. Tu rentres, tu elemines les Vanes, pendant ce temps, on surveille les alentours."]
def h_45_npc(data, stat):
# * : (15, 4)
@ -974,12 +1047,22 @@ def h_46_npc(data, stat):
coords = data[2], data[3]
if coords == (13, 2):
if data[0] in (70, 72): return [12, 10, 15, 15, 100], "Soldat Ase", 10, 2
elif data[0] == 74: return [0, "[LA DEPOUILLE SANGLANTE DU SOLDAT EST AFFALLEE SUR LE BANC. UNE MARE DE SANG COAGULE DEJA A SES PIEDS.]"]
if data[0]["main"] == 61: return [12, 10, 15, 15, 100], "Soldat Vane", 10, 2
elif data[0]["main"] == 63:
data[1], data[2], data[3] = 27, 4, 11
return [2, "[UN PUISSANT BRUIT DE COR RETENTI, DES SOLDATS VANES SURGISSAIENT DE PARTOUT. SUBMERGE PAR LE NOMBRE ET LES COUPS, VOUS TOMBEZ AU SOL. VOUS AVEZ LA SENTATION CONFUSE QUE L'ON VOUS PORTE. LORSQUE VOUS VOUS REPRENEZ VOS ESPRITS, VOUS ETES CHEZ VOUS, A MIDGARD, VOS MULTIPLES CONTUSIONS SONT PANSEES ET LA DOULEUR EST LARGEMENT SUPPORTABLE. LE BILLET POSE SUR VOTRE TABLE VOUS INDIQUE QU'ODIN VOUS ATTEND.]", 0, (0, -stat[0] // 2)]
if data[0]["main"] in (70, 72): return [12, 10, 15, 15, 100], "Soldat Ase", 10, 2
elif data[0]["main"] == 74: return [0, "[LA DEPOUILLE SANGLANTE DU SOLDAT EST AFFALLEE SUR LE BANC. UNE MARE DE SANG COAGULE DEJA A SES PIEDS.]"]
if coords == (13, 4):
if data[0] in (70, 72): return [12, 10, 20, 15, 100], "Soldat Ase", 10, 2
elif data[0] == 74: return [0, "[DES MORCEAUX DE CORPS JONCHENT LE SOL ET LA TABLE.]"]
if data[0]["main"] == 61: return [12, 10, 15, 15, 100], "Soldat Vane", 10, 2
elif data[0]["main"] == 63:
data[1], data[2], data[3] = 27, 4, 11
return [2, "[UN PUISSANT BRUIT DE COR RETENTI, DES SOLDATS VANES SURGISSAIENT DE PARTOUT. SUBMERGE PAR LE NOMBRE ET LES COUPS, VOUS TOMBEZ AU SOL. VOUS AVEZ LA SENTATION CONFUSE QUE L'ON VOUS PORTE. LORSQUE VOUS VOUS REPRENEZ VOS ESPRITS, VOUS ETES CHEZ VOUS, A MIDGARD, VOS MULTIPLES CONTUSIONS SONT PANSEES ET LA DOULEUR EST LARGEMENT SUPPORTABLE. LE BILLET POSE SUR VOTRE TABLE VOUS INDIQUE QU'ODIN VOUS ATTEND.]", 0, (0, -stat[0] // 2)]
if data[0]["main"] in (70, 72): return [12, 10, 20, 15, 100], "Soldat Ase", 10, 2
elif data[0]["main"] == 74: return [0, "[DES MORCEAUX DE CORPS JONCHENT LE SOL ET LA TABLE.]"]
def h_47_npc(data, stat):

View File

@ -23,7 +23,7 @@ svartalfheim = (r"""
~~ /<>\ || #### || #### #### /\_ /\ / \ /\ ~~~ #### #### ## ######## ~~~ /<>\ ~~~~~~~~~
~~ |__| #### ## ## / \ / \ \ / \ ~~~~ ## ## #### ## ## #### ~~~ |__| ~~~~~~~~~~~
~~~ |__| ## || ## || / \ /\/ \ /\ / \ /\ ~~~~~ || || #### #### || ## ~~ |__| ~~~~~~~~~~~
~~~~ |^_| || ## #### / \ / \ / \ ~~~~~~~ ## #### || ~~~ |__| ~~~~~~~~~~~~
~~~~ |^_| * || ## #### / \ / \ / \ ~~~~~~~ ## #### || ~~~ |__| ~~~~~~~~~~~~
~~~~~ #### #### /\ / \ /\/ \ / \ ~~~~~~~ || ## ~~~~~~ ~~~~~~~~~~~~~
~~~~~~~ ### #### ## / \ / \ ~ ~~~~~~ || ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
~~~~~~~~ ##### ## || / \ /\ / \ /\ ~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~