1
/*
2
 *  The Mana World
3
 *  Copyright (C) 2004  The Mana World Development Team
4
 *
5
 *  This file is part of The Mana World.
6
 *
7
 *  This program is free software; you can redistribute it and/or modify
8
 *  it under the terms of the GNU General Public License as published by
9
 *  the Free Software Foundation; either version 2 of the License, or
10
 *  any later version.
11
 *
12
 *  This program is distributed in the hope that it will be useful,
13
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 *  GNU General Public License for more details.
16
 *
17
 *  You should have received a copy of the GNU General Public License
18
 *  along with this program; if not, write to the Free Software
19
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20
 */
21
22
#ifndef NPC_H
23
#define NPC_H
24
25
#include "player.h"
26
27
class Graphics;
28
class Text;
29
30
class NPC : public Player
31
{
32
    public:
33
        NPC(int id, int job, Map *map);
34
35
        void setName(const std::string &name);
36
37
        virtual Type getType() const { return Being::NPC; }
38
39
        void talk();
40
41
        void setSprite(unsigned int slot, int id,
42
                        const std::string &color = "");
43
44
        /**
45
         * Gets the way an NPC is blocked by other things on the map
46
         */
47
        virtual unsigned char getWalkMask() const
48
        {
49
            return Map::BLOCKMASK_WALL
50
                    | Map::BLOCKMASK_CHARACTER
51
                    | Map::BLOCKMASK_MONSTER;
52
        }
53
54
        static bool isTalking;
55
56
        /** We consider NPCs (at least for now) to be one layer-sprites */
57
        virtual int getNumberOfLayers() const
58
        { return 1; }
59
60
    protected:
61
        /**
62
         * Gets the way a monster blocks pathfinding for other objects
63
         */
64
        virtual Map::BlockType getBlockType() const
65
        { return Map::BLOCKTYPE_CHARACTER; } //blocks like a player character
66
67
        // Colors don't change for NPCs
68
        virtual void updateColors() {}
69
};
70
71
extern int current_npc;
72
73
#endif