heartbeat.cpp
上传用户:garry_shen
上传日期:2015-04-15
资源大小:45647k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "XmudOS.h"
  3. #include "ActiveObject.h"
  4. #include "Condition.h"
  5. #include "Player.h"
  6. #include "npcnpc.h"
  7. extern rmfullglobals myglobs;
  8. void CActiveObject::DoHeartBeat()
  9. {
  10. if(bPlayer) {
  11. ((CPlayerInfo *)this)->nRound += 1;
  12. }
  13. if(nStatus == AOS_dead) return;
  14. if( nBusy > 0 ) { 
  15. nBusy--; 
  16. if(nBusy <= 0) DoAction();
  17. }
  18. nTick--;
  19. if( nTick > 0  ) return;
  20. nTick = HEALINGGAP;
  21. if(bPlayer) {
  22. ((CPlayerInfo *)this)->Healing();
  23. }
  24. }
  25. void CActiveObject::DoAction()
  26. {
  27. CString sResult;
  28. POSITION pos;
  29. int nLevel;
  30. sResult.Empty();
  31. if(nStatus == AOS_dazuo){
  32. nStatus = AOS_none;
  33. EnterCriticalSection(&myglobs.csPlayerData);
  34. pos = GetConditionPos("DaZuo");
  35. if (pos != NULL) {
  36. nEff_force += listcondition.GetAt(pos)->nPower/5;
  37. if(nEff_force > nMax_force*2) {
  38. nLevel = GetSkillLevel("BaseForce");
  39. if(nMax_force >= nLevel * 10) {
  40. nEff_force = nMax_force*2;
  41. sResult.Format("%s