12 #include "pol_global_config.h" 17 #include "../../clib/boostutils.h" 18 #include "../../clib/compilerspecifics.h" 19 #include "../../clib/rawtypes.h" 20 #include "../baseobject.h" 21 #include "../dynproperties.h" 22 #include "../globals/settings.h" 23 #include "../layers.h" 24 #include "../uobject.h" 27 #ifndef BSCRIPT_BOBJECT_H 28 #include "../../bscript/bobject.h" 48 class UOExecutorModule;
55 unsigned short amount,
const std::string suffix );
83 bool stackable()
const;
88 virtual
void double_click( Network::
Client* client );
89 virtual
void builtin_on_use( Network::
Client* client );
90 virtual
void walk_on( Mobile::
Character* chr );
94 virtual
u16 get_senditem_amount() const;
95 u16 getamount() const;
96 void setamount(
u16 amount );
97 void subamount(
u16 amount_subtract );
100 void movable(
bool newvalue );
101 void on_movable_changed();
103 bool default_movable() const;
104 bool default_invisible() const;
107 void inuse(
bool newvalue );
109 bool invisible() const;
110 void invisible(
bool newvalue );
111 void on_invisible_changed();
113 void set_decay_after(
unsigned int seconds );
114 bool should_decay(
unsigned int gameclock ) const;
115 void restart_decay_timer();
116 void disable_decay();
117 bool can_decay() const;
119 bool setlayer(
unsigned char layer );
121 virtual
bool setcolor(
u16 newcolor ) POL_OVERRIDE;
122 virtual
void on_color_changed() POL_OVERRIDE;
123 virtual
void spill_contents( Multi::UMulti* supporting_multi );
125 virtual
void setfacing(
u8 newfacing ) POL_OVERRIDE;
126 virtual
void on_facing_changed() POL_OVERRIDE;
128 virtual
std::
string description() const POL_OVERRIDE;
129 std::
string merchant_description() const;
132 std::
string get_use_script_name() const;
133 u32 sellprice() const;
134 void sellprice(
u32 );
135 u32 buyprice() const;
136 void buyprice( u32 );
137 bool getbuyprice( u32& buyprice ) const;
140 bool default_newbie() const;
141 void newbie(
bool newvalue );
143 bool insured() const;
144 bool default_insured() const;
145 void insured(
bool newvalue );
146 bool use_insurance();
148 bool no_drop() const;
149 bool default_no_drop() const;
150 void no_drop(
bool newvalue );
152 u8 slot_index() const;
153 bool slot_index(
u8 newvalue );
156 virtual
unsigned int item_count() const;
157 unsigned int weight_of(
unsigned short amount ) const;
158 virtual
unsigned int weight() const POL_OVERRIDE;
160 virtual
std::
string name() const POL_OVERRIDE;
162 virtual
UObject* owner() POL_OVERRIDE;
163 virtual const
UObject* owner() const POL_OVERRIDE;
164 virtual
UObject* toplevel_owner() POL_OVERRIDE;
165 virtual const
UObject* toplevel_owner() const POL_OVERRIDE;
167 bool can_add_to_self(
unsigned short amount,
bool force_stacking ) const;
168 bool can_add_to_self( const
Item& item,
bool force_stacking ) const;
169 bool has_only_default_cprops( const
ItemDesc* compare =
nullptr ) const;
170 void add_to_self(
Item*& item );
173 void ct_merge_stacks_pergon(
175 void ct_merge_stacks_pergon(
179 bool amount_to_remove_is_partial(
u16 amount_to_remove )
const;
185 Item* slice_stacked_item(
u16 this_item_new_amount );
187 Item* remove_part_of_stack(
u16 amount_to_remove );
189 void set_use_script(
const std::string& scriptname );
192 bool has_equip_script()
const;
196 bool check_unequip_script();
198 bool check_test_scripts(
Mobile::Character* chr,
const std::string& script_ecl,
bool startup );
201 bool check_unequiptest_scripts();
215 static Item* create( u32 objtype, u32 serial = 0 );
216 static Item* create(
const ItemDesc& itemdesc, u32 serial = 0 );
218 virtual Item* clone()
const;
221 virtual Bscript::
BObjectImp* get_script_member( const
char* membername ) const POL_OVERRIDE;
222 virtual Bscript::
BObjectImp* get_script_member_id( const
int id ) const POL_OVERRIDE;
223 virtual Bscript::
BObjectImp* set_script_member( const
char* membername,
224 const
std::
string& value ) POL_OVERRIDE;
225 virtual Bscript::
BObjectImp* set_script_member( const
char* membername,
int value ) POL_OVERRIDE;
226 virtual Bscript::
BObjectImp* set_script_member_id( const
int id, const
std::
string& value )
228 virtual Bscript::
BObjectImp* set_script_member_id( const
int id,
229 int value ) POL_OVERRIDE;
230 virtual Bscript::
BObjectImp* set_script_member_double( const
char* membername,
231 double value ) POL_OVERRIDE;
232 virtual Bscript::
BObjectImp* set_script_member_id_double( const
int id,
233 double value ) POL_OVERRIDE;
234 virtual Bscript::
BObjectImp* script_method( const
char* methodname,
235 Bscript::
Executor& ex ) POL_OVERRIDE;
236 virtual Bscript::
BObjectImp* script_method_id( const
int id, Bscript::
Executor& ex ) POL_OVERRIDE;
238 virtual
bool script_isa(
unsigned isatype ) const POL_OVERRIDE;
239 virtual const
char* target_tag() const POL_OVERRIDE;
240 virtual const
char* classname() const POL_OVERRIDE;
241 virtual Bscript::
BObjectImp* custom_script_method( const
char* methodname,
242 Bscript::
Executor& ex ) POL_OVERRIDE;
244 Bscript::
BObject call_custom_method( const
char* methodname );
247 virtual
void printProperties( Clib::StreamWriter& sw ) const POL_OVERRIDE;
248 virtual
void printDebugProperties( Clib::StreamWriter& sw ) const POL_OVERRIDE;
253 double getItemdescQuality() const;
259 unsigned int decayat_gameclock_;
272 unsigned short maxhp() const;
280 virtual
double getQuality() const;
281 virtual
void setQuality(
double value );
291 static const u32 SELLPRICE_DEFAULT;
292 static const u32 BUYPRICE_DEFAULT;
307 if ( movable() != newvalue )
310 on_movable_changed();
331 if ( invisible() != newvalue )
334 on_invisible_changed();
374 slot_index_ = newvalue;
std::string format_description(unsigned int polflags, const std::string &descdef, unsigned short amount, const std::string suffix)
static gameclock_t gameclock
#define DYN_PROPERTY_POINTER(name, type, id)
SettingsManager settingsManager
boost::flyweight< std::string, boost::flyweights::tag< script_name_tag >, FLYWEIGHT_HASH_FACTORY > script_name_flystring
#define DYN_PROPERTY(name, type, id, defaultvalue)
std::vector< ref_ptr< BObjectImp > > BObjectImpRefVec
bool valid_equip_layer(const Item *item)