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 48ce33c 12/50: UPDATED sche


From: Kai Sterker
Subject: [adonthell-wastesedge-commits] Release_0-3-3 48ce33c 12/50: UPDATED schedules once again for new event system - still not all done though
Date: Mon, 25 Jul 2016 18:15:30 +0000 (UTC)

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

    UPDATED schedules once again for new event system - still not all done 
though
---
 mapengine.data                                |  Bin 5557 -> 5601 bytes
 scripts/dialogues/oliver_start.py             |    9 +-
 scripts/dialogues/orloth_start.py             |    7 +-
 scripts/game_events/Makefile.am               |    3 +-
 scripts/game_events/silverhair_to_brn.py      |    7 +-
 scripts/schedules/mapcharacters/Makefile.am   |    2 +-
 scripts/schedules/mapcharacters/alek.py       |   17 ++--
 scripts/schedules/mapcharacters/fellnir.py    |   17 ++--
 scripts/schedules/mapcharacters/frostbloom.py |   17 ++--
 scripts/schedules/mapcharacters/janesta.py    |   15 +--
 scripts/schedules/mapcharacters/jelom.py      |   15 +--
 scripts/schedules/mapcharacters/lucia.py      |   15 +--
 scripts/schedules/mapcharacters/oliver.py     |  122 +++++++++----------------
 scripts/schedules/mapcharacters/orloth.py     |  113 +++++++++++------------
 scripts/schedules/mapcharacters/sarin.py      |   34 ++++---
 scripts/schedules/mapcharacters/schedule.py   |   26 ++++--
 scripts/schedules/mapcharacters/silverhair.py |   15 +--
 scripts/schedules/mapcharacters/talan.py      |   15 +--
 scripts/schedules/mapcharacters/tristan.py    |   19 ++--
 19 files changed, 234 insertions(+), 234 deletions(-)

diff --git a/mapengine.data b/mapengine.data
index ac53708..3a1a102 100755
Binary files a/mapengine.data and b/mapengine.data differ
diff --git a/scripts/dialogues/oliver_start.py 
b/scripts/dialogues/oliver_start.py
index e990799..597e348 100755
--- a/scripts/dialogues/oliver_start.py
+++ b/scripts/dialogues/oliver_start.py
@@ -45,12 +45,12 @@ class oliver_start (dialogue.base):
 
        cond = [\
                "self.the_npc.get_val (\"talked_to\") == 0\n",\
-               "self.the_npc.get_val (\"goto_players_room\") == 3\n"]
+               "adonthell.gamedata_get_character (\"Oliver Redwyne\").submap 
() == 12\n"]
 
        code = [\
                "self.the_npc.set_val (\"talked_to\" , 1)\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"know_olivers_noise\" , 1)\n",\
-               "self.the_npc.set_val (\"goto_players_room\" , 
0)\nself.the_npc.set_val (\"talked_to\" , 1)\nself.the_npc.set_val 
(\"goto_barn\" , 1)\n"]
+               "self.the_npc.set_val (\"talked_to\" , 1)\nself.the_npc.set_val 
(\"goto_barn\" , 1)\n"]
 
        # -- (speaker, code, ((text, operation, condition), ...))
        dlg = [\
@@ -97,3 +97,8 @@ class oliver_start (dialogue.base):
                self.namespace = globals ()
                self.the_player = p
                self.the_npc = n
+
+       def __del__(self):
+               if self.the_npc.get_val ("goto_barn") == 1:
+                   adonthell.gamedata_get_character("Oliver Redwyne").do_stuff 
("goto_barn")
+
diff --git a/scripts/dialogues/orloth_start.py 
b/scripts/dialogues/orloth_start.py
index 845c472..800f238 100755
--- a/scripts/dialogues/orloth_start.py
+++ b/scripts/dialogues/orloth_start.py
@@ -165,7 +165,7 @@ class orloth_start (dialogue.base):
                "adonthell.gamedata_get_quest(\"demo\").set_val (\"know_erek\" 
, 1)\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"know_bjarns_insult\" , 1)\n",\
                "self.the_npc.set_val (\"told_about_shair\", 1)\n\nmyvar = 
adonthell.gamedata_get_quest(\"demo\").get_val (\"work_4_shair\")\nmyvar = 
myvar | 1\nadonthell.gamedata_get_quest(\"demo\").set_val (\"work_4_shair\" , 
myvar)\n\n",\
-               "adonthell.gamedata_get_character(\"Oliver Redwyne\").set_val 
(\"goto_players_room\" , 1)\n",\
+               "adonthell.gamedata_get_character(\"Oliver Redwyne\").do_stuff 
(\"goto_common_room\")\nself.goto_players_room = 1\n",\
                "self.the_npc.set_val (\"explain_events\" , 1)\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"know_argument\" , 1)\n",\
                "adonthell.gamedata_get_quest(\"demo\").set_val 
(\"soothe_lucia\" , 1)\n"]
@@ -316,12 +316,11 @@ class orloth_start (dialogue.base):
 
        def __del__(self):
                oliver = adonthell.gamedata_get_character ("Oliver Redwyne")
-               if oliver.get_val ("goto_players_room") == 2:
+               if self.goto_players_room == 1:
                    import events
                    events.switch_submap (self.the_player, 12, 5, 3, 1)
+                   oliver.stop_moving ()
                    oliver.set_offset (0, 0)
-                   oliver.set_val ("goto_players_room", 3)
-                   oliver.set_val ("todo", 0)
                    events.switch_submap (oliver, 12, 5, 4, 0)
                
 
diff --git a/scripts/game_events/Makefile.am b/scripts/game_events/Makefile.am
index 9b6a074..22f0a14 100755
--- a/scripts/game_events/Makefile.am
+++ b/scripts/game_events/Makefile.am
@@ -5,7 +5,8 @@ pkgdata_DATA = *.pyc
 EXTRA_DIST = teleport.py cellar_to_bjarn.py fst_to_silverhair.py \
        character_speak.py open_inn_door.py silverhair_to_fst.py \
        silverhair_to_brn.py brn_to_silverhair.py search_chest.py \
-       to_storage.py lft_to_vnd.py vnd_to_lft.py __init__.py
+       to_storage.py lft_to_vnd.py vnd_to_lft.py __init__.py \
+        speak.py
 
 all:
        $(adonthell_binary) -c
diff --git a/scripts/game_events/silverhair_to_brn.py 
b/scripts/game_events/silverhair_to_brn.py
index 9cc9fc5..6950afd 100644
--- a/scripts/game_events/silverhair_to_brn.py
+++ b/scripts/game_events/silverhair_to_brn.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
@@ -10,7 +10,7 @@
 #  See the COPYING file for more details
 #
 
-# -- Map Event to teleport a character from the barn into Silverhair's room
+# -- Map Event to teleport a character from Silverhair's room onto veranda
 
 import adonthell
 import events
@@ -29,6 +29,9 @@ class silverhair_to_brn:
         self.destdir = destdir
 
     def run (self, submap, x, y, dir, name):
+        # -- just arrived -> do nothing
+        if dir == adonthell.STAND_WEST: return
+        
         p = adonthell.gamedata_get_character (name)
 
         if p.get_val ("came_from_barn") == 1:
diff --git a/scripts/schedules/mapcharacters/Makefile.am 
b/scripts/schedules/mapcharacters/Makefile.am
index 29c6f89..39796a8 100644
--- a/scripts/schedules/mapcharacters/Makefile.am
+++ b/scripts/schedules/mapcharacters/Makefile.am
@@ -5,7 +5,7 @@ pkgdata_DATA = *.pyc
 EXTRA_DIST = alek.py erek.py frostbloom.py janesta.py jelom.py bjarn.py \
        keyboard_control.py oliver.py orloth.py sarin.py silverhair.py \
        talan.py tristan.py fellnir.py to_cellar.py lucia.py intro.py \
-       extro.py __init__.py
+       extro.py __init__.py schedule.py
 
 all:
        $(adonthell_binary) -c
diff --git a/scripts/schedules/mapcharacters/alek.py 
b/scripts/schedules/mapcharacters/alek.py
index b3f86c1..2a7adfe 100755
--- a/scripts/schedules/mapcharacters/alek.py
+++ b/scripts/schedules/mapcharacters/alek.py
@@ -33,11 +33,13 @@ class alek (schedule.speak):
         schedule.speak.__init__(self)
     
         delay = "%it" % random.randrange (65, 90)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
-        self.myself.set_callback (self.goal_reached)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
 
+        self.myself.set_callback (self.goal_reached)
+       
     def walk (self):
         # -- walk to table
         if self.myself.posx () == 1:
@@ -48,6 +50,7 @@ class alek (schedule.speak):
 
     def goal_reached (self):
         delay = "%it" % random.randrange (65, 90)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/fellnir.py 
b/scripts/schedules/mapcharacters/fellnir.py
index 17dc9c3..5796f73 100644
--- a/scripts/schedules/mapcharacters/fellnir.py
+++ b/scripts/schedules/mapcharacters/fellnir.py
@@ -37,17 +37,20 @@ class fellnir (schedule.speak):
                        (6, 5, adonthell.STAND_WEST)]
 
         delay = "%it" % random.randrange (37, 75)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
-        self.myself.set_callback (self.goal_reached)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
 
+        self.myself.set_callback (self.goal_reached)
+        
     def walk (self):
         x, y, dir = self.coords[random.randrange (0, 4)]
         self.myself.set_goal (x, y, dir)
     
     def goal_reached (self):
         delay = "%it" % random.randrange (37, 75)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/frostbloom.py 
b/scripts/schedules/mapcharacters/frostbloom.py
index 87d0b7c..ad46f97 100755
--- a/scripts/schedules/mapcharacters/frostbloom.py
+++ b/scripts/schedules/mapcharacters/frostbloom.py
@@ -39,11 +39,13 @@ class frostbloom (schedule.speak):
         schedule.speak.__init__(self)
         
         delay = "%it" % random.randrange (20, 50)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
-        self.myself.set_callback (self.goal_reached)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
 
+        self.myself.set_callback (self.goal_reached)
+        
     def walk (self):
         # -- the position we want to reach
         x = random.randrange (self.min_x, self.max_x)
@@ -53,6 +55,7 @@ class frostbloom (schedule.speak):
     
     def goal_reached (self):
         delay = "%it" % random.randrange (20, 50)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/janesta.py 
b/scripts/schedules/mapcharacters/janesta.py
index 11b6c31..9521164 100644
--- a/scripts/schedules/mapcharacters/janesta.py
+++ b/scripts/schedules/mapcharacters/janesta.py
@@ -39,9 +39,11 @@ class janesta (schedule.speak):
                        (4, 2, adonthell.STAND_WEST)]
 
         delay = "%it" % random.randrange (10, 30)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
+
         self.myself.set_callback (self.goal_reached)
 
     def walk (self):
@@ -50,6 +52,7 @@ class janesta (schedule.speak):
     
     def goal_reached (self):
         delay = "%it" % random.randrange (10, 30)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/jelom.py 
b/scripts/schedules/mapcharacters/jelom.py
index 323984e..df43039 100644
--- a/scripts/schedules/mapcharacters/jelom.py
+++ b/scripts/schedules/mapcharacters/jelom.py
@@ -34,9 +34,11 @@ class jelom (schedule.speak):
         schedule.speak.__init__(self)
         
         delay = "%it" % random.randrange (20, 65)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
+
         self.myself.set_callback (self.goal_reached)
 
     def walk (self):
@@ -47,6 +49,7 @@ class jelom (schedule.speak):
     
     def goal_reached (self):
         delay = "%it" % random.randrange (20, 65)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/lucia.py 
b/scripts/schedules/mapcharacters/lucia.py
index b1dfc7b..9aeb2ae 100644
--- a/scripts/schedules/mapcharacters/lucia.py
+++ b/scripts/schedules/mapcharacters/lucia.py
@@ -37,9 +37,11 @@ class lucia (schedule.speak):
                   (6, 3, adonthell.STAND_EAST)]
 
         delay = "%it" % random.randrange (20, 40)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
+        
         self.myself.set_callback (self.goal_reached)
 
     def walk (self):
@@ -57,6 +59,7 @@ class lucia (schedule.speak):
         else:
             delay = "%it" % random.randrange (20, 40)
         
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/oliver.py 
b/scripts/schedules/mapcharacters/oliver.py
index d73d173..a337de7 100755
--- a/scripts/schedules/mapcharacters/oliver.py
+++ b/scripts/schedules/mapcharacters/oliver.py
@@ -35,83 +35,47 @@ class oliver (schedule.speak):
         # -- the tiles around Orloth
         self.offsets = [(1,1),(1,-1),(-1,1),(-1,-1),(1,0),(0,1),(-1,0),(0,-1)]
 
-
-    def run_old (self):
-        myself = self.myself
+        self.myself.set_callback (self.goal_reached)
+    
+    # -- summoned to the common room player to his room
+    def goto_common_room (self):
+        # -- beam directly to common room, as it is faster that way
+        self.myself.jump_to (1, 13, 7, adonthell.STAND_NORTH)
         
-        # -- Oliver summoned to common room
-        if myself.get_val ("goto_players_room") == 1:
-            # -- beam him directly there, as it is faster that way
-            if myself.submap () != 1:
-                myself.jump_to (1, 13, 7, adonthell.STAND_NORTH)
-
-            # -- find a free spot near Orloth and the player
-            i = 0
-            orloth = adonthell.gamedata_get_character ("Orloth Redwyne")
-            while i < 7:
-                x, y = self.offsets[i][:2]
-                x = x + orloth.posx ()
-                y = y + orloth.posy ()
-                if myself.set_goal (x, y): break
-                i = i + 1
-
-            myself.set_val ("goto_players_room", 2)
-            myself.set_val ("todo", 2)
-
-        # -- in the player's room
-        elif myself.get_val ("goto_players_room") == 3:
-            # -- start talking to the player
-            myself.launch_action (adonthell.gamedata_player ())
-
-        # -- leave the player's room and goto the barn
-        elif myself.get_val ("goto_barn") == 1:
-            location = myself.submap ()
-            myself.set_val ("goto_barn", 2)
-
-            # -- Player's room
-            if location == 12:
-                myself.set_goal (5, 1)
-
-            # -- First floor
-            elif location == 9:
-                myself.set_goal (8, 1)
-
-            # -- Second floor (this shouldn't happen, but it once did ...)
-            elif location == 14:
-                myself.set_goal (4, 1)
-
-            # -- Common Room
-            elif location == 1:
-                myself.set_goal (13, 8)
-
-            # -- Yard, our final goal (for now)
-            elif location == 0:
-                myself.set_goal (25, 15)
-                myself.set_val ("goto_barn", 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 ("goto_barn") == 2:
-                myself.set_val ("goto_barn", 1)
-
-        # -- move
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                myself.set_val ("todo", 0)
+        # -- find a free spot near Orloth and the player
+        orloth = adonthell.gamedata_get_character ("Orloth Redwyne")
+        for (x, y) in self.offsets:
+            x = x + orloth.posx ()
+            y = y + orloth.posy ()
+            
+            if self.myself.set_goal (x, y): 
+                break
+        
+    # -- leave the player's room and goto the barn
+    def goto_barn (self):
+        location = self.myself.submap ()
+
+        # -- Player's room
+        if location == 12:
+            self.myself.set_goal (5, 1)
+
+        # -- First floor
+        elif location == 9:
+            self.myself.set_goal (8, 1)
+
+        # -- Second floor (this shouldn't happen, but it once did ...)
+        elif location == 14:
+            self.myself.set_goal (4, 1)
+
+        # -- Common Room
+        elif location == 1:
+            self.myself.set_goal (13, 8)
+
+        # -- Yard, our final goal (for now)
+        elif location == 0:
+            self.myself.set_goal (25, 15)
+            self.myself.goto_barn = 0
+            
+    def goal_reached (self):
+        if self.myself.get_val ("goto_barn") == 1:
+            self.goto_barn ()
diff --git a/scripts/schedules/mapcharacters/orloth.py 
b/scripts/schedules/mapcharacters/orloth.py
index 5f6ab54..4e2634d 100755
--- a/scripts/schedules/mapcharacters/orloth.py
+++ b/scripts/schedules/mapcharacters/orloth.py
@@ -42,78 +42,67 @@ class orloth (schedule.speak):
                   (9, 7, 0), \
                   (12, 5, 0), \
                   (6, 5, 0)]
-
-    def run_old (self):
-        myself = self.myself
-        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)
-
-                # -- put/take the first mug
-                if delay == 100:
-                    self.put_object (106, 0)
-                    
-                # -- put/take the second mug
-                elif delay == 50:
-                    self.put_object (107, 1)
-
-        # -- engage a new movement
-        elif todo == 1:
-            # -- when we are at the bar, then wait a while before
-            #    moving again
-            if myself.posx () != 2:
-                delay = random.randrange (40, 120) * 20
-                myself.set_val ("delay", delay)
-                myself.set_goal (2, 2, adonthell.STAND_SOUTH)
-                myself.set_val ("table_num", 0)
-
-            # -- otherwise only wait a little
-            else:
-                index = random.randrange (0, 5)
-                x, y, dir = self.coords[index]
-                myself.set_goal (x, y, dir)
-                myself.set_val ("delay", 150)
-                myself.set_val ("table_num", index)
-
-            myself.set_val ("todo", 2)
-
-        # -- moving
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                # -- standing in front of the clock
-                if myself.posx () == 10:
-                    myself.speak (_("That clock is late again!"))
-
-                    tmp = myself.get_val ("say_something")
-                    myself.set_val ("say_something", tmp + 75)
-
-                myself.set_val ("todo", 0)
-
+        
+        # -- improve that!!!
+        self.goal_reached ()
+        self.myself.set_callback (self.goal_reached)
+        
+    def walk (self):
+        # -- return to bar
+        if self.myself.posx () != 2:
+            self.myself.set_goal (2, 2, adonthell.STAND_SOUTH)
+            self.myself.set_val ("table_num", 0)
+
+        # -- when we are at the bar, then wait a while before
+        #    moving again
+        else:
+            index = random.randrange (0, 5)
+            x, y, dir = self.coords[index]
+            self.myself.set_goal (x, y, dir)
+            self.myself.set_val ("table_num", index)
+        
+    def goal_reached (self):
+        # -- standing in front of the clock
+        if self.myself.posx () == 10:
+            self.myself.speak (_("That clock is late again!"))
+            delay = "%it" % random.randrange (3, 6)
+        # -- standing at the bar 
+        elif self.myself.posx () == 2:
+            delay = "%it" % random.randrange (16, 48)
+        # -- standing at a table
+        else:
+            delay = "3t"
+            # -- put/take first mug
+            frst_mug = adonthell.time_event ("1t")
+            frst_mug.set_callback (self.put_object, (106, 0))
+            frst_mug.thisown = 0
+            self.myself.add_event (frst_mug)
+            # -- put/take second mug
+            scnd_mug = adonthell.time_event ("2t")
+            scnd_mug.set_callback (self.put_object, (107, 1))
+            scnd_mug.thisown = 0
+            self.myself.add_event (scnd_mug)
+            
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
 
     # -- put/remove something from the table we're standing next to
-    def put_object (self, object, update):
-        myself = self.myself
+    def put_object (self, args):
+        object, update = args[:]
         
         # -- the table we're next to
-        index = myself.get_val ("table_num")
+        index = self.myself.get_val ("table_num")
         if index > 0:
             # -- see whether table is laid or not
             key = "table%i_set" % index
-            val = myself.get_val (key)
+            val = self.myself.get_val (key)
 
             x, y = self.coords[index+4][:2]
             if val == 0:
                 adonthell.gamedata_engine ().get_landmap ().put_mapobject (1, 
x, y, object)
-                if update == 1: myself.set_val (key, 1)
+                if update == 1: self.myself.set_val (key, 1)
             else:
                 adonthell.gamedata_engine ().get_landmap ().remove_mapobject 
(1, x, y, object)
-                if update == 1: myself.set_val (key, 0)
-    
+                if update == 1: self.myself.set_val (key, 0)
diff --git a/scripts/schedules/mapcharacters/sarin.py 
b/scripts/schedules/mapcharacters/sarin.py
index 43e6d27..1e33369 100755
--- a/scripts/schedules/mapcharacters/sarin.py
+++ b/scripts/schedules/mapcharacters/sarin.py
@@ -43,28 +43,31 @@ class sarin (schedule.speak):
         schedule.speak.__init__(self)
 
         delay = "%it" % random.randrange (3, 6)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
         
         self.myself.set_callback (self.goal_reached)
 
-        #delay = "%it" % random.randrange (13, 16)
-        #self.switch_event = adonthell.time_event (delay)
-        #self.switch_event.set_callback (self.switch_direction)
-        #adonthell.event_handler_register_event (self.switch_event)
+        delay = "%it" % random.randrange (30, 60)
+        switch_event = adonthell.time_event (delay)
+        switch_event.set_callback (self.switch_direction)
+        switch_event.thisown = 0
+        self.myself.add_event (switch_event)
 
-    def switch_direction (self):        
+    def switch_direction (self):
         # -- ... and set the new one accordingly
         if self.direction == adonthell.WALK_EAST or self.direction == 
adonthell.WALK_WEST:
             self.direction = random.randrange (adonthell.WALK_NORTH, 
adonthell.WALK_SOUTH + 1)
         else:
             self.direction = random.randrange (adonthell.WALK_WEST, 
adonthell.WALK_EAST + 1)
         
-        delay = "%it" % random.randrange (13, 16)
-        self.switch_event = adonthell.time_event (delay)
-        self.switch_event.set_callback (self.switch_direction)
-        adonthell.event_handler_register_event (self.switch_event)
+        delay = "%it" % random.randrange (30, 60)
+        switch_event = adonthell.time_event (delay)
+        switch_event.set_callback (self.switch_direction)
+        switch_event.thisown = 0
+        self.myself.add_event (switch_event)
 
         self.walk ()
     
@@ -89,6 +92,7 @@ class sarin (schedule.speak):
 
     def goal_reached (self):
         delay = "%it" % random.randrange (3, 6)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/schedule.py 
b/scripts/schedules/mapcharacters/schedule.py
index df341c0..c12476a 100644
--- a/scripts/schedules/mapcharacters/schedule.py
+++ b/scripts/schedules/mapcharacters/schedule.py
@@ -19,6 +19,7 @@ import types
 # -- let NPC utter random remarks
 #    requires the NPC schedule to have the members 
 #
+#    myself, a pointer to the mapcharacter
 #    speech, an array of remarks for the NPC, and 
 #    speech_delay, a tuple with the minimum and maximum delay 
 #        between two remarks
@@ -28,11 +29,15 @@ import types
 class speak:
     def __init__ (self):
         # -- sanity checks
-        if type (self.speech) != types.ListType:
+        if not hasattr (self, "myself"):
+            print "*** speak::__init__: character 'myself' not found!"
+        if not hasattr (self, "speech") and \
+            type (self.speech) != types.ListType:
             print "*** speak::__init__: 'speech' list not found!"
-        if type (self.speech_delay) != types.TupleType:
+        if not hasattr (self, "speech_delay") and \
+            type (self.speech_delay) != types.TupleType:
             print "*** speak::__init__: 'speech_delay' tuple not found!"
-        if len (self.speech_delay) != 2:
+        elif len (self.speech_delay) != 2:
             print "*** speak::__init__: 'speech_delay' has wrong size!"
             
         # -- member initialization
@@ -40,16 +45,17 @@ class speak:
         
         # -- register first speech
         delay = "%it" % random.randrange (self.speech_delay[0], 
self.speech_delay[1])
-        self.speak_event = adonthell.time_event (delay)
-        self.speak_event.set_callback (self.speak)
-        adonthell.event_handler_register_event (self.speak_event)
-
+        speak_event = adonthell.time_event (delay)
+        speak_event.thisown = 0
+        speak_event.set_callback (self.speak)
+        self.myself.add_event (speak_event)
         
     # -- make remark and set delay for the next one
     def speak (self):
         self.myself.speak (self.speech[random.randrange (0, 
self.speech_length)])
 
         delay = "%it" % random.randrange (self.speech_delay[0], 
self.speech_delay[1])
-        self.speak_event = adonthell.time_event (delay)
-        self.speak_event.set_callback (self.speak)
-        adonthell.event_handler_register_event (self.speak_event)
+        speak_event = adonthell.time_event (delay)
+        speak_event.thisown = 0
+        speak_event.set_callback (self.speak)
+        self.myself.add_event (speak_event)
diff --git a/scripts/schedules/mapcharacters/silverhair.py 
b/scripts/schedules/mapcharacters/silverhair.py
index 3cd9414..52beae6 100755
--- a/scripts/schedules/mapcharacters/silverhair.py
+++ b/scripts/schedules/mapcharacters/silverhair.py
@@ -34,9 +34,11 @@ class silverhair (schedule.speak):
         schedule.speak.__init__(self)
 
         delay = "%it" % random.randrange (70, 140)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
+
         self.myself.set_callback (self.goal_reached)
 
     def walk (self):
@@ -57,6 +59,7 @@ class silverhair (schedule.speak):
         if self.myself.posx () == 6:
             self.myself.speak (self.speech[3])
         
-        self.walk_event = adonthell.time_event (self.delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (self.delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/talan.py 
b/scripts/schedules/mapcharacters/talan.py
index 2399bee..5909deb 100755
--- a/scripts/schedules/mapcharacters/talan.py
+++ b/scripts/schedules/mapcharacters/talan.py
@@ -33,9 +33,11 @@ class talan (schedule.speak):
         schedule.speak.__init__(self)
         
         # -- walking stuff
-        self.walk_event = adonthell.time_event ("5t")
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event ("5t")
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
+
         self.myself.set_callback (self.goal_reached)
         
     def walk (self):
@@ -46,6 +48,7 @@ class talan (schedule.speak):
         
     def goal_reached (self):
         delay = "%it" % random.randrange (10, 20)
-        self.walk_event = adonthell.time_event (delay)
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
+        walk_event = adonthell.time_event (delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
diff --git a/scripts/schedules/mapcharacters/tristan.py 
b/scripts/schedules/mapcharacters/tristan.py
index b0f497e..d28f3c9 100644
--- a/scripts/schedules/mapcharacters/tristan.py
+++ b/scripts/schedules/mapcharacters/tristan.py
@@ -33,12 +33,16 @@ class tristan (schedule.speak):
         self.speech_delay = (20, 55)
         schedule.speak.__init__(self)
         
+        self.walk_delay = "30t"
+        
         # -- walking
-        self.walk_event = adonthell.time_event ("35t")
-        self.walk_event.set_callback (self.walk)
-        adonthell.event_handler_register_event (self.walk_event)
-        self.myself.set_callback (self.goal_reached)
+        walk_event = adonthell.time_event (self.walk_delay)
+        walk_event.set_callback (self.walk)
+        walk_event.thisown = 0
+        self.myself.add_event (walk_event)
 
+        self.myself.set_callback (self.goal_reached)
+        
     def walk (self):
         # -- in common room -> go outside
         if self.myself.submap () == 1 and \
@@ -60,6 +64,7 @@ class tristan (schedule.speak):
             self.myself.set_goal (12, 18, adonthell.STAND_WEST)
         # -- reached our final destination
         else:
-            self.walk_event = adonthell.time_event (self.walk_delay)
-            self.walk_event.set_callback (self.walk)
-            adonthell.event_handler_register_event (self.walk_event)
+            walk_event = adonthell.time_event (self.walk_delay)
+            walk_event.set_callback (self.walk)
+            walk_event.thisown = 0
+            self.myself.add_event (walk_event)



reply via email to

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