Index: core3/trunk/MMOCoreORB/src/server/zone/objects/creature/AiAgent.cpp =================================================================== diff -u -N -r3360 -r5449 --- core3/trunk/MMOCoreORB/src/server/zone/objects/creature/AiAgent.cpp (.../AiAgent.cpp) (revision 3360) +++ core3/trunk/MMOCoreORB/src/server/zone/objects/creature/AiAgent.cpp (.../AiAgent.cpp) (revision 5449) @@ -30,21 +30,23 @@ #include "server/zone/objects/creature/commands/QueueCommand.h" -#include "server/zone/objects/creature/AiObserver.h" +#include "server/zone/objects/player/PlayerObject.h" /* * AiAgentStub */ -enum {RPC_INITIALIZETRANSIENTMEMBERS__ = 6,RPC_FINALIZE__,RPC_ACTIVATERECOVERY__,RPC_ACTIVATEMOVEMENTEVENT__,RPC_ACTIVATEWAITEVENT__,RPC_ACTIVATEAWARENESSEVENT__CREATUREOBJECT_,RPC_TRYRETREAT__,RPC_DORECOVERY__,RPC_DOMOVEMENT__,RPC_CHECKNEWANGLE__,RPC_FILLATTRIBUTELIST__ATTRIBUTELISTMESSAGE_CREATUREOBJECT_,RPC_SETNEXTPOSITION__FLOAT_FLOAT_FLOAT_SCENEOBJECT_,RPC_CLEARPATROLPOINTS__,RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_INT_BOOL_BOOL_,RPC_SENDCONVERSATIONSTARTTO__SCENEOBJECT_,RPC_SENDDEFAULTCONVERSATIONTO__SCENEOBJECT_,RPC_SELECTCONVERSATIONOPTION__INT_SCENEOBJECT_,RPC_NOTIFYOBJECTDESTRUCTIONOBSERVERS__TANGIBLEOBJECT_INT_,RPC_NOTIFYCONVERSEOBSERVERS__CREATUREOBJECT_,RPC_NOTIFYATTACK__OBSERVABLE_,RPC_NOTIFYCALLFORHELP__OBSERVABLE_MANAGEDOBJECT_,RPC_ACTIVATEPOSTURERECOVERY__,RPC_CLEARCOMBATSTATE__BOOL_,RPC_SETDEFENDER__SCENEOBJECT_,RPC_ADDDEFENDER__SCENEOBJECT_,RPC_REMOVEDEFENDER__SCENEOBJECT_,RPC_SETDESPAWNONNOPLAYERINRANGE__BOOL_,RPC_NOTIFYDESPAWN__ZONE_,RPC_SCHEDULEDESPAWN__,RPC_RESPAWN__ZONE_INT_,RPC_SETHOMELOCATION__FLOAT_FLOAT_FLOAT_SCENEOBJECT_,RPC_SETRESPAWNTIMER__FLOAT_,RPC_ISATTACKABLEBY__CREATUREOBJECT_,RPC_ISAGGRESSIVETO__CREATUREOBJECT_,RPC_SETOBLIVIOUS__,RPC_SETWATCHOBJECT__SCENEOBJECT_,RPC_SETSTALKOBJECT__SCENEOBJECT_,RPC_SETFOLLOWOBJECT__SCENEOBJECT_,RPC_SETTARGETOBJECT__SCENEOBJECT_,RPC_SELECTWEAPON__,RPC_VALIDATESTATEATTACK__CREATUREOBJECT_STRING_,RPC_ISRETREATING__,RPC_ISFLEEING__,RPC_CLEARDESPAWNEVENT__,RPC_GETKINETIC__,RPC_GETENERGY__,RPC_GETELECTRICITY__,RPC_GETSTUN__,RPC_GETBLAST__,RPC_GETHEAT__,RPC_GETCOLD__,RPC_GETACID__,RPC_GETLIGHTSABER__,RPC_ISSTALKER__,RPC_ISKILLER__,RPC_GETFEROCITY__,RPC_GETARMOR__,RPC_GETDESPAWNONNOPLAYERINRANGE__,RPC_GETNUMBEROFPLAYERSINRANGE__,RPC_GETFACTIONSTRING__,RPC_GETSOCIALGROUP__,RPC_GETCHANCEHIT__,RPC_GETDAMAGEMIN__,RPC_GETDAMAGEMAX__,RPC_GETBASEXP__,RPC_GETDIET__,RPC_GETRESPAWNTIMER__,RPC_ISAIAGENT__,RPC_SETLOOTOWNER__CREATUREOBJECT_,RPC_GETLOOTOWNER__,RPC_HASLOOT__}; +enum {RPC_INITIALIZETRANSIENTMEMBERS__ = 6,RPC_FINALIZE__,RPC_ACTIVATERECOVERY__,RPC_ACTIVATEMOVEMENTEVENT__,RPC_ACTIVATEWAITEVENT__,RPC_ACTIVATEAWARENESSEVENT__CREATUREOBJECT_,RPC_TRYRETREAT__,RPC_DORECOVERY__,RPC_DOATTACK__,RPC_DOMOVEMENT__,RPC_SETLEVEL__INT_,RPC_SENDBASELINESTO__SCENEOBJECT_,RPC_CALCULATEATTACKMINDAMAGE__INT_,RPC_CALCULATEATTACKMAXDAMAGE__INT_,RPC_CALCULATEATTACKSPEED__INT_,RPC_ISCAMOUFLAGED__CREATUREOBJECT_,RPC_ISSCENTMASKED__CREATUREOBJECT_,RPC_ISCONCEALED__CREATUREOBJECT_,RPC_HANDLEOBJECTMENUSELECT__CREATUREOBJECT_BYTE_,RPC_CHECKNEWANGLE__,RPC_FILLATTRIBUTELIST__ATTRIBUTELISTMESSAGE_CREATUREOBJECT_,RPC_SETNEXTPOSITION__FLOAT_FLOAT_FLOAT_SCENEOBJECT_,RPC_NOTIFYPOSITIONUPDATE__QUADTREEENTRY_,RPC_CLEARPATROLPOINTS__,RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_FLOAT_BOOL_BOOL_,RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_FLOAT_BOOL_STRING_BOOL_,RPC_SENDCONVERSATIONSTARTTO__SCENEOBJECT_,RPC_SENDDEFAULTCONVERSATIONTO__SCENEOBJECT_,RPC_SELECTCONVERSATIONOPTION__INT_SCENEOBJECT_,RPC_NOTIFYOBJECTDESTRUCTIONOBSERVERS__TANGIBLEOBJECT_INT_,RPC_NOTIFYCONVERSEOBSERVERS__CREATUREOBJECT_,RPC_NOTIFYATTACK__OBSERVABLE_,RPC_NOTIFYCALLFORHELP__OBSERVABLE_MANAGEDOBJECT_,RPC_DESTROYOBJECTFROMWORLD__BOOL_,RPC_ACTIVATEPOSTURERECOVERY__,RPC_QUEUEDIZZYFALLEVENT__,RPC_CLEARCOMBATSTATE__BOOL_,RPC_SETDEFENDER__SCENEOBJECT_,RPC_ADDDEFENDER__SCENEOBJECT_,RPC_REMOVEDEFENDER__SCENEOBJECT_,RPC_SETDESPAWNONNOPLAYERINRANGE__BOOL_,RPC_NOTIFYDESPAWN__ZONE_,RPC_SCHEDULEDESPAWN__,RPC_SCHEDULEDESPAWN__INT_,RPC_RESPAWN__ZONE_INT_,RPC_SETHOMELOCATION__FLOAT_FLOAT_FLOAT_SCENEOBJECT_,RPC_SETRESPAWNTIMER__FLOAT_,RPC_ISATTACKABLEBY__CREATUREOBJECT_,RPC_ISAGGRESSIVETO__CREATUREOBJECT_,RPC_SETOBLIVIOUS__,RPC_SETWATCHOBJECT__SCENEOBJECT_,RPC_SETSTALKOBJECT__SCENEOBJECT_,RPC_SETFOLLOWOBJECT__SCENEOBJECT_,RPC_SETTARGETOBJECT__SCENEOBJECT_,RPC_GETFOLLOWOBJECT__,RPC_SELECTWEAPON__,RPC_VALIDATESTATEATTACK__CREATUREOBJECT_STRING_,RPC_ISRETREATING__,RPC_ISFLEEING__,RPC_CLEARDESPAWNEVENT__,RPC_GETKINETIC__,RPC_GETENERGY__,RPC_GETELECTRICITY__,RPC_GETSTUN__,RPC_GETBLAST__,RPC_GETHEAT__,RPC_GETCOLD__,RPC_GETACID__,RPC_GETLIGHTSABER__,RPC_ISSTALKER__,RPC_ISKILLER__,RPC_GETFEROCITY__,RPC_GETARMOR__,RPC_GETDESPAWNONNOPLAYERINRANGE__,RPC_GETNUMBEROFPLAYERSINRANGE__,RPC_GETFACTIONSTRING__,RPC_GETSOCIALGROUP__,RPC_GETCHANCEHIT__,RPC_GETDAMAGEMIN__,RPC_GETDAMAGEMAX__,RPC_GETBASEXP__,RPC_GETDIET__,RPC_GETRESPAWNTIMER__,RPC_ISAIAGENT__,RPC_HASLOOT__,RPC_SETSHOWNEXTPOSITION__BOOL_}; AiAgent::AiAgent() : CreatureObject(DummyConstructorParameter::instance()) { AiAgentImplementation* _implementation = new AiAgentImplementation(); _impl = _implementation; _impl->_setStub(this); + _setClassName("AiAgent"); } AiAgent::AiAgent(DummyConstructorParameter* param) : CreatureObject(param) { + _setClassName("AiAgent"); } AiAgent::~AiAgent() { @@ -144,6 +146,19 @@ _implementation->doRecovery(); } +void AiAgent::doAttack() { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_DOATTACK__); + + method.executeWithVoidReturn(); + } else + _implementation->doAttack(); +} + void AiAgent::doMovement() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -157,6 +172,118 @@ _implementation->doMovement(); } +void AiAgent::setLevel(int lvl) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_SETLEVEL__INT_); + method.addSignedIntParameter(lvl); + + method.executeWithVoidReturn(); + } else + _implementation->setLevel(lvl); +} + +void AiAgent::sendBaselinesTo(SceneObject* player) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_SENDBASELINESTO__SCENEOBJECT_); + method.addObjectParameter(player); + + method.executeWithVoidReturn(); + } else + _implementation->sendBaselinesTo(player); +} + +int AiAgent::calculateAttackMinDamage(int level) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_CALCULATEATTACKMINDAMAGE__INT_); + method.addSignedIntParameter(level); + + return method.executeWithSignedIntReturn(); + } else + return _implementation->calculateAttackMinDamage(level); +} + +int AiAgent::calculateAttackMaxDamage(int level) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_CALCULATEATTACKMAXDAMAGE__INT_); + method.addSignedIntParameter(level); + + return method.executeWithSignedIntReturn(); + } else + return _implementation->calculateAttackMaxDamage(level); +} + +float AiAgent::calculateAttackSpeed(int level) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_CALCULATEATTACKSPEED__INT_); + method.addSignedIntParameter(level); + + return method.executeWithFloatReturn(); + } else + return _implementation->calculateAttackSpeed(level); +} + +bool AiAgent::isCamouflaged(CreatureObject* target) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_ISCAMOUFLAGED__CREATUREOBJECT_); + method.addObjectParameter(target); + + return method.executeWithBooleanReturn(); + } else + return _implementation->isCamouflaged(target); +} + +bool AiAgent::isScentMasked(CreatureObject* target) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_ISSCENTMASKED__CREATUREOBJECT_); + method.addObjectParameter(target); + + return method.executeWithBooleanReturn(); + } else + return _implementation->isScentMasked(target); +} + +bool AiAgent::isConcealed(CreatureObject* target) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_ISCONCEALED__CREATUREOBJECT_); + method.addObjectParameter(target); + + return method.executeWithBooleanReturn(); + } else + return _implementation->isConcealed(target); +} + void AiAgent::doAwarenessCheck(Coordinate& start, unsigned long long time, CreatureObject* target) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -166,6 +293,21 @@ _implementation->doAwarenessCheck(start, time, target); } +int AiAgent::handleObjectMenuSelect(CreatureObject* player, byte selectedID) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_HANDLEOBJECTMENUSELECT__CREATUREOBJECT_BYTE_); + method.addObjectParameter(player); + method.addByteParameter(selectedID); + + return method.executeWithSignedIntReturn(); + } else + return _implementation->handleObjectMenuSelect(player, selectedID); +} + void AiAgent::checkNewAngle() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -211,6 +353,20 @@ _implementation->setNextPosition(x, z, y, cell); } +void AiAgent::notifyPositionUpdate(QuadTreeEntry* entry) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_NOTIFYPOSITIONUPDATE__QUADTREEENTRY_); + method.addObjectParameter(entry); + + method.executeWithVoidReturn(); + } else + _implementation->notifyPositionUpdate(entry); +} + void AiAgent::updateCurrentPosition(PatrolPoint* point) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -278,16 +434,16 @@ _implementation->loadTemplateData(templateData); } -int AiAgent::inflictDamage(TangibleObject* attacker, int damageType, int damage, bool destroy, bool notifyClient) { +int AiAgent::inflictDamage(TangibleObject* attacker, int damageType, float damage, bool destroy, bool notifyClient) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { if (!deployed) throw ObjectNotDeployedException(this); - DistributedMethod method(this, RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_INT_BOOL_BOOL_); + DistributedMethod method(this, RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_FLOAT_BOOL_BOOL_); method.addObjectParameter(attacker); method.addSignedIntParameter(damageType); - method.addSignedIntParameter(damage); + method.addFloatParameter(damage); method.addBooleanParameter(destroy); method.addBooleanParameter(notifyClient); @@ -296,6 +452,25 @@ return _implementation->inflictDamage(attacker, damageType, damage, destroy, notifyClient); } +int AiAgent::inflictDamage(TangibleObject* attacker, int damageType, float damage, bool destroy, const String& xp, bool notifyClient) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_FLOAT_BOOL_STRING_BOOL_); + method.addObjectParameter(attacker); + method.addSignedIntParameter(damageType); + method.addFloatParameter(damage); + method.addBooleanParameter(destroy); + method.addAsciiParameter(xp); + method.addBooleanParameter(notifyClient); + + return method.executeWithSignedIntReturn(); + } else + return _implementation->inflictDamage(attacker, damageType, damage, destroy, xp, notifyClient); +} + void AiAgent::sendConversationStartTo(SceneObject* player) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -397,6 +572,20 @@ return _implementation->notifyCallForHelp(observable, arg1); } +void AiAgent::destroyObjectFromWorld(bool sendSelfDestroy) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_DESTROYOBJECTFROMWORLD__BOOL_); + method.addBooleanParameter(sendSelfDestroy); + + method.executeWithVoidReturn(); + } else + _implementation->destroyObjectFromWorld(sendSelfDestroy); +} + void AiAgent::activatePostureRecovery() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -410,6 +599,19 @@ _implementation->activatePostureRecovery(); } +void AiAgent::queueDizzyFallEvent() { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_QUEUEDIZZYFALLEVENT__); + + method.executeWithVoidReturn(); + } else + _implementation->queueDizzyFallEvent(); +} + void AiAgent::clearCombatState(bool clearDefenders) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -507,6 +709,20 @@ _implementation->scheduleDespawn(); } +void AiAgent::scheduleDespawn(int timeToDespawn) { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_SCHEDULEDESPAWN__INT_); + method.addSignedIntParameter(timeToDespawn); + + method.executeWithVoidReturn(); + } else + _implementation->scheduleDespawn(timeToDespawn); +} + void AiAgent::respawn(Zone* zone, int level) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -659,6 +875,19 @@ _implementation->setTargetObject(obj); } +SceneObject* AiAgent::getFollowObject() { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + if (!deployed) + throw ObjectNotDeployedException(this); + + DistributedMethod method(this, RPC_GETFOLLOWOBJECT__); + + return static_cast(method.executeWithObjectReturn()); + } else + return _implementation->getFollowObject(); +} + void AiAgent::selectWeapon() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -921,15 +1150,6 @@ return _implementation->getNumberOfPlayersInRange(); } -DamageMap* AiAgent::getDamageMap() { - AiAgentImplementation* _implementation = static_cast(_getImplementation()); - if (_implementation == NULL) { - throw ObjectNotLocalException(this); - - } else - return _implementation->getDamageMap(); -} - String AiAgent::getFactionString() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -938,6 +1158,7 @@ DistributedMethod method(this, RPC_GETFACTIONSTRING__); + String _return_getFactionString; method.executeWithAsciiReturn(_return_getFactionString); return _return_getFactionString; } else @@ -952,6 +1173,7 @@ DistributedMethod method(this, RPC_GETSOCIALGROUP__); + String _return_getSocialGroup; method.executeWithAsciiReturn(_return_getSocialGroup); return _return_getSocialGroup; } else @@ -1032,6 +1254,15 @@ return _implementation->getAttackMap(); } +LootGroupCollection* AiAgent::getLootGroups() { + AiAgentImplementation* _implementation = static_cast(_getImplementation()); + if (_implementation == NULL) { + throw ObjectNotLocalException(this); + + } else + return _implementation->getLootGroups(); +} + float AiAgent::getRespawnTimer() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { @@ -1067,49 +1298,45 @@ return _implementation->isAiAgent(); } -void AiAgent::setLootOwner(CreatureObject* owner) { +CreatureTemplate* AiAgent::getCreatureTemplate() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { - if (!deployed) - throw ObjectNotDeployedException(this); + throw ObjectNotLocalException(this); - DistributedMethod method(this, RPC_SETLOOTOWNER__CREATUREOBJECT_); - method.addObjectParameter(owner); - - method.executeWithVoidReturn(); } else - _implementation->setLootOwner(owner); + return _implementation->getCreatureTemplate(); } -CreatureObject* AiAgent::getLootOwner() { +bool AiAgent::hasLoot() { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { if (!deployed) throw ObjectNotDeployedException(this); - DistributedMethod method(this, RPC_GETLOOTOWNER__); + DistributedMethod method(this, RPC_HASLOOT__); - return static_cast(method.executeWithObjectReturn()); + return method.executeWithBooleanReturn(); } else - return _implementation->getLootOwner(); + return _implementation->hasLoot(); } -bool AiAgent::hasLoot() { +void AiAgent::setShowNextPosition(bool val) { AiAgentImplementation* _implementation = static_cast(_getImplementation()); if (_implementation == NULL) { if (!deployed) throw ObjectNotDeployedException(this); - DistributedMethod method(this, RPC_HASLOOT__); + DistributedMethod method(this, RPC_SETSHOWNEXTPOSITION__BOOL_); + method.addBooleanParameter(val); - return method.executeWithBooleanReturn(); + method.executeWithVoidReturn(); } else - return _implementation->hasLoot(); + _implementation->setShowNextPosition(val); } DistributedObjectServant* AiAgent::_getImplementation() { - _updated = true; + if (!_updated) _updated = true; return _impl; } @@ -1145,39 +1372,39 @@ } DistributedObjectStub* AiAgentImplementation::_getStub() { - return _this; + return _this.get(); } AiAgentImplementation::operator const AiAgent*() { - return _this; + return _this.get(); } void AiAgentImplementation::lock(bool doLock) { - _this->lock(doLock); + _this.getReferenceUnsafeStaticCast()->lock(doLock); } void AiAgentImplementation::lock(ManagedObject* obj) { - _this->lock(obj); + _this.getReferenceUnsafeStaticCast()->lock(obj); } void AiAgentImplementation::rlock(bool doLock) { - _this->rlock(doLock); + _this.getReferenceUnsafeStaticCast()->rlock(doLock); } void AiAgentImplementation::wlock(bool doLock) { - _this->wlock(doLock); + _this.getReferenceUnsafeStaticCast()->wlock(doLock); } void AiAgentImplementation::wlock(ManagedObject* obj) { - _this->wlock(obj); + _this.getReferenceUnsafeStaticCast()->wlock(obj); } void AiAgentImplementation::unlock(bool doLock) { - _this->unlock(doLock); + _this.getReferenceUnsafeStaticCast()->unlock(doLock); } void AiAgentImplementation::runlock(bool doLock) { - _this->runlock(doLock); + _this.getReferenceUnsafeStaticCast()->runlock(doLock); } void AiAgentImplementation::_serializationHelperMethod() { @@ -1193,7 +1420,7 @@ String _name; _name.parseFromBinaryStream(stream); - uint16 _varSize = stream->readShort(); + uint32 _varSize = stream->readInt(); int _currentOffset = stream->getOffset(); @@ -1210,77 +1437,92 @@ if (CreatureObjectImplementation::readObjectMember(stream, _name)) return true; - if (_name == "skillCommands") { + if (_name == "AiAgent.skillCommands") { TypeInfo >::parseFromBinaryStream(&skillCommands, stream); return true; } - if (_name == "patrolPoints") { + if (_name == "AiAgent.patrolPoints") { TypeInfo::parseFromBinaryStream(&patrolPoints, stream); return true; } - if (_name == "homeLocation") { + if (_name == "AiAgent.homeLocation") { TypeInfo::parseFromBinaryStream(&homeLocation, stream); return true; } - if (_name == "nextStepPosition") { + if (_name == "AiAgent.nextStepPosition") { TypeInfo::parseFromBinaryStream(&nextStepPosition, stream); return true; } - if (_name == "damageMap") { - TypeInfo::parseFromBinaryStream(&damageMap, stream); + if (_name == "AiAgent.weapons") { + TypeInfo > >::parseFromBinaryStream(&weapons, stream); return true; } - if (_name == "aiObserverMap") { - TypeInfo > >::parseFromBinaryStream(&aiObserverMap, stream); + if (_name == "AiAgent.camouflagedObjects") { + TypeInfo > >::parseFromBinaryStream(&camouflagedObjects, stream); return true; } - if (_name == "weapons") { - TypeInfo > >::parseFromBinaryStream(&weapons, stream); + if (_name == "AiAgent.npcTemplate") { + TypeInfo::parseFromBinaryStream(&npcTemplate, stream); return true; } - if (_name == "baby") { + if (_name == "AiAgent.baby") { TypeInfo::parseFromBinaryStream(&baby, stream); return true; } - if (_name == "despawnOnNoPlayerInRange") { + if (_name == "AiAgent.showNextMovementPosition") { + TypeInfo::parseFromBinaryStream(&showNextMovementPosition, stream); + return true; + } + + if (_name == "AiAgent.movementMarkers") { + TypeInfo > >::parseFromBinaryStream(&movementMarkers, stream); + return true; + } + + if (_name == "AiAgent.despawnOnNoPlayerInRange") { TypeInfo::parseFromBinaryStream(&despawnOnNoPlayerInRange, stream); return true; } - if (_name == "followObject") { - TypeInfo >::parseFromBinaryStream(&followObject, stream); + if (_name == "AiAgent.followObject") { + TypeInfo >::parseFromBinaryStream(&followObject, stream); return true; } - if (_name == "followState") { + if (_name == "AiAgent.followState") { TypeInfo::parseFromBinaryStream(&followState, stream); return true; } - if (_name == "fleeing") { + if (_name == "AiAgent.fleeing") { TypeInfo::parseFromBinaryStream(&fleeing, stream); return true; } - if (_name == "respawnTimer") { + if (_name == "AiAgent.respawnTimer") { TypeInfo::parseFromBinaryStream(&respawnTimer, stream); return true; } - if (_name == "numberOfPlayersInRange") { + if (_name == "AiAgent.numberOfPlayersInRange") { TypeInfo::parseFromBinaryStream(&numberOfPlayersInRange, stream); return true; } + if (_name == "AiAgent.loadedOutfit") { + TypeInfo::parseFromBinaryStream(&loadedOutfit, stream); + return true; + } + return false; } @@ -1292,123 +1534,149 @@ } int AiAgentImplementation::writeObjectMembers(ObjectOutputStream* stream) { + int _count = CreatureObjectImplementation::writeObjectMembers(stream); + String _name; int _offset; - uint16 _totalSize; - _name = "skillCommands"; + uint32 _totalSize; + _name = "AiAgent.skillCommands"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo >::toBinaryStream(&skillCommands, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "patrolPoints"; + _name = "AiAgent.patrolPoints"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&patrolPoints, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "homeLocation"; + _name = "AiAgent.homeLocation"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&homeLocation, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "nextStepPosition"; + _name = "AiAgent.nextStepPosition"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&nextStepPosition, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "damageMap"; + _name = "AiAgent.weapons"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); - TypeInfo::toBinaryStream(&damageMap, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + stream->writeInt(0); + TypeInfo > >::toBinaryStream(&weapons, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "aiObserverMap"; + _name = "AiAgent.camouflagedObjects"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); - TypeInfo > >::toBinaryStream(&aiObserverMap, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + stream->writeInt(0); + TypeInfo > >::toBinaryStream(&camouflagedObjects, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "weapons"; + _name = "AiAgent.npcTemplate"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); - TypeInfo > >::toBinaryStream(&weapons, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + stream->writeInt(0); + TypeInfo::toBinaryStream(&npcTemplate, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "baby"; + _name = "AiAgent.baby"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&baby, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "despawnOnNoPlayerInRange"; + _name = "AiAgent.showNextMovementPosition"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); + TypeInfo::toBinaryStream(&showNextMovementPosition, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); + + _name = "AiAgent.movementMarkers"; + _name.toBinaryStream(stream); + _offset = stream->getOffset(); + stream->writeInt(0); + TypeInfo > >::toBinaryStream(&movementMarkers, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); + + _name = "AiAgent.despawnOnNoPlayerInRange"; + _name.toBinaryStream(stream); + _offset = stream->getOffset(); + stream->writeInt(0); TypeInfo::toBinaryStream(&despawnOnNoPlayerInRange, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "followObject"; + _name = "AiAgent.followObject"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); - TypeInfo >::toBinaryStream(&followObject, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + stream->writeInt(0); + TypeInfo >::toBinaryStream(&followObject, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "followState"; + _name = "AiAgent.followState"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&followState, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "fleeing"; + _name = "AiAgent.fleeing"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&fleeing, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "respawnTimer"; + _name = "AiAgent.respawnTimer"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&respawnTimer, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - _name = "numberOfPlayersInRange"; + _name = "AiAgent.numberOfPlayersInRange"; _name.toBinaryStream(stream); _offset = stream->getOffset(); - stream->writeShort(0); + stream->writeInt(0); TypeInfo::toBinaryStream(&numberOfPlayersInRange, stream); - _totalSize = (uint16) (stream->getOffset() - (_offset + 2)); - stream->writeShort(_offset, _totalSize); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); + _name = "AiAgent.loadedOutfit"; + _name.toBinaryStream(stream); + _offset = stream->getOffset(); + stream->writeInt(0); + TypeInfo::toBinaryStream(&loadedOutfit, stream); + _totalSize = (uint32) (stream->getOffset() - (_offset + 4)); + stream->writeInt(_offset, _totalSize); - return 14 + CreatureObjectImplementation::writeObjectMembers(stream); + + return _count + 17; } AiAgentImplementation::AiAgentImplementation() { @@ -1419,41 +1687,68 @@ followState = OBLIVIOUS; // server/zone/objects/creature/AiAgent.idl(): respawnTimer = 0; respawnTimer = 0; + // server/zone/objects/creature/AiAgent.idl(): showNextMovementPosition = true; + showNextMovementPosition = true; // server/zone/objects/creature/AiAgent.idl(): despawnOnNoPlayerInRange = true; despawnOnNoPlayerInRange = true; // server/zone/objects/creature/AiAgent.idl(): numberOfPlayersInRange = 0; numberOfPlayersInRange = 0; - // server/zone/objects/creature/AiAgent.idl(): objectTemplate = null; - objectTemplate = NULL; - // server/zone/objects/creature/AiAgent.idl(): npcTemplate = null; - npcTemplate = NULL; - // server/zone/objects/creature/AiAgent.idl(): lootOwner = null; - lootOwner = NULL; + // server/zone/objects/creature/AiAgent.idl(): loadedOutfit = false; + loadedOutfit = false; // server/zone/objects/creature/AiAgent.idl(): Logger.setLoggingName("AiAgent"); Logger::setLoggingName("AiAgent"); // server/zone/objects/creature/AiAgent.idl(): Logger.setLogging(false); Logger::setLogging(false); // server/zone/objects/creature/AiAgent.idl(): Logger.setGlobalLogging(true); Logger::setGlobalLogging(true); + // server/zone/objects/creature/AiAgent.idl(): fleeing = false; + fleeing = false; + // server/zone/objects/creature/AiAgent.idl(): baby = false; + baby = false; } void AiAgentImplementation::finalize() { - // server/zone/objects/creature/AiAgent.idl(): Logger.info("deleting from ram", true); - Logger::info("deleting from ram", true); } -void AiAgentImplementation::doAwarenessCheck(Coordinate& start, unsigned long long time, CreatureObject* target) { +bool AiAgentImplementation::isCamouflaged(CreatureObject* target) { + // server/zone/objects/creature/AiAgent.idl(): return false; + return false; } void AiAgentImplementation::clearPatrolPoints() { - // server/zone/objects/creature/AiAgent.idl(): patrolPoints.removeAll(); + // server/zone/objects/creature/AiAgent.idl(): } +{ + Locker _locker((&targetMutex)); + // server/zone/objects/creature/AiAgent.idl(): patrolPoints.removeAll(); (&patrolPoints)->removeAll(); } +} +void AiAgentImplementation::destroyObjectFromWorld(bool sendSelfDestroy) { + // server/zone/objects/creature/AiAgent.idl(): super.destroyObjectFromWorld(sendSelfDestroy); + CreatureObjectImplementation::destroyObjectFromWorld(sendSelfDestroy); + // server/zone/objects/creature/AiAgent.idl(): } + if (moveEvent != NULL){ + // server/zone/objects/creature/AiAgent.idl(): moveEvent.clearCreatureObject(); + moveEvent->clearCreatureObject(); + // server/zone/objects/creature/AiAgent.idl(): moveEvent = null; + moveEvent = NULL; +} +} + +void AiAgentImplementation::scheduleDespawn() { + // server/zone/objects/creature/AiAgent.idl(): scheduleDespawn(45); + scheduleDespawn(45); +} + void AiAgentImplementation::addPatrolPoint(PatrolPoint& point) { - // server/zone/objects/creature/AiAgent.idl(): patrolPoints.add(point); + // server/zone/objects/creature/AiAgent.idl(): } +{ + Locker _locker((&targetMutex)); + // server/zone/objects/creature/AiAgent.idl(): patrolPoints.add(point); (&patrolPoints)->add(point); } +} void AiAgentImplementation::setHomeLocation(float x, float z, float y, SceneObject* cell) { // server/zone/objects/creature/AiAgent.idl(): homeLocation.setPosition(x, z, y); @@ -1471,30 +1766,39 @@ bool AiAgentImplementation::isAttackableBy(CreatureObject* object) { // server/zone/objects/creature/AiAgent.idl(): if - if (object == _this) // server/zone/objects/creature/AiAgent.idl(): return false; + if (object == _this.get()) // server/zone/objects/creature/AiAgent.idl(): return false; return false; // server/zone/objects/creature/AiAgent.idl(): if if (CreatureObjectImplementation::pvpStatusBitmask == 0) // server/zone/objects/creature/AiAgent.idl(): return false; return false; // server/zone/objects/creature/AiAgent.idl(): if - if (_this->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return false; + if (isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return false; return false; + // server/zone/objects/creature/AiAgent.idl(): if + if (isDead()) // server/zone/objects/creature/AiAgent.idl(): return false; + return false; + // server/zone/objects/creature/AiAgent.idl(): unsigned + if (object->isAiAgent()) // server/zone/objects/creature/AiAgent.idl(): return false; + return false; + // server/zone/objects/creature/AiAgent.idl(): unsigned int targetFaction = object.getFaction(); + unsigned int targetFaction = object->getFaction(); // server/zone/objects/creature/AiAgent.idl(): return - if (_this->isDead()) // server/zone/objects/creature/AiAgent.idl(): return false; + if (targetFaction != 0 && CreatureObjectImplementation::getFaction() != 0){ + // server/zone/objects/creature/AiAgent.idl(): PlayerObject ghost = object.getPlayerObject(); + ManagedReference ghost = object->getPlayerObject(); + // server/zone/objects/creature/AiAgent.idl(): if + if (targetFaction == getFaction()) // server/zone/objects/creature/AiAgent.idl(): return false; return false; - // server/zone/objects/creature/AiAgent.idl(): return true; - return true; + // server/zone/objects/creature/AiAgent.idl(): } + if (ghost != NULL && (targetFaction != CreatureObjectImplementation::getFaction()) && ghost->getFactionStatus() == FactionStatus::ONLEAVE) // server/zone/objects/creature/AiAgent.idl(): return false; + return false; } -bool AiAgentImplementation::isAggressiveTo(CreatureObject* object) { - // server/zone/objects/creature/AiAgent.idl(): if - if (!isAttackableBy(object)) // server/zone/objects/creature/AiAgent.idl(): return false; + else // server/zone/objects/creature/AiAgent.idl(): return + if (targetFaction == 0 && CreatureObjectImplementation::getFaction() != 0) // server/zone/objects/creature/AiAgent.idl(): return false; return false; - // server/zone/objects/creature/AiAgent.idl(): return - if (CreatureObjectImplementation::pvpStatusBitmask & CreatureFlag::AGGRESSIVE) // server/zone/objects/creature/AiAgent.idl(): return true; + // server/zone/objects/creature/AiAgent.idl(): return true; return true; - // server/zone/objects/creature/AiAgent.idl(): return false; - return false; } void AiAgentImplementation::setOblivious() { @@ -1507,51 +1811,72 @@ } void AiAgentImplementation::setWatchObject(SceneObject* obj) { - // server/zone/objects/creature/AiAgent.idl(): followState - if (_this->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return; + // server/zone/objects/creature/AiAgent.idl(): } +{ + Locker _locker((&targetMutex)); + // server/zone/objects/creature/AiAgent.idl(): followState + if (_this.get()->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return; return; - // server/zone/objects/creature/AiAgent.idl(): followState = WATCHING; + // server/zone/objects/creature/AiAgent.idl(): followState = WATCHING; followState = WATCHING; - // server/zone/objects/creature/AiAgent.idl(): setTargetObject(obj); + // server/zone/objects/creature/AiAgent.idl(): setTargetObject(obj); setTargetObject(obj); - // server/zone/objects/creature/AiAgent.idl(): activateMovementEvent(); + // server/zone/objects/creature/AiAgent.idl(): activateMovementEvent(); activateMovementEvent(); } +} void AiAgentImplementation::setStalkObject(SceneObject* obj) { - // server/zone/objects/creature/AiAgent.idl(): followState - if (_this->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return; + // server/zone/objects/creature/AiAgent.idl(): } +{ + Locker _locker((&targetMutex)); + // server/zone/objects/creature/AiAgent.idl(): followState + if (_this.get()->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return; return; - // server/zone/objects/creature/AiAgent.idl(): followState = STALKING; + // server/zone/objects/creature/AiAgent.idl(): followState = STALKING; followState = STALKING; - // server/zone/objects/creature/AiAgent.idl(): setTargetObject(obj); + // server/zone/objects/creature/AiAgent.idl(): setTargetObject(obj); setTargetObject(obj); - // server/zone/objects/creature/AiAgent.idl(): activateMovementEvent(); + // server/zone/objects/creature/AiAgent.idl(): activateMovementEvent(); activateMovementEvent(); } +} void AiAgentImplementation::setFollowObject(SceneObject* obj) { - // server/zone/objects/creature/AiAgent.idl(): followState - if (_this->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return; + // server/zone/objects/creature/AiAgent.idl(): } +{ + Locker _locker((&targetMutex)); + // server/zone/objects/creature/AiAgent.idl(): followState + if (_this.get()->isRetreating()) // server/zone/objects/creature/AiAgent.idl(): return; return; - // server/zone/objects/creature/AiAgent.idl(): followState = FOLLOWING; + // server/zone/objects/creature/AiAgent.idl(): followState = FOLLOWING; followState = FOLLOWING; - // server/zone/objects/creature/AiAgent.idl(): setTargetObject(obj); + // server/zone/objects/creature/AiAgent.idl(): setTargetObject(obj); setTargetObject(obj); - // server/zone/objects/creature/AiAgent.idl(): activateMovementEvent(); + // server/zone/objects/creature/AiAgent.idl(): activateMovementEvent(); activateMovementEvent(); } +} void AiAgentImplementation::setTargetObject(SceneObject* obj) { - // server/zone/objects/creature/AiAgent.idl(): } + // server/zone/objects/creature/AiAgent.idl(): } +{ + Locker _locker((&targetMutex)); + // server/zone/objects/creature/AiAgent.idl(): } if (followObject != obj){ - // server/zone/objects/creature/AiAgent.idl(): clearPatrolPoints(); + // server/zone/objects/creature/AiAgent.idl(): clearPatrolPoints(); clearPatrolPoints(); - // server/zone/objects/creature/AiAgent.idl(): followObject = obj; + // server/zone/objects/creature/AiAgent.idl(): followObject = obj; followObject = obj; } } +} +SceneObject* AiAgentImplementation::getFollowObject() { + // server/zone/objects/creature/AiAgent.idl(): return followObject; + return followObject; +} + bool AiAgentImplementation::isRetreating() { // server/zone/objects/creature/AiAgent.idl(): return !homeLocation.isReached(); return !(&homeLocation)->isReached(); @@ -1564,106 +1889,106 @@ float AiAgentImplementation::getKinetic() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getKinetic(); - return npcTemplate->getKinetic(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getKinetic(); + return (&npcTemplate)->get()->getKinetic(); } float AiAgentImplementation::getEnergy() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getEnergy(); - return npcTemplate->getEnergy(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getEnergy(); + return (&npcTemplate)->get()->getEnergy(); } float AiAgentImplementation::getElectricity() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getElectricity(); - return npcTemplate->getElectricity(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getElectricity(); + return (&npcTemplate)->get()->getElectricity(); } float AiAgentImplementation::getStun() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getStun(); - return npcTemplate->getStun(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getStun(); + return (&npcTemplate)->get()->getStun(); } float AiAgentImplementation::getBlast() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getBlast(); - return npcTemplate->getBlast(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getBlast(); + return (&npcTemplate)->get()->getBlast(); } float AiAgentImplementation::getHeat() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getHeat(); - return npcTemplate->getHeat(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getHeat(); + return (&npcTemplate)->get()->getHeat(); } float AiAgentImplementation::getCold() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getCold(); - return npcTemplate->getCold(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getCold(); + return (&npcTemplate)->get()->getCold(); } float AiAgentImplementation::getAcid() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getAcid(); - return npcTemplate->getAcid(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getAcid(); + return (&npcTemplate)->get()->getAcid(); } float AiAgentImplementation::getLightSaber() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getLightSaber(); - return npcTemplate->getLightSaber(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getLightSaber(); + return (&npcTemplate)->get()->getLightSaber(); } bool AiAgentImplementation::isStalker() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return false; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return false; return false; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.isStalker(); - return npcTemplate->isStalker(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().isStalker(); + return (&npcTemplate)->get()->isStalker(); } bool AiAgentImplementation::isKiller() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return false; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return false; return false; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.isKiller(); - return npcTemplate->isKiller(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().isKiller(); + return (&npcTemplate)->get()->isKiller(); } unsigned int AiAgentImplementation::getFerocity() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getFerocity(); - return npcTemplate->getFerocity(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getFerocity(); + return (&npcTemplate)->get()->getFerocity(); } unsigned int AiAgentImplementation::getArmor() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getArmor(); - return npcTemplate->getArmor(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getArmor(); + return (&npcTemplate)->get()->getArmor(); } bool AiAgentImplementation::getDespawnOnNoPlayerInRange() { @@ -1676,75 +2001,84 @@ return numberOfPlayersInRange; } -DamageMap* AiAgentImplementation::getDamageMap() { - // server/zone/objects/creature/AiAgent.idl(): return damageMap; - return (&damageMap); -} - String AiAgentImplementation::getFactionString() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return ""; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return ""; return ""; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getFaction(); - return npcTemplate->getFaction(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getFaction(); + return (&npcTemplate)->get()->getFaction(); } String AiAgentImplementation::getSocialGroup() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return ""; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return ""; return ""; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getSocialGroup(); - return npcTemplate->getSocialGroup(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getSocialGroup(); + return (&npcTemplate)->get()->getSocialGroup(); } float AiAgentImplementation::getChanceHit() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return false; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return false; return false; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getChanceHit(); - return npcTemplate->getChanceHit(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getChanceHit(); + return (&npcTemplate)->get()->getChanceHit(); } int AiAgentImplementation::getDamageMin() { + // server/zone/objects/creature/AiAgent.idl(): if + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + return 0; // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if (getWeapon() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getDamageMin(); - return npcTemplate->getDamageMin(); + // server/zone/objects/creature/AiAgent.idl(): return getWeapon().getMinDamage(); + return getWeapon()->getMinDamage(); } int AiAgentImplementation::getDamageMax() { + // server/zone/objects/creature/AiAgent.idl(): if + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + return 0; // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if (getWeapon() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getDamageMax(); - return npcTemplate->getDamageMax(); + // server/zone/objects/creature/AiAgent.idl(): return getWeapon().getMaxDamage(); + return getWeapon()->getMaxDamage(); } int AiAgentImplementation::getBaseXp() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getBaseXp(); - return npcTemplate->getBaseXp(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getBaseXp(); + return (&npcTemplate)->get()->getBaseXp(); } unsigned int AiAgentImplementation::getDiet() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return 0; return 0; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getDiet(); - return npcTemplate->getDiet(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getDiet(); + return (&npcTemplate)->get()->getDiet(); } CreatureAttackMap* AiAgentImplementation::getAttackMap() { // server/zone/objects/creature/AiAgent.idl(): return - if (npcTemplate == NULL) // server/zone/objects/creature/AiAgent.idl(): return null; + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return null; return NULL; - // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.getAttacks(); - return npcTemplate->getAttacks(); + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getAttacks(); + return (&npcTemplate)->get()->getAttacks(); } +LootGroupCollection* AiAgentImplementation::getLootGroups() { + // server/zone/objects/creature/AiAgent.idl(): return + if ((&npcTemplate)->get() == NULL) // server/zone/objects/creature/AiAgent.idl(): return null; + return NULL; + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get().getLootGroups(); + return (&npcTemplate)->get()->getLootGroups(); +} + float AiAgentImplementation::getRespawnTimer() { // server/zone/objects/creature/AiAgent.idl(): return respawnTimer; return respawnTimer; @@ -1760,536 +2094,817 @@ return true; } -void AiAgentImplementation::setLootOwner(CreatureObject* owner) { - // server/zone/objects/creature/AiAgent.idl(): lootOwner = owner; - lootOwner = owner; +CreatureTemplate* AiAgentImplementation::getCreatureTemplate() { + // server/zone/objects/creature/AiAgent.idl(): return npcTemplate.get(); + return (&npcTemplate)->get(); } -CreatureObject* AiAgentImplementation::getLootOwner() { - // server/zone/objects/creature/AiAgent.idl(): return lootOwner; - return lootOwner; -} - bool AiAgentImplementation::hasLoot() { // server/zone/objects/creature/AiAgent.idl(): return false; return false; } +void AiAgentImplementation::setShowNextPosition(bool val) { + // server/zone/objects/creature/AiAgent.idl(): showNextMovementPosition = val; + showNextMovementPosition = val; +} + /* * AiAgentAdapter */ -AiAgentAdapter::AiAgentAdapter(AiAgentImplementation* obj) : CreatureObjectAdapter(obj) { + +#include "engine/orb/messages/InvokeMethodMessage.h" + + +AiAgentAdapter::AiAgentAdapter(AiAgent* obj) : CreatureObjectAdapter(obj) { } -Packet* AiAgentAdapter::invokeMethod(uint32 methid, DistributedMethod* inv) { - Packet* resp = new MethodReturnMessage(0); +void AiAgentAdapter::invokeMethod(uint32 methid, DistributedMethod* inv) { + DOBMessage* resp = inv->getInvocationMessage(); switch (methid) { case RPC_INITIALIZETRANSIENTMEMBERS__: - initializeTransientMembers(); + { + initializeTransientMembers(); + } break; case RPC_FINALIZE__: - finalize(); + { + finalize(); + } break; case RPC_ACTIVATERECOVERY__: - activateRecovery(); + { + activateRecovery(); + } break; case RPC_ACTIVATEMOVEMENTEVENT__: - activateMovementEvent(); + { + activateMovementEvent(); + } break; case RPC_ACTIVATEWAITEVENT__: - activateWaitEvent(); + { + activateWaitEvent(); + } break; case RPC_ACTIVATEAWARENESSEVENT__CREATUREOBJECT_: - activateAwarenessEvent(static_cast(inv->getObjectParameter())); + { + activateAwarenessEvent(static_cast(inv->getObjectParameter())); + } break; case RPC_TRYRETREAT__: - resp->insertBoolean(tryRetreat()); + { + resp->insertBoolean(tryRetreat()); + } break; case RPC_DORECOVERY__: - doRecovery(); + { + doRecovery(); + } break; + case RPC_DOATTACK__: + { + doAttack(); + } + break; case RPC_DOMOVEMENT__: - doMovement(); + { + doMovement(); + } break; + case RPC_SETLEVEL__INT_: + { + setLevel(inv->getSignedIntParameter()); + } + break; + case RPC_SENDBASELINESTO__SCENEOBJECT_: + { + sendBaselinesTo(static_cast(inv->getObjectParameter())); + } + break; + case RPC_CALCULATEATTACKMINDAMAGE__INT_: + { + resp->insertSignedInt(calculateAttackMinDamage(inv->getSignedIntParameter())); + } + break; + case RPC_CALCULATEATTACKMAXDAMAGE__INT_: + { + resp->insertSignedInt(calculateAttackMaxDamage(inv->getSignedIntParameter())); + } + break; + case RPC_CALCULATEATTACKSPEED__INT_: + { + resp->insertFloat(calculateAttackSpeed(inv->getSignedIntParameter())); + } + break; + case RPC_ISCAMOUFLAGED__CREATUREOBJECT_: + { + resp->insertBoolean(isCamouflaged(static_cast(inv->getObjectParameter()))); + } + break; + case RPC_ISSCENTMASKED__CREATUREOBJECT_: + { + resp->insertBoolean(isScentMasked(static_cast(inv->getObjectParameter()))); + } + break; + case RPC_ISCONCEALED__CREATUREOBJECT_: + { + resp->insertBoolean(isConcealed(static_cast(inv->getObjectParameter()))); + } + break; + case RPC_HANDLEOBJECTMENUSELECT__CREATUREOBJECT_BYTE_: + { + resp->insertSignedInt(handleObjectMenuSelect(static_cast(inv->getObjectParameter()), inv->getByteParameter())); + } + break; case RPC_CHECKNEWANGLE__: - checkNewAngle(); + { + checkNewAngle(); + } break; case RPC_FILLATTRIBUTELIST__ATTRIBUTELISTMESSAGE_CREATUREOBJECT_: - fillAttributeList(static_cast(inv->getObjectParameter()), static_cast(inv->getObjectParameter())); + { + fillAttributeList(static_cast(inv->getObjectParameter()), static_cast(inv->getObjectParameter())); + } break; case RPC_SETNEXTPOSITION__FLOAT_FLOAT_FLOAT_SCENEOBJECT_: - setNextPosition(inv->getFloatParameter(), inv->getFloatParameter(), inv->getFloatParameter(), static_cast(inv->getObjectParameter())); + { + setNextPosition(inv->getFloatParameter(), inv->getFloatParameter(), inv->getFloatParameter(), static_cast(inv->getObjectParameter())); + } break; + case RPC_NOTIFYPOSITIONUPDATE__QUADTREEENTRY_: + { + notifyPositionUpdate(static_cast(inv->getObjectParameter())); + } + break; case RPC_CLEARPATROLPOINTS__: - clearPatrolPoints(); + { + clearPatrolPoints(); + } break; - case RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_INT_BOOL_BOOL_: - resp->insertSignedInt(inflictDamage(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter(), inv->getSignedIntParameter(), inv->getBooleanParameter(), inv->getBooleanParameter())); + case RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_FLOAT_BOOL_BOOL_: + { + resp->insertSignedInt(inflictDamage(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter(), inv->getFloatParameter(), inv->getBooleanParameter(), inv->getBooleanParameter())); + } break; + case RPC_INFLICTDAMAGE__TANGIBLEOBJECT_INT_FLOAT_BOOL_STRING_BOOL_: + { + String xp; + resp->insertSignedInt(inflictDamage(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter(), inv->getFloatParameter(), inv->getBooleanParameter(), inv->getAsciiParameter(xp), inv->getBooleanParameter())); + } + break; case RPC_SENDCONVERSATIONSTARTTO__SCENEOBJECT_: - sendConversationStartTo(static_cast(inv->getObjectParameter())); + { + sendConversationStartTo(static_cast(inv->getObjectParameter())); + } break; case RPC_SENDDEFAULTCONVERSATIONTO__SCENEOBJECT_: - sendDefaultConversationTo(static_cast(inv->getObjectParameter())); + { + sendDefaultConversationTo(static_cast(inv->getObjectParameter())); + } break; case RPC_SELECTCONVERSATIONOPTION__INT_SCENEOBJECT_: - selectConversationOption(inv->getSignedIntParameter(), static_cast(inv->getObjectParameter())); + { + selectConversationOption(inv->getSignedIntParameter(), static_cast(inv->getObjectParameter())); + } break; case RPC_NOTIFYOBJECTDESTRUCTIONOBSERVERS__TANGIBLEOBJECT_INT_: - resp->insertSignedInt(notifyObjectDestructionObservers(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter())); + { + resp->insertSignedInt(notifyObjectDestructionObservers(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter())); + } break; case RPC_NOTIFYCONVERSEOBSERVERS__CREATUREOBJECT_: - resp->insertSignedInt(notifyConverseObservers(static_cast(inv->getObjectParameter()))); + { + resp->insertSignedInt(notifyConverseObservers(static_cast(inv->getObjectParameter()))); + } break; case RPC_NOTIFYATTACK__OBSERVABLE_: - resp->insertSignedInt(notifyAttack(static_cast(inv->getObjectParameter()))); + { + resp->insertSignedInt(notifyAttack(static_cast(inv->getObjectParameter()))); + } break; case RPC_NOTIFYCALLFORHELP__OBSERVABLE_MANAGEDOBJECT_: - resp->insertSignedInt(notifyCallForHelp(static_cast(inv->getObjectParameter()), static_cast(inv->getObjectParameter()))); + { + resp->insertSignedInt(notifyCallForHelp(static_cast(inv->getObjectParameter()), static_cast(inv->getObjectParameter()))); + } break; + case RPC_DESTROYOBJECTFROMWORLD__BOOL_: + { + destroyObjectFromWorld(inv->getBooleanParameter()); + } + break; case RPC_ACTIVATEPOSTURERECOVERY__: - activatePostureRecovery(); + { + activatePostureRecovery(); + } break; + case RPC_QUEUEDIZZYFALLEVENT__: + { + queueDizzyFallEvent(); + } + break; case RPC_CLEARCOMBATSTATE__BOOL_: - clearCombatState(inv->getBooleanParameter()); + { + clearCombatState(inv->getBooleanParameter()); + } break; case RPC_SETDEFENDER__SCENEOBJECT_: - setDefender(static_cast(inv->getObjectParameter())); + { + setDefender(static_cast(inv->getObjectParameter())); + } break; case RPC_ADDDEFENDER__SCENEOBJECT_: - addDefender(static_cast(inv->getObjectParameter())); + { + addDefender(static_cast(inv->getObjectParameter())); + } break; case RPC_REMOVEDEFENDER__SCENEOBJECT_: - removeDefender(static_cast(inv->getObjectParameter())); + { + removeDefender(static_cast(inv->getObjectParameter())); + } break; case RPC_SETDESPAWNONNOPLAYERINRANGE__BOOL_: - setDespawnOnNoPlayerInRange(inv->getBooleanParameter()); + { + setDespawnOnNoPlayerInRange(inv->getBooleanParameter()); + } break; case RPC_NOTIFYDESPAWN__ZONE_: - notifyDespawn(static_cast(inv->getObjectParameter())); + { + notifyDespawn(static_cast(inv->getObjectParameter())); + } break; case RPC_SCHEDULEDESPAWN__: - scheduleDespawn(); + { + scheduleDespawn(); + } break; + case RPC_SCHEDULEDESPAWN__INT_: + { + scheduleDespawn(inv->getSignedIntParameter()); + } + break; case RPC_RESPAWN__ZONE_INT_: - respawn(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter()); + { + respawn(static_cast(inv->getObjectParameter()), inv->getSignedIntParameter()); + } break; case RPC_SETHOMELOCATION__FLOAT_FLOAT_FLOAT_SCENEOBJECT_: - setHomeLocation(inv->getFloatParameter(), inv->getFloatParameter(), inv->getFloatParameter(), static_cast(inv->getObjectParameter())); + { + setHomeLocation(inv->getFloatParameter(), inv->getFloatParameter(), inv->getFloatParameter(), static_cast(inv->getObjectParameter())); + } break; case RPC_SETRESPAWNTIMER__FLOAT_: - setRespawnTimer(inv->getFloatParameter()); + { + setRespawnTimer(inv->getFloatParameter()); + } break; case RPC_ISATTACKABLEBY__CREATUREOBJECT_: - resp->insertBoolean(isAttackableBy(static_cast(inv->getObjectParameter()))); + { + resp->insertBoolean(isAttackableBy(static_cast(inv->getObjectParameter()))); + } break; case RPC_ISAGGRESSIVETO__CREATUREOBJECT_: - resp->insertBoolean(isAggressiveTo(static_cast(inv->getObjectParameter()))); + { + resp->insertBoolean(isAggressiveTo(static_cast(inv->getObjectParameter()))); + } break; case RPC_SETOBLIVIOUS__: - setOblivious(); + { + setOblivious(); + } break; case RPC_SETWATCHOBJECT__SCENEOBJECT_: - setWatchObject(static_cast(inv->getObjectParameter())); + { + setWatchObject(static_cast(inv->getObjectParameter())); + } break; case RPC_SETSTALKOBJECT__SCENEOBJECT_: - setStalkObject(static_cast(inv->getObjectParameter())); + { + setStalkObject(static_cast(inv->getObjectParameter())); + } break; case RPC_SETFOLLOWOBJECT__SCENEOBJECT_: - setFollowObject(static_cast(inv->getObjectParameter())); + { + setFollowObject(static_cast(inv->getObjectParameter())); + } break; case RPC_SETTARGETOBJECT__SCENEOBJECT_: - setTargetObject(static_cast(inv->getObjectParameter())); + { + setTargetObject(static_cast(inv->getObjectParameter())); + } break; + case RPC_GETFOLLOWOBJECT__: + { + resp->insertLong(getFollowObject()->_getObjectID()); + } + break; case RPC_SELECTWEAPON__: - selectWeapon(); + { + selectWeapon(); + } break; case RPC_VALIDATESTATEATTACK__CREATUREOBJECT_STRING_: - resp->insertBoolean(validateStateAttack(static_cast(inv->getObjectParameter()), inv->getAsciiParameter(_param1_validateStateAttack__CreatureObject_String_))); + { + String args; + resp->insertBoolean(validateStateAttack(static_cast(inv->getObjectParameter()), inv->getAsciiParameter(args))); + } break; case RPC_ISRETREATING__: - resp->insertBoolean(isRetreating()); + { + resp->insertBoolean(isRetreating()); + } break; case RPC_ISFLEEING__: - resp->insertBoolean(isFleeing()); + { + resp->insertBoolean(isFleeing()); + } break; case RPC_CLEARDESPAWNEVENT__: - clearDespawnEvent(); + { + clearDespawnEvent(); + } break; case RPC_GETKINETIC__: - resp->insertFloat(getKinetic()); + { + resp->insertFloat(getKinetic()); + } break; case RPC_GETENERGY__: - resp->insertFloat(getEnergy()); + { + resp->insertFloat(getEnergy()); + } break; case RPC_GETELECTRICITY__: - resp->insertFloat(getElectricity()); + { + resp->insertFloat(getElectricity()); + } break; case RPC_GETSTUN__: - resp->insertFloat(getStun()); + { + resp->insertFloat(getStun()); + } break; case RPC_GETBLAST__: - resp->insertFloat(getBlast()); + { + resp->insertFloat(getBlast()); + } break; case RPC_GETHEAT__: - resp->insertFloat(getHeat()); + { + resp->insertFloat(getHeat()); + } break; case RPC_GETCOLD__: - resp->insertFloat(getCold()); + { + resp->insertFloat(getCold()); + } break; case RPC_GETACID__: - resp->insertFloat(getAcid()); + { + resp->insertFloat(getAcid()); + } break; case RPC_GETLIGHTSABER__: - resp->insertFloat(getLightSaber()); + { + resp->insertFloat(getLightSaber()); + } break; case RPC_ISSTALKER__: - resp->insertBoolean(isStalker()); + { + resp->insertBoolean(isStalker()); + } break; case RPC_ISKILLER__: - resp->insertBoolean(isKiller()); + { + resp->insertBoolean(isKiller()); + } break; case RPC_GETFEROCITY__: - resp->insertInt(getFerocity()); + { + resp->insertInt(getFerocity()); + } break; case RPC_GETARMOR__: - resp->insertInt(getArmor()); + { + resp->insertInt(getArmor()); + } break; case RPC_GETDESPAWNONNOPLAYERINRANGE__: - resp->insertBoolean(getDespawnOnNoPlayerInRange()); + { + resp->insertBoolean(getDespawnOnNoPlayerInRange()); + } break; case RPC_GETNUMBEROFPLAYERSINRANGE__: - resp->insertSignedInt(getNumberOfPlayersInRange()); + { + resp->insertSignedInt(getNumberOfPlayersInRange()); + } break; case RPC_GETFACTIONSTRING__: - resp->insertAscii(getFactionString()); + { + resp->insertAscii(getFactionString()); + } break; case RPC_GETSOCIALGROUP__: - resp->insertAscii(getSocialGroup()); + { + resp->insertAscii(getSocialGroup()); + } break; case RPC_GETCHANCEHIT__: - resp->insertFloat(getChanceHit()); + { + resp->insertFloat(getChanceHit()); + } break; case RPC_GETDAMAGEMIN__: - resp->insertSignedInt(getDamageMin()); + { + resp->insertSignedInt(getDamageMin()); + } break; case RPC_GETDAMAGEMAX__: - resp->insertSignedInt(getDamageMax()); + { + resp->insertSignedInt(getDamageMax()); + } break; case RPC_GETBASEXP__: - resp->insertSignedInt(getBaseXp()); + { + resp->insertSignedInt(getBaseXp()); + } break; case RPC_GETDIET__: - resp->insertInt(getDiet()); + { + resp->insertInt(getDiet()); + } break; case RPC_GETRESPAWNTIMER__: - resp->insertFloat(getRespawnTimer()); + { + resp->insertFloat(getRespawnTimer()); + } break; case RPC_ISAIAGENT__: - resp->insertBoolean(isAiAgent()); + { + resp->insertBoolean(isAiAgent()); + } break; - case RPC_SETLOOTOWNER__CREATUREOBJECT_: - setLootOwner(static_cast(inv->getObjectParameter())); - break; - case RPC_GETLOOTOWNER__: - resp->insertLong(getLootOwner()->_getObjectID()); - break; case RPC_HASLOOT__: - resp->insertBoolean(hasLoot()); + { + resp->insertBoolean(hasLoot()); + } break; + case RPC_SETSHOWNEXTPOSITION__BOOL_: + { + setShowNextPosition(inv->getBooleanParameter()); + } + break; default: - return NULL; + throw Exception("Method does not exists"); } - - return resp; } void AiAgentAdapter::initializeTransientMembers() { - (static_cast(impl))->initializeTransientMembers(); + (static_cast(stub))->initializeTransientMembers(); } void AiAgentAdapter::finalize() { - (static_cast(impl))->finalize(); + (static_cast(stub))->finalize(); } void AiAgentAdapter::activateRecovery() { - (static_cast(impl))->activateRecovery(); + (static_cast(stub))->activateRecovery(); } void AiAgentAdapter::activateMovementEvent() { - (static_cast(impl))->activateMovementEvent(); + (static_cast(stub))->activateMovementEvent(); } void AiAgentAdapter::activateWaitEvent() { - (static_cast(impl))->activateWaitEvent(); + (static_cast(stub))->activateWaitEvent(); } void AiAgentAdapter::activateAwarenessEvent(CreatureObject* target) { - (static_cast(impl))->activateAwarenessEvent(target); + (static_cast(stub))->activateAwarenessEvent(target); } bool AiAgentAdapter::tryRetreat() { - return (static_cast(impl))->tryRetreat(); + return (static_cast(stub))->tryRetreat(); } void AiAgentAdapter::doRecovery() { - (static_cast(impl))->doRecovery(); + (static_cast(stub))->doRecovery(); } +void AiAgentAdapter::doAttack() { + (static_cast(stub))->doAttack(); +} + void AiAgentAdapter::doMovement() { - (static_cast(impl))->doMovement(); + (static_cast(stub))->doMovement(); } +void AiAgentAdapter::setLevel(int lvl) { + (static_cast(stub))->setLevel(lvl); +} + +void AiAgentAdapter::sendBaselinesTo(SceneObject* player) { + (static_cast(stub))->sendBaselinesTo(player); +} + +int AiAgentAdapter::calculateAttackMinDamage(int level) { + return (static_cast(stub))->calculateAttackMinDamage(level); +} + +int AiAgentAdapter::calculateAttackMaxDamage(int level) { + return (static_cast(stub))->calculateAttackMaxDamage(level); +} + +float AiAgentAdapter::calculateAttackSpeed(int level) { + return (static_cast(stub))->calculateAttackSpeed(level); +} + +bool AiAgentAdapter::isCamouflaged(CreatureObject* target) { + return (static_cast(stub))->isCamouflaged(target); +} + +bool AiAgentAdapter::isScentMasked(CreatureObject* target) { + return (static_cast(stub))->isScentMasked(target); +} + +bool AiAgentAdapter::isConcealed(CreatureObject* target) { + return (static_cast(stub))->isConcealed(target); +} + +int AiAgentAdapter::handleObjectMenuSelect(CreatureObject* player, byte selectedID) { + return (static_cast(stub))->handleObjectMenuSelect(player, selectedID); +} + void AiAgentAdapter::checkNewAngle() { - (static_cast(impl))->checkNewAngle(); + (static_cast(stub))->checkNewAngle(); } void AiAgentAdapter::fillAttributeList(AttributeListMessage* msg, CreatureObject* object) { - (static_cast(impl))->fillAttributeList(msg, object); + (static_cast(stub))->fillAttributeList(msg, object); } void AiAgentAdapter::setNextPosition(float x, float z, float y, SceneObject* cell) { - (static_cast(impl))->setNextPosition(x, z, y, cell); + (static_cast(stub))->setNextPosition(x, z, y, cell); } +void AiAgentAdapter::notifyPositionUpdate(QuadTreeEntry* entry) { + (static_cast(stub))->notifyPositionUpdate(entry); +} + void AiAgentAdapter::clearPatrolPoints() { - (static_cast(impl))->clearPatrolPoints(); + (static_cast(stub))->clearPatrolPoints(); } -int AiAgentAdapter::inflictDamage(TangibleObject* attacker, int damageType, int damage, bool destroy, bool notifyClient) { - return (static_cast(impl))->inflictDamage(attacker, damageType, damage, destroy, notifyClient); +int AiAgentAdapter::inflictDamage(TangibleObject* attacker, int damageType, float damage, bool destroy, bool notifyClient) { + return (static_cast(stub))->inflictDamage(attacker, damageType, damage, destroy, notifyClient); } +int AiAgentAdapter::inflictDamage(TangibleObject* attacker, int damageType, float damage, bool destroy, const String& xp, bool notifyClient) { + return (static_cast(stub))->inflictDamage(attacker, damageType, damage, destroy, xp, notifyClient); +} + void AiAgentAdapter::sendConversationStartTo(SceneObject* player) { - (static_cast(impl))->sendConversationStartTo(player); + (static_cast(stub))->sendConversationStartTo(player); } void AiAgentAdapter::sendDefaultConversationTo(SceneObject* player) { - (static_cast(impl))->sendDefaultConversationTo(player); + (static_cast(stub))->sendDefaultConversationTo(player); } void AiAgentAdapter::selectConversationOption(int option, SceneObject* obj) { - (static_cast(impl))->selectConversationOption(option, obj); + (static_cast(stub))->selectConversationOption(option, obj); } int AiAgentAdapter::notifyObjectDestructionObservers(TangibleObject* attacker, int condition) { - return (static_cast(impl))->notifyObjectDestructionObservers(attacker, condition); + return (static_cast(stub))->notifyObjectDestructionObservers(attacker, condition); } int AiAgentAdapter::notifyConverseObservers(CreatureObject* converser) { - return (static_cast(impl))->notifyConverseObservers(converser); + return (static_cast(stub))->notifyConverseObservers(converser); } int AiAgentAdapter::notifyAttack(Observable* observable) { - return (static_cast(impl))->notifyAttack(observable); + return (static_cast(stub))->notifyAttack(observable); } int AiAgentAdapter::notifyCallForHelp(Observable* observable, ManagedObject* arg1) { - return (static_cast(impl))->notifyCallForHelp(observable, arg1); + return (static_cast(stub))->notifyCallForHelp(observable, arg1); } +void AiAgentAdapter::destroyObjectFromWorld(bool sendSelfDestroy) { + (static_cast(stub))->destroyObjectFromWorld(sendSelfDestroy); +} + void AiAgentAdapter::activatePostureRecovery() { - (static_cast(impl))->activatePostureRecovery(); + (static_cast(stub))->activatePostureRecovery(); } +void AiAgentAdapter::queueDizzyFallEvent() { + (static_cast(stub))->queueDizzyFallEvent(); +} + void AiAgentAdapter::clearCombatState(bool clearDefenders) { - (static_cast(impl))->clearCombatState(clearDefenders); + (static_cast(stub))->clearCombatState(clearDefenders); } void AiAgentAdapter::setDefender(SceneObject* defender) { - (static_cast(impl))->setDefender(defender); + (static_cast(stub))->setDefender(defender); } void AiAgentAdapter::addDefender(SceneObject* defender) { - (static_cast(impl))->addDefender(defender); + (static_cast(stub))->addDefender(defender); } void AiAgentAdapter::removeDefender(SceneObject* defender) { - (static_cast(impl))->removeDefender(defender); + (static_cast(stub))->removeDefender(defender); } void AiAgentAdapter::setDespawnOnNoPlayerInRange(bool val) { - (static_cast(impl))->setDespawnOnNoPlayerInRange(val); + (static_cast(stub))->setDespawnOnNoPlayerInRange(val); } void AiAgentAdapter::notifyDespawn(Zone* zone) { - (static_cast(impl))->notifyDespawn(zone); + (static_cast(stub))->notifyDespawn(zone); } void AiAgentAdapter::scheduleDespawn() { - (static_cast(impl))->scheduleDespawn(); + (static_cast(stub))->scheduleDespawn(); } +void AiAgentAdapter::scheduleDespawn(int timeToDespawn) { + (static_cast(stub))->scheduleDespawn(timeToDespawn); +} + void AiAgentAdapter::respawn(Zone* zone, int level) { - (static_cast(impl))->respawn(zone, level); + (static_cast(stub))->respawn(zone, level); } void AiAgentAdapter::setHomeLocation(float x, float z, float y, SceneObject* cell) { - (static_cast(impl))->setHomeLocation(x, z, y, cell); + (static_cast(stub))->setHomeLocation(x, z, y, cell); } void AiAgentAdapter::setRespawnTimer(float resp) { - (static_cast(impl))->setRespawnTimer(resp); + (static_cast(stub))->setRespawnTimer(resp); } bool AiAgentAdapter::isAttackableBy(CreatureObject* object) { - return (static_cast(impl))->isAttackableBy(object); + return (static_cast(stub))->isAttackableBy(object); } bool AiAgentAdapter::isAggressiveTo(CreatureObject* object) { - return (static_cast(impl))->isAggressiveTo(object); + return (static_cast(stub))->isAggressiveTo(object); } void AiAgentAdapter::setOblivious() { - (static_cast(impl))->setOblivious(); + (static_cast(stub))->setOblivious(); } void AiAgentAdapter::setWatchObject(SceneObject* obj) { - (static_cast(impl))->setWatchObject(obj); + (static_cast(stub))->setWatchObject(obj); } void AiAgentAdapter::setStalkObject(SceneObject* obj) { - (static_cast(impl))->setStalkObject(obj); + (static_cast(stub))->setStalkObject(obj); } void AiAgentAdapter::setFollowObject(SceneObject* obj) { - (static_cast(impl))->setFollowObject(obj); + (static_cast(stub))->setFollowObject(obj); } void AiAgentAdapter::setTargetObject(SceneObject* obj) { - (static_cast(impl))->setTargetObject(obj); + (static_cast(stub))->setTargetObject(obj); } +SceneObject* AiAgentAdapter::getFollowObject() { + return (static_cast(stub))->getFollowObject(); +} + void AiAgentAdapter::selectWeapon() { - (static_cast(impl))->selectWeapon(); + (static_cast(stub))->selectWeapon(); } bool AiAgentAdapter::validateStateAttack(CreatureObject* target, String& args) { - return (static_cast(impl))->validateStateAttack(target, args); + return (static_cast(stub))->validateStateAttack(target, args); } bool AiAgentAdapter::isRetreating() { - return (static_cast(impl))->isRetreating(); + return (static_cast(stub))->isRetreating(); } bool AiAgentAdapter::isFleeing() { - return (static_cast(impl))->isFleeing(); + return (static_cast(stub))->isFleeing(); } void AiAgentAdapter::clearDespawnEvent() { - (static_cast(impl))->clearDespawnEvent(); + (static_cast(stub))->clearDespawnEvent(); } float AiAgentAdapter::getKinetic() { - return (static_cast(impl))->getKinetic(); + return (static_cast(stub))->getKinetic(); } float AiAgentAdapter::getEnergy() { - return (static_cast(impl))->getEnergy(); + return (static_cast(stub))->getEnergy(); } float AiAgentAdapter::getElectricity() { - return (static_cast(impl))->getElectricity(); + return (static_cast(stub))->getElectricity(); } float AiAgentAdapter::getStun() { - return (static_cast(impl))->getStun(); + return (static_cast(stub))->getStun(); } float AiAgentAdapter::getBlast() { - return (static_cast(impl))->getBlast(); + return (static_cast(stub))->getBlast(); } float AiAgentAdapter::getHeat() { - return (static_cast(impl))->getHeat(); + return (static_cast(stub))->getHeat(); } float AiAgentAdapter::getCold() { - return (static_cast(impl))->getCold(); + return (static_cast(stub))->getCold(); } float AiAgentAdapter::getAcid() { - return (static_cast(impl))->getAcid(); + return (static_cast(stub))->getAcid(); } float AiAgentAdapter::getLightSaber() { - return (static_cast(impl))->getLightSaber(); + return (static_cast(stub))->getLightSaber(); } bool AiAgentAdapter::isStalker() { - return (static_cast(impl))->isStalker(); + return (static_cast(stub))->isStalker(); } bool AiAgentAdapter::isKiller() { - return (static_cast(impl))->isKiller(); + return (static_cast(stub))->isKiller(); } unsigned int AiAgentAdapter::getFerocity() { - return (static_cast(impl))->getFerocity(); + return (static_cast(stub))->getFerocity(); } unsigned int AiAgentAdapter::getArmor() { - return (static_cast(impl))->getArmor(); + return (static_cast(stub))->getArmor(); } bool AiAgentAdapter::getDespawnOnNoPlayerInRange() { - return (static_cast(impl))->getDespawnOnNoPlayerInRange(); + return (static_cast(stub))->getDespawnOnNoPlayerInRange(); } int AiAgentAdapter::getNumberOfPlayersInRange() { - return (static_cast(impl))->getNumberOfPlayersInRange(); + return (static_cast(stub))->getNumberOfPlayersInRange(); } String AiAgentAdapter::getFactionString() { - return (static_cast(impl))->getFactionString(); + return (static_cast(stub))->getFactionString(); } String AiAgentAdapter::getSocialGroup() { - return (static_cast(impl))->getSocialGroup(); + return (static_cast(stub))->getSocialGroup(); } float AiAgentAdapter::getChanceHit() { - return (static_cast(impl))->getChanceHit(); + return (static_cast(stub))->getChanceHit(); } int AiAgentAdapter::getDamageMin() { - return (static_cast(impl))->getDamageMin(); + return (static_cast(stub))->getDamageMin(); } int AiAgentAdapter::getDamageMax() { - return (static_cast(impl))->getDamageMax(); + return (static_cast(stub))->getDamageMax(); } int AiAgentAdapter::getBaseXp() { - return (static_cast(impl))->getBaseXp(); + return (static_cast(stub))->getBaseXp(); } unsigned int AiAgentAdapter::getDiet() { - return (static_cast(impl))->getDiet(); + return (static_cast(stub))->getDiet(); } float AiAgentAdapter::getRespawnTimer() { - return (static_cast(impl))->getRespawnTimer(); + return (static_cast(stub))->getRespawnTimer(); } bool AiAgentAdapter::isAiAgent() { - return (static_cast(impl))->isAiAgent(); + return (static_cast(stub))->isAiAgent(); } -void AiAgentAdapter::setLootOwner(CreatureObject* owner) { - (static_cast(impl))->setLootOwner(owner); +bool AiAgentAdapter::hasLoot() { + return (static_cast(stub))->hasLoot(); } -CreatureObject* AiAgentAdapter::getLootOwner() { - return (static_cast(impl))->getLootOwner(); +void AiAgentAdapter::setShowNextPosition(bool val) { + (static_cast(stub))->setShowNextPosition(val); } -bool AiAgentAdapter::hasLoot() { - return (static_cast(impl))->hasLoot(); -} - /* * AiAgentHelper */ @@ -2311,11 +2926,11 @@ } DistributedObjectServant* AiAgentHelper::instantiateServant() { - return new AiAgentImplementation(DummyConstructorParameter::instance()); + return new AiAgentImplementation(); } DistributedObjectAdapter* AiAgentHelper::createAdapter(DistributedObjectStub* obj) { - DistributedObjectAdapter* adapter = new AiAgentAdapter(static_cast(obj->_getImplementation())); + DistributedObjectAdapter* adapter = new AiAgentAdapter(static_cast(obj)); obj->_setClassName(className); obj->_setClassHelper(this);