Changeset 618


Ignore:
Timestamp:
08/03/10 16:15:21 (8 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!
Location:
trunk/game
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/game/dialogue/crazy_swede.yaml

    r571 r618  
    178178    get_yeast: 
    179179        - say: "My precious beasties... yeasty beasties for the fermentation!  Don't forget to save Culture and Civilization!" 
    180         - get_stuff: yeast 
     180        - get_stuff: Yeast 
    181181        - set_value: 
    182182            quest: 'beer' 
  • trunk/game/dialogue/farmer.yaml

    r570 r618  
    108108    help_grain: 
    109109        - say: "Well, that is my department.  I'll give you a bushel if you promise to use your brew to cause Jacob trouble." 
    110         - get_stuff: bushel_of_grain 
     110        - get_stuff: Grain 
    111111        - set_value: 
    112112            quest: 'beer' 
  • trunk/game/maps/all_agents.yaml

    r615 r618  
    207207    ItemType: "Wild potato" 
    208208    Map: "Farm" 
    209     Position: [-4.0, -8.0] 
     209    Position: [7.0, -16.0] 
     210    Rotation: 0 
     211--- 
     212Yam: 
     213    ViewName: Yam 
     214    ObjectType: "MapItem" 
     215    ItemType: "Rotten yam" 
     216    Map: "Farm" 
     217    Position: [-4.0, 0.0] 
    210218    Rotation: 0 
    211219--- 
     
    217225    Position: [10.0, 8.0] 
    218226    Rotation: 0 
     227--- 
     228Questionable Water: 
     229    ViewName: Water 
     230    ObjectType: "MapItem" 
     231    ItemType: "Questionable water" 
     232    Map: "Mall" 
     233    Position: [9.0, -33.0] 
     234    Rotation: 0 
     235--- 
     236Pure Water: 
     237    ViewName: Water 
     238    ObjectType: "MapItem" 
     239    ItemType: "Pure water" 
     240    Map: "Mall" 
     241    Position: [12.0, -42.0] 
     242    Rotation: 0 
     243     
  • trunk/game/objects/object_database.yaml

    r610 r618  
    103103    Look: 
    104104      text: Old pot. Rusty, sooty, heavyweight and durable. 
     105    BrewBeer: 
    105106--- 
    106107Butcher's hook: 
     
    148149Pure water: 
    149150  name: Pure water 
    150   image: /gui/inv_images/inv_water_plain.png 
     151  image: /gui/inv_images/inv_water_pure.png 
     152  gfx: bottle 
    151153  actions: 
    152154    Look: 
     
    156158  name: Water 
    157159  image: /gui/inv_images/inv_water_muddy.png 
     160  gfx: bottle 
    158161  actions: 
    159162    Look: 
  • trunk/game/pylintrc

    r595 r618  
    5454 
    5555# Disable the message(s) with the given id(s). 
    56 disable-msg=W0704,W0105,W0142,R0901,R0913,W0221,W0613,R0903,R0902,R0201,R0904,R0914,R0912,W0511 
     56disable-msg=W0704,W0105,W0142,R0901,R0913,W0221,W0613,R0903,R0902,R0201,R0904,R0914,R0912,W0511,R0915,R0911 
    5757 
    5858 
  • trunk/game/scripts/gui/containergui_base.py

    r610 r618  
    8080                if action_name == "Open": 
    8181                    param_dict["container"] = item 
     82                if action_name == "BrewBeer": 
     83                    param_dict["pot"] = item 
     84                    display_name = "Brew beer" 
    8285                if actions[action_name]: 
    8386                    param_dict.update(actions[action_name]) 
  • 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} 
  • trunk/game/scripts/quest_engine.py

    r586 r618  
    182182           @return: False when it failes""" 
    183183        if quest_id in self.active_quests: 
    184             self.finished_quests[quest_id] = self.active_quests[quest_id] 
    185             del self.active_quests[quest_id] 
     184            self.finished_quests.append(quest_id) 
     185            self.active_quests.remove(quest_id) 
    186186            return True 
    187187        return False 
     
    201201           @return: False when it failes""" 
    202202        if quest_id in self.active_quests: 
    203             self.failed_quests[quest_id] = self.active_quests[quest_id] 
    204             del self.active_quests[quest_id] 
     203            self.failed_quests.append(quest_id) 
     204            self.active_quests.remove(quest_id) 
    205205            return True 
    206206        return False 
Note: See TracChangeset for help on using the changeset viewer.