diff --git a/python/tod/filter_all_periods.py b/python/tod/filter_all_periods.py new file mode 100644 index 000000000..c940060fa --- /dev/null +++ b/python/tod/filter_all_periods.py @@ -0,0 +1,46 @@ +# moment_only.py +# +# Copyright 2007 by David Delbecq +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# +# This script make the event it is attached to (not global!) +# works only in specific moment of year/day +# exemple, to make an "apply" work only on +# Morning of each Day of the moon occuring during The Season of the Blizzard: +# +# arch event_apply +# title Python +# slaying /python/tod/filter_all_periods.py +# name the Day of the Moon,The Season of the Blizzard,Morning +# end +import Crossfire +import string + +now = Crossfire.GetTime() +parameters = string.split(Crossfire.ScriptParameters(),",") +current = [Crossfire.GetMonthName(now[1]),Crossfire.GetWeekdayName(now[5]),Crossfire.GetSeasonName(now[7]),Crossfire.GetPeriodofdayName(now[8])] +#Crossfire.Log(Crossfire.LogDebug , "Seasons to check for are %s" %parameters) +#Crossfire.Log(Crossfire.LogDebug , "now is %s" %current) + +#default: allow operation (0) +Crossfire.SetReturnValue() +if (set(parameters) - set(current)): +#some parameters had no match on 'now' -> refuse operation + Crossfire.SetReturnValue(1) + + diff --git a/python/tod/filter_one_period.py b/python/tod/filter_one_period.py new file mode 100644 index 000000000..bb163e791 --- /dev/null +++ b/python/tod/filter_one_period.py @@ -0,0 +1,45 @@ +# moment_only.py +# +# Copyright 2007 by David Delbecq +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# +# This script make the event it is attached to (not global!) +# works only in specific moment of year/day. Periods are separated +# by comas. See wiki doc list of possible values +# exemple, to make an "apply" work only during Blizzard, new year and every morning: +# +# arch event_apply +# title Python +# slaying /python/tod/filter_one_period.py +# name The Season of New Year,The Season of the Blizzard,Morning +# end +import Crossfire +import string + +now = Crossfire.GetTime() +parameters = string.split(Crossfire.ScriptParameters(),",") +current = [Crossfire.GetMonthName(now[1]),Crossfire.GetWeekdayName(now[5]),Crossfire.GetSeasonName(now[7]),Crossfire.GetPeriodofdayName(now[8])] +#Crossfire.Log(Crossfire.LogDebug , "Seasons to check for are %s" %parameters) +#Crossfire.Log(Crossfire.LogDebug , "now is %s" %current) + +#default: cancel operation (<>0). If non empty intersection, we have a match, set to continur operation (0) +Crossfire.SetReturnValue(1) +if (set(parameters) & set(current)): + Crossfire.SetReturnValue(0) + + diff --git a/python/tod/push_all_periods.py b/python/tod/push_all_periods.py new file mode 100644 index 000000000..49c64389a --- /dev/null +++ b/python/tod/push_all_periods.py @@ -0,0 +1,79 @@ +# push_all_periods.py +# +# Copyright 2007 by David Delbecq +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# +# This script make the event it is attached to (not global!) +# trigger a connected value at specific moment of year/day. +# It will behave as if a button was "pushed" when entering period +# and "released" after the period. Typical use is to use it as +# event_time on a living object (that objects that triggers +# time events). +# This script ensure button remains pushed for all period, and +# get release after period. This works even is map is loaded +# in middle of period or map gets released from memory and put in +# cache. In those case, event will just ensure that "current" state +# correspond to expected state and correct status if needed. +# Note: the event must be inside an object +# which can find a path, using inventory, to a toplavel +# object that is on a Map. +# +# exemple, to make an "push" active only Mornings of The Season of New Year: +# +# arch event_time +# title Python +# slaying /python/tod/push_all_periods.py +# name 69,Morning,The Season of New Year +# end +# parameters are separated by comas. First one +# is connected value to trigger, other ones are +# one or more periods where state must become "pushed" +import Crossfire +import string +event = Crossfire.WhatIsEvent() +alreadymatched = (event.Value!=0) + +parameters = string.split(Crossfire.ScriptParameters(),",") +connected = int(parameters.pop(0)) +now = Crossfire.GetTime() +current = [Crossfire.GetMonthName(now[1]),Crossfire.GetWeekdayName(now[5]),Crossfire.GetSeasonName(now[7]),Crossfire.GetPeriodofdayName(now[8])] +if (set(parameters) - set(current)): + match = False +else: + match=True +#pushdown if needed +if (match & (not alreadymatched)): + op = event + while (op.Env): + op=op.Env + map = op.Map + map.TriggerConnected(connected,1,Crossfire.WhoAmI()) + event.Value=1 +#release if needed +if ( (not match) & alreadymatched): + op = event + while (op.Env): + op=op.Env + map = op.Map + map.TriggerConnected(connected,0,Crossfire.WhoAmI()) + event.Value=0 + +#Crossfire.Log(Crossfire.LogDebug , "Seasons to check for are %s" %parameters) +#Crossfire.Log(Crossfire.LogDebug , "Current seasons are %s" %current) +#Crossfire.Log(Crossfire.LogDebug , "Current match status is %d but will be %d" %(alreadymatched,match)) +#Crossfire.Log(Crossfire.LogDebug , "Connecte to trigger is %i" %connected) diff --git a/python/tod/push_one_period.py b/python/tod/push_one_period.py new file mode 100644 index 000000000..13904ed98 --- /dev/null +++ b/python/tod/push_one_period.py @@ -0,0 +1,78 @@ +# push_one_period.py +# +# Copyright 2007 by David Delbecq +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# +# This script make the event it is attached to (not global!) +# trigger a connected value at specific moment of year/day. +# It will behave as if a button was "pushed" when entering period +# and "release" after the period. Typical use is to use it as +# event_time on a living object (that objects that triggers +# time events). +# This script ensure button remains pushed for all period, and +# get release after period. This works even is map is loaded +# in middle of period or map gets released from memory and put in +# cache. In those case, event will just ensure that "current" state +# correspond to expected state and correct status if needed. +# Note: the event must be inside an object +# which can find a path, using inventory, to a toplavel +# object that is on a Map. +# +# exemple, to make an "push" starting at Morning and ending after Noon: +# +# arch event_time +# title Python +# slaying /python/tod/push_one_period.py +# name 69,Morning,Noon +# end +# parameters are separated by comas. First one +# is connected value to trigger, other ones are +# one or more periods where state must become "pushed" +import Crossfire +import string +event = Crossfire.WhatIsEvent() +alreadymatched = (event.Value!=0) + +parameters = string.split(Crossfire.ScriptParameters(),",") +connected = int(parameters.pop(0)) +now = Crossfire.GetTime() +current = [Crossfire.GetMonthName(now[1]),Crossfire.GetWeekdayName(now[5]),Crossfire.GetSeasonName(now[7]),Crossfire.GetPeriodofdayName(now[8])] +if (set(parameters) & set(current)): + match = True +else: + match=False +#pushdown if need +if (match & (not alreadymatched)): + op = event + while (op.Env): + op=op.Env + map = op.Map + map.TriggerConnected(connected,1,Crossfire.WhoAmI()) + event.Value=1 +if ( (not match) & alreadymatched): + op = event + while (op.Env): + op=op.Env + map = op.Map + map.TriggerConnected(connected,0,Crossfire.WhoAmI()) + event.Value=0 + +#Crossfire.Log(Crossfire.LogDebug , "Seasons to check for are %s" %parameters) +#Crossfire.Log(Crossfire.LogDebug , "Current seasons are %s" %current) +#Crossfire.Log(Crossfire.LogDebug , "Current match status is %d but will be %d" %(alreadymatched,match)) +#Crossfire.Log(Crossfire.LogDebug , "Connecte to trigger is %i" %connected) diff --git a/test/tod b/test/tod new file mode 100644 index 000000000..3c979fef7 --- /dev/null +++ b/test/tod @@ -0,0 +1,2244 @@ +arch map +name tod +darkness 3 +width 20 +height 20 +msg +Created: 2007-11-11 tchize +Modified: 2007-11-16 tchize +endmsg +end +arch brush +end +arch sign +msg +This a test map for "time of day" +related test map. Apply triggers +to see how they behave, +depending on time of day... + +Each handle is connected to +a magic mouth that give +message on success +endmsg +end +arch brush +y 1 +end +arch brush +y 2 +end +arch brush +y 3 +end +arch brush +y 4 +end +arch brush +y 5 +end +arch brush +y 6 +end +arch brush +y 7 +end +arch brush +y 8 +end +arch brush +y 9 +end +arch brush +y 10 +end +arch brush +y 11 +end +arch brush +y 12 +end +arch brush +y 13 +end +arch brush +y 14 +end +arch brush +y 15 +end +arch brush +y 16 +end +arch brush +y 17 +end +arch brush +y 18 +end +arch brush +y 19 +end +arch brush +x 1 +end +arch brush +x 1 +y 1 +end +arch green-white-c-marble_111 +x 1 +y 2 +end +arch lamppost +x 1 +y 2 +end +arch marble +x 1 +y 3 +end +arch marble +x 1 +y 4 +end +arch marble +x 1 +y 5 +end +arch marble +x 1 +y 6 +end +arch marble +x 1 +y 7 +end +arch green-white-c-marble_112 +x 1 +y 8 +end +arch lamppost +x 1 +y 8 +end +arch brush +x 1 +y 9 +end +arch brush +x 1 +y 10 +end +arch brush +x 1 +y 11 +end +arch brush +x 1 +y 12 +end +arch brush +x 1 +y 13 +end +arch brush +x 1 +y 14 +end +arch brush +x 1 +y 15 +end +arch brush +x 1 +y 16 +end +arch brush +x 1 +y 17 +end +arch brush +x 1 +y 18 +end +arch brush +x 1 +y 19 +end +arch brush +x 2 +end +arch brush +x 2 +y 1 +end +arch sign +msg +South are Season related tests +endmsg +x 2 +y 1 +end +arch marble +x 2 +y 2 +end +arch brush +x 2 +y 3 +end +arch magic_mouth +msg +I will only talk during the Season of New Year +endmsg +x 2 +y 3 +move_on walk fly_low fly_high +arch event_trigger +name The Season of New Year +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 2 +y 4 +end +arch magic_mouth +msg +I will only talk during the Season of Growth +endmsg +x 2 +y 4 +move_on walk fly_low fly_high +arch event_trigger +name The Season of Growth +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 2 +y 5 +end +arch magic_mouth +msg +I will only talk during the Season of Harvest +endmsg +x 2 +y 5 +move_on walk fly_low fly_high +arch event_trigger +name The Season of Harvest +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 2 +y 6 +end +arch magic_mouth +msg +I will only talk during the Season of Decay +endmsg +x 2 +y 6 +move_on walk fly_low fly_high +arch event_trigger +name The Season of Decay +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 2 +y 7 +end +arch magic_mouth +msg +I will only talk during the Season of the Blizzard +endmsg +x 2 +y 7 +move_on walk fly_low fly_high +arch event_trigger +name The Season of the Blizzard +title Python +slaying /python/tod/filter_one_period.py +end +end +arch marble +x 2 +y 8 +end +arch brush +x 2 +y 9 +end +arch brush +x 2 +y 10 +end +arch brush +x 2 +y 11 +end +arch brush +x 2 +y 12 +end +arch brush +x 2 +y 13 +end +arch brush +x 2 +y 14 +end +arch brush +x 2 +y 15 +end +arch brush +x 2 +y 16 +end +arch brush +x 2 +y 17 +end +arch brush +x 2 +y 18 +end +arch brush +x 2 +y 19 +end +arch brush +x 3 +end +arch brush +x 3 +y 1 +end +arch marble +x 3 +y 2 +end +arch lamppost +x 3 +y 2 +end +arch marble +x 3 +y 3 +end +arch marble +x 3 +y 4 +end +arch marble +x 3 +y 5 +end +arch marble +x 3 +y 6 +end +arch marble +x 3 +y 7 +end +arch marble +x 3 +y 8 +end +arch lamppost +x 3 +y 8 +end +arch marble +x 3 +y 9 +end +arch marble +x 3 +y 10 +end +arch marble +x 3 +y 11 +end +arch marble +x 3 +y 12 +end +arch marble +x 3 +y 13 +end +arch lamppost +x 3 +y 13 +end +arch marble +x 3 +y 14 +end +arch marble +x 3 +y 15 +end +arch marble +x 3 +y 16 +end +arch marble +x 3 +y 17 +end +arch lamppost +x 3 +y 17 +end +arch marble +x 3 +y 18 +end +arch marble +x 3 +y 19 +end +arch brush +x 4 +end +arch brush +x 4 +y 1 +end +arch sign +msg +South are Month related tests +endmsg +x 4 +y 1 +end +arch marble +x 4 +y 2 +end +arch brush +x 4 +y 3 +end +arch magic_mouth +msg +I will only talk during the Month of Winter +endmsg +x 4 +y 3 +move_on walk fly_low fly_high +arch event_trigger +name Month of Winter +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 4 +end +arch magic_mouth +msg +I will only talk during the Month of the Ice Dragon +endmsg +x 4 +y 4 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Ice Dragon +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 5 +end +arch magic_mouth +msg +I will only talk during the Month of the Frost Giant +endmsg +x 4 +y 5 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Frost Giant +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 6 +end +arch magic_mouth +msg +I will only talk during the Month of Valriel +endmsg +x 4 +y 6 +move_on walk fly_low fly_high +arch event_trigger +name Month of Valriel +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 7 +end +arch magic_mouth +msg +I will only talk during the Month of Lythander +endmsg +x 4 +y 7 +move_on walk fly_low fly_high +arch event_trigger +name Month of Lythander +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 8 +end +arch magic_mouth +msg +I will only talk during the Month of the Harvest +endmsg +x 4 +y 8 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Harvest +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 9 +end +arch magic_mouth +msg +I will only talk during the Month of Gaea +endmsg +x 4 +y 9 +move_on walk fly_low fly_high +arch event_trigger +name Month of Gaea +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 10 +end +arch magic_mouth +msg +I will only talk during the Month of Futility +endmsg +x 4 +y 10 +move_on walk fly_low fly_high +arch event_trigger +name Month of Futility +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 11 +end +arch magic_mouth +msg +I will only talk during the Month of the Dragon +endmsg +x 4 +y 11 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Dragon +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 12 +end +arch magic_mouth +msg +I will only talk during the Month of the Sun +endmsg +x 4 +y 12 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Sun +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 13 +end +arch magic_mouth +msg +I will only talk during the Month of the Great Infernus +endmsg +x 4 +y 13 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Great Infernus +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 14 +end +arch magic_mouth +msg +I will only talk during the Month of Ruggilli +endmsg +x 4 +y 14 +move_on walk fly_low fly_high +arch event_trigger +name Month of Ruggilli +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 15 +end +arch magic_mouth +msg +I will only talk during the Month of the Dark Shades +endmsg +x 4 +y 15 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Dark Shades +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 16 +end +arch magic_mouth +msg +I will only talk during the Month of the Devourers +endmsg +x 4 +y 16 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Devourers +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 17 +end +arch magic_mouth +msg +I will only talk during the Month of Sorig +endmsg +x 4 +y 17 +move_on walk fly_low fly_high +arch event_trigger +name Month of Sorig +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 18 +end +arch magic_mouth +msg +I will only talk during the Month of the Ancient Darkness +endmsg +x 4 +y 18 +move_on walk fly_low fly_high +arch event_trigger +name Month of the Ancient Darkness +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 4 +y 19 +end +arch magic_mouth +msg +I will only talk during the Month of Gorokh +endmsg +x 4 +y 19 +move_on walk fly_low fly_high +arch event_trigger +name Month of Gorokh +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 5 +end +arch brush +x 5 +y 1 +end +arch marble +x 5 +y 2 +end +arch lamppost +x 5 +y 2 +end +arch marble +x 5 +y 3 +end +arch marble +x 5 +y 4 +end +arch marble +x 5 +y 5 +end +arch marble +x 5 +y 6 +end +arch marble +x 5 +y 7 +end +arch marble +x 5 +y 8 +end +arch lamppost +x 5 +y 8 +end +arch marble +x 5 +y 9 +end +arch marble +x 5 +y 10 +end +arch marble +x 5 +y 11 +end +arch marble +x 5 +y 12 +end +arch marble +x 5 +y 13 +end +arch lamppost +x 5 +y 13 +end +arch marble +x 5 +y 14 +end +arch marble +x 5 +y 15 +end +arch marble +x 5 +y 16 +end +arch marble +x 5 +y 17 +end +arch lamppost +x 5 +y 17 +end +arch marble +x 5 +y 18 +end +arch marble +x 5 +y 19 +end +arch brush +x 6 +end +arch brush +x 6 +y 1 +end +arch sign +msg +South are Day of the week related tests +endmsg +x 6 +y 1 +end +arch marble +x 6 +y 2 +end +arch brush +x 6 +y 3 +end +arch magic_mouth +msg +I will only talk during the Day of the Moon +endmsg +x 6 +y 3 +move_on walk fly_low fly_high +arch event_trigger +name the Day of the Moon +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 6 +y 4 +end +arch magic_mouth +msg +I will only talk during the Day of the Bull +endmsg +x 6 +y 4 +move_on walk fly_low fly_high +arch event_trigger +name the Day of the Bull +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 6 +y 5 +end +arch magic_mouth +msg +I will only talk during the Day of the Deception +endmsg +x 6 +y 5 +move_on walk fly_low fly_high +arch event_trigger +name the Day of the Deception +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 6 +y 6 +end +arch magic_mouth +msg +I will only talk during the Day of Thunder +endmsg +x 6 +y 6 +move_on walk fly_low fly_high +arch event_trigger +name the Day of Thunder +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 6 +y 7 +end +arch magic_mouth +msg +I will only talk during the Day of Freedom +endmsg +x 6 +y 7 +move_on walk fly_low fly_high +arch event_trigger +name the Day of Freedom +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 6 +y 8 +end +arch magic_mouth +msg +I will only talk during the Day of the Great Gods +endmsg +x 6 +y 8 +move_on walk fly_low fly_high +arch event_trigger +name the Day of the Great Gods +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 6 +y 9 +end +arch magic_mouth +msg +I will only talk during the Day of the Sun +endmsg +x 6 +y 9 +move_on walk fly_low fly_high +arch event_trigger +name the Day of the Sun +title Python +slaying /python/tod/filter_one_period.py +end +end +arch marble +x 6 +y 10 +end +arch brush +x 6 +y 11 +end +arch brush +x 6 +y 12 +end +arch brush +x 6 +y 13 +end +arch brush +x 6 +y 14 +end +arch brush +x 6 +y 15 +end +arch brush +x 6 +y 16 +end +arch brush +x 6 +y 17 +end +arch brush +x 6 +y 18 +end +arch brush +x 6 +y 19 +end +arch brush +x 7 +end +arch brush +x 7 +y 1 +end +arch marble +x 7 +y 2 +end +arch lamppost +x 7 +y 2 +end +arch marble +x 7 +y 3 +end +arch marble +x 7 +y 4 +end +arch marble +x 7 +y 5 +end +arch marble +x 7 +y 6 +end +arch marble +x 7 +y 7 +end +arch marble +x 7 +y 8 +end +arch lamppost +x 7 +y 8 +end +arch marble +x 7 +y 9 +end +arch green-white-c-marble_113 +x 7 +y 10 +end +arch brush +x 7 +y 11 +end +arch brush +x 7 +y 12 +end +arch brush +x 7 +y 13 +end +arch brush +x 7 +y 14 +end +arch brush +x 7 +y 15 +end +arch brush +x 7 +y 16 +end +arch brush +x 7 +y 17 +end +arch brush +x 7 +y 18 +end +arch brush +x 7 +y 19 +end +arch brush +x 8 +end +arch brush +x 8 +y 1 +end +arch sign +msg +South are test that are related +to the period of the day (Night, +Dawn, Dusk, etc) +endmsg +x 8 +y 1 +end +arch marble +x 8 +y 2 +end +arch brush +x 8 +y 3 +end +arch magic_mouth +msg +I will only talk during the Night +endmsg +x 8 +y 3 +move_on walk fly_low fly_high +arch event_trigger +name Night +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 8 +y 4 +end +arch magic_mouth +msg +I will only talk during the Dawn +endmsg +x 8 +y 4 +move_on walk fly_low fly_high +arch event_trigger +name Dawn +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 8 +y 5 +end +arch magic_mouth +msg +I will only talk during the Morning +endmsg +x 8 +y 5 +move_on walk fly_low fly_high +arch event_trigger +name Morning +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 8 +y 6 +end +arch magic_mouth +msg +I will only talk during the Noon +endmsg +x 8 +y 6 +move_on walk fly_low fly_high +arch event_trigger +name Noon +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 8 +y 7 +end +arch magic_mouth +msg +I will only talk during the Evening +endmsg +x 8 +y 7 +move_on walk fly_low fly_high +arch event_trigger +name Evening +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 8 +y 8 +end +arch magic_mouth +msg +I will only talk during the Dusk +endmsg +x 8 +y 8 +move_on walk fly_low fly_high +arch event_trigger +name Dusk +title Python +slaying /python/tod/filter_one_period.py +end +end +arch marble +x 8 +y 9 +end +arch brush +x 8 +y 10 +end +arch brush +x 8 +y 11 +end +arch brush +x 8 +y 12 +end +arch brush +x 8 +y 13 +end +arch brush +x 8 +y 14 +end +arch brush +x 8 +y 15 +end +arch brush +x 8 +y 16 +end +arch brush +x 8 +y 17 +end +arch brush +x 8 +y 18 +end +arch brush +x 8 +y 19 +end +arch brush +x 9 +end +arch brush +x 9 +y 1 +end +arch green-white-c-marble_114 +x 9 +y 2 +end +arch lamppost +x 9 +y 2 +end +arch marble +x 9 +y 3 +end +arch marble +x 9 +y 4 +end +arch marble +x 9 +y 5 +end +arch marble +x 9 +y 6 +end +arch marble +x 9 +y 7 +end +arch marble +x 9 +y 8 +end +arch lamppost +x 9 +y 8 +end +arch green-white-c-marble_113 +x 9 +y 9 +end +arch brush +x 9 +y 10 +end +arch brush +x 9 +y 11 +end +arch brush +x 9 +y 12 +end +arch brush +x 9 +y 13 +end +arch brush +x 9 +y 14 +end +arch brush +x 9 +y 15 +end +arch brush +x 9 +y 16 +end +arch brush +x 9 +y 17 +end +arch brush +x 9 +y 18 +end +arch brush +x 9 +y 19 +end +arch brush +x 10 +end +arch brush +x 10 +y 1 +end +arch brush +x 10 +y 2 +end +arch brush +x 10 +y 3 +end +arch brush +x 10 +y 4 +end +arch brush +x 10 +y 5 +end +arch brush +x 10 +y 6 +end +arch brush +x 10 +y 7 +end +arch brush +x 10 +y 8 +end +arch brush +x 10 +y 9 +end +arch brush +x 10 +y 10 +end +arch brush +x 10 +y 11 +end +arch brush +x 10 +y 12 +end +arch brush +x 10 +y 13 +end +arch brush +x 10 +y 14 +end +arch brush +x 10 +y 15 +end +arch brush +x 10 +y 16 +end +arch brush +x 10 +y 17 +end +arch brush +x 10 +y 18 +end +arch brush +x 10 +y 19 +end +arch brush +x 11 +end +arch brush +x 11 +y 1 +end +arch brush +x 11 +y 2 +end +arch light2 +x 11 +y 2 +end +arch brush +x 11 +y 3 +end +arch brush +x 11 +y 4 +end +arch brush +x 11 +y 5 +end +arch brush +x 11 +y 6 +end +arch brush +x 11 +y 7 +end +arch brush +x 11 +y 8 +end +arch brush +x 11 +y 9 +end +arch brush +x 11 +y 10 +end +arch brush +x 11 +y 11 +end +arch brush +x 11 +y 12 +end +arch brush +x 11 +y 13 +end +arch brush +x 11 +y 14 +end +arch brush +x 11 +y 15 +end +arch brush +x 11 +y 16 +end +arch brush +x 11 +y 17 +end +arch brush +x 11 +y 18 +end +arch brush +x 11 +y 19 +end +arch brush +x 12 +end +arch brush +x 12 +y 1 +end +arch brush +x 12 +y 2 +end +arch brush +x 12 +y 3 +end +arch brush +x 12 +y 4 +end +arch light2 +x 12 +y 4 +end +arch brush +x 12 +y 5 +end +arch brush +x 12 +y 6 +end +arch brush +x 12 +y 7 +end +arch brush +x 12 +y 8 +end +arch brush +x 12 +y 9 +end +arch brush +x 12 +y 10 +end +arch brush +x 12 +y 11 +end +arch brush +x 12 +y 12 +end +arch brush +x 12 +y 13 +end +arch brush +x 12 +y 14 +end +arch brush +x 12 +y 15 +end +arch brush +x 12 +y 16 +end +arch brush +x 12 +y 17 +end +arch brush +x 12 +y 18 +end +arch brush +x 12 +y 19 +end +arch brush +x 13 +end +arch light2 +x 13 +end +arch brush +x 13 +y 1 +end +arch brush +x 13 +y 2 +end +arch brush +x 13 +y 3 +end +arch brush +x 13 +y 4 +end +arch brush +x 13 +y 5 +end +arch brush +x 13 +y 6 +end +arch brush +x 13 +y 7 +end +arch brush +x 13 +y 8 +end +arch brush +x 13 +y 9 +end +arch brush +x 13 +y 10 +end +arch brush +x 13 +y 11 +end +arch brush +x 13 +y 12 +end +arch brush +x 13 +y 13 +end +arch brush +x 13 +y 14 +end +arch brush +x 13 +y 15 +end +arch brush +x 13 +y 16 +end +arch brush +x 13 +y 17 +end +arch brush +x 13 +y 18 +end +arch brush +x 13 +y 19 +end +arch brush +x 14 +end +arch brush +x 14 +y 1 +end +arch brush +x 14 +y 2 +end +arch light2 +x 14 +y 2 +end +arch brush +x 14 +y 3 +end +arch brush +x 14 +y 4 +end +arch brush +x 14 +y 5 +end +arch brush +x 14 +y 6 +end +arch brush +x 14 +y 7 +end +arch brush +x 14 +y 8 +end +arch brush +x 14 +y 9 +end +arch brush +x 14 +y 10 +end +arch brush +x 14 +y 11 +end +arch brush +x 14 +y 12 +end +arch brush +x 14 +y 13 +end +arch brush +x 14 +y 14 +end +arch brush +x 14 +y 15 +end +arch brush +x 14 +y 16 +end +arch brush +x 14 +y 17 +end +arch brush +x 14 +y 18 +end +arch brush +x 14 +y 19 +end +arch brush +x 15 +end +arch brush +x 15 +y 1 +end +arch brush +x 15 +y 2 +end +arch brush +x 15 +y 3 +end +arch brush +x 15 +y 4 +end +arch light2 +x 15 +y 4 +end +arch brush +x 15 +y 5 +end +arch brush +x 15 +y 6 +end +arch brush +x 15 +y 7 +end +arch brush +x 15 +y 8 +end +arch brush +x 15 +y 9 +end +arch brush +x 15 +y 10 +end +arch brush +x 15 +y 11 +end +arch brush +x 15 +y 12 +end +arch brush +x 15 +y 13 +end +arch brush +x 15 +y 14 +end +arch brush +x 15 +y 15 +end +arch magic_mouth +msg +You see the sage activating the doors +endmsg +x 15 +y 15 +connected 79 +move_on 0 +end +arch sage +msg +@match * +I am responsible for opening those gates on the Mrning and close them at Dusk +endmsg +x 15 +y 15 +stand_still 1 +no_damage 1 +arch event_time +name 79,Morning,Noon,Evening +title Python +slaying /python/tod/push_one_period.py +end +end +arch brush +x 15 +y 16 +end +arch igate_closed_2 +x 15 +y 16 +connected 79 +end +arch brush +x 15 +y 17 +end +arch igate_closed_2 +x 15 +y 17 +connected 79 +end +arch brush +x 15 +y 18 +end +arch igate_closed_2 +x 15 +y 18 +connected 79 +end +arch brush +x 15 +y 19 +end +arch brush +x 16 +end +arch light2 +x 16 +end +arch brush +x 16 +y 1 +end +arch brush +x 16 +y 2 +end +arch brush +x 16 +y 3 +end +arch brush +x 16 +y 4 +end +arch brush +x 16 +y 5 +end +arch brush +x 16 +y 6 +end +arch brush +x 16 +y 7 +end +arch brush +x 16 +y 8 +end +arch brush +x 16 +y 9 +end +arch brush +x 16 +y 10 +end +arch brush +x 16 +y 11 +end +arch brush +x 16 +y 12 +end +arch brush +x 16 +y 13 +end +arch brush +x 16 +y 14 +end +arch brush +x 16 +y 15 +end +arch brush +x 16 +y 16 +end +arch light4 +x 16 +y 16 +end +arch brush +x 16 +y 17 +end +arch brush +x 16 +y 18 +end +arch light4 +x 16 +y 18 +end +arch brush +x 16 +y 19 +end +arch brush +x 17 +end +arch brush +x 17 +y 1 +end +arch brush +x 17 +y 2 +end +arch light2 +x 17 +y 2 +end +arch brush +x 17 +y 3 +end +arch brush +x 17 +y 4 +end +arch brush +x 17 +y 5 +end +arch brush +x 17 +y 6 +end +arch brush +x 17 +y 7 +end +arch brush +x 17 +y 8 +end +arch brush +x 17 +y 9 +end +arch brush +x 17 +y 10 +end +arch brush +x 17 +y 11 +end +arch brush +x 17 +y 12 +end +arch brush +x 17 +y 13 +end +arch brush +x 17 +y 14 +end +arch brush +x 17 +y 15 +end +arch brush +x 17 +y 16 +end +arch light4 +x 17 +y 16 +end +arch brush +x 17 +y 17 +end +arch brush +x 17 +y 18 +end +arch light4 +x 17 +y 18 +end +arch brush +x 17 +y 19 +end +arch brush +x 18 +end +arch brush +x 18 +y 1 +end +arch brush +x 18 +y 2 +end +arch brush +x 18 +y 3 +end +arch brush +x 18 +y 4 +end +arch light2 +x 18 +y 4 +end +arch brush +x 18 +y 5 +end +arch brush +x 18 +y 6 +end +arch brush +x 18 +y 7 +end +arch brush +x 18 +y 8 +end +arch brush +x 18 +y 9 +end +arch brush +x 18 +y 10 +end +arch brush +x 18 +y 11 +end +arch brush +x 18 +y 12 +end +arch brush +x 18 +y 13 +end +arch brush +x 18 +y 14 +end +arch brush +x 18 +y 15 +end +arch brush +x 18 +y 16 +end +arch brush +x 18 +y 17 +end +arch brush +x 18 +y 18 +end +arch brush +x 18 +y 19 +end +arch magentamarble +x 19 +end +arch note +msg +This weapon is lazy, it works +only half the day +(Morning, Noon abd Evening) +endmsg +x 19 +end +arch light_sword +name Day sword +x 19 +arch event_attack +name Morning,Noon,Evening +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 19 +y 1 +end +arch magentamarble +x 19 +y 2 +end +arch note +msg +This weapon is lazy, it works +only half the day +(Night,Dawn,Dusk) +endmsg +x 19 +y 2 +end +arch light_sword +name Night sword +x 19 +y 2 +arch event_attack +name Night,Dawn,Dusk +title Python +slaying /python/tod/filter_one_period.py +end +end +arch brush +x 19 +y 3 +end +arch brush +x 19 +y 4 +end +arch brush +x 19 +y 5 +end +arch brush +x 19 +y 6 +end +arch brush +x 19 +y 7 +end +arch brush +x 19 +y 8 +end +arch brush +x 19 +y 9 +end +arch brush +x 19 +y 10 +end +arch brush +x 19 +y 11 +end +arch brush +x 19 +y 12 +end +arch brush +x 19 +y 13 +end +arch brush +x 19 +y 14 +end +arch brush +x 19 +y 15 +end +arch brush +x 19 +y 16 +end +arch brush +x 19 +y 17 +end +arch brush +x 19 +y 18 +end +arch brush +x 19 +y 19 +end