From 39d497e7479576be734644dac9c4c7728b5e7708 Mon Sep 17 00:00:00 2001 From: cavesomething Date: Wed, 5 May 2010 16:10:47 +0000 Subject: [PATCH] New Script to enable map connections to be triggered depending on the state of a quest. git-svn-id: svn://svn.code.sf.net/p/crossfire/code/maps/trunk@13131 282e977c-c81d-0410-88c4-b93c2d0d6712 --- python/quests/QuestTriggerConnect.py | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 python/quests/QuestTriggerConnect.py diff --git a/python/quests/QuestTriggerConnect.py b/python/quests/QuestTriggerConnect.py new file mode 100644 index 000000000..df8fc1697 --- /dev/null +++ b/python/quests/QuestTriggerConnect.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# QuestTriggerConnect.py - A generic script to trigger connections based on Quest progress +# +# Copyright (C) 2010 The Crossfire Development Team +# +# 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 is intended to be bound to event objects in order to conditionally trigger +# connections based on the status of a quest, used correctly it can reduce the need for +# markers to use checkinvs on. +# it must always be given the following arguments: +# name of the quest +# stage(s) to trigger on +# connection to trigger +# the quest must exist, and the connection must be present on the map. + +import Crossfire + +player = Crossfire.WhoIsActivator() +event = Crossfire.WhatIsEvent() +params = Crossfire.ScriptParameters() +args = params.split() +questname = args[0] +currentstep = player.QuestGetState(questname) +condition = args[1] +if condition.find("-") == -1: + startstep = int(condition) + endstep = startstep +else: + startstep = int(condition.split("-")[0]) + endstep= int(condition.split("-")[1]) +if currentstep >= startstep and currentstep <= endstep: + Crossfire.Log(Crossfire.LogDebug, "QuestTriggerConnect.py: triggering connection number %s." % args[2]) + player.Map.TriggerConnected(int(args[2]), 1, player)