adonthell-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[adonthell-wastesedge-commits] Release_0-3-3 e5b6206 15/50: UPDATED the


From: Kai Sterker
Subject: [adonthell-wastesedge-commits] Release_0-3-3 e5b6206 15/50: UPDATED the last few schedules for the new event system
Date: Mon, 25 Jul 2016 18:15:31 +0000 (UTC)

tag: Release_0-3-3
commit e5b620600b452eb96b08221237ec1f88249691fa
Author: Kai Sterker <address@hidden>
Commit: Kai Sterker <address@hidden>

    UPDATED the last few schedules for the new event system
    ADDED file with player text for i18n
    FIXED a few bugs caused by the schedule rewrite (hope I got all!)
---
 scripts/actions/talk.py                       |    4 +-
 scripts/dialogues/bjarn_start.py              |    2 +-
 scripts/dialogues/erek_start.py               |    8 +
 scripts/dialogues/jelom_2nd.py                |   17 +-
 scripts/init.py                               | 1340 +++++++++++++++++++++++--
 scripts/modules/player_text.py                |   31 +
 scripts/schedules/mapcharacters/bjarn.py      |   57 +-
 scripts/schedules/mapcharacters/erek.py       |  158 ++-
 scripts/schedules/mapcharacters/jelom.py      |    5 +
 scripts/schedules/mapcharacters/silverhair.py |    7 +-
 scripts/schedules/mapcharacters/to_cellar.py  |   45 +-
 11 files changed, 1463 insertions(+), 211 deletions(-)

diff --git a/scripts/actions/talk.py b/scripts/actions/talk.py
index 3a74a70..a4f8696 100755
--- a/scripts/actions/talk.py
+++ b/scripts/actions/talk.py
@@ -24,7 +24,7 @@ class talk:
         # -- activate the characters' schedules
         # player isn't event-driven yet
         args[0].set_schedule_active (1)
-        # args[0].resume ()
+        args[0].resume ()
         args[1].resume ()
 
         adonthell.gamedata_engine ().set_control_active (1)
@@ -33,8 +33,8 @@ class talk:
         if requester.get_name() == adonthell.gamedata_player ().get_name():
             # -- deactivate the schedule of the characters involved
             self.myself.pause ()
+            requester.pause ()
             # player isn't event-driven yet
-            # requester.pause ()
             requester.set_schedule_active (0)
 
             # -- don't allow access to main menu and stuff
diff --git a/scripts/dialogues/bjarn_start.py b/scripts/dialogues/bjarn_start.py
index eaa49d3..f5f971d 100755
--- a/scripts/dialogues/bjarn_start.py
+++ b/scripts/dialogues/bjarn_start.py
@@ -73,7 +73,7 @@ class bjarn_start (dialogue.base):
        code = [\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"bjarn_door_open\" , 1)\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"bjarn_door_open\" , 3)\n",\
-               "adonthell.gamedata_get_character(\"Erek 
Stonebreaker\").set_val (\"leave_bjarn\" , 
1)\nadonthell.gamedata_get_character(\"Erek Stonebreaker\").set_schedule_active 
(1)\n",\
+               "adonthell.gamedata_get_character(\"Erek 
Stonebreaker\").do_stuff 
(\"leave_bjarn\")\nadonthell.gamedata_get_character(\"Erek 
Stonebreaker\").resume ()\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"ask_packed_gems\" , 3)\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val (\"bjarn_lies\" 
, 1)\n"]
 
diff --git a/scripts/dialogues/erek_start.py b/scripts/dialogues/erek_start.py
index 72930a9..9b4fb1e 100755
--- a/scripts/dialogues/erek_start.py
+++ b/scripts/dialogues/erek_start.py
@@ -291,6 +291,10 @@ class erek_start (dialogue.base):
        def __del__(self):
                # -- 'teleport' to Bjarn's room
                if adonthell.gamedata_get_quest("demo").get_val 
("bjarn_door_open") == 2:
+                   bjarn = adonthell.gamedata_get_character ("Bjarn Fingolson")
+                   bjarn.do_stuff ("await_player")
+                   bjarn.time_callback_string ("1t", "start_talking")
+               
                    erek = adonthell.gamedata_get_character ("Erek 
Stonebreaker")
                    import events
                    erek.set_val ("goto", erek.submap ())
@@ -299,6 +303,10 @@ class erek_start (dialogue.base):
                
                # -- Teleport to Jelom
                if adonthell.gamedata_get_quest("demo").get_val 
("convince_jelom") == 2:
+                   jelom = adonthell.gamedata_get_character ("Jelom Rasgar")
+                   jelom.jump_to (9, 2, 3, 1)
+                   jelom.time_callback_string ("1t", "start_talking")
+               
                    erek = adonthell.gamedata_get_character ("Erek 
Stonebreaker")
                    erek.set_schedule_active (0)
                    import events
diff --git a/scripts/dialogues/jelom_2nd.py b/scripts/dialogues/jelom_2nd.py
index ef20067..8e76b50 100644
--- a/scripts/dialogues/jelom_2nd.py
+++ b/scripts/dialogues/jelom_2nd.py
@@ -115,30 +115,33 @@ class jelom_2nd (dialogue.base):
 
        def __del__(self):
                if adonthell.gamedata_get_quest("demo").get_val ("the_end") == 
1:
+                   bjarn = adonthell.gamedata_get_character("Bjarn Fingolson")
+                   bjarn.do_stuff ("await_player")
+               
                    # make all dudes go down to Bjarn
                    shair = adonthell.gamedata_get_character("Imoen Silverhair")
                    shair.set_schedule ("to_cellar")
-                   shair.set_val ("delay", 5)
+                   shair.time_callback_string ("2t", "walk")
                
                    jelom = adonthell.gamedata_get_character("Jelom Rasgar")
-                   jelom.set_val ("delay", 20)
                    jelom.set_schedule ("to_cellar")
+                   jelom.time_callback_string ("1t", "walk")
                                
                    player = adonthell.gamedata_player ()
-                   player.set_val ("delay", 35)
                    player.set_schedule ("to_cellar")
+                   player.time_callback_string ("2t", "walk")
                                
                    erek = adonthell.gamedata_get_character("Erek Stonebreaker")
-                   erek.set_schedule_active (1)
+                   erek.resume ()
                    erek.set_schedule ("to_cellar")
-                   erek.set_val ("delay", 45)
+                   erek.time_callback_string ("3t", "walk")
                                
                    fnir = adonthell.gamedata_get_character("Fellnir Kezular")
                    fnir.set_schedule ("to_cellar")
-                   fnir.set_val ("delay", 130)
+                   fnir.time_callback_string ("4t", "walk")
                                
                    illig = adonthell.gamedata_get_character("Tristan Illig")
                    illig.set_schedule ("to_cellar")
-                   illig.set_val ("delay", 300)
+                   illig.time_callback_string ("7t", "walk")
                
 
diff --git a/scripts/init.py b/scripts/init.py
index 01f1577..dc0de19 100755
--- a/scripts/init.py
+++ b/scripts/init.py
@@ -12,51 +12,55 @@
 #  See the COPYING file for more details
 #
 
-import adonthell
-import main_menu
+
+from adonthell import *
+from main_menu import *
 import time
 
 class title_screen:
     def __init__ (self):
         # -- load our music
-        adonthell.audio_load_background (0, "audio/at-demo-1.ogg")
+        audio_load_background (0, "audio/at-demo-1.ogg")
+        audio_load_wave (0, "audio/select.wav")
+        audio_load_wave (1, "audio/switch.wav")
+        audio_load_wave (2, "audio/unselect.wav")
 
         # -- The themes and fonts we'll use
-        adonthell.win_manager_add_theme ("original")
-        adonthell.win_manager_add_theme ("silverleaf")
-
-        adonthell.win_manager_add_font ("yellow")
-        adonthell.win_manager_add_font ("red")
-        adonthell.win_manager_add_font ("violet")
-        adonthell.win_manager_add_font ("blue")
-        adonthell.win_manager_add_font ("green")
-        adonthell.win_manager_add_font ("white")
-        adonthell.win_manager_add_font ("original")
-        adonthell.win_manager_add_font ("silverleaf")
+        win_manager_add_theme ("original")
+        win_manager_add_theme ("silverleaf")
+
+        win_manager_add_font ("yellow")
+        win_manager_add_font ("red")
+        win_manager_add_font ("violet")
+        win_manager_add_font ("blue")
+        win_manager_add_font ("green")
+        win_manager_add_font ("white")
+        win_manager_add_font ("original")
+        win_manager_add_font ("silverleaf")
 
         # -- load our images
-        self.bag_o = adonthell.win_image ()
+        self.bag_o = win_image ()
         self.bag_o.load_raw ("gfx/cutscene/jewelbag_open.img")
         self.bag_o.set_alpha (0)
         self.bag_o.move (0, 0)
         self.bag_o.pack ()
         self.bag_o.set_visible (0)
 
-        self.bag_c = adonthell.win_image ()
+        self.bag_c = win_image ()
         self.bag_c.load_raw ("gfx/cutscene/jewelbag_closed.img")
         self.bag_c.set_visible (1)
         self.bag_c.set_alpha (0)
         self.bag_c.move (0, 0)
         self.bag_c.pack ()
 
-        self.bag_t = adonthell.win_image ()
+        self.bag_t = win_image ()
         self.bag_t.load_raw ("gfx/cutscene/adonthell_03.img")
         self.bag_t.move (33, 86)
         self.bag_t.pack ()
         self.bag_t.set_visible (0)
 
         # -- create the window
-        self.window = adonthell.win_container ()
+        self.window = win_container ()
         self.window.move (0, 0)
         self.window.resize (320, 240)
         self.window.set_visible_border (0)
@@ -69,30 +73,30 @@ class title_screen:
         self.window.set_activate (1)
         self.window.set_visible (1)
 
-        self.window.py_signal_connect (self.on_update, 
adonthell.win_event_UPDATE)
-        self.window.py_signal_connect (self.on_draw, adonthell.win_event_DRAW)
+        self.window.py_signal_connect (self.on_update, win_event_UPDATE)
+        self.window.py_signal_connect (self.on_draw, win_event_DRAW)
 
         self.draw_func = self.initial_fade_in
 
         self.alpha = 0
 
-        adonthell.audio_play_background (0)
+        audio_play_background (0)
 
         # -- launch the engine
-        adonthell.gametime_start_action ()
-        adonthell.gamedata_engine ().main (self.window, "title_sequence")
+        gametime_start_action ()
+        gamedata_engine ().main (self.window, "title_sequence")
 
 
     def __del__ (self):
         print "Destructor called"
-        adonthell.gamedata_engine ().main_quit ()
+        gamedata_engine ().main_quit ()
 
     # -- catch ESC key
     def on_update (self):
         if self.draw_func != None:
             # -- Skip intro sequence
-            if adonthell.input_has_been_pushed (adonthell.SDLK_ESCAPE):
-                adonthell.audio_fade_out_background (500)
+            if input_has_been_pushed (SDLK_ESCAPE):
+                audio_fade_out_background (500)
                 self.bag_t.set_visible (0)
                 self.bag_c.set_visible (0)
                 self.bag_o.set_visible (1)
@@ -118,7 +122,7 @@ class title_screen:
 
         else:
             # -- fade in
-            self.alpha = self.alpha + adonthell.gametime_frames_to_skip() + 1
+            self.alpha = self.alpha + gametime_frames_to_skip() + 1
             if self.alpha > 255: self.alpha = 255
             self.bag_c.set_alpha (self.alpha)
 
@@ -148,16 +152,16 @@ class title_screen:
 
         else:
             # -- fade in
-            self.alpha = self.alpha + adonthell.gametime_frames_to_skip()
+            self.alpha = self.alpha + gametime_frames_to_skip()
             if self.alpha > 255: self.alpha = 255
             self.bag_o.set_alpha (self.alpha)
 
     # -- Show the main menu
     def show_menu (self, a, b):
-        menu = main_menu.main_menu (a, b)
+        menu = main_menu (a, b)
         
         # -- open the menu
-        adonthell.gamedata_engine ().main (menu, "game_menu")
+        gamedata_engine ().main (menu, "game_menu")
         
         # -- once the menu is closed, see what we got
         retval = menu.get_result ()
@@ -165,17 +169,19 @@ class title_screen:
         # -- start new game
         if retval == 1:
             # -- let the player chose a name for his character
-            import character_screen
-            cs = character_screen.character_screen ()
-            adonthell.gamedata_engine ().main (cs, "character_screen")
-
-            adonthell.gamedata_engine ().fade_out ()
+            from character_screen import *
+            cs = character_screen ()
+            gamedata_engine ().main (cs, "character_screen")
+                
+            gamedata_engine ().fade_out ()
             self.cleanup ()
 
             # -- load the initial game
-            adonthell.gamedata_load (0)
+            # gamedata_load (0)
+            gamedata_load_characters (0)
+            gamedata_load_quests (0)
             adonthell.gamedata_player ().set_name (cs.name)
-            
+                
             # -- on to the intro
             self.play_intro ()
             
@@ -183,17 +189,17 @@ class title_screen:
         elif retval == 2:
             self.window.set_visible (0)
             self.cleanup ()
-            adonthell.gamedata_engine ().mapview_start ()
-            adonthell.gamedata_engine ().set_control_active (1)
-            adonthell.gamedata_engine ().fade_in ()
+            gamedata_engine ().mapview_start ()
+            gamedata_engine ().set_control_active (1)
+            gamedata_engine ().fade_in ()
 
         # -- quit the game
         else:
-            adonthell.gamedata_engine ().main_quit ()
+            gamedata_engine ().main_quit ()
 
     # -- cleanup
     def cleanup (self):
-        adonthell.win_manager_get_active ().remove (self.window)
+        win_manager_get_active ().remove (self.window)
 
         self.window.remove (self.bag_o)
         self.window.remove (self.bag_c)
@@ -203,28 +209,1242 @@ class title_screen:
         del self.bag_c
         del self.bag_t
 
-        adonthell.audio_fade_out_background (500)
-        adonthell.audio_unload_background (0)
+        audio_fade_out_background (500)
+        audio_unload_background (0)
 
 
     def play_intro (self):
-        # -- Launches the intro
-
+        # Launches the intro
         import intro
 
-        # -- start the mapengine
-        adonthell.gamedata_engine ().mapview_start ()
-        adonthell.gametime_update ()
-        adonthell.gamedata_engine ().fade_in ()
+        # Creates the map engine context for the game start
+        lm = gamedata_engine ().get_landmap ()
+        lm.load ("test.map")
+        
+        player = gamedata_player ()
+        player.set_val ("gender", MALE)
+        player.set_val ("race", HALFELF)
+        player.set_val ("type", PLAYER)
+        player.load ("player.mchar")
+        player.set_map (lm)
+        player.jump_to (0, 4, 18)
+        player.stand_east ()
+        player.set_schedule ("intro")
+        player.time_callback_string ("0t", "talk_to_talan")
+        
+        gamedata_engine ().set_mapview_schedule ("center_character", 
(player.get_id (),))
+
+        # Setting up the map events
+        # Teleport events
+
+        # From yard to common room
+        # Open the inn door event
+        ev = leave_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 18
+        ev.y = 14
+        ev.dir = WALK_NORTH
+        ev.set_script ("open_inn_door")
+        lm.add_event (ev)
+
+        # Close the inn door event
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 18
+        ev.y = 13
+        ev.set_script ("open_inn_door")
+        lm.add_event (ev)
+
+        # Teleport event
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 18
+        ev.y = 13
+        ev.set_script ("teleport", (1, 13, 7, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From common room to yard
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 1
+        ev.x = 13
+        ev.y = 8
+        ev.set_script ("teleport", (0, 18, 14, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From common room to parlor
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 1
+        ev.x = 14
+        ev.y = 4
+        ev.set_script ("teleport", (2, 1, 4, STAND_EAST))
+        lm.add_event (ev)
+
+        # From parlor to common room
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 2
+        ev.x = 0
+        ev.y = 4
+        ev.set_script ("teleport", (1, 13, 4, STAND_WEST))
+        lm.add_event (ev)
+
+        # From common room to kitchen
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 1
+        ev.x = 1
+        ev.y = 8
+        ev.set_script ("teleport", (3, 1, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From kitchen to common room
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 3
+        ev.x = 1
+        ev.y = 1
+        ev.set_script ("teleport", (1, 1, 7, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From kitchen to yard
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 3
+        ev.x = 7
+        ev.y = 3
+        ev.set_script ("teleport", (0, 12, 14, STAND_EAST))
+        lm.add_event (ev)
+
+        # From yard to kitchen
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 11
+        ev.y = 14
+        ev.set_script ("teleport", (3, 6, 3, STAND_WEST))
+        lm.add_event (ev)
+
+        # From cellar to bathroom
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 3
+        ev.y = 5
+        ev.set_script ("teleport", (5, 4, 6, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From bathroom to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 5
+        ev.x = 4
+        ev.y = 7
+        ev.set_script ("teleport", (4, 3, 6, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From cellar to alek's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 0
+        ev.y = 6
+        ev.set_script ("teleport", (6, 5, 6, STAND_WEST))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 0
+        ev.y = 7
+        ev.set_script ("teleport", (6, 5, 7, STAND_WEST))
+        lm.add_event (ev)
+
+        # From alek's to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 6
+        ev.x = 6
+        ev.y = 6
+        ev.set_script ("teleport", (4, 1, 6, STAND_EAST))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 6
+        ev.x = 6
+        ev.y = 7
+        ev.set_script ("teleport", (4, 1, 7, STAND_EAST))
+        lm.add_event (ev)
+
+        # From cellar to storage
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 0
+        ev.y = 9
+        ev.set_script ("to_storage", (8, 6, 3, STAND_WEST))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 0
+        ev.y = 10
+        ev.set_script ("to_storage", (8, 6, 4, STAND_WEST))
+        lm.add_event (ev)
+
+        # From storage to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 8
+        ev.x = 7
+        ev.y = 3
+        ev.set_script ("teleport", (4, 1, 9, STAND_EAST))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 8
+        ev.x = 7
+        ev.y = 4
+        ev.set_script ("teleport", (4, 1, 10, STAND_EAST))
+        lm.add_event (ev)
+
+        # From cellar to dwarves'
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 10
+        ev.y = 6
+        ev.set_script ("cellar_to_bjarn", (7, 1, 6, STAND_EAST))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 10
+        ev.y = 7
+        ev.set_script ("cellar_to_bjarn", (7, 1, 7, STAND_EAST))
+        lm.add_event (ev)
+
+        # From dwarves' to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 7
+        ev.x = 0
+        ev.y = 6
+        ev.set_script ("teleport", (4, 9, 6, STAND_WEST))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 7
+        ev.x = 0
+        ev.y = 7
+        ev.set_script ("teleport", (4, 9, 7, STAND_WEST))
+        lm.add_event (ev)
+
+        # From 1st to Fellnir's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 9
+        ev.x = 9
+        ev.y = 2
+        ev.set_script ("teleport", (10, 1, 3, STAND_EAST))
+        lm.add_event (ev)
+
+        # From Fellnir's to 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 0
+        ev.y = 3
+        ev.set_script ("teleport", (9, 8, 2, STAND_WEST))
+        lm.add_event (ev)
+
+        # From 1st to Frostbloom's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 9
+        ev.x = 0
+        ev.y = 2
+        ev.set_script ("teleport", (11, 4, 3, STAND_WEST))
+        lm.add_event (ev)
+
+        # From Frostbloom's to 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 11
+        ev.x = 5
+        ev.y = 3
+        ev.set_script ("teleport", (9, 1, 2, STAND_EAST))
+        lm.add_event (ev)
+
+        # From 1st to Player's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 9
+        ev.x = 7
+        ev.y = 4
+        ev.set_script ("teleport", (12, 5, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From Player's to 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 12
+        ev.x = 5
+        ev.y = 1
+        ev.set_script ("teleport", (9, 7, 3, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From 1st to Silverhair's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 9
+        ev.x = 1
+        ev.y = 7
+        ev.set_script ("fst_to_silverhair", (13, 5, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From Silverhair's to 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 13
+        ev.x = 5
+        ev.y = 1
+        ev.set_script ("silverhair_to_fst", (9, 1, 6, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From 2nd to Redwyne's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 14
+        ev.x = 3
+        ev.y = 5
+        ev.set_script ("teleport", (15, 1, 5, STAND_EAST))
+        lm.add_event (ev)
+
+        # From Redwyne's to 2nd
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 15
+        ev.x = 0
+        ev.y = 5
+        ev.set_script ("teleport", (14, 2, 5, STAND_WEST))
+        lm.add_event (ev)
+
+        # From 2nd to Oliver's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 14
+        ev.x = 0
+        ev.y = 5
+        ev.set_script ("teleport", (16, 6, 5, STAND_WEST))
+        lm.add_event (ev)
+
+        # From Oliver's to 2nd
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 16
+        ev.x = 7
+        ev.y = 5
+        ev.set_script ("teleport", (14, 1, 5, STAND_EAST))
+        lm.add_event (ev)
+
+        # From 2nd to Illig's
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 14
+        ev.x = 1
+        ev.y = 8
+        ev.set_script ("teleport", (17, 6, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From Illig's to 2nd
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 17
+        ev.x = 6
+        ev.y = 1
+        ev.set_script ("teleport", (14, 1, 7, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From common room to 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 1
+        ev.x = 12
+        ev.y = 1
+        ev.set_script ("teleport", (9, 8, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From 1st to common room
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 9
+        ev.x = 8
+        ev.y = 1
+        ev.set_script ("teleport", (1, 12, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From 1st to 2nd
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 9
+        ev.x = 6
+        ev.y = 1
+        ev.set_script ("teleport", (14, 4, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From 2nd to 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 14
+        ev.x = 4
+        ev.y = 1
+        ev.set_script ("teleport", (9, 6, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From common room to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 1
+        ev.x = 9
+        ev.y = 1
+        ev.set_script ("teleport", (4, 6, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From cellar to common room
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 6
+        ev.y = 1
+        ev.set_script ("teleport", (1, 9, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From cellar to kitchen
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 3
+        ev.y = 13
+        ev.set_script ("teleport", (3, 6, 5, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From kitchen to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 3
+        ev.x = 6
+        ev.y = 6
+        ev.set_script ("teleport", (4, 3, 12, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From yard to guards'
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 12
+        ev.y = 23
+        ev.set_script ("teleport", (18, 7, 3, STAND_WEST))
+        lm.add_event (ev)
+
+        # From guards' to yard
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 18
+        ev.x = 8
+        ev.y = 3
+        ev.set_script ("teleport", (0, 13, 23, STAND_EAST))
+        lm.add_event (ev)
+
+        # From guards ground to guards 1st
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 18
+        ev.x = 1
+        ev.y = 8
+        ev.set_script ("teleport", (19, 2, 8, STAND_EAST))
+        lm.add_event (ev)
+
+        # From guards 1st to guards ground
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 19
+        ev.x = 1
+        ev.y = 8
+        ev.set_script ("teleport", (18, 2, 8, STAND_EAST))
+        lm.add_event (ev)
+
+        # From barn ext. to barn int.
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 24
+        ev.y = 13
+        ev.set_script ("teleport", (20, 1, 6, STAND_NORTH))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 25
+        ev.y = 13
+        ev.set_script ("teleport", (20, 2, 6, STAND_NORTH))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 26
+        ev.y = 13
+        ev.set_script ("teleport", (20, 3, 6, STAND_NORTH))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 27
+        ev.y = 13
+        ev.set_script ("teleport", (20, 4, 6, STAND_NORTH))
+        lm.add_event (ev)
+
+        # From barn int. to barn ext.
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 20
+        ev.x = 1
+        ev.y = 7
+        ev.set_script ("teleport", (0, 24, 14, STAND_SOUTH))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 20
+        ev.x = 2
+        ev.y = 7
+        ev.set_script ("teleport", (0, 25, 14, STAND_SOUTH))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 20
+        ev.x = 3
+        ev.y = 7
+        ev.set_script ("teleport", (0, 26, 14, STAND_SOUTH))
+        lm.add_event (ev)
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 20
+        ev.x = 4
+        ev.y = 7
+        ev.set_script ("teleport", (0, 27, 14, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From cellar to barn
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 12
+        ev.y = 1
+        ev.set_script ("teleport", (20, 1, 3, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From barn to cellar
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 20
+        ev.x = 1
+        ev.y = 2
+        ev.set_script ("teleport", (4, 12, 2, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From barn to loft
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 20
+        ev.x = 3
+        ev.y = 2
+        ev.set_script ("teleport", (21, 1, 3, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From loft to barn
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 21
+        ev.x = 1
+        ev.y = 2
+        ev.set_script ("teleport", (20, 3, 3, STAND_SOUTH))
+        lm.add_event (ev)
+
+        # From loft to veranda
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 21
+        ev.x = 0
+        ev.y = 7
+        ev.set_script ("lft_to_vnd", (0, 23, 12, STAND_WEST))
+        lm.add_event (ev)
+
+        # From veranda to loft
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 24
+        ev.y = 12
+        ev.set_script ("vnd_to_lft", (21, 1, 7, STAND_EAST))
+        lm.add_event (ev)
+
+        # From veranda to silverhair
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 11
+        ev.y = 12
+        ev.set_script ("brn_to_silverhair", (13, 6, 4, STAND_WEST))
+        lm.add_event (ev)
 
+        # From silverhair to veranda
+        ev = enter_event ()
+        ev.thisown = C
+        ev.submap = 13
+        ev.x = 6
+        ev.y = 4
+        ev.set_script ("silverhair_to_brn", (0, 12, 12, STAND_EAST))
+        lm.add_event (ev)
+
+        # Action events
+
+        # -- Common room
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 1
+        ev.x = 10
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "That clock seems to be late!"))
+        lm.add_event (ev)
+
+        # -- Fellnir
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 4
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Aw, a midget yeti, how cute!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 3
+        ev.y = 6
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'd better not touch this ... What if it explodes??"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 4
+        ev.y = 6
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'd better not touch this ... What if it explodes??"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 2
+        ev.y = 5
+        ev.dir = STAND_EAST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'd better not touch this ... What if it explodes??"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 5
+        ev.y = 5
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'd better not touch this ... What if it explodes??"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 3
+        ev.y = 4
+        ev.dir = STAND_SOUTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'd better not touch this ... What if it explodes??"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 10
+        ev.x = 4
+        ev.y = 4
+        ev.dir = STAND_SOUTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'd better not touch this ... What if it explodes??"))
+        lm.add_event (ev)
+
+        # -- Outside
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 6
+        ev.y = 17
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Closed. We are all imprisoned here ..."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 6
+        ev.y = 18
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Closed. We are all imprisoned here ..."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 6
+        ev.y = 19
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Closed. We are all imprisoned here ..."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 10
+        ev.y = 17
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "No. I certainly won't climb up there!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 18
+        ev.y = 14
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "The entrance to the Inn."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 0
+        ev.x = 13
+        ev.y = 23
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "That's the guard's house."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 17
+        ev.x = 1
+        ev.y = 6
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "There's a plaque that reads \"Tristan Illig\"."))
+        lm.add_event (ev)
+
+        # -- Guard's house
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 19
+        ev.x = 2
+        ev.y = 5
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Hm. There are plenty of books on singing inside."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 19
+        ev.x = 6
+        ev.y = 4
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Locked. The plaque reads \"Bregon Arwold\"."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 19
+        ev.x = 6
+        ev.y = 8
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Locked. The plaque reads \"Jelom Rasgar\"."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 6
+        ev.x = 1
+        ev.y = 4
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "The plaque on that chest reads \"Alek Endhelm\"."))
+        lm.add_event (ev)
+
+        # -- Fingolson
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 7
+        ev.x = 7
+        ev.y = 3
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I doubt Master Fingolson would be happy if I went through his 
things ..."))
+        lm.add_event (ev)
+
+        # -- Bath
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 5
+        ev.x = 2
+        ev.y = 3
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Hm, nothing hidden in there!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 5
+        ev.x = 4
+        ev.y = 3
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I have already bathed this month!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 5
+        ev.x = 5
+        ev.y = 3
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I have already bathed this month!"))
+        lm.add_event (ev)
+
+        # -- Silverhair
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 13
+        ev.x = 1
+        ev.y = 6
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "No, I won't touch my mistress' belongings!"))
+        lm.add_event (ev)
+
+        # -- Barrels in the cellar hallway
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 7
+        ev.y = 3
+        ev.dir = STAND_SOUTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Mmmh ... this wine is really tasty!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 8
+        ev.y = 4
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I'm sure Master Redwyne won't mind if I take a sip."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 7
+        ev.y = 5
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Hic! Whoa, that's quite strong!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 4
+        ev.y = 10
+        ev.dir = STAND_SOUTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "'Made in Cirdanth', now that's more like it!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 4
+        ev.y = 11
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "'Made in Cirdanth', now that's more like it!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 4
+        ev.y = 10
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "'Made in Uzdun' kal'? How cheap is this Master Redwyne?"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 4
+        ev.y = 8
+        ev.dir = STAND_SOUTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "'Made in Uzdun' kal'? How cheap is this Master Redwyne?"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 4
+        ev.x = 3
+        ev.y = 9
+        ev.dir = STAND_EAST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "'Made in Uzdun' kal'? How cheap is this Master Redwyne?"))
+        lm.add_event (ev)
+
+        # -- Parlour
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 2
+        ev.x = 1
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "\"Teach yourself Elvish in 21 days\"?"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 2
+        ev.x = 2
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "\"There and back again\", how unimaginative!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 2
+        ev.x = 4
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Oh dear, \"The Art of making Yetis\", by R. Frostbloom"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 2
+        ev.x = 5
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "This is nothing compared to Lady Silverhair's reading room!"))
+        lm.add_event (ev)
+
+        # -- Player's room
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 12
+        ev.x = 3
+        ev.y = 2
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Hey, that looks like Adonthell!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 12
+        ev.x = 1
+        ev.y = 3
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I cannot rest when my mistress needs me!"))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 12
+        ev.x = 2
+        ev.y = 3
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "I cannot rest when my mistress needs me!"))
+        lm.add_event (ev)
+
+        # -- stables
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 21
+        ev.x = 1
+        ev.y = 6
+        ev.dir = STAND_WEST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "An old, dusty chest."))
+        lm.add_event (ev)
+        
+        # -- pantry
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 8
+        ev.x = 3
+        ev.y = 5
+        ev.dir = STAND_NORTH
+        ev.set_script ("character_speak", (player.get_id (), \
+            "Lady Silverhair's luggage, but not what I am looking for."))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 8
+        ev.x = 4
+        ev.y = 5
+        ev.dir = STAND_NORTH
+        ev.set_script ("search_chest", (player.get_id (),))
+        lm.add_event (ev)
+
+        ev = action_event ()
+        ev.thisown = C
+        ev.submap = 21
+        ev.x = 2
+        ev.y = 4
+        ev.dir = STAND_EAST
+        ev.set_script ("character_speak", (player.get_id (), \
+            "An old, empty crate!"))
+        lm.add_event (ev)
+
+        # Speak events
+        
+        ev = enter_event ()
+        ev.thisown = C
+        ev.set_repeat (1)
+        ev.submap = 12
+        ev.x = 5
+        ev.y = 4
+        ev.c = gamedata_get_character ("Oliver Redwyne")
+        ev.set_script ("speak", ("Oliver Redwyne",))
+        lm.add_event (ev)
+
+         # -- Now setup the characters
+        lucia = gamedata_get_character ("Lucia Redwyne")
+        lucia.set_dialogue ("dialogues.lucia_start")
+        lucia.load ("lucia.mchar")
+        lucia.set_map (gamedata_engine ().get_landmap ())
+        lucia.jump_to (3, 4, 3)
+        lucia.set_action ("talk")
+        lucia.set_schedule ("lucia")
+        lucia.stand_south ()
+        lucia.set_portrait ("lucia.pnm")
+        lucia.time_callback_string ("30t", "walk")
+        lucia.time_callback_string ("15t", "speak")
+ 
+        orloth = gamedata_get_character ("Orloth Redwyne")
+        orloth.set_dialogue ("dialogues.orloth_start")
+        orloth.load ("orloth.mchar")
+        orloth.set_map (gamedata_engine ().get_landmap ())
+        orloth.jump_to (1, 2, 2)
+        orloth.set_action ("talk")
+        orloth.stand_south ()
+        orloth.set_schedule ("orloth")
+        orloth.set_portrait ("orloth.pnm")
+        orloth.time_callback_string ("32t", "walk")
+        orloth.time_callback_string ("35t", "speak")
+
+        erek = gamedata_get_character ("Erek Stonebreaker")
+        erek.set_dialogue ("dialogues.erek_start")
+        erek.load ("erek.mchar")
+        erek.set_map (gamedata_engine ().get_landmap ())
+        erek.jump_to (1, 5, 5)
+        erek.set_action ("talk")
+        erek.stand_north ()
+        # changed Erek's text color to violet
+        erek.set_color (3)
+        erek.set_schedule ("erek")
+        erek.set_portrait ("erek.pnm")
+        erek.time_callback_string ("38t", "walk")
+        erek.time_callback_string ("27t", "speak")
+
+        talan = gamedata_get_character ("Talan Wendth")
+        talan.set_dialogue ("dialogues.demo_intro_1")
+        talan.load ("talan.mchar")
+        talan.set_map (gamedata_engine ().get_landmap ())
+        talan.jump_to (0, 7, 17)
+        talan.set_action ("talk")
+        talan.stand_west ()
+        talan.set_schedule ("talan")
+        talan.set_portrait ("talan.pnm")
+        talan.time_callback_string ("45t", "speak")
+
+        jelom = gamedata_get_character ("Jelom Rasgar")
+        jelom.set_dialogue ("dialogues.jelom_start")
+        jelom.load ("jelom.mchar")
+        jelom.set_map (gamedata_engine ().get_landmap ())
+        jelom.jump_to (9, 2, 6)
+        jelom.set_action ("talk")
+        jelom.stand_north ()
+        jelom.set_color (5)
+        jelom.set_schedule ("jelom")
+        jelom.set_portrait ("jelom.pnm")
+        jelom.time_callback_string ("42t", "walk")
+        jelom.time_callback_string ("35t", "speak")
+
+        alek = gamedata_get_character ("Alek Endhelm")
+        alek.set_dialogue ("dialogues.alek_start")
+        alek.load ("alek.mchar")
+        alek.set_map (gamedata_engine ().get_landmap ())
+        alek.jump_to (1, 1, 3)
+        alek.set_action ("talk")
+        alek.stand_south ()
+        alek.set_schedule ("alek")
+        alek.set_portrait ("alek.pnm")
+        alek.time_callback_string ("73t", "walk")
+        alek.time_callback_string ("18t", "speak")
+
+        oliver = gamedata_get_character ("Oliver Redwyne")
+        oliver.set_dialogue ("dialogues.oliver_start")
+        oliver.load ("oliver.mchar")
+        oliver.set_map (gamedata_engine ().get_landmap ())
+        oliver.jump_to (0, 25, 15)
+        oliver.set_action ("talk")
+        oliver.stand_west ()
+        oliver.set_schedule ("oliver")
+        oliver.set_portrait ("oliver.pnm")
+        oliver.time_callback_string ("25t", "speak")
+
+        frostbloom = gamedata_get_character ("Rhayne Frostbloom")
+        frostbloom.set_dialogue ("dialogues.frostbloom_start")
+        frostbloom.load ("frostbloom.mchar")
+        frostbloom.set_map (gamedata_engine ().get_landmap ())
+        frostbloom.jump_to (0, 18, 22)
+        frostbloom.set_action ("talk")
+        frostbloom.stand_north ()
+        frostbloom.set_schedule ("frostbloom")
+        frostbloom.set_portrait ("frostbloom.pnm")
+        frostbloom.time_callback_string ("35", "walk")
+        frostbloom.time_callback_string ("40t", "speak")
+
+        bjarn = gamedata_get_character ("Bjarn Fingolson")
+        bjarn.set_dialogue ("dialogues.bjarn_start")
+        bjarn.load ("bjarn.mchar")
+        bjarn.set_map (gamedata_engine ().get_landmap ())
+        bjarn.jump_to (7, 3, 6)
+        bjarn.set_action ("talk")
+        bjarn.stand_west ()
+        bjarn.set_schedule ("bjarn")
+        bjarn.set_portrait ("bjarn.pnm")
+        bjarn.time_callback_string ("23t", "walk")
+        bjarn.time_callback_string ("30t", "speak")
+
+        silverhair = gamedata_get_character ("Imoen Silverhair")
+        silverhair.set_dialogue ("dialogues.silverhair_start")
+        silverhair.load ("silverhair.mchar")
+        silverhair.set_map (gamedata_engine ().get_landmap ())
+        silverhair.jump_to (13, 4, 4)
+        silverhair.set_action ("talk")
+        silverhair.set_color (4)
+        silverhair.stand_south ()
+        silverhair.set_schedule ("silverhair")
+        silverhair.set_portrait ("silverhair.pnm")
+        silverhair.time_callback_string ("105t", "walk")
+        silverhair.time_callback_string ("26t", "speak")
+
+        sarin = gamedata_get_character ("Sarin Trailfollower")
+        sarin.set_dialogue ("dialogues.sarin_start")
+        sarin.load ("servant2.mchar")
+        sarin.set_map (gamedata_engine ().get_landmap ())
+        sarin.jump_to (13, 5, 3)
+        sarin.set_action ("talk")
+        sarin.stand_west ()
+        sarin.set_schedule ("sarin")
+        sarin.set_portrait ("sarin.pnm")
+        sarin.time_callback_string ("4t", "walk")
+        sarin.time_callback_string ("32t", "speak")
+        sarin.time_callback_string ("45t", "switch_direction")
+
+        janesta = gamedata_get_character ("Janesta Skywind")
+        janesta.set_dialogue ("dialogues.janesta_start")
+        janesta.load ("servant1.mchar")
+        janesta.set_map (gamedata_engine ().get_landmap ())
+        janesta.jump_to (13, 6, 3)
+        janesta.set_action ("talk")
+        janesta.stand_north ()
+        janesta.set_schedule ("janesta")
+        janesta.set_portrait ("janesta.pnm")
+        janesta.time_callback_string ("20t", "walk")
+        janesta.time_callback_string ("35t", "speak")
+
+        fellnir = gamedata_get_character ("Fellnir Kezular")
+        fellnir.set_dialogue ("dialogues.fellnir_start")
+        fellnir.load ("fellnir.mchar")
+        fellnir.set_map (gamedata_engine ().get_landmap ())
+        fellnir.jump_to (10, 4, 4)
+        fellnir.set_action ("talk")
+        fellnir.stand_south ()
+        fellnir.set_schedule ("fellnir")
+        fellnir.set_portrait ("fellnir.pnm")
+        fellnir.time_callback_string ("56t", "walk")
+        fellnir.time_callback_string ("30t", "speak")
+
+        tristan = gamedata_get_character ("Tristan Illig")
+        tristan.set_dialogue ("dialogues.tristan_start")
+        tristan.load ("illig.mchar")
+        tristan.set_map (gamedata_engine ().get_landmap ())
+        tristan.jump_to (1, 4, 6)
+        tristan.set_action ("talk")
+        tristan.stand_west ()
+        tristan.set_schedule ("tristan")
+        tristan.set_portrait ("illig.pnm")
+        tristan.time_callback_string ("75t", "walk")
+        tristan.time_callback_string ("38t", "speak")
+  
+        # Once we want to generate the data context files,
+        # just call gamedata::save (1) and copy the .data files
+        # to the game's root directory.
+        gamedata_save (1, "Initial game data")
+        
+        # -- start the mapengine
+        gamedata_engine ().mapview_start ()
+        gametime_update ()
+        gamedata_engine ().fade_in ()
+        
 # -- Main --
-adonthell.audio_load_wave (0, "audio/select.wav")
-adonthell.audio_load_wave (1, "audio/switch.wav")
-adonthell.audio_load_wave (2, "audio/unselect.wav")
-
-if adonthell.gamedata_load_newest () == 0:
-    title = title_screen ()
-else:
-    # -- Quick-load
-    adonthell.gametime_start_action ()
-    adonthell.gamedata_engine ().main ()
+title = title_screen ()
diff --git a/scripts/modules/player_text.py b/scripts/modules/player_text.py
new file mode 100644
index 0000000..10eae98
--- /dev/null
+++ b/scripts/modules/player_text.py
@@ -0,0 +1,31 @@
+ _("That clock seems to be late!")
+_("Aw, a midget yeti, how cute!")
+_("I'd better not touch this ... What if it explodes??")
+_("Closed. We are all imprisoned here ...")
+_("No. I certainly won't climb up there!")
+_("The entrance to the Inn.")
+_("That's the guard's house.")
+_("There's a plaque that reads \"Tristan Illig\".")
+_("Hm. There are plenty of books on singing inside.")
+_("Locked. The plaque reads \"Bregon Arwold\".")
+_("Locked. The plaque reads \"Jelom Rasgar\".")
+_("The plaque on that chest reads \"Alek Endhelm\".")
+_("I doubt Master Fingolson would be happy if I went through his things.")
+_("Hm, nothing hidden in there!")
+_("I have already bathed this month!")
+_("No, I won't touch my mistress' belongings!")
+_("Mmmh ... this wine is really tasty!")
+_("I'm sure Master Redwyne won't mind if I take a sip.")
+_("Hic! Whoa, that's quite strong!")
+_("'Made in Cirdanth', now that's more like it!")
+_("'Made in Uzdun' kal'? How cheap is this Master Redwyne?")
+_("\"Teach yourself Elvish in 21 days\"?")
+_("\"There and back again\", how unimaginative!")
+_("Oh dear, \"The Art of making Yetis\", by R. Frostbloom")
+_("This is nothing compared to Lady Silverhair's reading room!")
+_("Hey, that looks like Adonthell!")
+_("I cannot rest when my mistress needs me!")
+_("An old, dusty chest.")
+_("Lady Silverhair's luggage, but not what I am looking for.")
+_("An old, empty crate!")
+
diff --git a/scripts/schedules/mapcharacters/bjarn.py 
b/scripts/schedules/mapcharacters/bjarn.py
index 254a49e..361b6b4 100644
--- a/scripts/schedules/mapcharacters/bjarn.py
+++ b/scripts/schedules/mapcharacters/bjarn.py
@@ -37,41 +37,22 @@ class bjarn (schedule.speak):
                        (7, 3, adonthell.STAND_NORTH), \
                        (3, 6, adonthell.STAND_WEST)]
 
-    def run_old (self):
-        myself = self.myself
-
-        # -- Get at the proper place when Erek lets the player into the room
-        #    and at the end of the game.
-        if adonthell.gamedata_get_quest ("demo").get_val("the_end") == 1 or \
-           adonthell.gamedata_get_quest ("demo").get_val("bjarn_door_open") == 
2:
-            myself.jump_to (myself.submap (), 3, 6)
-            myself.stand_west ()
-            myself.set_val ("delay", 150)
-            return
-
-        todo = myself.get_val ("todo")
-
-        # -- waiting
-        if todo == 0:
-            delay = myself.get_val ("delay")
-            # If standing delay expired, move around next time
-            if delay == 0:
-                myself.set_val ("todo", 1)
-            else:
-                myself.set_val ("delay", delay - 1)
-
-        # -- engage a new movement
-        elif todo == 1:
-            x, y, dir = self.coords[random.randint (0, 3)]
-
-            myself.set_goal (x, y, dir)
-            myself.set_val ("todo", 2)
-
-        # -- moving
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                # -- the time we stay at the same place
-                delay = random.randint (30, 60) * 25
-
-                myself.set_val ("delay", delay)
-                myself.set_val ("todo", 0)
+        self.myself.set_callback (self.goal_reached)
+
+    # -- Get at the proper place when Erek lets the player into the room
+    #    and at the end of the game.
+    def await_player (self):
+        self.myself.jump_to (self.myself.submap (), 3, 6)
+        self.myself.stand_west ()
+    
+    def start_talking (self):
+        self.myself.launch_action (adonthell.gamedata_player ())
+        adonthell.gamedata_get_character ("Erek Stonebreaker").pause ()
+        
+    def walk (self):
+        x, y, dir = self.coords[random.randint (0, 3)]
+        self.myself.set_goal (x, y, dir)
+    
+    def goal_reached (self):
+        delay = "%it" % random.randrange (15, 30)
+        self.myself.time_callback (delay, self.walk)
diff --git a/scripts/schedules/mapcharacters/erek.py 
b/scripts/schedules/mapcharacters/erek.py
index 2bef2a1..c5ad3fb 100755
--- a/scripts/schedules/mapcharacters/erek.py
+++ b/scripts/schedules/mapcharacters/erek.py
@@ -53,102 +53,66 @@ class erek (schedule.speak):
             (2, 4, adonthell.STAND_SOUTH)]
 
         self.index = 0
-
-    def run_old (self):
-        myself = self.myself
+        self.walk_delay = "45t"
         
-        # -- lead the player into bjarn's room
-        if adonthell.gamedata_get_quest ("demo").get_val ("bjarn_door_open") 
== 2:
-            myself.set_schedule_active (0)
-            # -- start Bjanr's conversation with the player and Erek
-            fingolson = adonthell.gamedata_get_character ("Bjarn Fingolson")
-            fingolson.launch_action (adonthell.gamedata_player ())
-
-        # -- help the player with jelom
-        elif adonthell.gamedata_get_quest ("demo").get_val ("convince_jelom") 
== 2:
-            myself.set_schedule_active (0)
-            # -- start Jelom's conversation with the player and Erek
-            jelom = adonthell.gamedata_get_character ("Jelom Rasgar")
-            jelom.launch_action (adonthell.gamedata_player ())
-
-        # -- leave Bjarn's room
-        elif myself.get_val ("leave_bjarn") == 1:
-            goto = myself.get_val ("goto")
-            myself.set_val ("delay", 0)
-
-            # -- goto first floor
-            if goto == 9: coords = self.to_1st
-            # -- goto common room
-            else: coords = self.to_common
-
-            if self.index < len (coords):
-                myself.set_val ("leave_bjarn", 2)
-                x, y, dir = coords[self.index]
-                myself.set_goal (x, y, dir)
-
-            # -- arrived
-            else:
-                myself.set_val ("leave_bjarn", 0)
-                if myself.submap () == 1:
-                    x, y, dir = self.coords[random.randrange (0, 2)]
-                    myself.set_goal (x, y, dir)
-                else:
-                    myself.set_schedule_active (0)
-
-            myself.set_val ("todo", 2)
-
-
-        # -- "normal" schedule
-        todo = myself.get_val ("todo")
-
-        # -- waiting
-        if todo == 0:
-            delay = myself.get_val ("delay")
-
-            # If standing delay expired, move around next time
-            if delay == 0:
-                myself.set_val ("todo", 1)
-            else:
-                myself.set_val ("delay", delay - 1)
-
-        # -- get movement target
-        elif todo == 1:
-            # -- on our way back from bjarn's room
-            if myself.get_val ("leave_bjarn") == 2:
-                myself.set_val ("leave_bjarn", 1)
-                self.index = self.index + 1
-
-            # -- switch places
+        if self.myself.get_val ("goto") != 0:
+            self.myself.set_callback (self.leave_cellar)
+        else:
+            self.myself.set_callback (self.goal_reached)
+        
+    def walk (self):
+        # -- in common room -> goto parlour
+        if self.myself.submap () == 1:
+            self.myself.set_goal (14, 4, adonthell.STAND_EAST)
+            self.walk_delay = "%it" % random.randrange (36, 108)
+            
+        # -- in parlour -> goto common room
+        else:
+            self.myself.set_goal (0, 4, adonthell.STAND_WEST)
+            self.walk_delay = "%it" % random.randrange (20, 60)
+
+    def goal_reached (self):
+        # -- reached common room
+        if self.myself.submap () == 1 and self.myself.posx () == 13:
+            x, y, dir = self.coords[random.randrange (0, 2)]
+            self.myself.set_goal (x, y, dir)
+        # -- reached parlour
+        elif self.myself.submap () == 2 and self.myself.posx () == 1:
+            x, y, dir = self.coords[random.randrange (2, 4)]
+            self.myself.set_goal (x, y, dir)
+        # -- reached our final destination
+        else:
+            self.myself.time_callback (self.walk_delay, self.walk)
+
+    # -- leave Bjarn's room
+    def leave_bjarn (self):
+        # -- set alternative schedule
+        self.myself.set_callback (self.leave_cellar)
+
+        x, y, dir = self.to_common[self.index]
+        self.myself.set_goal (x, y, dir)
+    
+    def leave_cellar (self):
+        self.index = self.index + 1
+        goto = self.myself.get_val ("goto")
+        
+        # -- goto first floor
+        if goto == 9: coords = self.to_1st
+        # -- goto common room
+        else: coords = self.to_common
+    
+        if self.index < len (coords):
+            x, y, dir = coords[self.index]
+            self.myself.set_goal (x, y, dir)
+
+        # -- arrived
+        else:
+            # -- restore normal schedule
+            self.myself.set_callback (self.goal_reached)
+            self.myself.set_val ("goto", 0)
+            
+            if self.myself.submap () == 1:
+                x, y, dir = self.coords[random.randrange (0, 2)]
+                self.myself.set_goal (x, y, dir)
             else:
-                # -- in common room -> goto parlour
-                if myself.submap () == 1:
-                    myself.set_goal (14, 4, adonthell.STAND_EAST)
-
-                # -- in parlour -> goto common room
-                else:
-                    myself.set_goal (0, 4, adonthell.STAND_WEST)
-
-            myself.set_val ("todo", 2)
-
-        # -- move
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                # -- reached common room
-                if myself.submap () == 1 and myself.posx () == 13:
-                    x, y, dir = self.coords[random.randrange (0, 2)]
-                    myself.set_goal (x, y, dir)
-
-                    delay = random.randrange (50, 150) * 20
-                    myself.set_val ("delay", delay)
-
-                # -- reached parlour
-                elif myself.submap () == 2 and myself.posx () == 1:
-                    x, y, dir = self.coords[random.randrange (2, 4)]
-                    myself.set_goal (x, y, dir)
-
-                    delay = random.randrange (60, 180) * 30
-                    myself.set_val ("delay", delay)
-
-                # -- reached our final destination
-                else:
-                    myself.set_val ("todo", 0)
+                self.myself.pause ()
diff --git a/scripts/schedules/mapcharacters/jelom.py 
b/scripts/schedules/mapcharacters/jelom.py
index 73ac708..97eba02 100644
--- a/scripts/schedules/mapcharacters/jelom.py
+++ b/scripts/schedules/mapcharacters/jelom.py
@@ -44,3 +44,8 @@ class jelom (schedule.speak):
     def goal_reached (self):
         delay = "%it" % random.randrange (20, 65)
         self.myself.time_callback (delay, self.walk)
+
+    def start_talking (self):
+        self.myself.launch_action (adonthell.gamedata_player ())
+        adonthell.gamedata_get_character ("Erek Stonebreaker").pause ()
+        
diff --git a/scripts/schedules/mapcharacters/silverhair.py 
b/scripts/schedules/mapcharacters/silverhair.py
index 6f0c1a8..ebdefa3 100755
--- a/scripts/schedules/mapcharacters/silverhair.py
+++ b/scripts/schedules/mapcharacters/silverhair.py
@@ -39,12 +39,12 @@ class silverhair (schedule.speak):
         # -- goto the window
         if self.myself.posx () == 4:
             # ... and speak about the weather
-            self.delay = "%it" % random.randrange (15, 22)
+            self.myself.set_val ("delay", random.randrange (15, 22))
             self.myself.set_goal (6, 4, adonthell.STAND_EAST)
 
         # -- go back to our normal position
         else:
-            self.delay = "%it" % random.randrange (70, 140)
+            self.myself.set_val ("delay", random.randrange (15, 22))
             if self.myself.set_goal (4, 4, adonthell.STAND_SOUTH) == 0:
                 self.myself.go_north ()
                                 
@@ -53,4 +53,5 @@ class silverhair (schedule.speak):
         if self.myself.posx () == 6:
             self.myself.speak (self.speech[3])
         
-        self.myself.time_callback (self.delay, self.walk)
+        delay = "%it" % self.myself.get_val ("delay")
+        self.myself.time_callback (delay, self.walk)
diff --git a/scripts/schedules/mapcharacters/to_cellar.py 
b/scripts/schedules/mapcharacters/to_cellar.py
index 3568967..9ef8788 100644
--- a/scripts/schedules/mapcharacters/to_cellar.py
+++ b/scripts/schedules/mapcharacters/to_cellar.py
@@ -1,5 +1,5 @@
 #
-#  (C) Copyright 2001 Kai Sterker <address@hidden>
+#  (C) Copyright 2001/2002 Kai Sterker <address@hidden>
 #  Part of the Adonthell Project http://adonthell.linuxgames.com
 #
 #  This program is free software; you can redistribute it and/or modify
@@ -40,10 +40,49 @@ class to_cellar:
             (5, 1, adonthell.STAND_NORTH), \
             (5, 1, adonthell.STAND_NORTH)]
 
-        self.myself.set_val ("todo", 0)
+        self.myself.set_callback (self.walk)
 
 
-    def run (self):
+    def walk (self):        
+        x, y, dir = self.exits[self.myself.submap ()]
+
+        # -- in Bjarn's room
+        if x == -1:
+            self.myself.set_callback (self.goal_reached)
+            
+            submap = self.myself.mymap ().get_submap (self.myself.submap ())
+            x = random.randint (1, 4)
+            y = random.randint (5, 9)
+
+            while not submap.get_square (x, y).is_free () or (y == 5 and x > 
2):
+                x = random.randint (1, 4)
+                y = random.randint (5, 9)
+
+            # -- calculate direction
+            # -- north-western area
+            if x + y < 10:
+                if x + 3 > y: dir = adonthell.STAND_SOUTH
+                else: dir = adonthell.STAND_EAST
+            # -- south-east corner
+            else:
+                if y - (x + 3) > 0: dir = adonthell.STAND_NORTH
+                else: dir = adonthell.STAND_WEST
+
+        self.myself.set_goal (x, y, dir)
+
+    # -- reached Bjarn's room
+    def goal_reached (self):
+        if self.myself.get_name () == adonthell.gamedata_player ().get_name ():
+            self.myself.set_schedule ("keyboard_control")
+            bjarn = adonthell.gamedata_get_character ("Bjarn Fingolson")
+            bjarn.set_dialogue ("dialogues.extro")
+            bjarn.launch_action (self.myself)
+                        
+        else:
+            self.myself.pause ()
+
+
+    def run_old (self):
         myself = self.myself
         todo = myself.get_val ("todo")
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]