heroes of might and magic 3 4 5
Heroes of might and magic 4 sur Archangel Castle : Informations, cartes (maps), downloads, patches, ligue, et tout en francais !


Campagnes
Lieux
Artefacts
Terrains
Compétences
Unités Neutres
Gathering Storm
Winds of War



Maps
Téléchargements


Editeur
Astuces
Interviews
Bugs


Mythologie
Créatures
Personnages

Chroniques



Webmaster
Ligue H3
Ligue H4
Ligue H5
Site H5
Trad et designer
Anciens

 

 

Voila un "petit" tutorial sur les Scripts de l'éditeur réalisé par Wildbear. Merci beaucoup à lui car je suis sûr qu'il va en aider plus d'un :)

 

Tout d’abord une petite explication du concept d’événement : Un événement, « EVENT » en anglais, ça se déclenche, il faut pour cela qu’une condition soit remplie. Cette condition peur prendre plusieurs formes dans Heroes IV : passage sur un élément déterminé : demeure, château, hutte de quête, événement placé, personnage ou créature. J’appellerai ces éléments « acteurs ».

Ces acteurs n’apparaissent que sous les onglets «ADVENTURE OBJECTS» et «CHARACTERS» de l’éditeur. Tous les éléments placés sous ces catégories ne sont pas configurables, certains ont une fonction précise comme par exemple les étables, ressources ou encore tours d’observation, et ne peuvent être configuré davantage.


Haut de page Retour au news

 

Les Catégories d'Evénements

Une première partie des évènements est disponible dans le menu «CAMPAIGN – MAP PROPERTIES – EVENTS».

- TIMED EVENT : Événement déclenché à une date déterminée pouvant être répété à un rythme constant.

- TRIGGERABLE EVENT : Événement déclenché par un autre script. Cette catégorie semble être la plus flexible puisqu’elle peut revêtir l’apparence de toutes les autres.

- CONTINUOUS EVENT : Événement dont les conditions de déclenchement ou d’évolution sont scrutées en permanence. L’exemple le plus simple étant le changement par le joueur des conditions de victoire.

- PLACED EVENT : Événement déclenché par le passage à un endroit déterminé comme une boîte de pandore ou un « EVENT TRIGGER » que l’on trouve dans l’éditeur (ADVENTURE OBJECTS – MISCELLANOUS) sous la forme de trois capsules orangées.

La seconde catégorie de scripts est accessible depuis les acteurs eux même comme les prisons, les villes, les personnages et créatures. On retrouve sur ces acteurs les catégories TIMED, TRIGGERABLE et CONTINUOUS EVENTS, qui sont identiques aux évènements précédents mais qui ne s’applique d’une certaine manière qu’aux acteurs auxquels ils sont attachés.

- ENCOUNTERED (armée) / ATTACKED (ville) : L’événement se déclenche lorsque l’on rencontre la créature, la ville ou le héros.

- DEFEATED (armée) / CAPTURED (ville): L’événement est déclenché par la défaite / capture de l’acteur.

- VICTORIOUS : L’événement est déclenché lorsque l’acteur remporte la bataille.

- ENTERED (ville): L’événement est déclenché lorsqu’une troupe entre dans la ville.


Haut de page Retour au news

 

Les Fonctions de Base

À RETENIR :

Le héros cible, «TARGET HERO»
- Dans une armée :
• FIRST HERO IN ARMY : Premier héros de l’armée de gauche à droite.
• MOST POWERFUL HERO IN THIS ARMY : Héros le plus puissant de l’armée
• LEAST POWERFUL HERO IN THIS ARMY : Héros le plus faible de l’armée.
- Dans une ville :
• FIRST HERO IN GARRISON : Premier héros, de gauche à droite en garnison dans la ville.
• ANY HERO IN OPPOSING ARMY : Un héros aléatoirement choisi dans l’armée assaillante.
• MOST POWERFUL HERO IN GARRISON : Héros le plus puissant en garnison dans la ville.
• MOST POWERFUL HERO IN OPPOSING ARMY : Héros le plus puissant dans l’armée assaillante.
• LEAST POWERFUL HERO IN GARRISON : Héros le plus faible en garnison dans la ville.
• LEAST POWERFUL HERO UN OPPOSING ARMY : Héros le plus faible dans l’armée assaillante.
Si une armée ne comporte qu’un héros, il est à la fois premier, plus puissant et moins puissant (FIRST, MOST POWERFUL et LEAST POWERFUL) héros de l’armée.

L’armée cible, «TARGET ARMY» :
- Pour un événement placé :
• THIS ARMY (cette armée) est la seule option. Elle désigne l’armée qui déclenche le script.
- Pour une ville :
• GARRISON : Désigne la garnison comme cible de l’action.
• OPPOSING ARMY : Désigne l’armée assaillante comme cible de l’action.

ERREUR DANS L’EDITEUR

Une erreur dans l’éditeur : « ORE » est indiqué deux fois dans les fonctions concernant les ressources. Le second désigne en fait les cristaux.

LES FONCTIONS

- SEQUENCE : Cette fonction permet d’en regrouper plusieurs autres. Elle agit comme une parenthèse dans une équation mathématique.
• NEW… : Insérer une fonction dans la séquence.
• EDIT : Éditer une fonction de la séquence.
• REMOVE : Supprimer une fonction de la séquence.

- ASK QUESTION : Poser une question au joueur.
• ASK : Question à poser. Le joueur doit pouvoir répondre par oui ou par non.
• IF YES : Si le joueur répond oui, cette branche d’instructions sera effectuée.
• IF NO : Si le joueur répond non, cette branche d’instructions sera effectuée.

- CHANGE OWNER (villes, héros, créatures) : Attribue l’acteur à un joueur déterminé.

- CLEAR LOSS CONDITION DESCRIPTION : Efface la description des conditions de défaite pour un joueur déterminé.

- CLEAR LOSS MESSAGE : Efface le message affiché lors d’une défaite pour un joueur déterminé.

- CLEAR VICTORY CONDITION DESCRIPTION : Efface la description des conditions de défaite pour un joueur déterminé.

- CLEAR VICTORY MESSAGE : Efface le message affiché en cas de victoire pour un joueur déterminé.

- COMBAT : Permet de déclencher un combat. Les troupes vaincues ne seront pas décomptées lors du prochain passage, vous n’aurez pas cette armée à l’usure !
• TARGET : Celui qui devra se battre. Généralement « THIS ARMY », l’armée qui a déclenché l’événement.
• OPPONENTS : L’armée à vaincre. Changez les « EMPTY » par des créatures.
• Branches : Selon le résultat du combat, vous dirigerez le script vers l’une ou l’autre des ces branches : « IF VICTORIOUS » désigne la victoire de l’armée que crée l’événement, « IF DEFEATED » désigne la victoire de l’armée qui a attaqué.

- CONDITIONAL ACTION : Cette fonction permet de distinguer deux branches du script en subordonnant la première à certaines conditions.
• IF : Condition à remplir. Elle fait appel à des fonctions décrites dans la troisième partie.
• THEN : Branche qui se réalisera si la condition définie précédemment est remplie.
• ELSE : Branche qui se réaliser si la condition n’est pas remplie.

- CONSTRUCT BUILDING (villes uniquement) : Permet de construire un bâtiment désigné dans la ville.

- DECREASE ATTACK : Permet de diminuer le nombre de points d’attaque d’un héros dans l’armée.
• TARGET : Héros qui subira le changement.
• AMOUNT : Quantité de points d’attaque à retirer.
• DURATION : L’effet sera soit permanent (« PERMANENT ») soit temporaire et disparaîtra après la prochaine bataille (« UNTIL NEXT BATTLE »).

- DECREASE CURRENT SPELL POINTS : Diminue le nombre de points de magie disponibles pour lancer des sorts.
• TARGET : Le héros qui sera affecté.
• AMOUNT : La quantité de points de magie à soustraire.

- DECREASE DEFENSE : Permet de diminuer le nombre de points de défense d’un héros dans l’armée.
• cf. Decrease attack pour les options.

- DECREASE LUCK : Diminue la chance de toute l’armée de manière temporaire.
• AMOUNT : Nombre de points de chance à retirer.

- DECREASE MAXIMUM SPELL POINTS : Diminue le nombre maximum de points de magie d’un héros.
• cf. DECREASE ATTACK pour les options.

- DECREASE MORALE : diminue le moral de l’armée de manière temporaire.
• AMOUNT : Nombre de points à retirer.

- DECREASE SPEED : Diminue la vitesse d’un héros dans l’armée.
• cf. DECREASE ATTACK pour les options.

- DELETE ADVENTURE OBJECT : Détruit un objet placé sous une bombe (ADVENTURE OBJECTS – MISCELLANOUS - EDITOR BOMB, apparence d’un gros pétard rouge).
• SELECT MARKER NAME : Sélectionnez le nom que vous avez donné à la « bombe » dans l’éditeur. Détruit théoriquement n’importe quel objet situé sous la bombe. Certains objets (villes, héros, mines) ne peuvent être supprimés.

- DISABLE STANDARD VICTORY CONDITIONS : La victoire classique (élimination de tous les ennemis) est désactivée pour un joueur. La victoire standard semble automatiquement désactivée lorsqu’il n’y a pas d’adversaire sur la carte au départ.
• WHICH PLAYER : Joueur concerné par cette désactivation.

- DISPLAY MESSAGE : Affiche un message qui peut être accompagné de sous actions comme l’attribution de troupes, d’artefacts, de ressources, etc.
• MESSAGE : le message à afficher.
• SUBACTIONS : Actions supplémentaires dont le résultat sera dans certains cas affiché dans la fenêtre de dialogue.

- DO NOTHING : Ne rien faire, cette option sert principalement quand une condition n’est pas remplie.

- ENABLE STANDARD VICTORY CONDITIONS : La victoire classique (élimination de tous les ennemis) est activée pour un joueur.
• WHICH PLAYER : Joueur concerné par cette activation.

- GIVE ARTIFACT : Donner un artefact à l’armée.
• TARGET : Armée à laquelle donner l’artefact.
• ARTIFACTS : Liste des objets à donner.

- GIVE CREATURE : Donner des créatures à l’armée (définir type et quantité). Il faut noter qu’il n’est pas possible de donner de cette manière des troupes correspondant forcément à l’alignement de l’armée.

- GIVE MATERIALS : Donner des ressources à un joueur.

- GIVE SKILL : Donner des compétences secondaires à un héros de l’armée (définir le héros cible, la compétence à donner et son niveau, et le niveau de cette compétence). Les compétences nécessaires pour obtenir le niveau souhaité seront automatiquement attribuées.

- GIVE SPELL : Donner un sort à un héros de l’armée.

- INCREASE ATTACK : Augmente l’attaque d’un héros cf. DECREASE ATTACK.

- INCREASE CURRENT MOVEMENT : Augmente le nombre de points de déplacement de l’armée pour la journée.

- INCREASE CURRENT SPELL POINTS : Donne des points de magie, cf. DECREASE CURRENT SPELL POINTS.

- INCREASE DEFENSE : Augmente le nombre de points de défense, cf. DECREASE DEFENSE.

- INCREASE EXPERIENCE : Donne un certain nombre de points d’expérience au héros cible.

- INCREASE EXPERIENCE LEVEL : Monte l’expérience du héros cible du nombre de niveaux déterminés. Le héros n’aura pas le choix de ses compétences. Le niveau maximum est 70.

- INCREASE LUCK : Augmente temporairement la chance de l’armée cible.

- INCREASE MAXIMUM SPELL POINTS : Augmente le nombre maximum de points de magie pour une durée déterminée ou de manière permanent pour le héros cible.

- INCREASE MORALE : Augmente le moral de l’armée cible du nombre de points déterminé.

- INCREASE SKILL : Améliore une compétence déjà acquise

- INCREASE SPEED : Augmente la vitesse du héros cible de manière temporaire ou permanente.

- LOSE : Le joueur désigné perd la partie.

- REMOVE SCRIPT : Le script est supprimé et ne pourra plus être réutilisé.

- REMOVE THIS OBJECT : Supprime l’objet qui a activé le script.

- SET BOOLEAN (TRUE/FALSE) VARIABLE : Définit une variable choisie par le concepteur comme étant vraie ou fausse. Le nom de la variable est au choix. Cette variable pourra par exemple servir à vérifier qu’une condition a été remplie.
• VARIABLE NAME : Nom de la variable. Le nom doit être exactement identique (majuscules, minuscules).
• NEW VALUE : Par défaut, la valeur d’une variable en début de partie est « FALSE ». Il est souvent plus facile de laisser cette valeur en début de partie et de la définir comme « TRUE » lorsque c’est nécessaire.

- SET LOSS DESCRIPTION CONDITION : Change le texte de description des conditions de défaite en cours de partie pour le joueur désigné.

- SET NUMERIC VARIABLE : Donne une valeur numérique à une variable. La valeur doit être comprise entre – 32767 et 32767.

- SET VICTORY CONDITION DESCRIPTION : Change le texte de description des conditions de victoire en cours de partie pour le joueur désigné.

- SET VICTORY MESSAGE : Change le message s’affichant lorsque le joueur désigné gagne la partie.

- TAKE ARTIFACTS : Enlève des artefacts à l’armée cible.

- TAKE CREATURES : Enlève des créatures à l’armée cible.

- TAKE MATERIALS : Enlève des ressources au joueur désigné.

- TRIGGER CUSTOM EVENT : Renvoie à un « TRIGGERABLE EVENT ». Fort pratique lorsque plusieurs évènements renvoient à une même conséquence.

- WIN : Fait gagner le joueur désigné.


Haut de page Retour au news

 

Les Conditions

Elles sont utilisées avec la fonction «CONDITIONAL ACTION».
Remarque : Le « ou exclusif » n’existe pas dans les scripts de Heroes 4.

- AND : Cette fonction est un ET logique. Elle renvoie à la première branche si les deux conditions sont vraies, sinon à la seconde.

- CAN GIVE SKILL : Vérifie si une compétence peut être donnée ou non. Par exemple, si le héros est grand maître en combat, on ne peut pas lui donner le niveau maître dans cette compétence.

- CERTAIN HERO IS DEAD : Vérifie si un héros est mort ou non. Cette condition peut par exemple être utilisée donner la victoire à un camp lorsque l’autre ne devait pas perdre ce héros.
• SELECT HERO NAME : Le nom du héros doit être identique à celui sélectionné ici.

- CERTAIN HERO IS IN PRISON : Vérifie si un héros a été jeté en prison. Cette condition peut être utilisée par exemple avec un OU logique pour déterminer les conditions de défaite ou de victoire.

- EQUALS : Vérifie si une variable ou un nombre est égale à une/un autre.

- FALSE : N/A – un grand mystère entoure cette fonction, puisqu’elle semble valider automatiquement la condition…

- GREATER THAN : Vérifie qu’une valeur est strictement supérieur à une autre.

- GREATER THAN OR EQUAL : Vérifie qu’une valeur est supérieure ou égale à une autre.

- HAS ALIGNMENT : Vérifie si l’armée est d’un certain alignement.

- HAS ARTIFACT : Vérifie si l’armée cible ou le joueur désigné (dans l’ensemble de ses armées) possède un (un seul) artefact déterminé.

- HAS CERTAIN HERO : Vérifie si l’armée cible comporte un héros déterminé par son nom. Cette fonction ne peut pas vérifier si un joueur possède le héros dans l’une quelconque de ses armées (voir PLAYER OWNS CERTAIN HERO POUR CETTE FONCTION).

- LESS THAN : Vérifie qu’une première valeur est strictement inférieure à une seconde.

- LESS THAN OR EQUAL : Vérifie qu’une première valeur est inférieure ou égale à une seconde.

- NOT : C’est le NON logique, utilisez cette fonction pour inverser une condition.

- OR : C’est le OU logique, la première branche sera activée si l’une ou l’autre des conditions déterminées est vraie ou si les deux sont vraies.

- PLAYER IS CERTAIN ALIGNMENT : Vérifie qu’un joueur est d’un certain alignement. C’est l’alignement choisi au départ.

- PLAYER IS CERTAIN COLOR : Vérifie la couleur du joueur. Cette fonction n’a d’intérêt qu’utilisée avec « CURRENT PLAYER », sinon vous vérifierez qu’un joueur est bien de sa couleur…

- PLAYER IS COMPUTER : Vérifie qu’un joueur désigné est un ordinateur.

- PLAYER IS ELIMINATED : Vérifie qu’un joueur désigné est éliminé.

- PLAYER IS HUMAN : Vérifie qu’un joueur désigné est humain.

- PLAYER OWNS CERTAIN HERO : Vérifie qu’un joueur désigné possède un héros nommé dans l’une quelconque de ses armées.

- PLAYER OWNS CERTAIN TOWN : Vérifie qu’un joueur désigné possède une ville nommée.

- TRUE : N/A – L’autre mystère : cette fonction semble invalider systématiquement la condition…

- VARIABLE : Valide la condition si une variable booléenne désignée a la valeur « TRUE ».


Haut de page Retour au news

 

Les Expressions Numériques

Elles sont utilisées par exemple dans les conditions EQUALS, LESS THAN, GREATER THAN, Etc. Ce sont les valeurs qui seront comparées entre elles par la suite.

- CURRENT DAY : Le jour actuel de jeu. Le 1er jour de la 3ème semaine du 2ème mois par exemple, est le jour 43.

- CURRENT DAY OF THE WEEK : Retourne une valeur de 1 à 7 selon le jour de la semaine.

- CURRENT MONTH : Désigne le numéro du mois actuel. Le premier mois a la valeur 1.

- CURRENT WEEK : Désigne le numéro de la semaine de jeu. Par exemple la deuxième semaine du deuxième mois est la semaine 6.

- CURRENT WEEK OF THE MONTH : Désigne le numéro de la semaine du mois actuel. Cette valeur va de 1 à 4

- DIVIDED BY : Désigne le résultat de la division d’une valeur par une autre comme valeur à comparer.

- EXPERIENCE LEVEL : Désigne le niveau d’expérience d’un héros déterminé de l’armée comme valeur à comparer.

- MATERIAL QUANTITY : Désigne la quantité d’une ressource déterminée possédée par un joueur comme valeur à comparer.

- MINUS : Désigne le résultat de la soustraction d’une valeur à une autre comme valeur à comparer.

- NEGATE : Désigne le résultat de la négation d’une valeur comme valeur à comparer.

- NUMBER : Désigne un nombre déterminé comme valeur à comparer. Les valeurs sont comprises entre –32767 et 32767.

- NUMBER OF CREATURES IN ARMY : Désigne le nombre de créatures d’un type déterminé de l’armée cible comme valeur à comparer.

- PLAYER ID : Désigne l’identité d’un joueur comme valeur à comparer (je n’ai trouvé aucune application concrète de cette fonction, elle permettrait éventuellement de recréer la fonction « PLAYER IS CERTAIN COLOR »).

- PLUS : Désigne le résultat de l’addition de deux valeurs comme valeur à comparer.

- RANDOM NUMBER : Désigne une valeur aléatoire comme valeur à comparer.
• MINIMUM VALUE : Valeur minimum comprise entre 0 et 32767, nécessairement inférieure à la valeur maximale.
• MAXIMUM VALUE : Valeur maximum comprise entre 0 et 32767, nécessairement supérieure à la valeur minimale.

- REMAINDER : Désigne le reste de la division de la première valeur par la deuxième comme valeur à comparer.

- SKILL MASTERY : Désigne le fait pour un héros cible de posséder une compétence déterminée comme valeur à comparer. Cette valeur booléenne doit être comparée à un « TRUE » ou un « FALSE ».

- TIMES : Désigne le résultat de la multiplication d’une valeur par une autre comme valeur à comparer.

- TOTAL NUMBER OF CREATURES IN ARMY : Désigne le nombre total de créatures dans l’armée comme valeur à comparer. Les héros ne sont pas comptés.

- TOTAL NUMBER OF HEROES IN ARMY : Désigne le nombre total de héros dans l’armée comme valeur à comparer. Les héros morts sont comptés.

- VARIABLE : Désigne une valeur déterminée et nommée par l’utilisateur comme valeur à comparer.


Haut de page Retour au news

 

Exemples de Scripts

SEUL LE JOUEUR BLEU POSSEDANT LE SAINT GRAAL PEUT PASSER… MAIS NOUS POUVONS DISCUTER…

Il est fréquent sur une carte de trouver des portes demandant de remplir certaines conditions pour passer, en voici un exemple.
Dans notre exemple il faut : une « quest gate » (ADVENTURE OBJECTS – QUESTS), un « quest requirement » accessible dans la fenêtre de propriétés de la « quest gate ».
Le but : laisser passer le joueur bleu porteur du graal, ou n’importe qui lorsqu’un pot de vin aurait été payé aux gardes.

QUEST REQUIREMENT
OR
AND
PLAYER IS CERTAIN COLOR (current player ; blue)
HAS ARTIFACT (grail)
VARIABLE (potdevin)

TRIGGERED SCRIPT
CONDITIONAL ACTION
case if : AND
1ère case : NOT
AND
1ère case : PLAYER IS CERTAIN COLOR (current player ; blue)
2de case : HAS ARTIFACT (grail)
2de case : NOT
VARIABLE (potdevin)
case then : CONDITIONAL ACTION
GREATER THAN OR EQUALS
case if : TIMES
1ère case : MATERIAL QUANTITY (gold : 20000)
2de case : 5
case then : ASK QUESTION (case ask : « Notre mission est de ne laisser passer que le héros bleu porteur du Saint Graal. Nous pourrions vous laisser passer, mais comprenez-nous, nous sommes des nains et nous aimons l’or… disons que 100000 pièces nous occuperaient suffisamment longtemps pour qu’une armée passe cette porte… ça vous tente ?»)
case If yes : SEQUENCE
nouvelle action : TAKE MATERIALS (gold : 100000)
nouvelle action : SET VARIABLE (potdevin ; TRUE)
nouvelle action : DISPLAY MESSAGE (Les nains se sont rués sur l’or et ne voient effectivement plus rien d’autre… presque surprenant !)
case If no : DISPLAY MESSAGE (« Radins ! »)
case else : DISPLAY MESSAGE (« Pas d’or, pas de discussion… »)
case else : DO NOTHING

LE SCRIPT DE LA MORT SUBITE

Imaginons une carte multijoueur dans laquelle les adversaires auraient la possibilité de cacher sans cesse des héros dans le but de reprendre leur château lorsque celui-ci se viderait. Le jeu deviendrait vite exaspérant. Disons qu’il y a trois joueurs sur cette carte : bleu, rouge, vert. La mort subite provoquera la défaite d’un joueur s’il ne possède plus aucun château.
Dans notre exemple, il faut : des châteaux nommés, disons 3, et un script de type « CONTINUOUS EVENT » qui détectera si un joueur ne possède plus de château.
Les châteaux porterons dans cette exemple les noms de Villerouge, Villebleue, et Villeverte.

CONTINUOUS EVENT (nom : mortsubite)
SEQUENCE
nouvelle action : CONDITIONAL ACTION
case if : EQUALS : 1ère case : CURRENT DAY; 2de case : 168
case then : DISPLAY MESSAGE « Six mois ont passé, c’est la mort subite. Le premier héros sans château perd la partie. »
case else : DO NOTHING
nouvelle action : CONDITIONAL ACTION
case if : GREATER THAN OR EQUAL
1ère case : CURRENT DAY
2de case : 168
case then : SEQUENCE
nouvelle action : CONDITIONAL ACTION
case if : AND
1ère case : AND
1ère case : NOT
PLAYER OWNS CERTAIN TOWN (Blue Player, Villerouge)
2de case : NOT
PLAYER OWNS CERTAIN TOWN (Blue Player, Villebleue)
2de case : NOT
PLAYER OWNS CERTAIN TOWN (Blue Player, Villeverte)
case then : LOSE (Blue Player)
case else : DO NOTHING
nouvelle action : CONDITIONAL ACTION
case if : AND
1ère case : AND
1ère case : NOT
PLAYER OWNS CERTAIN TOWN (Red Player, Villerouge)
2de case : NOT
PLAYER OWNS CERTAIN TOWN (Red Player, Villebleue)
2de case : NOT
PLAYER OWNS CERTAIN TOWN (Red Player, Villeverte)
case then : LOSE (Red Player)
case else : DO NOTHING
nouvelle action : CONDITIONAL ACTION
case if : AND
1ère case : AND
1ère case : NOT
PLAYER OWNS CERTAIN TOWN (Green Player, Villerouge)
2de case : NOT
PLAYER OWNS CERTAIN TOWN (Green Player, Villebleue)
2de case : NOT
PLAYER OWNS CERTAIN TOWN (Green Player, Villeverte)
case then : LOSE (Green Player)
case else : DO NOTHING
case else : DO NOTHING


Haut de page Retour au news

 

Heroes of might and magic 3, 4, 5, cartes, maps.
Optimisé pour une résolution de 1024x768 et plus | v1.0 © 2003 RoZ - Archangel Castle - Heroes of might and magic