/* ....[@@@..[@@@..............[@.................. MUD++ is a written from ....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and ....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++. ....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing ....[@......[@..[@@@@@..[@@@@@.................. development project. All ................................................ contributions are welcome. ....Copyright(C).1995.Melvin.Smith.............. Enjoy. ------------------------------------------------------------------------------ Melvin Smith (aka Fusion) msmith@hom.net MUD++ development mailing list mudpp@van.ml.org ------------------------------------------------------------------------------ shop.h */ #ifndef _SHOP_H #define _SHOP_H #include "io.h" #include "llist.h" #include "index.h" #include "npc.h" const int SHOPKEEPER_NOT_TRADING = -1; const int SHOPKEEPER_HAS_IDENTICAL = -2; const int SHOPKEEPER_HAS_TYPE = -3; class ShopTrade { private: short type; short buy_profit; // How much % shopkeeper give for something short sell_profit; // How much % shopkeeper wants for something short max_identical; // How much 'short sword' will he want short max_type; // How much 'weapon' type will he want public: ShopTrade() : type(0), buy_profit(90), sell_profit(110), max_identical(3), max_type(5) { } ShopTrade(short the_type, short the_buy, short the_sell, short max_i, short max_t) : type(the_type), buy_profit(the_buy), sell_profit(the_sell), max_identical(max_i), max_type(max_t) { } int getType() { return type; } int getBuyProfit() {return buy_profit; } int getSellProfit() {return sell_profit; } int getMaxIdentical() {return max_identical; } int getMaxType() {return max_type; } }; class ShopKeeper : public NPC { protected: Index shop; // Room index Index warehouse; String owners; short shop_open; short shop_close; LList<ShopTrade> tradeList; public: ShopKeeper() : shop_open( 6 ), shop_close( 18 ) { } ShopKeeper( const NPC & npc ) : NPC( npc ), shop_open( 6 ), shop_close( 18 ) { } ShopKeeper( const ShopKeeper & sk ) : NPC( sk ), shop_open( 6 ), shop_close( 18 ) { tradeList.copy( sk.tradeList ); } virtual vmtype getVMType() { return VMT_SHOPKEEPER; } int buyValue( Object * ); int sellValue( Object * ); bool isTrading(int); bool isNPC() const { return true; } bool isShopKeeper() const { return true; } int readFrom_shopblock(StaticInput &); int readFrom( StaticInput & ); void writeTo_shopblock( Output & ) const; int writeTo( Output & ) const; bool isOwnedBy( Char * ); void addOwner(String &); void removeOwner(String &); }; #endif