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 a229355 10/50: CHANGED most


From: Kai Sterker
Subject: [adonthell-wastesedge-commits] Release_0-3-3 a229355 10/50: CHANGED most schedules to use event-based walking; disabled the rest for now
Date: Mon, 25 Jul 2016 18:15:30 +0000 (UTC)

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

    CHANGED most schedules to use event-based walking; disabled the rest for now
---
 scripts/schedules/mapcharacters/alek.py       |   54 ++++++---------
 scripts/schedules/mapcharacters/bjarn.py      |    2 +-
 scripts/schedules/mapcharacters/erek.py       |    2 +-
 scripts/schedules/mapcharacters/fellnir.py    |   44 +++++--------
 scripts/schedules/mapcharacters/frostbloom.py |   49 +++++---------
 scripts/schedules/mapcharacters/janesta.py    |   44 +++++--------
 scripts/schedules/mapcharacters/jelom.py      |   49 +++++---------
 scripts/schedules/mapcharacters/lucia.py      |   63 +++++++-----------
 scripts/schedules/mapcharacters/oliver.py     |    2 +-
 scripts/schedules/mapcharacters/orloth.py     |    2 +-
 scripts/schedules/mapcharacters/sarin.py      |    6 +-
 scripts/schedules/mapcharacters/silverhair.py |   88 ++++++++++---------------
 scripts/schedules/mapcharacters/talan.py      |   51 +++++---------
 scripts/schedules/mapcharacters/tristan.py    |   76 +++++++++------------
 14 files changed, 200 insertions(+), 332 deletions(-)

diff --git a/scripts/schedules/mapcharacters/alek.py 
b/scripts/schedules/mapcharacters/alek.py
index 9167e61..b3f86c1 100755
--- a/scripts/schedules/mapcharacters/alek.py
+++ b/scripts/schedules/mapcharacters/alek.py
@@ -31,37 +31,23 @@ class alek (schedule.speak):
                        _("They should sort out this business like real men!")]
         self.speech_delay = (20, 40)
         schedule.speak.__init__(self)
-        
-    def run (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)
-
-        # -- engage a new movement
-        elif todo == 1:
-            # -- walk to table
-            if myself.posx () == 1:
-                myself.set_goal (12, 5, adonthell.STAND_NORTH)
-            # -- walk to bar
-            else:
-                myself.set_goal (1, 3, adonthell.STAND_SOUTH)
-
-            myself.set_val ("todo", 2)
-
-        # -- moving
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                # -- the time we stay at the same place
-                delay = random.randrange (60, 150) * 20
-
-                myself.set_val ("delay", delay)
-                myself.set_val ("todo", 0)
+    
+        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)
+
+    def walk (self):
+        # -- walk to table
+        if self.myself.posx () == 1:
+            self.myself.set_goal (12, 5, adonthell.STAND_NORTH)
+        # -- walk to bar
+        else:
+            self.myself.set_goal (1, 3, adonthell.STAND_SOUTH)
+
+    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)
diff --git a/scripts/schedules/mapcharacters/bjarn.py 
b/scripts/schedules/mapcharacters/bjarn.py
index f180b5d..254a49e 100644
--- a/scripts/schedules/mapcharacters/bjarn.py
+++ b/scripts/schedules/mapcharacters/bjarn.py
@@ -37,7 +37,7 @@ class bjarn (schedule.speak):
                        (7, 3, adonthell.STAND_NORTH), \
                        (3, 6, adonthell.STAND_WEST)]
 
-    def run (self):
+    def run_old (self):
         myself = self.myself
 
         # -- Get at the proper place when Erek lets the player into the room
diff --git a/scripts/schedules/mapcharacters/erek.py 
b/scripts/schedules/mapcharacters/erek.py
index d69cd0d..2bef2a1 100755
--- a/scripts/schedules/mapcharacters/erek.py
+++ b/scripts/schedules/mapcharacters/erek.py
@@ -54,7 +54,7 @@ class erek (schedule.speak):
 
         self.index = 0
 
-    def run (self):
+    def run_old (self):
         myself = self.myself
         
         # -- lead the player into bjarn's room
diff --git a/scripts/schedules/mapcharacters/fellnir.py 
b/scripts/schedules/mapcharacters/fellnir.py
index b22a11b..17dc9c3 100644
--- a/scripts/schedules/mapcharacters/fellnir.py
+++ b/scripts/schedules/mapcharacters/fellnir.py
@@ -36,32 +36,18 @@ class fellnir (schedule.speak):
                        (4, 2, adonthell.STAND_NORTH), \
                        (6, 5, adonthell.STAND_WEST)]
 
-    def run (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)
-
-        # -- engage a new movement
-        elif todo == 1:
-            x, y, dir = self.coords[random.randrange (0, 4)]
-
-            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.randrange (30, 60) * 25
-
-                myself.set_val ("delay", delay)
-                myself.set_val ("todo", 0)
+        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)
+
+    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)
diff --git a/scripts/schedules/mapcharacters/frostbloom.py 
b/scripts/schedules/mapcharacters/frostbloom.py
index 62eac43..87d0b7c 100755
--- a/scripts/schedules/mapcharacters/frostbloom.py
+++ b/scripts/schedules/mapcharacters/frostbloom.py
@@ -38,34 +38,21 @@ class frostbloom (schedule.speak):
         self.speech_delay = (20, 55)
         schedule.speak.__init__(self)
         
-    def run (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)
-
-        # -- get movement target
-        elif todo == 1:
-            # -- the position we want to reach
-            x = random.randrange (self.min_x, self.max_x)
-            y = random.randrange (self.min_y, self.max_y)
-
-            myself.set_goal (x, y)
-
-            delay = random.randrange (30, 90) * 30
-            myself.set_val ("delay", delay)
-            myself.set_val ("todo", 2)
-
-        # -- walk to the new position
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                myself.set_val ("todo", 0)
+        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)
+
+    def walk (self):
+        # -- the position we want to reach
+        x = random.randrange (self.min_x, self.max_x)
+        y = random.randrange (self.min_y, self.max_y)
+
+        self.myself.set_goal (x, y)
+    
+    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)
diff --git a/scripts/schedules/mapcharacters/janesta.py 
b/scripts/schedules/mapcharacters/janesta.py
index 528bfe7..11b6c31 100644
--- a/scripts/schedules/mapcharacters/janesta.py
+++ b/scripts/schedules/mapcharacters/janesta.py
@@ -38,32 +38,18 @@ class janesta (schedule.speak):
                        (1, 5, adonthell.STAND_SOUTH), \
                        (4, 2, adonthell.STAND_WEST)]
 
-    def run (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)
-
-        # -- engage a new movement
-        elif todo == 1:
-            x, y, dir = self.coords[random.randrange (0, 4)]
-
-            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.randrange (20, 60) * 10
-
-                myself.set_val ("delay", delay)
-                myself.set_val ("todo", 0)
+        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)
+        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 (10, 30)
+        self.walk_event = adonthell.time_event (delay)
+        self.walk_event.set_callback (self.walk)
+        adonthell.event_handler_register_event (self.walk_event)
diff --git a/scripts/schedules/mapcharacters/jelom.py 
b/scripts/schedules/mapcharacters/jelom.py
index dc09984..323984e 100644
--- a/scripts/schedules/mapcharacters/jelom.py
+++ b/scripts/schedules/mapcharacters/jelom.py
@@ -33,35 +33,20 @@ class jelom (schedule.speak):
         self.speech_delay = (30, 60)
         schedule.speak.__init__(self)
         
-    def run (self):
-        myself = self.myself
-        
-        todo = myself.get_val ("todo")
-
-        # If standing
-        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:
-            # Choose where to move, if destination is already occupied we'll
-            # fall into the wait state (0) again automatically next time
-            if myself.posy () == 3:
-                myself.set_goal (2, 6, adonthell.STAND_NORTH)
-            else:
-                myself.set_goal (2, 3, adonthell.STAND_SOUTH)
-
-            # Next time we'll actually move!
-            myself.set_val ("todo", 2)
-
-        # Moving, follow the path until it is reached.
-        elif todo == 2:
-            # Reached the goal? Wait a while then...
-            if myself.follow_path ():
-                myself.set_val ("delay", random.randrange (30, 60) * 20)
-                myself.set_val ("todo", 0)
+        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)
+        self.myself.set_callback (self.goal_reached)
+
+    def walk (self):
+        if self.myself.posy () == 3:
+            self.myself.set_goal (2, 6, adonthell.STAND_NORTH)
+        else:
+            self.myself.set_goal (2, 3, adonthell.STAND_SOUTH)
+    
+    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)
diff --git a/scripts/schedules/mapcharacters/lucia.py 
b/scripts/schedules/mapcharacters/lucia.py
index 41fe420..b1dfc7b 100644
--- a/scripts/schedules/mapcharacters/lucia.py
+++ b/scripts/schedules/mapcharacters/lucia.py
@@ -36,42 +36,27 @@ class lucia (schedule.speak):
         self.coords = [(3, 3, adonthell.STAND_NORTH), \
                   (6, 3, adonthell.STAND_EAST)]
 
-    def run (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)
-
-
-        # -- engage a new movement
-        elif todo == 1:
-            if myself.posx () != 3:
-                x, y, dir = self.coords[0]
-            else:
-                x, y, dir = self.coords[random.randrange(0, 2)]
-            myself.set_goal (x, y, dir)
-            myself.set_val ("todo", 2)
-
-        # -- moving
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                # -- standing in front of the exit
-                if myself.posx () == 6:
-                    myself.speak (_("Ah, some fresh air!"))
-
-                    tmp = myself.get_val ("say_something")
-                    myself.set_val ("say_something", tmp + 75)
-                    myself.set_val ("delay", 300)
-
-                else:
-                    myself.set_val ("delay", 1000 + random.randrange (0, 2000))
-                                    
-                myself.set_val ("todo", 0)
+        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)
+        self.myself.set_callback (self.goal_reached)
+
+    def walk (self):
+        if self.myself.posx () != 3:
+            x, y, dir = self.coords[0]
+        else:
+            x, y, dir = self.coords[random.randrange(0, 2)]
+        self.myself.set_goal (x, y, dir)
+    
+    def goal_reached (self):
+        # -- standing in front of the exit
+        if self.myself.posx () == 6:
+            self.myself.speak (_("Ah, some fresh air!"))
+            delay = "8t"
+        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)
diff --git a/scripts/schedules/mapcharacters/oliver.py 
b/scripts/schedules/mapcharacters/oliver.py
index 61f1a68..d73d173 100755
--- a/scripts/schedules/mapcharacters/oliver.py
+++ b/scripts/schedules/mapcharacters/oliver.py
@@ -36,7 +36,7 @@ class oliver (schedule.speak):
         self.offsets = [(1,1),(1,-1),(-1,1),(-1,-1),(1,0),(0,1),(-1,0),(0,-1)]
 
 
-    def run (self):
+    def run_old (self):
         myself = self.myself
         
         # -- Oliver summoned to common room
diff --git a/scripts/schedules/mapcharacters/orloth.py 
b/scripts/schedules/mapcharacters/orloth.py
index f5353dc..5f6ab54 100755
--- a/scripts/schedules/mapcharacters/orloth.py
+++ b/scripts/schedules/mapcharacters/orloth.py
@@ -43,7 +43,7 @@ class orloth (schedule.speak):
                   (12, 5, 0), \
                   (6, 5, 0)]
 
-    def run (self):
+    def run_old (self):
         myself = self.myself
         todo = myself.get_val ("todo")
 
diff --git a/scripts/schedules/mapcharacters/sarin.py 
b/scripts/schedules/mapcharacters/sarin.py
index 38db345..41a2218 100755
--- a/scripts/schedules/mapcharacters/sarin.py
+++ b/scripts/schedules/mapcharacters/sarin.py
@@ -41,7 +41,11 @@ class sarin (schedule.speak):
         self.speech_delay = (20, 40)
         schedule.speak.__init__(self)
         
-    def run (self):
+    def walk (self):
+        pass
+    def goal_reached (self):
+        pass
+    def run_old (self):
         myself = self.myself
 
         # -- delay for orientation change
diff --git a/scripts/schedules/mapcharacters/silverhair.py 
b/scripts/schedules/mapcharacters/silverhair.py
index 9b6d2f3..3cd9414 100755
--- a/scripts/schedules/mapcharacters/silverhair.py
+++ b/scripts/schedules/mapcharacters/silverhair.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
@@ -16,12 +16,13 @@
 #    window and make a remark about the weather.
 
 import adonthell
+import schedule
 import random
 
 # -- pygettext support
 def _(message): return message
 
-class silverhair:
+class silverhair (schedule.speak):
 
     def __init__ (self, mapcharacterinstance):
         self.myself = mapcharacterinstance
@@ -29,56 +30,33 @@ class silverhair:
                        _("Janesta, dear, worry not. I am content here."), \
                        _("Janesta, please bring my figurine. I wish to see it 
more closely."), \
                        _("It truly is a lovely day. I expect we will have time 
yet to enjoy it.")]
-
-    def run (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)
-
-        # -- get movement target
-        elif todo == 1:
-            # -- goto the window
-            if myself.posx () == 4:
-                # ... and speak about the weather
-                say = random.randrange (33, 66) * 10
-                delay = random.randrange (50, 75) * 15
-                myself.set_val ("say_something", say)
-                myself.set_goal (6, 4, adonthell.STAND_EAST)
-
-            # -- go back to our normal position
-            else:
-                say = random.randrange (33, 66) * 10
-                delay = random.randrange (100, 200) * 35
-                if myself.set_goal (4, 4, adonthell.STAND_SOUTH) == 0:
-                    return
-
-            myself.set_val ("say_something", say)
-            myself.set_val ("delay", delay)
-            myself.set_val ("todo", 2)
-
-        # -- move
-        elif todo == 2:
-            if myself.follow_path () == 1:
-                myself.set_val ("todo", 0)
-
-        # -- speak
-        say = myself.get_val ("say_something")
-        myself.set_val ("say_something", say - 1)
-        if say == 0:
-            if myself.posx () == 6:
-                myself.speak (self.speech[3])
-            else:
-                myself.speak (self.speech[random.randrange (0, 3)])
-
-            say = random.randrange (60, 180) * 20
-            myself.set_val ("say_something", say)
+        self.speech_delay = (20, 72)
+        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)
+        self.myself.set_callback (self.goal_reached)
+
+    def walk (self):
+        # -- goto the window
+        if self.myself.posx () == 4:
+            # ... and speak about the weather
+            self.delay = "%it" % 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)
+            if self.myself.set_goal (4, 4, adonthell.STAND_SOUTH) == 0:
+                self.myself.go_north ()
+                                
+    def goal_reached (self):
+        # -- standing in front of the window
+        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)
diff --git a/scripts/schedules/mapcharacters/talan.py 
b/scripts/schedules/mapcharacters/talan.py
index e27d988..2399bee 100755
--- a/scripts/schedules/mapcharacters/talan.py
+++ b/scripts/schedules/mapcharacters/talan.py
@@ -31,36 +31,21 @@ class talan (schedule.speak):
                        _("Nobody may pass through the gate!")]
         self.speech_delay = (30, 60)
         schedule.speak.__init__(self)
-
-    def run (self):
-        # Caching this often used variable for faster access
-        myself = self.myself
-        todo = myself.get_val ("todo")
-
-        # If standing
-        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:
-            # Choose where to move, if destination is already occupied we'll
-            # fall into the wait state (0) again automatically next time
-            if myself.posy () == 17:
-                myself.set_goal (11, 19, adonthell.STAND_NORTH)
-            else:
-                myself.set_goal (11, 17, adonthell.STAND_SOUTH)
-
-            # Next time we'll actually move!
-            myself.set_val ("todo", 2)
-
-        # Moving, follow the path until it is reached.
-        elif todo == 2:
-            # Reached the goal? Wait a while then...
-            if myself.follow_path ():
-                myself.set_val ("delay", random.randrange (25, 50) * 20)
-                myself.set_val ("todo", 0)
+        
+        # -- walking stuff
+        self.walk_event = adonthell.time_event ("5t")
+        self.walk_event.set_callback (self.walk)
+        adonthell.event_handler_register_event (self.walk_event)
+        self.myself.set_callback (self.goal_reached)
+        
+    def walk (self):
+        if self.myself.posy () == 17:
+            self.myself.set_goal (11, 19, adonthell.STAND_NORTH)
+        else:
+            self.myself.set_goal (11, 17, adonthell.STAND_SOUTH)
+        
+    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)
diff --git a/scripts/schedules/mapcharacters/tristan.py 
b/scripts/schedules/mapcharacters/tristan.py
index 55ca37d..b0f497e 100644
--- a/scripts/schedules/mapcharacters/tristan.py
+++ b/scripts/schedules/mapcharacters/tristan.py
@@ -32,48 +32,34 @@ class tristan (schedule.speak):
                        _("Ye gods! It cannot be that hard to find the thief!")]
         self.speech_delay = (20, 55)
         schedule.speak.__init__(self)
-
-    def run (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)
-
-        # -- get movement target
-        elif todo == 1:
-            # -- in common room -> go outside
-            if myself.submap () == 1 and \
-                adonthell.gamedata_get_quest ("demo").get_val ("intro_on") == 
0:
-                myself.set_goal (13, 8, adonthell.STAND_SOUTH)
-                delay = random.randint (100, 150) * 30
-
-            # -- outside -> goto common room
-            else:
-                myself.set_goal (18, 13, adonthell.STAND_NORTH)
-                delay = random.randint (75, 150) * 30
-
-            myself.set_val ("delay", delay)
-            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:
-                    myself.set_goal (4, 6, adonthell.STAND_WEST)
-
-                # -- reached yard
-                elif myself.submap () == 0 and myself.posx () == 18:
-                    myself.set_goal (12, 18, adonthell.STAND_WEST)
-
-                # -- reached our final destination
-                else:
-                    myself.set_val ("todo", 0)
+        
+        # -- 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)
+
+    def walk (self):
+        # -- in common room -> go outside
+        if self.myself.submap () == 1 and \
+            adonthell.gamedata_get_quest ("demo").get_val ("intro_on") == 0:
+            self.myself.set_goal (13, 8, adonthell.STAND_SOUTH)
+            self.walk_delay = "%it" % random.randint (60, 90)
+
+        # -- outside -> goto common room
+        else:
+            self.myself.set_goal (18, 13, adonthell.STAND_NORTH)
+            self.walk_delay = "%it" % random.randint (45, 90)
+    
+    def goal_reached (self):
+        # -- reached common room
+        if self.myself.submap () == 1 and self.myself.posx () == 13:
+            self.myself.set_goal (4, 6, adonthell.STAND_WEST)
+        # -- reached yard
+        elif self.myself.submap () == 0 and self.myself.posx () == 18:
+            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)



reply via email to

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