Ignore:
Timestamp:
08/03/10 16:15:21 (9 years ago)
Author:
beliar
Message:

Patch by Beliar.

  • Added messages to ignore to pylintrc
  • Fixed error when marking a quest as finished/failed
  • It is now possible to brew the beer required for a quest. For now this does not need any special requirements, like having the quest active or read the pamphlet, but to make the best quality beer you need an ingredient you can only get if you have the quest and read the pamphlet. Most ingredients can be found if you look around on the maps. This makes the "Beer" quest finishable!
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/game/scripts/objects/action.py

    r610 r618  
    400400        self.item.in_container.takeItem(self.item) 
    401401        self.container_gui.updateImages() 
     402         
     403class BrewBeerAction(Action): 
     404    """Action for brewing beer in a pot""" 
     405    def __init__(self, controller, pot, commands = None): 
     406        super(BrewBeerAction, self).__init__(controller, commands) 
     407        self.pot = pot 
     408        self.view = controller.view 
     409         
     410    def execute(self): 
     411        """Brew the beer""" 
     412        has_water = False 
     413        has_yeast = False 
     414        has_fruit = False 
     415        has_wood = False 
     416        has_bottle = False 
     417        player_character = self.model.game_state.player_character 
     418        for item in self.pot.items.itervalues(): 
     419            if item.item_type == "Questionable water": 
     420                if has_water: 
     421                    self.view.hud.addAction(unicode(\ 
     422                        "Please put only 1 water in the pot")) 
     423                    return 
     424                has_water = True 
     425                water_type = 1  
     426                water = item 
     427            elif item.item_type == "Pure water": 
     428                if has_water: 
     429                    self.view.hud.addAction(unicode(\ 
     430                        "Please put only 1 water in the pot")) 
     431                    return 
     432                has_water = True 
     433                water_type = 2 
     434                water = item 
     435            elif item.item_type == "Grain": 
     436                if has_fruit: 
     437                    self.view.hud.addAction(unicode(\ 
     438                        "Please put only 1 fruit in the pot")) 
     439                    return 
     440                has_fruit = True 
     441                fruit_type = 3 
     442                fruit = item 
     443            elif item.item_type == "Wild potato": 
     444                if has_fruit: 
     445                    self.view.hud.addAction(unicode(\ 
     446                        "Please put only 1 fruit in the pot")) 
     447                    return 
     448                has_fruit = True 
     449                fruit_type = 2 
     450                fruit = item 
     451            elif item.item_type == "Rotten yam": 
     452                if has_fruit: 
     453                    self.view.hud.addAction(unicode(\ 
     454                        "Please put only 1 fruit in the pot")) 
     455                    return 
     456                has_fruit = True 
     457                fruit_type = 1 
     458                fruit = item 
     459            elif item.item_type == "Yeast": 
     460                if has_yeast: 
     461                    self.view.hud.addAction(unicode(\ 
     462                        "Please put only 1 yeast in the pot")) 
     463                    return 
     464                has_yeast = True 
     465                yeast = item  
     466            else: 
     467                self.view.hud.addAction(unicode("Item " + item.name + \ 
     468                                                " is not needed for brewing beer")) 
     469                self.view.hud.addAction(unicode(\ 
     470                    "Please put only ingredients for the beer in the pot.\ 
     471                    Things like bottles and wood have to be in your inventory")) 
     472                return 
     473        wood = player_character.hasItem("Wood") 
     474        if wood: 
     475            has_wood = True         
     476        bottle = player_character.hasItem("Empty beer bottle") 
     477        if bottle: 
     478            has_bottle = True         
     479        if has_water and has_fruit and has_wood and has_bottle: 
     480            self.pot.removeItem(water) 
     481            self.pot.removeItem(fruit) 
     482            if has_yeast: 
     483                self.pot.removeItem(yeast) 
     484            player_character.inventory.removeItem(wood) 
     485            inst_dict = {} 
     486            inst_dict["ID"] = "Beer" 
     487            inst_dict["object_type"] = "Beer" 
     488            new_item = self.model.createContainerObject(inst_dict) 
     489            player_character.inventory.placeItem(new_item) 
     490            self.view.hud.inventory.updateInventoryButtons() 
     491            beer_quality = 0 
     492            if water_type == 1: 
     493                if fruit_type == 1: 
     494                    beer_quality = -1 
     495                elif fruit_type == 2: 
     496                    beer_quality = 2 
     497                elif fruit_type == 3: 
     498                    beer_quality = 3 
     499            if water_type == 2: 
     500                if fruit_type == 1: 
     501                    beer_quality = 1 
     502                elif fruit_type == 2: 
     503                    beer_quality = 3 
     504                elif fruit_type == 3: 
     505                    beer_quality = 4 
     506            if beer_quality > 0 and has_yeast: 
     507                beer_quality += 1 
     508            self.model.game_state.quest_engine.quests["beer"].\ 
     509                    setValue("beer_quality", beer_quality) 
     510        else: 
     511            self.view.hud.addAction(unicode( 
     512            """For brewing beer you need at least: 
     513            In the pot: 
     514                Fruit (like grain, potato, yam) 
     515                Water 
     516                Optionally: 
     517                    Good quality yeast. 
     518                    Wild yeast will be used if none present. 
     519            In the inventory: 
     520                Wood 
     521                Empty bottle""")) 
     522        super(BrewBeerAction, self).execute() 
    402523 
    403524ACTIONS = {"ChangeMap":ChangeMapAction,  
     
    413534           "Use":UseAction, 
    414535           "PickUp":PickUpAction, 
    415            "DropFromInventory":DropItemFromContainerAction} 
     536           "DropFromInventory":DropItemFromContainerAction, 
     537           "BrewBeer":BrewBeerAction} 
Note: See TracChangeset for help on using the changeset viewer.