From: Borrillis <bor...@us...> - 2006-06-29 02:32:22
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27309/src/server Modified Files: npcmanager.cpp npcmanager.h Log Message: - Fix for Pet session time calculation - Fix for Pet Relationships - Started making pets capable of attacking Index: npcmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/npcmanager.cpp,v retrieving revision 1.130 retrieving revision 1.131 diff -C2 -d -r1.130 -r1.131 *** npcmanager.cpp 30 May 2006 21:43:35 -0000 1.130 --- npcmanager.cpp 29 Jun 2006 02:32:17 -0000 1.131 *************** *** 280,285 **** maxPetTime->Execute(); ! MathScriptVar* manaValue = maxPetTime->GetVar("MaxMana"); ! maxTime = manaValue->GetValue(); } } --- 280,285 ---- maxPetTime->Execute(); ! MathScriptVar* timeValue = maxPetTime->GetVar("MaxTime"); ! maxTime = timeValue->GetValue(); } } *************** *** 384,388 **** // NPC's need to know they were hit using a Perception if (evt.attacker!=NULL && evt.target->GetNPCPtr()) // if npc damaged ! psserver->npcmanager->QueueDamagePerception(evt.attacker,evt.target->GetNPCPtr(),evt.damage); } --- 384,388 ---- // NPC's need to know they were hit using a Perception if (evt.attacker!=NULL && evt.target->GetNPCPtr()) // if npc damaged ! QueueDamagePerception(evt.attacker,evt.target->GetNPCPtr(),evt.damage); } *************** *** 1006,1009 **** --- 1006,1031 ---- break; case psPETCommandMessage::CMD_ATTACK : + if ( pet != NULL ) + { + if ( pet->GetTarget() != NULL ) + { + int stance = PSCHARACTER_STANCE_AGGRESSIVE; + if ( words.GetCount() != 0 ) + { + stance = words.GetInt( 0 ); + } + QueueOwnerCmdAttackPerception( owner->GetActor(), pet ); + } + else + { + psserver->SendSystemInfo(me->clientnum,"Your pet needs a target to attack."); + } + } + break; + case psPETCommandMessage::CMD_STOPATTACK : + if ( pet != NULL ) + { + QueueOwnerCmdStopAttackPerception( owner->GetActor(), pet ); + } break; case psPETCommandMessage::CMD_ASSIST : *************** *** 1265,1269 **** /** ! * The client /pet stay command cause the NameChange perception to be sent to * the superclient. */ --- 1287,1291 ---- /** ! * The client /pet stay command cause the OwnerCmdStay perception to be sent to * the superclient. */ *************** *** 1281,1285 **** /** ! * The client /pet follow command cause the NameChange perception to be sent to * the superclient. */ --- 1303,1307 ---- /** ! * The client /pet follow command cause the OwnerCmdFollow perception to be sent to * the superclient. */ *************** *** 1296,1299 **** --- 1318,1353 ---- } + /** + * The client /pet attack command cause the OwnerCmdAttack perception to be sent to + * the superclient. + */ + void NPCManager::QueueOwnerCmdAttackPerception(gemActor *owner, gemNPC *pet) + { + outbound->msg->Add( (int8_t) psNPCCommandsMessage::PCPT_OWNER_CMD ); + outbound->msg->Add( (uint32_t) psPETCommandMessage::CMD_ATTACK ); + outbound->msg->Add( (uint32_t) owner->GetEntity()->GetID() ); + outbound->msg->Add( (uint32_t) pet->GetEntity()->GetID() ); + cmd_count++; + Debug3(LOG_NPC, "Added perception: %s has told %s to attack.\n", + owner->GetEntity()->GetName(), + pet->GetEntity()->GetName() ); + } + + /** + * The client /pet follow command cause the OwnerCmdStopAttack perception to be sent to + * the superclient. + */ + void NPCManager::QueueOwnerCmdStopAttackPerception(gemActor *owner, gemNPC *pet) + { + outbound->msg->Add( (int8_t) psNPCCommandsMessage::PCPT_OWNER_CMD ); + outbound->msg->Add( (uint32_t) psPETCommandMessage::CMD_STOPATTACK ); + outbound->msg->Add( (uint32_t) owner->GetEntity()->GetID() ); + outbound->msg->Add( (uint32_t) pet->GetEntity()->GetID() ); + cmd_count++; + Debug3(LOG_NPC, "Added perception: %s has told %s to stop atttacking.\n", + owner->GetEntity()->GetName(), + pet->GetEntity()->GetName() ); + } + void NPCManager::QueueInventoryPerception(gemActor *owner, psItem * itemdata, bool inserted) { Index: npcmanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/npcmanager.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** npcmanager.h 30 May 2006 21:43:35 -0000 1.38 --- npcmanager.h 29 Jun 2006 02:32:17 -0000 1.39 *************** *** 86,90 **** void QueueOwnerCmdFollowPerception(gemActor *owner, gemNPC *pet); ! /// Let the superclient knwo that one of its npcs has a change in inventory. void QueueInventoryPerception(gemActor *owner, psItem * itemdata, bool inserted); --- 86,96 ---- void QueueOwnerCmdFollowPerception(gemActor *owner, gemNPC *pet); ! /// Let the superclient know that one of its npcs has been commanded to attack. ! void QueueOwnerCmdAttackPerception(gemActor *owner, gemNPC *pet); ! ! /// Let the superclient know that one of its npcs has been commanded to stop attacking. ! void QueueOwnerCmdStopAttackPerception(gemActor *owner, gemNPC *pet); ! ! /// Let the superclient know that one of its npcs has a change in inventory. void QueueInventoryPerception(gemActor *owner, psItem * itemdata, bool inserted); |