15 #include "../../bscript/berror.h" 16 #include "../../bscript/bobject.h" 17 #include "../../bscript/executor.h" 18 #include "../../bscript/objmembers.h" 19 #include "../../bscript/objmethods.h" 20 #include "../../clib/compilerspecifics.h" 21 #include "../../clib/rawtypes.h" 22 #include "../fnsearch.h" 23 #include "../globals/uvars.h" 24 #include "../guilds.h" 25 #include "../mobile/charactr.h" 26 #include "../uoexhelp.h" 27 #include "../uoscrobj.h" 33 using namespace Module;
45 using namespace Bscript;
110 return ( !
obj_->_disbanded );
125 return ( guildref_imp->
obj_->_guildid ==
obj_->_guildid );
147 if ( aob ==
nullptr )
149 err =
new BError(
"Invalid parameter type" );
157 err =
new BError(
"Guild has disbanded" );
165 if (
obj_->_disbanded )
172 std::unique_ptr<ObjArray> arr;
174 for ( Core::SerialSet::iterator itr =
obj_->_member_serials.begin();
175 itr !=
obj_->_member_serials.end();
178 unsigned int mserial = ( *itr );
179 Core::SerialSet::iterator last_itr = itr;
183 if ( chr !=
nullptr )
189 obj_->_member_serials.erase( last_itr );
197 std::unique_ptr<ObjArray> arr;
199 for ( Core::SerialSet::iterator itr =
obj_->_allyguild_serials.begin();
200 itr !=
obj_->_allyguild_serials.end();
203 unsigned int gserial = ( *itr );
204 Core::SerialSet::iterator last_itr = itr;
209 if ( guild !=
nullptr )
215 obj_->_allyguild_serials.erase( last_itr );
223 std::unique_ptr<ObjArray> arr;
225 for ( Core::SerialSet::iterator itr =
obj_->_enemyguild_serials.begin();
226 itr !=
obj_->_enemyguild_serials.end();
229 unsigned int gserial = ( *itr );
230 Core::SerialSet::iterator last_itr = itr;
235 if ( guild !=
nullptr )
241 obj_->_enemyguild_serials.erase( last_itr );
255 if (
obj_->_disbanded )
259 if ( objmember !=
nullptr )
267 if (
obj_->_disbanded )
268 return new BError(
"Guild has disbanded" );
275 return new BError(
"Not enough parameters" );
278 return new BError(
"Invalid parameter type" );
280 return new BLong( static_cast<int>(
obj_->_member_serials.count( chr->
serial ) ) );
286 return new BError(
"Not enough parameters" );
291 static_cast<int>(
obj_->_allyguild_serials.count( allyguild->
guildid() ) ) );
299 return new BError(
"Not enough parameters" );
304 static_cast<int>(
obj_->_enemyguild_serials.count( enemyguild->
guildid() ) ) );
312 return new BError(
"Not enough parameters" );
315 return new BError(
"Invalid parameter type" );
317 return new BError(
"Character already belongs to a guild" );
323 obj_->update_online_members();
325 return new BLong( 1 );
331 return new BError(
"Not enough parameters" );
336 if (
obj_->_enemyguild_serials.count( allyguild->
guildid() ) )
337 return new BError(
"That is an enemy guild" );
339 return new BError(
"Passed self as new ally guild" );
341 obj_->_allyguild_serials.insert( allyguild->
guildid() );
345 obj_->update_online_members();
348 return new BLong( 1 );
357 return new BError(
"Not enough parameters" );
362 if (
obj_->_allyguild_serials.count( enemyguild->
guildid() ) )
363 return new BError(
"That is an ally guild" );
365 return new BError(
"Passed self as new enemy guild" );
367 obj_->_enemyguild_serials.insert( enemyguild->
guildid() );
371 obj_->update_online_members();
374 return new BLong( 1 );
383 return new BError(
"Not enough parameters" );
386 return new BError(
"Invalid parameter type" );
388 return new BError(
"Character does not belong to this guild" );
390 chr->guild(
nullptr );
394 obj_->update_online_members_remove( chr );
396 return new BLong( 1 );
402 return new BError(
"Not enough parameters" );
407 if ( !
obj_->_allyguild_serials.count( allyguild->
guildid() ) )
408 return new BError(
"That is not an ally guild" );
410 obj_->_allyguild_serials.erase( allyguild->
guildid() );
414 obj_->update_online_members();
417 return new BLong( 1 );
426 return new BError(
"Not enough parameters" );
431 if ( !
obj_->_enemyguild_serials.count( enemyguild->
guildid() ) )
432 return new BError(
"That is not an enemy guild" );
434 obj_->_enemyguild_serials.erase( enemyguild->
guildid() );
438 obj_->update_online_members();
441 return new BLong( 1 );
448 bool changed =
false;
456 if (
obj_->_disbanded )
457 return new BError(
"Guild has disbanded" );
460 if ( objmethod !=
nullptr )
464 bool changed =
false;
478 std::unique_ptr<ObjArray> result(
new ObjArray );
486 return result.release();
506 return new BError(
"Guild has members" );
508 return new BError(
"Guild has allies" );
510 return new BError(
"Guild has enemies" );
514 return new BLong( 1 );
532 return new BError(
"Guild not found" );
536 return new BError(
"Invalid parameter type" );
static Guild * FindGuild(unsigned int guildid)
unsigned int guildid() const
std::vector< FunctionDef > FunctionTable
Bscript::BObjectImp * mf_DestroyGuild()
virtual const char * typeOf() const POL_OVERRIDE
bool isa(BObjectType type) const
virtual BObjectImp * copy() const POL_OVERRIDE
BApplicObjType guild_type
virtual BObjectRef get_member(const char *membername) POL_OVERRIDE
ObjMember * getKnownObjMember(const char *token)
bool getParam(unsigned param, int &value)
bool operator==(T *ptr, const ref_ptr< T > &rptr)
Bscript::BObjectImp * mf_ListGuilds()
ListGuilds returns an array of Guild objects.
unsigned int guildid() const
EGuildRefObjImp(Core::GuildRef gref)
GuildExecutorModule(Bscript::Executor &exec)
virtual BObjectImp * call_method(const char *methodname, Executor &ex) POL_OVERRIDE
ObjMethod * getKnownObjMethod(const char *token)
Guild Object Properties: guild.guildid : integer guild.members : array of offline mobilerefs guild...
const BApplicObjType * object_type() const
bool getCharacterParam(Bscript::Executor &exec, unsigned param, Mobile::Character *&chrptr)
Bscript::BObjectImp * CallPropertyListMethod_id(PropertyList &proplist, const int id, Bscript::Executor &ex, bool &changed)
Bscript::BObjectImp * mf_CreateGuild()
CreateGuild returns a new Guild object.
SerialSet _allyguild_serials
static UninitObject * create()
bool getGuildParam(Executor &exec, unsigned param, Core::Guild *&guild, BError *&err)
Mobile::Character * system_find_mobile(u32 serial)
void update_online_members()
BApplicObjBase * getApplicObjParam(unsigned param, const BApplicObjType *object_type)
virtual bool isTrue() const POL_OVERRIDE
D explicit_cast(const S &s)
Bscript::BObjectImp * mf_FindGuild()
FindGuild( guildid );.
SerialSet _enemyguild_serials
bool hasParams(unsigned howmany) const
virtual u8 typeOfInt() const POL_OVERRIDE
Bscript::BObjectImp * CallPropertyListMethod(PropertyList &proplist, const char *methodname, Bscript::Executor &ex, bool &changed)
virtual BObjectRef get_member_id(const int id) POL_OVERRIDE
static Bscript::BObjectImp * CreateGuildRefObjImp(Core::Guild *guild)
virtual BObjectImp * call_method_id(const int id, Executor &ex, bool forcebuiltin=false) POL_OVERRIDE
virtual bool operator==(const BObjectImp &objimp) const POL_OVERRIDE