1. #include "StdAfx.h"
  2. #include "PythonCharacterManager.h"
  3. #include "PythonNonPlayer.h"
  4. PyObject * chrRaceToJob(PyObject * poSelf, PyObject * poArgs)
  5. {
  6. int race;
  7. if (!PyTuple_GetInteger(poArgs, 0, &race))
  8. return Py_BuildException();
  9. return Py_BuildValue("i", RaceToJob(race));
  10. }
  11. PyObject * chrRaceToSex(PyObject * poSelf, PyObject * poArgs)
  12. {
  13. int race;
  14. if (!PyTuple_GetInteger(poArgs, 0, &race))
  15. return Py_BuildException();
  16. return Py_BuildValue("i", RaceToSex(race));
  17. }
  18. PyObject * chrDestroy(PyObject * poSelf, PyObject * poArgs)
  19. {
  20. CPythonCharacterManager::Instance().Destroy();
  21. return Py_BuildNone();
  22. }
  23. PyObject * chrUpdate(PyObject * poSelf, PyObject * poArgs)
  24. {
  25. CPythonCharacterManager::Instance().Update();
  26. return Py_BuildNone();
  27. }
  28. PyObject * chrDeform(PyObject * poSelf, PyObject * poArgs)
  29. {
  30. CPythonCharacterManager::Instance().Deform();
  31. return Py_BuildNone();
  32. }
  33. PyObject * chrRender(PyObject * poSelf, PyObject * poArgs)
  34. {
  35. CPythonCharacterManager::Instance().Render();
  36. return Py_BuildNone();
  37. }
  38. PyObject * chrRenderCollision(PyObject * poSelf, PyObject * poArgs)
  39. {
  40. CPythonCharacterManager::Instance().RenderCollision();
  41. return Py_BuildNone();
  42. }
  43. // Functions For Python Test Code
  44. PyObject * chrCreateInstance(PyObject* poSelf, PyObject* poArgs)
  45. {
  46. int iVirtualID;
  47. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  48. return Py_BuildException();
  49. if (PyTuple_Size(poArgs)==2)
  50. {
  51. PyObject* poDict=PyTuple_GetItem(poArgs, 1);
  52. if (!PyDict_Check(poDict))
  53. return Py_BuildException();
  54. CInstanceBase::SCreateData kCreateData;
  55. kCreateData.m_bType=CActorInstance::TYPE_PC;
  56. kCreateData.m_dwLevel = 0;
  57. kCreateData.m_dwGuildID=0;
  58. kCreateData.m_dwEmpireID=0;
  59. kCreateData.m_dwVID=iVirtualID;
  60. kCreateData.m_dwMountVnum=0;
  61. kCreateData.m_dwRace=0;
  62. kCreateData.m_fRot=CInstanceBase::DIR_NORTH;
  63. kCreateData.m_lPosX=0;
  64. kCreateData.m_lPosY=0;
  65. kCreateData.m_stName="NONAME";
  66. kCreateData.m_dwStateFlags=0;
  67. kCreateData.m_dwMovSpd=100;
  68. kCreateData.m_dwAtkSpd=100;
  69. kCreateData.m_sAlignment=0;
  70. kCreateData.m_byPKMode=0;
  71. kCreateData.m_kAffectFlags.Clear();
  72. kCreateData.m_dwArmor=8;
  73. kCreateData.m_dwWeapon=0;
  74. kCreateData.m_dwHair=0;
  75. kCreateData.m_isMain=false;
  76. PyObject* poHorse=PyDict_GetItemString(poDict, "horse");
  77. if (poHorse)
  78. kCreateData.m_dwMountVnum=PyLong_AsLong(poHorse);
  79. PyObject* poX=PyDict_GetItemString(poDict, "x");
  80. if (poX)
  81. kCreateData.m_lPosX=PyLong_AsLong(poX);
  82. PyObject* poY=PyDict_GetItemString(poDict, "y");
  83. if (poY)
  84. kCreateData.m_lPosX=PyLong_AsLong(poY);
  85. CPythonCharacterManager::Instance().CreateInstance(kCreateData);
  86. }
  87. else
  88. {
  89. CPythonCharacterManager::Instance().RegisterInstance(iVirtualID);
  90. }
  91. return Py_BuildNone();
  92. }
  93. PyObject * chrDeleteInstance(PyObject* poSelf, PyObject* poArgs)
  94. {
  95. int iVirtualID;
  96. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  97. return Py_BuildException();
  98. CPythonCharacterManager::Instance().DeleteInstance(iVirtualID);
  99. return Py_BuildNone();
  100. }
  101. PyObject * chrDeleteInstanceByFade(PyObject* poSelf, PyObject* poArgs)
  102. {
  103. int iVirtualID;
  104. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  105. return Py_BuildException();
  106. CPythonCharacterManager::Instance().DeleteInstanceByFade(iVirtualID);
  107. return Py_BuildNone();
  108. }
  109. PyObject * chrSelectInstance(PyObject* poSelf, PyObject* poArgs)
  110. {
  111. int iVirtualID;
  112. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  113. return Py_BuildException();
  114. CPythonCharacterManager::Instance().SelectInstance(iVirtualID);
  115. return Py_BuildNone();
  116. }
  117. PyObject * chrHasInstance(PyObject* poSelf, PyObject* poArgs)
  118. {
  119. int iVirtualID;
  120. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  121. return Py_BuildException();
  122. bool bFlag = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID) ? TRUE : FALSE;
  123. return Py_BuildValue("i", bFlag);
  124. }
  125. PyObject * chrIsEnemy(PyObject* poSelf, PyObject* poArgs)
  126. {
  127. int iVirtualID;
  128. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  129. return Py_BuildException();
  130. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  131. if (!pInstance)
  132. return Py_BuildValue("i", 0);
  133. return Py_BuildValue("i", pInstance->IsEnemy());
  134. }
  135. PyObject * chrIsNPC(PyObject* poSelf, PyObject* poArgs)
  136. {
  137. int iVirtualID;
  138. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  139. return Py_BuildException();
  140. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  141. if (!pInstance)
  142. return Py_BuildValue("i", 0);
  143. return Py_BuildValue("i", pInstance->IsNPC());
  144. }
  145. PyObject * chrIsGameMaster(PyObject* poSelf, PyObject* poArgs)
  146. {
  147. int iVirtualID;
  148. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  149. return Py_BuildException();
  150. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  151. if (!pInstance)
  152. return Py_BuildValue("i", 0);
  153. return Py_BuildValue("i", pInstance->IsGameMaster());
  154. }
  155. PyObject * chrIsPartyMember(PyObject* poSelf, PyObject* poArgs)
  156. {
  157. int iVirtualID;
  158. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  159. return Py_BuildException();
  160. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  161. if (!pInstance)
  162. return Py_BuildValue("i", 0);
  163. return Py_BuildValue("i", pInstance->IsPartyMember());
  164. }
  165. PyObject * chrSelect(PyObject* poSelf, PyObject* poArgs)
  166. {
  167. int iVirtualID;
  168. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  169. return Py_BuildException();
  170. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  171. if (!pkInst)
  172. return Py_BuildNone();
  173. switch (CPythonNonPlayer::Instance().GetEventType(pkInst->GetVirtualNumber()))
  174. {
  175. case CPythonNonPlayer::ON_CLICK_EVENT_SHOP:
  176. pkInst->SetAddRenderMode();
  177. pkInst->SetAddColor(D3DXCOLOR(0.0f, 0.3f, 0.0f, 1.0f));
  178. break;
  179. default:
  180. // NOTE: »¡°£»öÀ¸·Î ³ª¿À°Ô ÇÏ¸é ½º¼¦ ÂïÀ» ¶§ º¸±â°¡ ¾ÈÁÁ¾Æ¼­ ÄÚ¸àÆ® ÇÏ¿´½À´Ï´Ù [cronan 040226]
  181. //pkInst->SetAddColor(D3DXCOLOR(0.3f, 0.0f, 0.0f, 1.0f));
  182. break;
  183. }
  184. return Py_BuildNone();
  185. }
  186. PyObject * chrSetAddRenderMode(PyObject* poSelf, PyObject* poArgs)
  187. {
  188. int iVirtualID;
  189. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  190. return Py_BuildException();
  191. float fr;
  192. if (!PyTuple_GetFloat(poArgs, 1, &fr))
  193. return Py_BuildException();
  194. float fg;
  195. if (!PyTuple_GetFloat(poArgs, 2, &fg))
  196. return Py_BuildException();
  197. float fb;
  198. if (!PyTuple_GetFloat(poArgs, 3, &fb))
  199. return Py_BuildException();
  200. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  201. if (!pkInst)
  202. return Py_BuildNone();
  203. pkInst->SetAddRenderMode();
  204. pkInst->SetAddColor(D3DXCOLOR(fr, fg, fb, 1.0f));
  205. return Py_BuildNone();
  206. }
  207. PyObject * chrSetBlendRenderMode(PyObject* poSelf, PyObject* poArgs)
  208. {
  209. int iVirtualID;
  210. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  211. return Py_BuildException();
  212. float fAlpha;
  213. if (!PyTuple_GetFloat(poArgs, 1, &fAlpha))
  214. return Py_BuildException();
  215. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  216. if (!pkInst)
  217. return Py_BuildNone();
  218. pkInst->SetAlpha(fAlpha);
  219. return Py_BuildNone();
  220. }
  221. PyObject * chrUnselect(PyObject* poSelf, PyObject* poArgs)
  222. {
  223. int iVirtualID;
  224. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  225. return Py_BuildException();
  226. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  227. if (!pkInst)
  228. return Py_BuildNone();
  229. pkInst->RestoreRenderMode();
  230. return Py_BuildNone();
  231. }
  232. PyObject * chrPick(PyObject* poSelf, PyObject* poArgs)
  233. {
  234. DWORD VirtualID = 0;
  235. if (CPythonCharacterManager::Instance().OLD_GetPickedInstanceVID(&VirtualID))
  236. return Py_BuildValue("i", VirtualID);
  237. else
  238. return Py_BuildValue("i", -1);
  239. }
  240. PyObject * chrHide(PyObject* poSelf, PyObject* poArgs)
  241. {
  242. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  243. if (!pkInst)
  244. return Py_BuildNone();
  245. pkInst->Hide();
  246. return Py_BuildNone();
  247. }
  248. PyObject * chrShow(PyObject* poSelf, PyObject* poArgs)
  249. {
  250. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  251. if (!pkInst)
  252. return Py_BuildNone();
  253. pkInst->Show();
  254. return Py_BuildNone();
  255. }
  256. PyObject * chrPickAll(PyObject* poSelf, PyObject* poArgs)
  257. {
  258. DWORD VirtualID = CPythonCharacterManager::Instance().PickAll();
  259. return Py_BuildValue("i", VirtualID);
  260. }
  261. PyObject * chrSetRace(PyObject* poSelf, PyObject* poArgs)
  262. {
  263. int iRace;
  264. if (!PyTuple_GetInteger(poArgs, 0, &iRace))
  265. return Py_BuildException();
  266. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  267. if (!pkInst)
  268. return Py_BuildNone();
  269. pkInst->SetRace(iRace);
  270. return Py_BuildNone();
  271. }
  272. PyObject * chrSetHair(PyObject* poSelf, PyObject* poArgs)
  273. {
  274. int iRace;
  275. if (!PyTuple_GetInteger(poArgs, 0, &iRace))
  276. return Py_BuildException();
  277. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  278. if (!pkInst)
  279. return Py_BuildNone();
  280. pkInst->SetHair(iRace);
  281. return Py_BuildNone();
  282. }
  283. PyObject * chrChangeHair(PyObject* poSelf, PyObject* poArgs)
  284. {
  285. int iHair;
  286. if (!PyTuple_GetInteger(poArgs, 0, &iHair))
  287. return Py_BuildException();
  288. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  289. if (!pkInst)
  290. return Py_BuildNone();
  291. pkInst->ChangeHair(iHair);
  292. return Py_BuildNone();
  293. }
  294. PyObject * chrSetArmor(PyObject* poSelf, PyObject* poArgs)
  295. {
  296. int iForm;
  297. if (!PyTuple_GetInteger(poArgs, 0, &iForm))
  298. return Py_BuildException();
  299. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  300. if (!pkInst)
  301. return Py_BuildNone();
  302. pkInst->SetArmor(iForm);
  303. pkInst->RegisterBoundingSphere();
  304. return Py_BuildNone();
  305. }
  306. PyObject * chrChangeShape(PyObject* poSelf, PyObject* poArgs)
  307. {
  308. int iForm;
  309. if (!PyTuple_GetInteger(poArgs, 0, &iForm))
  310. return Py_BuildException();
  311. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  312. if (!pkInst)
  313. return Py_BuildNone();
  314. pkInst->ChangeArmor(iForm);
  315. return Py_BuildNone();
  316. }
  317. PyObject * chrSetWeapon(PyObject* poSelf, PyObject* poArgs)
  318. {
  319. int iForm;
  320. if (!PyTuple_GetInteger(poArgs, 0, &iForm))
  321. return Py_BuildException();
  322. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  323. if (!pkInst)
  324. return Py_BuildNone();
  325. pkInst->SetWeapon(iForm);
  326. return Py_BuildNone();
  327. }
  328. PyObject * chrSetVirtualID(PyObject* poSelf, PyObject* poArgs)
  329. {
  330. int iVID;
  331. if (!PyTuple_GetInteger(poArgs, 0, &iVID))
  332. return Py_BuildException();
  333. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  334. if (!pkInst)
  335. return Py_BuildNone();
  336. pkInst->SetVirtualID(iVID);
  337. return Py_BuildNone();
  338. }
  339. PyObject * chrSetNameString(PyObject* poSelf, PyObject* poArgs)
  340. {
  341. char * c_szName;
  342. if (!PyTuple_GetString(poArgs, 0, &c_szName))
  343. return Py_BuildException();
  344. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  345. if (!pkInst)
  346. return Py_BuildNone();
  347. pkInst->SetNameString(c_szName, strlen(c_szName));
  348. return Py_BuildNone();
  349. }
  350. PyObject * chrSetInstanceType(PyObject* poSelf, PyObject* poArgs)
  351. {
  352. int iInstanceType;
  353. if (!PyTuple_GetInteger(poArgs, 0, &iInstanceType))
  354. return Py_BuildException();
  355. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  356. if (!pkInst)
  357. return Py_BuildNone();
  358. pkInst->SetInstanceType(iInstanceType);
  359. return Py_BuildNone();
  360. }
  361. PyObject * chrAttachEffectByName(PyObject* poSelf, PyObject* poArgs)
  362. {
  363. int iParentPartIndex;
  364. if (!PyTuple_GetInteger(poArgs, 0, &iParentPartIndex))
  365. return Py_BuildException();
  366. char * pszBoneName;
  367. if (!PyTuple_GetString(poArgs, 1, &pszBoneName))
  368. {
  369. pszBoneName = NULL;
  370. //return Py_BuildException();
  371. }
  372. char * pszEffectName;
  373. if (!PyTuple_GetString(poArgs, 2, &pszEffectName))
  374. return Py_BuildException();
  375. int iLife = CActorInstance::EFFECT_LIFE_INFINITE;
  376. if (PyTuple_Size(poArgs)==4)
  377. {
  378. if (!PyTuple_GetInteger(poArgs, 3, &iLife))
  379. return Py_BuildException();
  380. }
  381. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  382. if (!pkInst)
  383. return Py_BuildNone();
  384. //pkInst->AttachEffectByName(iParentPartIndex, pszBoneName, pszEffectName, iLife);
  385. return Py_BuildNone();
  386. }
  387. PyObject * chrAttachEffectByID(PyObject* poSelf, PyObject* poArgs)
  388. {
  389. int iParentPartIndex;
  390. if (!PyTuple_GetInteger(poArgs, 0, &iParentPartIndex))
  391. return Py_BuildException();
  392. char * pszBoneName;
  393. if (!PyTuple_GetString(poArgs, 1, &pszBoneName))
  394. {
  395. pszBoneName = NULL;
  396. }
  397. // return Py_BuildException();
  398. // FIXME : bug or error on getting unsigned value
  399. int iEffectID;
  400. if (!PyTuple_GetInteger(poArgs, 2, &iEffectID))
  401. return Py_BuildException();
  402. int iLife = CActorInstance::EFFECT_LIFE_INFINITE;
  403. if (PyTuple_Size(poArgs)==4)
  404. {
  405. if (!PyTuple_GetInteger(poArgs, 3, &iLife))
  406. return Py_BuildException();
  407. }
  408. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  409. if (!pkInst)
  410. return Py_BuildNone();
  411. //pkInst->AttachEffectByID(iParentPartIndex, pszBoneName, iEffectID, iLife);
  412. return Py_BuildNone();
  413. }
  414. PyObject * chrRefresh(PyObject* poSelf, PyObject* poArgs)
  415. {
  416. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  417. if (!pkInst)
  418. return Py_BuildNone();
  419. // Select È­¸é¿¡¼­´Â WAIT ¸ğ¼ÇÀÌ Áغñ µÇÁö ¾ÊÀº »óÅÂÀ̱⠶§¹®¿¡ ¹®Á¦°¡ »ı±ä´Ù.
  420. //pkInst->Refresh(CRaceMotionData::NAME_WAIT, true);
  421. return Py_BuildNone();
  422. }
  423. PyObject * chrMountHorse(PyObject* poSelf, PyObject* poArgs)
  424. {
  425. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  426. if (!pkInst)
  427. return Py_BuildNone();
  428. pkInst->MountHorse(20030);
  429. return Py_BuildNone();
  430. }
  431. PyObject * chrDismountHorse(PyObject* poSelf, PyObject* poArgs)
  432. {
  433. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  434. if (!pkInst)
  435. return Py_BuildNone();
  436. pkInst->DismountHorse();
  437. return Py_BuildNone();
  438. }
  439. PyObject * chrRevive(PyObject* poSelf, PyObject* poArgs)
  440. {
  441. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  442. if (!pkInst)
  443. return Py_BuildNone();
  444. pkInst->Revive();
  445. return Py_BuildNone();
  446. }
  447. PyObject * chrDie(PyObject* poSelf, PyObject* poArgs)
  448. {
  449. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  450. if (!pkInst)
  451. return Py_BuildNone();
  452. pkInst->Die();
  453. return Py_BuildNone();
  454. }
  455. PyObject * chrLookAt(PyObject* poSelf, PyObject* poArgs)
  456. {
  457. int iCellX;
  458. if (!PyTuple_GetInteger(poArgs, 0, &iCellX))
  459. return Py_BuildException();
  460. int iCellY;
  461. if (!PyTuple_GetInteger(poArgs, 1, &iCellY))
  462. return Py_BuildException();
  463. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  464. if (!pkInst)
  465. return Py_BuildNone();
  466. // pkInst->LookAt(TPixelPosition(iCellX * c_Section_xAttributeCellSize, iCellY * c_Section_xAttributeCellSize));
  467. return Py_BuildNone();
  468. }
  469. PyObject * chrSetMotionMode(PyObject* poSelf, PyObject* poArgs)
  470. {
  471. int iMotionMode;
  472. if (!PyTuple_GetInteger(poArgs, 0, &iMotionMode))
  473. return Py_BuildException();
  474. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  475. if (!pkInst)
  476. return Py_BuildNone();
  477. pkInst->SetMotionMode(iMotionMode);
  478. return Py_BuildNone();
  479. }
  480. PyObject * chrSetLoopMotion(PyObject* poSelf, PyObject* poArgs)
  481. {
  482. int iMotionIndex;
  483. if (!PyTuple_GetInteger(poArgs, 0, &iMotionIndex))
  484. return Py_BuildException();
  485. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  486. if (!pkInst)
  487. return Py_BuildNone();
  488. pkInst->SetLoopMotion(WORD(iMotionIndex));
  489. return Py_BuildNone();
  490. }
  491. PyObject * chrBlendLoopMotion(PyObject* poSelf, PyObject* poArgs)
  492. {
  493. int iMotionIndex;
  494. if (!PyTuple_GetInteger(poArgs, 0, &iMotionIndex))
  495. return Py_BuildException();
  496. float fBlendTime;
  497. if (!PyTuple_GetFloat(poArgs, 1, &fBlendTime))
  498. return Py_BuildException();
  499. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  500. if (!pkInst)
  501. return Py_BuildNone();
  502. pkInst->SetLoopMotion(WORD(iMotionIndex), fBlendTime);
  503. return Py_BuildNone();
  504. }
  505. PyObject * chrPushOnceMotion(PyObject* poSelf, PyObject* poArgs)
  506. {
  507. int iMotionIndex;
  508. if (!PyTuple_GetInteger(poArgs, 0, &iMotionIndex))
  509. return Py_BuildException();
  510. float fBlendTime;
  511. if (!PyTuple_GetFloat(poArgs, 1, &fBlendTime))
  512. {
  513. fBlendTime = 0.1f;
  514. }
  515. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  516. if (!pkInst)
  517. return Py_BuildNone();
  518. pkInst->PushOnceMotion(WORD(iMotionIndex), fBlendTime);
  519. return Py_BuildNone();
  520. }
  521. PyObject * chrPushLoopMotion(PyObject* poSelf, PyObject* poArgs)
  522. {
  523. int iMotionIndex;
  524. if (!PyTuple_GetInteger(poArgs, 0, &iMotionIndex))
  525. return Py_BuildException();
  526. float fBlendTime;
  527. if (!PyTuple_GetFloat(poArgs, 1, &fBlendTime))
  528. {
  529. fBlendTime = 0.1f;
  530. }
  531. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  532. if (!pkInst)
  533. return Py_BuildNone();
  534. pkInst->PushLoopMotion(WORD(iMotionIndex), fBlendTime);
  535. return Py_BuildNone();
  536. }
  537. PyObject * chrSetPixelPosition(PyObject* poSelf, PyObject* poArgs)
  538. {
  539. int iX;
  540. if (!PyTuple_GetInteger(poArgs, 0, &iX))
  541. return Py_BuildException();
  542. int iY;
  543. if (!PyTuple_GetInteger(poArgs, 1, &iY))
  544. return Py_BuildException();
  545. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  546. if (!pkInst)
  547. return Py_BuildNone();
  548. int iZ;
  549. if (PyTuple_GetInteger(poArgs, 2, &iZ))
  550. {
  551. pkInst->NEW_SetPixelPosition(TPixelPosition(iX, iY, iZ));
  552. }
  553. else
  554. {
  555. pkInst->SCRIPT_SetPixelPosition(iX, iY);
  556. }
  557. return Py_BuildNone();
  558. }
  559. PyObject * chrSetDirection(PyObject* poSelf, PyObject* poArgs)
  560. {
  561. int iDirection;
  562. if (!PyTuple_GetInteger(poArgs, 0, &iDirection))
  563. return Py_BuildException();
  564. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  565. pkInst->SetDirection(iDirection);
  566. return Py_BuildNone();
  567. }
  568. PyObject * chrGetPixelPosition(PyObject* poSelf, PyObject* poArgs)
  569. {
  570. int iVirtualID;
  571. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  572. return Py_BuildException();
  573. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  574. if (!pkInst)
  575. return Py_BuildException();
  576. TPixelPosition PixelPosition;
  577. pkInst->NEW_GetPixelPosition(&PixelPosition);
  578. return Py_BuildValue("fff", PixelPosition.x, PixelPosition.y, PixelPosition.z);
  579. }
  580. PyObject * chrSetRotation(PyObject* poSelf, PyObject* poArgs)
  581. {
  582. float fRotation;
  583. if (!PyTuple_GetFloat(poArgs, 0, &fRotation))
  584. return Py_BuildException();
  585. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  586. if (!pCharacterInstance)
  587. return Py_BuildNone();
  588. fRotation = fmod(fRotation + 180.0f, 360.0f);
  589. pCharacterInstance->SetRotation(fRotation);
  590. return Py_BuildNone();
  591. }
  592. PyObject * chrSetRotationAll(PyObject* poSelf, PyObject* poArgs)
  593. {
  594. float fRotX;
  595. if (!PyTuple_GetFloat(poArgs, 0, &fRotX))
  596. return Py_BuildException();
  597. float fRotY;
  598. if (!PyTuple_GetFloat(poArgs, 1, &fRotY))
  599. return Py_BuildException();
  600. float fRotZ;
  601. if (!PyTuple_GetFloat(poArgs, 2, &fRotZ))
  602. return Py_BuildException();
  603. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  604. if (!pCharacterInstance)
  605. return Py_BuildNone();
  606. pCharacterInstance->GetGraphicThingInstanceRef().SetXYRotation(fRotX, fRotY);
  607. pCharacterInstance->GetGraphicThingInstanceRef().SetRotation(fRotZ);
  608. return Py_BuildNone();
  609. }
  610. PyObject * chrBlendRotation(PyObject* poSelf, PyObject* poArgs)
  611. {
  612. float fRotation;
  613. if (!PyTuple_GetFloat(poArgs, 0, &fRotation))
  614. return Py_BuildException();
  615. float fBlendTime;
  616. if (!PyTuple_GetFloat(poArgs, 1, &fBlendTime))
  617. return Py_BuildException();
  618. fRotation = fmod(720.0f - fRotation, 360.0f);
  619. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  620. if (!pCharacterInstance)
  621. return Py_BuildNone();
  622. pCharacterInstance->BlendRotation(fRotation, fBlendTime);
  623. return Py_BuildNone();
  624. }
  625. PyObject * chrGetRotation(PyObject* poSelf, PyObject* poArgs)
  626. {
  627. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  628. if (!pCharacterInstance)
  629. return Py_BuildValue("f", 0.0f);
  630. float fRotation = pCharacterInstance->GetRotation();
  631. return Py_BuildValue("f", 360.0f - fRotation);
  632. }
  633. PyObject * chrGetRace(PyObject* poSelf, PyObject* poArgs)
  634. {
  635. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  636. if (!pCharacterInstance)
  637. return Py_BuildValue("i", 0);
  638. return Py_BuildValue("i", pCharacterInstance->GetRace());
  639. }
  640. PyObject * chrGetName(PyObject* poSelf, PyObject* poArgs)
  641. {
  642. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  643. if (!pCharacterInstance)
  644. return Py_BuildValue("i", 0);
  645. return Py_BuildValue("s", pCharacterInstance->GetNameString());
  646. }
  647. PyObject * chrGetNameByVID(PyObject* poSelf, PyObject* poArgs)
  648. {
  649. int iVirtualID;
  650. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  651. return Py_BuildException();
  652. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  653. if (!pInstance)
  654. return Py_BuildValue("s", "None");
  655. return Py_BuildValue("s", pInstance->GetNameString());
  656. }
  657. PyObject * chrGetGuildID(PyObject* poSelf, PyObject* poArgs)
  658. {
  659. int iVirtualID;
  660. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  661. return Py_BuildException();
  662. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  663. if (!pInstance)
  664. return Py_BuildValue("i", 0);
  665. return Py_BuildValue("i", pInstance->GetGuildID());
  666. }
  667. PyObject * chrGetProjectPosition(PyObject* poSelf, PyObject* poArgs)
  668. {
  669. int iVirtualID;
  670. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  671. return Py_BuildException();
  672. int iHeight;
  673. if (!PyTuple_GetInteger(poArgs, 1, &iHeight))
  674. return Py_BuildException();
  675. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  676. if (!pInstance)
  677. return Py_BuildValue("ii", -100, -100);
  678. TPixelPosition PixelPosition;
  679. pInstance->NEW_GetPixelPosition(&PixelPosition);
  680. CPythonGraphic & rpyGraphic = CPythonGraphic::Instance();
  681. float fx, fy, fz;
  682. rpyGraphic.ProjectPosition(PixelPosition.x,
  683. -PixelPosition.y,
  684. PixelPosition.z + float(iHeight),
  685. &fx, &fy, &fz);
  686. if (1 == int(fz))
  687. return Py_BuildValue("ii", -100, -100);
  688. return Py_BuildValue("ii", int(fx), int(fy));
  689. }
  690. PyObject * chrGetVirtualNumber(PyObject* poSelf, PyObject* poArgs)
  691. {
  692. int iVirtualID;
  693. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  694. return Py_BuildException();
  695. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  696. if (NULL != pkInst)
  697. return Py_BuildValue("i", pkInst->GetVirtualNumber());
  698. return Py_BuildValue("i", CActorInstance::TYPE_PC);
  699. }
  700. PyObject * chrGetInstanceType(PyObject* poSelf, PyObject* poArgs)
  701. {
  702. int iVirtualID;
  703. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  704. return Py_BuildException();
  705. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  706. if (NULL != pkInst)
  707. return Py_BuildValue("i", pkInst->GetInstanceType());
  708. return Py_BuildValue("i", CActorInstance::TYPE_PC);
  709. }
  710. PyObject * chrGetBoundBoxOnlyXY(PyObject* poSelf, PyObject* poArgs)
  711. {
  712. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  713. if (!pkInst)
  714. return Py_BuildValue("ffff", 0.0f, 0.0f, 0.0f, 0.0f);
  715. D3DXVECTOR3 v3Min, v3Max;
  716. pkInst->GetBoundBox(&v3Min, &v3Max);
  717. return Py_BuildValue("ffff", v3Min.x, v3Min.y, v3Max.x, v3Max.y);
  718. }
  719. PyObject * chrtestGetPKData(PyObject* poSelf, PyObject* poArgs)
  720. {
  721. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  722. if (!pkInst)
  723. return Py_BuildValue("ii", 0, 4);
  724. return Py_BuildValue("ii", pkInst->GetAlignment(), pkInst->GetAlignmentGrade());
  725. }
  726. PyObject * chrtestSetComboType(PyObject* poSelf, PyObject* poArgs)
  727. {
  728. int iComboType;
  729. if (!PyTuple_GetInteger(poArgs, 0, &iComboType))
  730. return Py_BuildException();
  731. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  732. if (!pkInst)
  733. return Py_BuildNone();
  734. pkInst->GetGraphicThingInstanceRef().SetComboType(iComboType);
  735. return Py_BuildNone();
  736. }
  737. PyObject * chrtestSetAddRenderMode(PyObject* poSelf, PyObject* poArgs)
  738. {
  739. int iVirtualID;
  740. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  741. return Py_BuildException();
  742. int iColor;
  743. if (!PyTuple_GetInteger(poArgs, 1, &iColor))
  744. return Py_BuildException();
  745. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  746. if (pkInst)
  747. {
  748. pkInst->SetAddRenderMode();
  749. pkInst->SetAddColor(0xff000000 | iColor);
  750. }
  751. return Py_BuildNone();
  752. }
  753. PyObject * chrtestSetModulateRenderMode(PyObject* poSelf, PyObject* poArgs)
  754. {
  755. int iVirtualID;
  756. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  757. return Py_BuildException();
  758. int iColor;
  759. if (!PyTuple_GetInteger(poArgs, 1, &iColor))
  760. return Py_BuildException();
  761. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  762. if (pkInst)
  763. {
  764. pkInst->SetModulateRenderMode();
  765. pkInst->SetAddColor(0xff000000 | iColor);
  766. }
  767. return Py_BuildNone();
  768. }
  769. PyObject * chrtestSetAddRenderModeRGB(PyObject* poSelf, PyObject* poArgs)
  770. {
  771. int iVirtualID;
  772. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  773. return Py_BuildException();
  774. float fr;
  775. if (!PyTuple_GetFloat(poArgs, 1, &fr))
  776. return Py_BuildException();
  777. float fg;
  778. if (!PyTuple_GetFloat(poArgs, 2, &fg))
  779. return Py_BuildException();
  780. float fb;
  781. if (!PyTuple_GetFloat(poArgs, 3, &fb))
  782. return Py_BuildException();
  783. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  784. if (pkInst)
  785. {
  786. pkInst->SetAddRenderMode();
  787. pkInst->SetAddColor(D3DXCOLOR(fr, fg, fb, 1.0f));
  788. }
  789. return Py_BuildNone();
  790. }
  791. PyObject * chrtestSetModulateRenderModeRGB(PyObject* poSelf, PyObject* poArgs)
  792. {
  793. int iVirtualID;
  794. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  795. return Py_BuildException();
  796. float fr;
  797. if (!PyTuple_GetFloat(poArgs, 1, &fr))
  798. return Py_BuildException();
  799. float fg;
  800. if (!PyTuple_GetFloat(poArgs, 2, &fg))
  801. return Py_BuildException();
  802. float fb;
  803. if (!PyTuple_GetFloat(poArgs, 3, &fb))
  804. return Py_BuildException();
  805. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  806. if (pkInst)
  807. {
  808. pkInst->SetModulateRenderMode();
  809. pkInst->SetAddColor(D3DXCOLOR(fr, fg, fb, 1.0f));
  810. }
  811. return Py_BuildNone();
  812. }
  813. PyObject * chrtestSetSpecularRenderMode(PyObject* poSelf, PyObject* poArgs)
  814. {
  815. int iVirtualID;
  816. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  817. return Py_BuildException();
  818. int iPart;
  819. if (!PyTuple_GetInteger(poArgs, 1, &iPart))
  820. return Py_BuildException();
  821. float fAlpha;
  822. if (!PyTuple_GetFloat(poArgs, 2, &fAlpha))
  823. return Py_BuildException();
  824. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  825. if (pkInst)
  826. {
  827. pkInst->GetGraphicThingInstanceRef().SetSpecularInfo(TRUE, iPart, fAlpha);
  828. }
  829. return Py_BuildNone();
  830. }
  831. PyObject * chrtestSetSpecularRenderMode2(PyObject* poSelf, PyObject* poArgs)
  832. {
  833. int iVirtualID;
  834. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  835. return Py_BuildException();
  836. int iPart;
  837. if (!PyTuple_GetInteger(poArgs, 1, &iPart))
  838. return Py_BuildException();
  839. float fAlpha;
  840. if (!PyTuple_GetFloat(poArgs, 2, &fAlpha))
  841. return Py_BuildException();
  842. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  843. if (pkInst)
  844. {
  845. pkInst->GetGraphicThingInstanceRef().SetSpecularInfoForce(TRUE, iPart, fAlpha);
  846. }
  847. return Py_BuildNone();
  848. }
  849. PyObject * chrtestRestoreRenderMode(PyObject* poSelf, PyObject* poArgs)
  850. {
  851. int iVirtualID;
  852. if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
  853. return Py_BuildException();
  854. CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);
  855. if (pkInst)
  856. {
  857. pkInst->RestoreRenderMode();
  858. }
  859. return Py_BuildNone();
  860. }
  861. PyObject * chrFaintTest(PyObject* poSelf, PyObject* poArgs)
  862. {
  863. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  864. if (pCharacterInstance)
  865. {
  866. if (pCharacterInstance->GetGraphicThingInstanceRef().IsFaint())
  867. {
  868. pCharacterInstance->GetGraphicThingInstanceRef().SetFaint(false);
  869. }
  870. else
  871. {
  872. pCharacterInstance->GetGraphicThingInstanceRef().InterceptOnceMotion(CRaceMotionData::NAME_DAMAGE_FLYING);
  873. pCharacterInstance->GetGraphicThingInstanceRef().PushOnceMotion(CRaceMotionData::NAME_STAND_UP);
  874. pCharacterInstance->GetGraphicThingInstanceRef().PushLoopMotion(CRaceMotionData::NAME_WAIT);
  875. pCharacterInstance->GetGraphicThingInstanceRef().SetFaint(true);
  876. }
  877. }
  878. return Py_BuildNone();
  879. }
  880. PyObject * chrSetMoveSpeed(PyObject* poSelf, PyObject* poArgs)
  881. {
  882. //int iSpeed;
  883. //if (!PyTuple_GetInteger(poArgs, 0, &iSpeed))
  884. // return Py_BadArgument();
  885. //CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  886. //if (!pCharacterInstance)
  887. // return Py_BuildValue("i", 0);
  888. //pCharacterInstance->SetMoveSpeed(iSpeed);
  889. return Py_BuildNone();
  890. }
  891. PyObject * chrSetAttackSpeed(PyObject* poSelf, PyObject* poArgs)
  892. {
  893. //int iSpeed;
  894. //if (!PyTuple_GetInteger(poArgs, 0, &iSpeed))
  895. // return Py_BadArgument();
  896. //CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
  897. //if (!pCharacterInstance)
  898. // return Py_BuildValue("i", 0);
  899. //pCharacterInstance->SetAttackSpeed(iSpeed);
  900. return Py_BuildNone();
  901. }
  902. PyObject * chrWeaponTraceSetTexture(PyObject* poSelf, PyObject* poArgs)
  903. {
  904. char * szPathName;
  905. if (!PyTuple_GetString(poArgs, 0, &szPathName))
  906. return Py_BadArgument();
  907. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetMainInstancePtr();
  908. if (pInstance)
  909. {
  910. pInstance->GetGraphicThingInstanceRef().SetWeaponTraceTexture(szPathName);
  911. }
  912. return Py_BuildNone();
  913. }
  914. PyObject * chrWeaponTraceUseTexture(PyObject* poSelf, PyObject* poArgs)
  915. {
  916. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetMainInstancePtr();
  917. if (pInstance)
  918. {
  919. pInstance->GetGraphicThingInstanceRef().UseTextureWeaponTrace();
  920. }
  921. return Py_BuildNone();
  922. }
  923. PyObject * chrWeaponTraceUseAlpha(PyObject* poSelf, PyObject* poArgs)
  924. {
  925. CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetMainInstancePtr();
  926. if (pInstance)
  927. {
  928. pInstance->GetGraphicThingInstanceRef().UseAlphaWeaponTrace();
  929. }
  930. return Py_BuildNone();
  931. }
  932. PyObject * chrMoveToDestPosition(PyObject* poSelf, PyObject* poArgs)
  933. {
  934. int iVID;
  935. if (!PyTuple_GetInteger(poArgs, 0, &iVID))
  936. return Py_BadArgument();
  937. int ix;
  938. if (!PyTuple_GetInteger(poArgs, 1, &ix))
  939. return Py_BadArgument();
  940. int iy;
  941. if (!PyTuple_GetInteger(poArgs, 2, &iy))
  942. return Py_BadArgument();
  943. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVID);
  944. if (!pCharacterInstance)
  945. return Py_BuildNone();
  946. pCharacterInstance->NEW_MoveToDestPixelPositionDirection(TPixelPosition(ix, iy, 0.0f));
  947. return Py_BuildNone();
  948. }
  949. PyObject * chrtestSetRideMan(PyObject* poSelf, PyObject* poArgs)
  950. {
  951. int ix;
  952. if (!PyTuple_GetInteger(poArgs, 0, &ix))
  953. return Py_BadArgument();
  954. int iy;
  955. if (!PyTuple_GetInteger(poArgs, 1, &iy))
  956. return Py_BadArgument();
  957. int imount = 20030;
  958. PyTuple_GetInteger(poArgs, 2, &imount);
  959. CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().RegisterInstance(1);
  960. CInstanceBase::SCreateData kCreateData;
  961. ZeroMemory(&kCreateData, sizeof(kCreateData));
  962. kCreateData.m_bType = CActorInstance::TYPE_PC;
  963. kCreateData.m_dwRace = 0;
  964. kCreateData.m_dwArmor = 0;
  965. kCreateData.m_dwHair = 100;
  966. kCreateData.m_dwMovSpd = 100;
  967. kCreateData.m_dwAtkSpd = 100;
  968. kCreateData.m_dwMountVnum = imount;
  969. kCreateData.m_lPosX = ix;
  970. kCreateData.m_lPosY = iy;
  971. pCharacterInstance->Create(kCreateData);
  972. return Py_BuildNone();
  973. }
  974. void initchr()
  975. {
  976. static PyMethodDef s_methods[] =
  977. {
  978. { "DismountHorse", chrDismountHorse, METH_VARARGS },
  979. { "MountHorse", chrMountHorse, METH_VARARGS },
  980. { "Destroy", chrDestroy, METH_VARARGS },
  981. { "Update", chrUpdate, METH_VARARGS },
  982. { "Deform", chrDeform, METH_VARARGS },
  983. { "Render", chrRender, METH_VARARGS },
  984. { "RenderCollision", chrRenderCollision, METH_VARARGS },
  985. // Functions For Python Code
  986. { "CreateInstance", chrCreateInstance, METH_VARARGS },
  987. { "DeleteInstance", chrDeleteInstance, METH_VARARGS },
  988. { "DeleteInstanceByFade", chrDeleteInstanceByFade, METH_VARARGS },
  989. { "SelectInstance", chrSelectInstance, METH_VARARGS },
  990. { "HasInstance", chrHasInstance, METH_VARARGS },
  991. { "IsEnemy", chrIsEnemy, METH_VARARGS },
  992. { "IsNPC", chrIsNPC, METH_VARARGS },
  993. { "IsGameMaster", chrIsGameMaster, METH_VARARGS },
  994. { "IsPartyMember", chrIsPartyMember, METH_VARARGS },
  995. { "Select", chrSelect, METH_VARARGS },
  996. { "SetAddRenderMode", chrSetAddRenderMode, METH_VARARGS },
  997. { "SetBlendRenderMode", chrSetBlendRenderMode, METH_VARARGS },
  998. { "Unselect", chrUnselect, METH_VARARGS },
  999. { "Hide", chrHide, METH_VARARGS },
  1000. { "Show", chrShow, METH_VARARGS },
  1001. { "Pick", chrPick, METH_VARARGS },
  1002. { "PickAll", chrPickAll, METH_VARARGS },
  1003. { "SetArmor", chrSetArmor, METH_VARARGS },
  1004. { "SetWeapon", chrSetWeapon, METH_VARARGS },
  1005. { "ChangeShape", chrChangeShape, METH_VARARGS },
  1006. { "SetRace", chrSetRace, METH_VARARGS },
  1007. { "SetHair", chrSetHair, METH_VARARGS },
  1008. { "ChangeHair", chrChangeHair, METH_VARARGS },
  1009. { "SetVirtualID", chrSetVirtualID, METH_VARARGS },
  1010. { "SetNameString", chrSetNameString, METH_VARARGS },
  1011. { "SetInstanceType", chrSetInstanceType, METH_VARARGS },
  1012. { "SetPixelPosition", chrSetPixelPosition, METH_VARARGS },
  1013. { "SetDirection", chrSetDirection, METH_VARARGS },
  1014. { "Refresh", chrRefresh, METH_VARARGS },
  1015. { "Revive", chrRevive, METH_VARARGS },
  1016. { "Die", chrDie, METH_VARARGS },
  1017. { "AttachEffectByID", chrAttachEffectByID, METH_VARARGS },
  1018. { "AttachEffectByName", chrAttachEffectByName, METH_VARARGS },
  1019. { "LookAt", chrLookAt, METH_VARARGS },
  1020. { "SetMotionMode", chrSetMotionMode, METH_VARARGS },
  1021. { "SetLoopMotion", chrSetLoopMotion, METH_VARARGS },
  1022. { "BlendLoopMotion", chrBlendLoopMotion, METH_VARARGS },
  1023. { "PushOnceMotion", chrPushOnceMotion, METH_VARARGS },
  1024. { "PushLoopMotion", chrPushLoopMotion, METH_VARARGS },
  1025. { "GetPixelPosition", chrGetPixelPosition, METH_VARARGS },
  1026. { "SetRotation", chrSetRotation, METH_VARARGS },
  1027. { "SetRotationAll", chrSetRotationAll, METH_VARARGS },
  1028. { "BlendRotation", chrBlendRotation, METH_VARARGS },
  1029. { "GetRotation", chrGetRotation, METH_VARARGS },
  1030. { "GetRace", chrGetRace, METH_VARARGS },
  1031. { "GetName", chrGetName, METH_VARARGS },
  1032. { "GetNameByVID", chrGetNameByVID, METH_VARARGS },
  1033. { "GetGuildID", chrGetGuildID, METH_VARARGS },
  1034. { "GetProjectPosition", chrGetProjectPosition, METH_VARARGS },
  1035. { "GetVirtualNumber", chrGetVirtualNumber, METH_VARARGS },
  1036. { "GetInstanceType", chrGetInstanceType, METH_VARARGS },
  1037. { "GetBoundBoxOnlyXY", chrGetBoundBoxOnlyXY, METH_VARARGS },
  1038. { "RaceToJob", chrRaceToJob, METH_VARARGS },
  1039. { "RaceToSex", chrRaceToSex, METH_VARARGS },
  1040. // For Test
  1041. { "testGetPKData", chrtestGetPKData, METH_VARARGS },
  1042. { "FaintTest", chrFaintTest, METH_VARARGS },
  1043. { "SetMoveSpeed", chrSetMoveSpeed, METH_VARARGS },
  1044. { "SetAttackSpeed", chrSetAttackSpeed, METH_VARARGS },
  1045. { "WeaponTraceSetTexture", chrWeaponTraceSetTexture, METH_VARARGS },
  1046. { "WeaponTraceUseAlpha", chrWeaponTraceUseAlpha, METH_VARARGS },
  1047. { "WeaponTraceUseTexture", chrWeaponTraceUseTexture, METH_VARARGS },
  1048. { "MoveToDestPosition", chrMoveToDestPosition, METH_VARARGS },
  1049. { "testSetComboType", chrtestSetComboType, METH_VARARGS },
  1050. { "testSetAddRenderMode", chrtestSetAddRenderMode, METH_VARARGS },
  1051. { "testSetModulateRenderMode", chrtestSetModulateRenderMode, METH_VARARGS },
  1052. { "testSetAddRenderModeRGB", chrtestSetAddRenderModeRGB, METH_VARARGS },
  1053. { "testSetModulateRenderModeRGB", chrtestSetModulateRenderModeRGB, METH_VARARGS },
  1054. { "testSetSpecularRenderMode", chrtestSetSpecularRenderMode, METH_VARARGS },
  1055. { "testSetSpecularRenderMode2", chrtestSetSpecularRenderMode2, METH_VARARGS },
  1056. { "testRestoreRenderMode", chrtestRestoreRenderMode, METH_VARARGS },
  1057. { "testSetRideMan", chrtestSetRideMan, METH_VARARGS },
  1058. { NULL, NULL, NULL },
  1059. };
  1060. PyObject * poModule = Py_InitModule("chr", s_methods);
  1061. // Length
  1062. PyModule_AddIntConstant(poModule, "PLAYER_NAME_MAX_LEN", PLAYER_NAME_MAX_LEN);
  1063. // General
  1064. PyModule_AddIntConstant(poModule, "MOTION_NONE", CRaceMotionData::NAME_NONE);
  1065. PyModule_AddIntConstant(poModule, "MOTION_SPAWN", CRaceMotionData::NAME_SPAWN);
  1066. PyModule_AddIntConstant(poModule, "MOTION_WAIT", CRaceMotionData::NAME_WAIT);
  1067. PyModule_AddIntConstant(poModule, "MOTION_WALK", CRaceMotionData::NAME_WALK);
  1068. PyModule_AddIntConstant(poModule, "MOTION_RUN", CRaceMotionData::NAME_RUN);
  1069. PyModule_AddIntConstant(poModule, "MOTION_CHANGE_WEAPON", CRaceMotionData::NAME_CHANGE_WEAPON);
  1070. PyModule_AddIntConstant(poModule, "MOTION_DAMAGE", CRaceMotionData::NAME_DAMAGE);
  1071. PyModule_AddIntConstant(poModule, "MOTION_DAMAGE_FLYING", CRaceMotionData::NAME_DAMAGE_FLYING);
  1072. PyModule_AddIntConstant(poModule, "MOTION_STAND_UP", CRaceMotionData::NAME_STAND_UP);
  1073. PyModule_AddIntConstant(poModule, "MOTION_DAMAGE_BACK", CRaceMotionData::NAME_DAMAGE_BACK);
  1074. PyModule_AddIntConstant(poModule, "MOTION_DAMAGE_FLYING_BACK", CRaceMotionData::NAME_DAMAGE_FLYING_BACK);
  1075. PyModule_AddIntConstant(poModule, "MOTION_STAND_UP_BACK", CRaceMotionData::NAME_STAND_UP_BACK);
  1076. PyModule_AddIntConstant(poModule, "MOTION_DEAD", CRaceMotionData::NAME_DEAD);
  1077. PyModule_AddIntConstant(poModule, "MOTION_DEAD_BACK", CRaceMotionData::NAME_DEAD_BACK);
  1078. PyModule_AddIntConstant(poModule, "MOTION_NORMAL_ATTACK", CRaceMotionData::NAME_NORMAL_ATTACK);
  1079. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_1", CRaceMotionData::NAME_COMBO_ATTACK_1);
  1080. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_2", CRaceMotionData::NAME_COMBO_ATTACK_2);
  1081. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_3", CRaceMotionData::NAME_COMBO_ATTACK_3);
  1082. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_4", CRaceMotionData::NAME_COMBO_ATTACK_4);
  1083. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_5", CRaceMotionData::NAME_COMBO_ATTACK_5);
  1084. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_6", CRaceMotionData::NAME_COMBO_ATTACK_6);
  1085. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_7", CRaceMotionData::NAME_COMBO_ATTACK_7);
  1086. PyModule_AddIntConstant(poModule, "MOTION_COMBO_ATTACK_8", CRaceMotionData::NAME_COMBO_ATTACK_8);
  1087. PyModule_AddIntConstant(poModule, "MOTION_INTRO_WAIT", CRaceMotionData::NAME_INTRO_WAIT);
  1088. PyModule_AddIntConstant(poModule, "MOTION_INTRO_SELECTED", CRaceMotionData::NAME_INTRO_SELECTED);
  1089. PyModule_AddIntConstant(poModule, "MOTION_INTRO_NOT_SELECTED", CRaceMotionData::NAME_INTRO_NOT_SELECTED);
  1090. PyModule_AddIntConstant(poModule, "MOTION_FISHING_THROW", CRaceMotionData::NAME_FISHING_THROW);
  1091. PyModule_AddIntConstant(poModule, "MOTION_FISHING_WAIT", CRaceMotionData::NAME_FISHING_WAIT);
  1092. PyModule_AddIntConstant(poModule, "MOTION_FISHING_STOP", CRaceMotionData::NAME_FISHING_STOP);
  1093. PyModule_AddIntConstant(poModule, "MOTION_FISHING_REACT", CRaceMotionData::NAME_FISHING_REACT);
  1094. PyModule_AddIntConstant(poModule, "MOTION_FISHING_CATCH", CRaceMotionData::NAME_FISHING_CATCH);
  1095. PyModule_AddIntConstant(poModule, "MOTION_FISHING_FAIL", CRaceMotionData::NAME_FISHING_FAIL);
  1096. PyModule_AddIntConstant(poModule, "MOTION_STOP", CRaceMotionData::NAME_STOP);
  1097. PyModule_AddIntConstant(poModule, "MOTION_SKILL", CRaceMotionData::NAME_SKILL);
  1098. PyModule_AddIntConstant(poModule, "MOTION_CLAP", CRaceMotionData::NAME_CLAP);
  1099. PyModule_AddIntConstant(poModule, "MOTION_DANCE_1", CRaceMotionData::NAME_DANCE_1);
  1100. PyModule_AddIntConstant(poModule, "MOTION_DANCE_2", CRaceMotionData::NAME_DANCE_2);
  1101. PyModule_AddIntConstant(poModule, "MOTION_DANCE_3", CRaceMotionData::NAME_DANCE_3);
  1102. PyModule_AddIntConstant(poModule, "MOTION_DANCE_4", CRaceMotionData::NAME_DANCE_4);
  1103. PyModule_AddIntConstant(poModule, "MOTION_DANCE_5", CRaceMotionData::NAME_DANCE_5);
  1104. PyModule_AddIntConstant(poModule, "MOTION_DANCE_6", CRaceMotionData::NAME_DANCE_6);
  1105. PyModule_AddIntConstant(poModule, "MOTION_CONGRATULATION", CRaceMotionData::NAME_CONGRATULATION);
  1106. PyModule_AddIntConstant(poModule, "MOTION_FORGIVE", CRaceMotionData::NAME_FORGIVE);
  1107. PyModule_AddIntConstant(poModule, "MOTION_ANGRY", CRaceMotionData::NAME_ANGRY);
  1108. PyModule_AddIntConstant(poModule, "MOTION_ATTRACTIVE", CRaceMotionData::NAME_ATTRACTIVE);
  1109. PyModule_AddIntConstant(poModule, "MOTION_SAD", CRaceMotionData::NAME_SAD);
  1110. PyModule_AddIntConstant(poModule, "MOTION_SHY", CRaceMotionData::NAME_SHY);
  1111. PyModule_AddIntConstant(poModule, "MOTION_CHEERUP", CRaceMotionData::NAME_CHEERUP);
  1112. PyModule_AddIntConstant(poModule, "MOTION_BANTER", CRaceMotionData::NAME_BANTER);
  1113. PyModule_AddIntConstant(poModule, "MOTION_JOY", CRaceMotionData::NAME_JOY);
  1114. PyModule_AddIntConstant(poModule, "MOTION_CHEERS_1", CRaceMotionData::NAME_CHEERS_1);
  1115. PyModule_AddIntConstant(poModule, "MOTION_CHEERS_2", CRaceMotionData::NAME_CHEERS_2);
  1116. PyModule_AddIntConstant(poModule, "MOTION_KISS_WITH_WARRIOR", CRaceMotionData::NAME_KISS_WITH_WARRIOR);
  1117. PyModule_AddIntConstant(poModule, "MOTION_KISS_WITH_ASSASSIN", CRaceMotionData::NAME_KISS_WITH_ASSASSIN);
  1118. PyModule_AddIntConstant(poModule, "MOTION_KISS_WITH_SURA", CRaceMotionData::NAME_KISS_WITH_SURA);
  1119. PyModule_AddIntConstant(poModule, "MOTION_KISS_WITH_SHAMAN", CRaceMotionData::NAME_KISS_WITH_SHAMAN);
  1120. PyModule_AddIntConstant(poModule, "MOTION_FRENCH_KISS_WITH_WARRIOR", CRaceMotionData::NAME_FRENCH_KISS_WITH_WARRIOR);
  1121. PyModule_AddIntConstant(poModule, "MOTION_FRENCH_KISS_WITH_ASSASSIN", CRaceMotionData::NAME_FRENCH_KISS_WITH_ASSASSIN);
  1122. PyModule_AddIntConstant(poModule, "MOTION_FRENCH_KISS_WITH_SURA", CRaceMotionData::NAME_FRENCH_KISS_WITH_SURA);
  1123. PyModule_AddIntConstant(poModule, "MOTION_FRENCH_KISS_WITH_SHAMAN", CRaceMotionData::NAME_FRENCH_KISS_WITH_SHAMAN);
  1124. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HIT_WITH_WARRIOR", CRaceMotionData::NAME_SLAP_HIT_WITH_WARRIOR);
  1125. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HIT_WITH_ASSASSIN", CRaceMotionData::NAME_SLAP_HIT_WITH_ASSASSIN);
  1126. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HIT_WITH_SURA", CRaceMotionData::NAME_SLAP_HIT_WITH_SURA);
  1127. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HIT_WITH_SHAMAN", CRaceMotionData::NAME_SLAP_HIT_WITH_SHAMAN);
  1128. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HURT_WITH_WARRIOR", CRaceMotionData::NAME_SLAP_HURT_WITH_WARRIOR);
  1129. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HURT_WITH_ASSASSIN", CRaceMotionData::NAME_SLAP_HURT_WITH_ASSASSIN);
  1130. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HURT_WITH_SURA", CRaceMotionData::NAME_SLAP_HURT_WITH_SURA);
  1131. PyModule_AddIntConstant(poModule, "MOTION_SLAP_HURT_WITH_SHAMAN", CRaceMotionData::NAME_SLAP_HURT_WITH_SHAMAN);
  1132. PyModule_AddIntConstant(poModule, "MOTION_DIG", CRaceMotionData::NAME_DIG);
  1133. PyModule_AddIntConstant(poModule, "MOTION_MODE_RESERVED", CRaceMotionData::MODE_RESERVED);
  1134. PyModule_AddIntConstant(poModule, "MOTION_MODE_GENERAL", CRaceMotionData::MODE_GENERAL);
  1135. PyModule_AddIntConstant(poModule, "MOTION_MODE_ONEHAND_SWORD", CRaceMotionData::MODE_ONEHAND_SWORD);
  1136. PyModule_AddIntConstant(poModule, "MOTION_MODE_TWOHAND_SWORD", CRaceMotionData::MODE_TWOHAND_SWORD);
  1137. PyModule_AddIntConstant(poModule, "MOTION_MODE_DUALHAND_SWORD", CRaceMotionData::MODE_DUALHAND_SWORD);
  1138. PyModule_AddIntConstant(poModule, "MOTION_MODE_BOW", CRaceMotionData::MODE_BOW);
  1139. PyModule_AddIntConstant(poModule, "MOTION_MODE_FAN", CRaceMotionData::MODE_FAN);
  1140. PyModule_AddIntConstant(poModule, "MOTION_MODE_BELL", CRaceMotionData::MODE_BELL);
  1141. PyModule_AddIntConstant(poModule, "MOTION_MODE_FISHING", CRaceMotionData::MODE_FISHING);
  1142. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE", CRaceMotionData::MODE_HORSE);
  1143. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE_ONEHAND_SWORD", CRaceMotionData::MODE_HORSE_ONEHAND_SWORD);
  1144. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE_TWOHAND_SWORD", CRaceMotionData::MODE_HORSE_TWOHAND_SWORD);
  1145. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE_DUALHAND_SWORD", CRaceMotionData::MODE_HORSE_DUALHAND_SWORD);
  1146. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE_BOW", CRaceMotionData::MODE_HORSE_BOW);
  1147. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE_FAN", CRaceMotionData::MODE_HORSE_FAN);
  1148. PyModule_AddIntConstant(poModule, "MOTION_MODE_HORSE_BELL", CRaceMotionData::MODE_HORSE_BELL);
  1149. PyModule_AddIntConstant(poModule, "MOTION_MODE_WEDDING_DRESS", CRaceMotionData::MODE_WEDDING_DRESS);
  1150. PyModule_AddIntConstant(poModule, "DIR_NORTH", CInstanceBase::DIR_NORTH);
  1151. PyModule_AddIntConstant(poModule, "DIR_NORTHEAST", CInstanceBase::DIR_NORTHEAST);
  1152. PyModule_AddIntConstant(poModule, "DIR_EAST", CInstanceBase::DIR_EAST);
  1153. PyModule_AddIntConstant(poModule, "DIR_SOUTHEAST", CInstanceBase::DIR_SOUTHEAST);
  1154. PyModule_AddIntConstant(poModule, "DIR_SOUTH", CInstanceBase::DIR_SOUTH);
  1155. PyModule_AddIntConstant(poModule, "DIR_SOUTHWEST", CInstanceBase::DIR_SOUTHWEST);
  1156. PyModule_AddIntConstant(poModule, "DIR_WEST", CInstanceBase::DIR_WEST);
  1157. PyModule_AddIntConstant(poModule, "DIR_NORTHWEST", CInstanceBase::DIR_NORTHWEST);
  1158. PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_PLAYER", CActorInstance::TYPE_PC);
  1159. PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_NPC", CActorInstance::TYPE_NPC);
  1160. PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_ENEMY", CActorInstance::TYPE_ENEMY);
  1161. PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_BUILDING", CActorInstance::TYPE_BUILDING);
  1162. PyModule_AddIntConstant(poModule, "INSTANCE_TYPE_OBJECT", CActorInstance::TYPE_OBJECT);
  1163. PyModule_AddIntConstant(poModule, "PART_WEAPON", CRaceData::PART_WEAPON);
  1164. PyModule_AddIntConstant(poModule, "PART_HEAD", CRaceData::PART_HEAD);
  1165. PyModule_AddIntConstant(poModule, "PART_WEAPON_LEFT", CRaceData::PART_WEAPON_LEFT);
  1166. /////
  1167. PyModule_AddIntConstant(poModule, "AFFECT_POISON", CInstanceBase::AFFECT_POISON);
  1168. PyModule_AddIntConstant(poModule, "AFFECT_SLOW", CInstanceBase::AFFECT_SLOW);
  1169. PyModule_AddIntConstant(poModule, "AFFECT_STUN", CInstanceBase::AFFECT_STUN);
  1170. PyModule_AddIntConstant(poModule, "AFFECT_MOV_SPEED_POTION", CInstanceBase::AFFECT_MOV_SPEED_POTION);
  1171. PyModule_AddIntConstant(poModule, "AFFECT_ATT_SPEED_POTION", CInstanceBase::AFFECT_ATT_SPEED_POTION);
  1172. PyModule_AddIntConstant(poModule, "AFFECT_FISH_MIND", CInstanceBase::AFFECT_FISH_MIND);
  1173. PyModule_AddIntConstant(poModule, "AFFECT_JEONGWI", CInstanceBase::AFFECT_JEONGWI);
  1174. PyModule_AddIntConstant(poModule, "AFFECT_GEOMGYEONG", CInstanceBase::AFFECT_GEOMGYEONG);
  1175. PyModule_AddIntConstant(poModule, "AFFECT_CHEONGEUN", CInstanceBase::AFFECT_CHEONGEUN);
  1176. PyModule_AddIntConstant(poModule, "AFFECT_GYEONGGONG", CInstanceBase::AFFECT_GYEONGGONG);
  1177. PyModule_AddIntConstant(poModule, "AFFECT_EUNHYEONG", CInstanceBase::AFFECT_EUNHYEONG);
  1178. PyModule_AddIntConstant(poModule, "AFFECT_GWIGEOM", CInstanceBase::AFFECT_GWIGEOM);
  1179. PyModule_AddIntConstant(poModule, "AFFECT_GONGPO", CInstanceBase::AFFECT_GONGPO);
  1180. PyModule_AddIntConstant(poModule, "AFFECT_JUMAGAP", CInstanceBase::AFFECT_JUMAGAP);
  1181. PyModule_AddIntConstant(poModule, "AFFECT_HOSIN", CInstanceBase::AFFECT_HOSIN);
  1182. PyModule_AddIntConstant(poModule, "AFFECT_BOHO", CInstanceBase::AFFECT_BOHO);
  1183. PyModule_AddIntConstant(poModule, "AFFECT_KWAESOK", CInstanceBase::AFFECT_KWAESOK);
  1184. PyModule_AddIntConstant(poModule, "AFFECT_HEUKSIN", CInstanceBase::AFFECT_HEUKSIN);
  1185. PyModule_AddIntConstant(poModule, "AFFECT_MUYEONG", CInstanceBase::AFFECT_MUYEONG);
  1186. PyModule_AddIntConstant(poModule, "AFFECT_GICHEON", CInstanceBase::AFFECT_GICHEON);
  1187. PyModule_AddIntConstant(poModule, "AFFECT_JEUNGRYEOK", CInstanceBase::AFFECT_JEUNGRYEOK);
  1188. PyModule_AddIntConstant(poModule, "AFFECT_PABEOP", CInstanceBase::AFFECT_PABEOP);
  1189. PyModule_AddIntConstant(poModule, "AFFECT_FALLEN_CHEONGEUN", CInstanceBase::AFFECT_FALLEN_CHEONGEUN);
  1190. PyModule_AddIntConstant(poModule, "AFFECT_CHINA_FIREWORK", CInstanceBase::AFFECT_CHINA_FIREWORK);
  1191. PyModule_AddIntConstant(poModule, "NEW_AFFECT_MALL", CInstanceBase::NEW_AFFECT_MALL);
  1192. #ifdef ITEM_BUFF_SYSTEM
  1193. PyModule_AddIntConstant(poModule, "AFFECT_RESIST_BUFF", CInstanceBase::AFFECT_RESIST_BUFF);
  1194. PyModule_AddIntConstant(poModule, "AFFECT_CRITICAL_BUFF", CInstanceBase::AFFECT_CRITICAL_BUFF);
  1195. PyModule_AddIntConstant(poModule, "AFFECT_REFLECT_BUFF", CInstanceBase::AFFECT_REFLECT_BUFF);
  1196. #endif
  1197. PyModule_AddIntConstant(poModule, "AFFECT_DRAGON_BONE_1", CInstanceBase::AFFECT_DRAGON_BONE_1);
  1198. PyModule_AddIntConstant(poModule, "AFFECT_DRAGON_BONE_2", CInstanceBase::AFFECT_DRAGON_BONE_2);
  1199. PyModule_AddIntConstant(poModule, "NEW_AFFECT_NO_DEATH_PENALTY", CInstanceBase::NEW_AFFECT_NO_DEATH_PENALTY);
  1200. PyModule_AddIntConstant(poModule, "NEW_AFFECT_SKILL_BOOK_BONUS", CInstanceBase::NEW_AFFECT_SKILL_BOOK_BONUS);
  1201. PyModule_AddIntConstant(poModule, "NEW_AFFECT_SKILL_BOOK_NO_DELAY", CInstanceBase::NEW_AFFECT_SKILL_BOOK_NO_DELAY);
  1202. PyModule_AddIntConstant(poModule, "NEW_AFFECT_EXP_BONUS", CInstanceBase::NEW_AFFECT_EXP_BONUS);
  1203. PyModule_AddIntConstant(poModule, "NEW_AFFECT_EXP_BONUS_EURO_FREE", CInstanceBase::NEW_AFFECT_EXP_BONUS_EURO_FREE);
  1204. PyModule_AddIntConstant(poModule, "NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15",CInstanceBase::NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15);
  1205. PyModule_AddIntConstant(poModule, "NEW_AFFECT_ITEM_BONUS", CInstanceBase::NEW_AFFECT_ITEM_BONUS);
  1206. PyModule_AddIntConstant(poModule, "NEW_AFFECT_SAFEBOX", CInstanceBase::NEW_AFFECT_SAFEBOX);
  1207. PyModule_AddIntConstant(poModule, "NEW_AFFECT_AUTOLOOT", CInstanceBase::NEW_AFFECT_AUTOLOOT);
  1208. PyModule_AddIntConstant(poModule, "NEW_AFFECT_FISH_MIND", CInstanceBase::NEW_AFFECT_FISH_MIND);
  1209. PyModule_AddIntConstant(poModule, "NEW_AFFECT_MARRIAGE_FAST", CInstanceBase::NEW_AFFECT_MARRIAGE_FAST);
  1210. PyModule_AddIntConstant(poModule, "NEW_AFFECT_GOLD_BONUS", CInstanceBase::NEW_AFFECT_GOLD_BONUS);
  1211. PyModule_AddIntConstant(poModule, "NEW_AFFECT_AUTO_HP_RECOVERY", CInstanceBase::NEW_AFFECT_AUTO_HP_RECOVERY);
  1212. PyModule_AddIntConstant(poModule, "NEW_AFFECT_AUTO_SP_RECOVERY", CInstanceBase::NEW_AFFECT_AUTO_SP_RECOVERY);
  1213. PyModule_AddIntConstant(poModule, "NEW_AFFECT_DRAGON_SOUL_QUALIFIED", CInstanceBase::NEW_AFFECT_DRAGON_SOUL_QUALIFIED);
  1214. PyModule_AddIntConstant(poModule, "NEW_AFFECT_DRAGON_SOUL_DECK1", CInstanceBase::NEW_AFFECT_DRAGON_SOUL_DECK1);
  1215. PyModule_AddIntConstant(poModule, "NEW_AFFECT_DRAGON_SOUL_DECK2", CInstanceBase::NEW_AFFECT_DRAGON_SOUL_DECK2);
  1216. #if defined ENABLE_DBONE_EFFECTS
  1217. PyModule_AddIntConstant(poModule, "AFFECT_DBONE1", CInstanceBase::AFFECT_DBONE1);
  1218. PyModule_AddIntConstant(poModule, "AFFECT_DBONE2", CInstanceBase::AFFECT_DBONE2);
  1219. #endif
  1220. }

PythonCharacterModule.cpp