Mercurial > fife-parpg
diff demos/rpg/scripts/actors/questgiver.py @ 534:65a92a2449d5
Doing some re-factoring.
Minor change to the way the console commands are parsed.
Added the spawn command to the help file.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Mon, 31 May 2010 17:45:04 +0000 |
parents | |
children | 2e739ae9a8bc |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/demos/rpg/scripts/actors/questgiver.py Mon May 31 17:45:04 2010 +0000 @@ -0,0 +1,85 @@ +#!/usr/bin/env python + +# -*- coding: utf-8 -*- + +# #################################################################### +# Copyright (C) 2005-2010 by the FIFE team +# http://www.fifengine.net +# This file is part of FIFE. +# +# FIFE is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# #################################################################### +# This is the rio de hola client for FIFE. + +import sys, os, re, math, random, shutil + +from fife import fife + +from scripts.objects.baseobject import BaseGameObject, GameObjectTypes +from scripts.actors.baseactor import Actor + +class QuestGiver(Actor): + def __init__(self, gamecontroller, instancename, instanceid=None, createInstance=False): + self._type = GameObjectTypes["QUESTGIVER"] + super(QuestGiver, self).__init__(gamecontroller, instancename, instanceid, createInstance) + + self._quests = [] + + self._activequest = None + + def addQuest(self, quest): + self._quests.append(quest) + + def offerNextQuest(self): + if self._activequest: + return + + if len(self._quests) > 0: + self._gamecontroller.guicontroller.showQuestDialog(self) + + def getNextQuest(self): + if len(self._quests) > 0: + return self._quests[0] + + return None + + def activateQuest(self, quest): + self._activequest = quest + + def completeQuest(self): + if self._activequest in self._quests: + if self._activequest.checkQuestCompleted(self._gamecontroller.scene.player): + self.say("That everything I need. Thank you!") + self._gamecontroller.scene.player.gold = self._gamecontroller.scene.player.gold - self._activequest.requiredgold + + for itemid in self._activequest.requireditems: + self._gamecontroller.scene.player.removeItemFromInventory(itemid) + + self._quests.remove(self._activequest) + self._activequest = None + else: + self.say("Come back when you have all the items I requested!") + else: + #something went wrong + self._activequest = None + + def haveQuest(self): + return len(self._quests) > 0 + + def _getActiveQuest(self): + return self._activequest + + activequest = property(_getActiveQuest)