rmxp_extractor 1.6 → 1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (535) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +74 -74
  3. data/Data/Actors.rxdata +0 -0
  4. data/Data/Animations.rxdata +0 -0
  5. data/Data/Armors.rxdata +0 -0
  6. data/Data/Classes.rxdata +0 -0
  7. data/Data/CommonEvents.rxdata +0 -0
  8. data/Data/Enemies.rxdata +0 -0
  9. data/Data/Items.rxdata +0 -0
  10. data/Data/Map-1.rxdata +0 -0
  11. data/Data/Map-327.rxdata +0 -0
  12. data/Data/Map001.rxdata +0 -0
  13. data/Data/Map002.rxdata +0 -0
  14. data/Data/Map003.rxdata +0 -0
  15. data/Data/Map004.rxdata +0 -0
  16. data/Data/Map005.rxdata +0 -0
  17. data/Data/Map006.rxdata +0 -0
  18. data/Data/Map007.rxdata +0 -0
  19. data/Data/Map008.rxdata +0 -0
  20. data/Data/Map009.rxdata +0 -0
  21. data/Data/Map010.rxdata +0 -0
  22. data/Data/Map011.rxdata +0 -0
  23. data/Data/Map012.rxdata +0 -0
  24. data/Data/Map013.rxdata +0 -0
  25. data/Data/Map014.rxdata +0 -0
  26. data/Data/Map015.rxdata +0 -0
  27. data/Data/Map016.rxdata +0 -0
  28. data/Data/Map017.rxdata +0 -0
  29. data/Data/Map018.rxdata +0 -0
  30. data/Data/Map019.rxdata +0 -0
  31. data/Data/Map020.rxdata +0 -0
  32. data/Data/Map021.rxdata +0 -0
  33. data/Data/Map022.rxdata +0 -0
  34. data/Data/Map023.rxdata +0 -0
  35. data/Data/Map024.rxdata +0 -0
  36. data/Data/Map025.rxdata +0 -0
  37. data/Data/Map026.rxdata +0 -0
  38. data/Data/Map027.rxdata +0 -0
  39. data/Data/Map028.rxdata +0 -0
  40. data/Data/Map029.rxdata +0 -0
  41. data/Data/Map030.rxdata +0 -0
  42. data/Data/Map031.rxdata +0 -0
  43. data/Data/Map032.rxdata +0 -0
  44. data/Data/Map033.rxdata +0 -0
  45. data/Data/Map034.rxdata +0 -0
  46. data/Data/Map035.rxdata +0 -0
  47. data/Data/Map036.rxdata +0 -0
  48. data/Data/Map037.rxdata +0 -0
  49. data/Data/Map038.rxdata +0 -0
  50. data/Data/Map039.rxdata +0 -0
  51. data/Data/Map040.rxdata +0 -0
  52. data/Data/Map041.rxdata +0 -0
  53. data/Data/Map042.rxdata +0 -0
  54. data/Data/Map043.rxdata +0 -0
  55. data/Data/Map044.rxdata +0 -0
  56. data/Data/Map045.rxdata +0 -0
  57. data/Data/Map046.rxdata +0 -0
  58. data/Data/Map047.rxdata +0 -0
  59. data/Data/Map048.rxdata +0 -0
  60. data/Data/Map049.rxdata +0 -0
  61. data/Data/Map050.rxdata +0 -0
  62. data/Data/Map051.rxdata +0 -0
  63. data/Data/Map052.rxdata +0 -0
  64. data/Data/Map053.rxdata +0 -0
  65. data/Data/Map054.rxdata +0 -0
  66. data/Data/Map055.rxdata +0 -0
  67. data/Data/Map056.rxdata +0 -0
  68. data/Data/Map057.rxdata +0 -0
  69. data/Data/Map058.rxdata +0 -0
  70. data/Data/Map059.rxdata +0 -0
  71. data/Data/Map060.rxdata +0 -0
  72. data/Data/Map061.rxdata +0 -0
  73. data/Data/Map062.rxdata +0 -0
  74. data/Data/Map063.rxdata +0 -0
  75. data/Data/Map064.rxdata +0 -0
  76. data/Data/Map065.rxdata +0 -0
  77. data/Data/Map066.rxdata +0 -0
  78. data/Data/Map067.rxdata +0 -0
  79. data/Data/Map068.rxdata +0 -0
  80. data/Data/Map069.rxdata +0 -0
  81. data/Data/Map070.rxdata +0 -0
  82. data/Data/Map071.rxdata +0 -0
  83. data/Data/Map072.rxdata +0 -0
  84. data/Data/Map073.rxdata +0 -0
  85. data/Data/Map074.rxdata +0 -0
  86. data/Data/Map075.rxdata +0 -0
  87. data/Data/Map076.rxdata +0 -0
  88. data/Data/Map077.rxdata +0 -0
  89. data/Data/Map078.rxdata +0 -0
  90. data/Data/Map079.rxdata +0 -0
  91. data/Data/Map080.rxdata +0 -0
  92. data/Data/Map081.rxdata +0 -0
  93. data/Data/Map082.rxdata +0 -0
  94. data/Data/Map083.rxdata +0 -0
  95. data/Data/Map084.rxdata +0 -0
  96. data/Data/Map085.rxdata +0 -0
  97. data/Data/Map086.rxdata +0 -0
  98. data/Data/Map087.rxdata +0 -0
  99. data/Data/Map088.rxdata +0 -0
  100. data/Data/Map089.rxdata +0 -0
  101. data/Data/Map090.rxdata +0 -0
  102. data/Data/Map091.rxdata +0 -0
  103. data/Data/Map092.rxdata +0 -0
  104. data/Data/Map093.rxdata +0 -0
  105. data/Data/Map094.rxdata +0 -0
  106. data/Data/Map095.rxdata +0 -0
  107. data/Data/Map096.rxdata +0 -0
  108. data/Data/Map097.rxdata +0 -0
  109. data/Data/Map098.rxdata +0 -0
  110. data/Data/Map099.rxdata +0 -0
  111. data/Data/Map100.rxdata +0 -0
  112. data/Data/Map101.rxdata +0 -0
  113. data/Data/Map102.rxdata +0 -0
  114. data/Data/Map103.rxdata +0 -0
  115. data/Data/Map104.rxdata +0 -0
  116. data/Data/Map105.rxdata +0 -0
  117. data/Data/Map106.rxdata +0 -0
  118. data/Data/Map107.rxdata +0 -0
  119. data/Data/Map108.rxdata +0 -0
  120. data/Data/Map109.rxdata +0 -0
  121. data/Data/Map110.rxdata +0 -0
  122. data/Data/Map111.rxdata +0 -0
  123. data/Data/Map112.rxdata +0 -0
  124. data/Data/Map113.rxdata +0 -0
  125. data/Data/Map114.rxdata +0 -0
  126. data/Data/Map115.rxdata +0 -0
  127. data/Data/Map116.rxdata +0 -0
  128. data/Data/Map117.rxdata +0 -0
  129. data/Data/Map118.rxdata +0 -0
  130. data/Data/Map119.rxdata +0 -0
  131. data/Data/Map120.rxdata +0 -0
  132. data/Data/Map121.rxdata +0 -0
  133. data/Data/Map122.rxdata +0 -0
  134. data/Data/Map123.rxdata +0 -0
  135. data/Data/Map124.rxdata +0 -0
  136. data/Data/Map125.rxdata +0 -0
  137. data/Data/Map126.rxdata +0 -0
  138. data/Data/Map127.rxdata +0 -0
  139. data/Data/Map128.rxdata +0 -0
  140. data/Data/Map129.rxdata +0 -0
  141. data/Data/Map130.rxdata +0 -0
  142. data/Data/Map131.rxdata +0 -0
  143. data/Data/Map132.rxdata +0 -0
  144. data/Data/Map133.rxdata +0 -0
  145. data/Data/Map134.rxdata +0 -0
  146. data/Data/Map135.rxdata +0 -0
  147. data/Data/Map136.rxdata +0 -0
  148. data/Data/Map137.rxdata +0 -0
  149. data/Data/Map138.rxdata +0 -0
  150. data/Data/Map139.rxdata +0 -0
  151. data/Data/Map140.rxdata +0 -0
  152. data/Data/Map141.rxdata +0 -0
  153. data/Data/Map142.rxdata +0 -0
  154. data/Data/Map143.rxdata +0 -0
  155. data/Data/Map144.rxdata +0 -0
  156. data/Data/Map145.rxdata +0 -0
  157. data/Data/Map146.rxdata +0 -0
  158. data/Data/Map147.rxdata +0 -0
  159. data/Data/Map148.rxdata +0 -0
  160. data/Data/Map149.rxdata +0 -0
  161. data/Data/Map150.rxdata +0 -0
  162. data/Data/Map151.rxdata +0 -0
  163. data/Data/Map152.rxdata +0 -0
  164. data/Data/Map153.rxdata +0 -0
  165. data/Data/Map154.rxdata +0 -0
  166. data/Data/Map155.rxdata +0 -0
  167. data/Data/Map156.rxdata +0 -0
  168. data/Data/Map157.rxdata +0 -0
  169. data/Data/Map158.rxdata +0 -0
  170. data/Data/Map159.rxdata +0 -0
  171. data/Data/Map160.rxdata +0 -0
  172. data/Data/Map161.rxdata +0 -0
  173. data/Data/Map162.rxdata +0 -0
  174. data/Data/Map163.rxdata +0 -0
  175. data/Data/Map164.rxdata +0 -0
  176. data/Data/Map165.rxdata +0 -0
  177. data/Data/Map166.rxdata +0 -0
  178. data/Data/Map167.rxdata +0 -0
  179. data/Data/Map168.rxdata +0 -0
  180. data/Data/Map169.rxdata +0 -0
  181. data/Data/Map170.rxdata +0 -0
  182. data/Data/Map171.rxdata +0 -0
  183. data/Data/Map172.rxdata +0 -0
  184. data/Data/Map173.rxdata +0 -0
  185. data/Data/Map174.rxdata +0 -0
  186. data/Data/Map175.rxdata +0 -0
  187. data/Data/Map176.rxdata +0 -0
  188. data/Data/Map177.rxdata +0 -0
  189. data/Data/Map178.rxdata +0 -0
  190. data/Data/Map179.rxdata +0 -0
  191. data/Data/Map180.rxdata +0 -0
  192. data/Data/Map181.rxdata +0 -0
  193. data/Data/Map182.rxdata +0 -0
  194. data/Data/Map183.rxdata +0 -0
  195. data/Data/Map184.rxdata +0 -0
  196. data/Data/Map185.rxdata +0 -0
  197. data/Data/Map186.rxdata +0 -0
  198. data/Data/Map187.rxdata +0 -0
  199. data/Data/Map188.rxdata +0 -0
  200. data/Data/Map189.rxdata +0 -0
  201. data/Data/Map190.rxdata +0 -0
  202. data/Data/Map191.rxdata +0 -0
  203. data/Data/Map192.rxdata +0 -0
  204. data/Data/Map193.rxdata +0 -0
  205. data/Data/Map194.rxdata +0 -0
  206. data/Data/Map195.rxdata +0 -0
  207. data/Data/Map196.rxdata +0 -0
  208. data/Data/Map197.rxdata +0 -0
  209. data/Data/Map198.rxdata +0 -0
  210. data/Data/Map199.rxdata +0 -0
  211. data/Data/Map200.rxdata +0 -0
  212. data/Data/Map201.rxdata +0 -0
  213. data/Data/Map202.rxdata +0 -0
  214. data/Data/Map203.rxdata +0 -0
  215. data/Data/Map204.rxdata +0 -0
  216. data/Data/Map205.rxdata +0 -0
  217. data/Data/Map206.rxdata +0 -0
  218. data/Data/Map207.rxdata +0 -0
  219. data/Data/Map208.rxdata +0 -0
  220. data/Data/Map209.rxdata +0 -0
  221. data/Data/Map210.rxdata +0 -0
  222. data/Data/Map211.rxdata +0 -0
  223. data/Data/Map212.rxdata +0 -0
  224. data/Data/Map213.rxdata +0 -0
  225. data/Data/Map214.rxdata +0 -0
  226. data/Data/Map215.rxdata +0 -0
  227. data/Data/Map216.rxdata +0 -0
  228. data/Data/Map217.rxdata +0 -0
  229. data/Data/Map218.rxdata +0 -0
  230. data/Data/Map219.rxdata +0 -0
  231. data/Data/Map220.rxdata +0 -0
  232. data/Data/Map221.rxdata +0 -0
  233. data/Data/Map222.rxdata +0 -0
  234. data/Data/Map223.rxdata +0 -0
  235. data/Data/Map224.rxdata +0 -0
  236. data/Data/Map225.rxdata +0 -0
  237. data/Data/Map226.rxdata +0 -0
  238. data/Data/Map227.rxdata +0 -0
  239. data/Data/Map228.rxdata +0 -0
  240. data/Data/Map229.rxdata +0 -0
  241. data/Data/Map230.rxdata +0 -0
  242. data/Data/Map231.rxdata +0 -0
  243. data/Data/Map232.rxdata +0 -0
  244. data/Data/Map233.rxdata +0 -0
  245. data/Data/Map234.rxdata +0 -0
  246. data/Data/Map235.rxdata +0 -0
  247. data/Data/Map236.rxdata +0 -0
  248. data/Data/Map237.rxdata +0 -0
  249. data/Data/Map238.rxdata +0 -0
  250. data/Data/Map239.rxdata +0 -0
  251. data/Data/Map240.rxdata +0 -0
  252. data/Data/Map241.rxdata +0 -0
  253. data/Data/Map242.rxdata +0 -0
  254. data/Data/Map243.rxdata +0 -0
  255. data/Data/Map244.rxdata +0 -0
  256. data/Data/Map245.rxdata +0 -0
  257. data/Data/Map246.rxdata +0 -0
  258. data/Data/Map247.rxdata +0 -0
  259. data/Data/Map248.rxdata +0 -0
  260. data/Data/Map249.rxdata +0 -0
  261. data/Data/Map250.rxdata +0 -0
  262. data/Data/Map251.rxdata +0 -0
  263. data/Data/Map252.rxdata +0 -0
  264. data/Data/Map253.rxdata +0 -0
  265. data/Data/Map254.rxdata +0 -0
  266. data/Data/Map255.rxdata +0 -0
  267. data/Data/Map256.rxdata +0 -0
  268. data/Data/Map257.rxdata +0 -0
  269. data/Data/Map258.rxdata +0 -0
  270. data/Data/Map259.rxdata +0 -0
  271. data/Data/Map260.rxdata +0 -0
  272. data/Data/Map261.rxdata +0 -0
  273. data/Data/Map262.rxdata +0 -0
  274. data/Data/Map263.rxdata +0 -0
  275. data/Data/Map264.rxdata +0 -0
  276. data/Data/Map265.rxdata +0 -0
  277. data/Data/Map266.rxdata +0 -0
  278. data/Data/Map267.rxdata +0 -0
  279. data/Data/Map268.rxdata +0 -0
  280. data/Data/Map269.rxdata +0 -0
  281. data/Data/Map270.rxdata +0 -0
  282. data/Data/Map271.rxdata +0 -0
  283. data/Data/Map272.rxdata +0 -0
  284. data/Data/Map273.rxdata +0 -0
  285. data/Data/Map274.rxdata +0 -0
  286. data/Data/Map275.rxdata +0 -0
  287. data/Data/Map276.rxdata +0 -0
  288. data/Data/Map277.rxdata +0 -0
  289. data/Data/Map278.rxdata +0 -0
  290. data/Data/Map279.rxdata +0 -0
  291. data/Data/Map280.rxdata +0 -0
  292. data/Data/Map281.rxdata +0 -0
  293. data/Data/Map282.rxdata +0 -0
  294. data/Data/Map283.rxdata +0 -0
  295. data/Data/Map284.rxdata +0 -0
  296. data/Data/Map285.rxdata +0 -0
  297. data/Data/Map286.rxdata +0 -0
  298. data/Data/Map287.rxdata +0 -0
  299. data/Data/Map288.rxdata +0 -0
  300. data/Data/Map289.rxdata +0 -0
  301. data/Data/Map290.rxdata +0 -0
  302. data/Data/Map291.rxdata +0 -0
  303. data/Data/Map292.rxdata +0 -0
  304. data/Data/Map293.rxdata +0 -0
  305. data/Data/Map294.rxdata +0 -0
  306. data/Data/Map295.rxdata +0 -0
  307. data/Data/Map296.rxdata +0 -0
  308. data/Data/Map297.rxdata +0 -0
  309. data/Data/Map298.rxdata +0 -0
  310. data/Data/Map299.rxdata +0 -0
  311. data/Data/Map300.rxdata +0 -0
  312. data/Data/Map301.rxdata +0 -0
  313. data/Data/Map302.rxdata +0 -0
  314. data/Data/Map303.rxdata +0 -0
  315. data/Data/Map304.rxdata +0 -0
  316. data/Data/Map305.rxdata +0 -0
  317. data/Data/Map306.rxdata +0 -0
  318. data/Data/Map307.rxdata +0 -0
  319. data/Data/Map308.rxdata +0 -0
  320. data/Data/Map309.rxdata +0 -0
  321. data/Data/Map310.rxdata +0 -0
  322. data/Data/Map311.rxdata +0 -0
  323. data/Data/Map312.rxdata +0 -0
  324. data/Data/Map313.rxdata +0 -0
  325. data/Data/Map314.rxdata +0 -0
  326. data/Data/Map315.rxdata +0 -0
  327. data/Data/Map316.rxdata +0 -0
  328. data/Data/Map317.rxdata +0 -0
  329. data/Data/Map318.rxdata +0 -0
  330. data/Data/Map319.rxdata +0 -0
  331. data/Data/Map320.rxdata +0 -0
  332. data/Data/Map321.rxdata +0 -0
  333. data/Data/Map322.rxdata +0 -0
  334. data/Data/Map323.rxdata +0 -0
  335. data/Data/Map324.rxdata +0 -0
  336. data/Data/Map325.rxdata +0 -0
  337. data/Data/Map326.rxdata +0 -0
  338. data/Data/Map327.rxdata +0 -0
  339. data/Data/Map328.rxdata +0 -0
  340. data/Data/Map329.rxdata +0 -0
  341. data/Data/Map330.rxdata +0 -0
  342. data/Data/Map331.rxdata +0 -0
  343. data/Data/Map332.rxdata +0 -0
  344. data/Data/Map333.rxdata +0 -0
  345. data/Data/Map334.rxdata +0 -0
  346. data/Data/Map335.rxdata +0 -0
  347. data/Data/Map336.rxdata +0 -0
  348. data/Data/Map337.rxdata +0 -0
  349. data/Data/Map338.rxdata +0 -0
  350. data/Data/Map339.rxdata +0 -0
  351. data/Data/Map340.rxdata +0 -0
  352. data/Data/Map341.rxdata +0 -0
  353. data/Data/Map342.rxdata +0 -0
  354. data/Data/Map343.rxdata +0 -0
  355. data/Data/Map344.rxdata +0 -0
  356. data/Data/Map345.rxdata +0 -0
  357. data/Data/Map346.rxdata +0 -0
  358. data/Data/Map347.rxdata +0 -0
  359. data/Data/Map348.rxdata +0 -0
  360. data/Data/Map349.rxdata +0 -0
  361. data/Data/Map350.rxdata +0 -0
  362. data/Data/Map351.rxdata +0 -0
  363. data/Data/Map352.rxdata +0 -0
  364. data/Data/Map353.rxdata +0 -0
  365. data/Data/Map354.rxdata +0 -0
  366. data/Data/Map355.rxdata +0 -0
  367. data/Data/Map356.rxdata +0 -0
  368. data/Data/Map357.rxdata +0 -0
  369. data/Data/Map358.rxdata +0 -0
  370. data/Data/Map359.rxdata +0 -0
  371. data/Data/Map360.rxdata +0 -0
  372. data/Data/Map361.rxdata +0 -0
  373. data/Data/Map362.rxdata +0 -0
  374. data/Data/Map363.rxdata +0 -0
  375. data/Data/Map364.rxdata +0 -0
  376. data/Data/Map365.rxdata +0 -0
  377. data/Data/Map366.rxdata +0 -0
  378. data/Data/Map367.rxdata +0 -0
  379. data/Data/Map368.rxdata +0 -0
  380. data/Data/Map369.rxdata +0 -0
  381. data/Data/Map370.rxdata +0 -0
  382. data/Data/Map371.rxdata +0 -0
  383. data/Data/Map372.rxdata +0 -0
  384. data/Data/Map373.rxdata +0 -0
  385. data/Data/Map374.rxdata +0 -0
  386. data/Data/Map375.rxdata +0 -0
  387. data/Data/Map376.rxdata +0 -0
  388. data/Data/Map377.rxdata +0 -0
  389. data/Data/Map378.rxdata +0 -0
  390. data/Data/Map379.rxdata +0 -0
  391. data/Data/Map380.rxdata +0 -0
  392. data/Data/Map381.rxdata +0 -0
  393. data/Data/Map382.rxdata +0 -0
  394. data/Data/Map383.rxdata +0 -0
  395. data/Data/Map384.rxdata +0 -0
  396. data/Data/Map385.rxdata +0 -0
  397. data/Data/MapInfos.rxdata +0 -0
  398. data/Data/Scripts.rxdata +0 -0
  399. data/Data/Skills.rxdata +0 -0
  400. data/Data/States.rxdata +0 -0
  401. data/Data/System.rxdata +0 -0
  402. data/Data/Tilesets.rxdata +0 -0
  403. data/Data/Troops.rxdata +0 -0
  404. data/Data/Weapons.rxdata +0 -0
  405. data/Data/xScripts.rxdata +0 -0
  406. data/Gemfile +13 -13
  407. data/Gemfile.lock +2 -1
  408. data/LICENSE.txt +21 -21
  409. data/README.md +35 -35
  410. data/Rakefile +6 -6
  411. data/Scripts/Main.rb +9 -46
  412. data/Scripts/_scripts.txt +1 -111
  413. data/bin/rmxp_extractor +13 -13
  414. data/bin/setup +8 -8
  415. data/diff_check.rb +13 -13
  416. data/lib/rmxp_extractor/classnames.rb +243 -243
  417. data/lib/rmxp_extractor/data_export.rb +82 -82
  418. data/lib/rmxp_extractor/data_import.rb +69 -69
  419. data/lib/rmxp_extractor/ron.rb +144 -146
  420. data/lib/rmxp_extractor/script_handler.rb +85 -85
  421. data/lib/rmxp_extractor/version.rb +3 -3
  422. data/lib/rmxp_extractor.rb +46 -46
  423. data/rmxp_extractor.gemspec +30 -30
  424. data/spec/spec_helper.rb +100 -100
  425. metadata +126 -112
  426. data/Scripts/Credits_Message.rb +0 -259
  427. data/Scripts/Data_FastTravel.rb +0 -50
  428. data/Scripts/Data_Footsteps.rb +0 -77
  429. data/Scripts/Data_Item.rb +0 -50
  430. data/Scripts/Data_SpecialEventData.rb +0 -60
  431. data/Scripts/Demo.rb +0 -7
  432. data/Scripts/Desktop_Message.rb +0 -210
  433. data/Scripts/Doc_Message.rb +0 -273
  434. data/Scripts/EdText.rb +0 -50
  435. data/Scripts/Ed_Message.rb +0 -234
  436. data/Scripts/FastTravel.rb +0 -175
  437. data/Scripts/Game_Actor.rb +0 -156
  438. data/Scripts/Game_Actors.rb +0 -28
  439. data/Scripts/Game_BattleAction.rb +0 -145
  440. data/Scripts/Game_Battler 1.rb +0 -307
  441. data/Scripts/Game_Battler 2.rb +0 -294
  442. data/Scripts/Game_Battler 3.rb +0 -354
  443. data/Scripts/Game_Character 1.rb +0 -291
  444. data/Scripts/Game_Character 2.rb +0 -355
  445. data/Scripts/Game_Character 3.rb +0 -505
  446. data/Scripts/Game_CommonEvent.rb +0 -70
  447. data/Scripts/Game_Enemy.rb +0 -317
  448. data/Scripts/Game_Event.rb +0 -264
  449. data/Scripts/Game_FastTravel.rb +0 -40
  450. data/Scripts/Game_Follower.rb +0 -76
  451. data/Scripts/Game_Light.rb +0 -13
  452. data/Scripts/Game_Map.rb +0 -551
  453. data/Scripts/Game_Oneshot.rb +0 -83
  454. data/Scripts/Game_Party.rb +0 -380
  455. data/Scripts/Game_Picture.rb +0 -164
  456. data/Scripts/Game_Player.rb +0 -298
  457. data/Scripts/Game_Screen.rb +0 -148
  458. data/Scripts/Game_SelfSwitches.rb +0 -30
  459. data/Scripts/Game_Switches.rb +0 -45
  460. data/Scripts/Game_System.rb +0 -210
  461. data/Scripts/Game_Temp.rb +0 -145
  462. data/Scripts/Game_Variables.rb +0 -36
  463. data/Scripts/Interpreter 1.rb +0 -320
  464. data/Scripts/Interpreter 2.rb +0 -286
  465. data/Scripts/Interpreter 3.rb +0 -474
  466. data/Scripts/Interpreter 4.rb +0 -327
  467. data/Scripts/Interpreter 5.rb +0 -448
  468. data/Scripts/Interpreter 6.rb +0 -307
  469. data/Scripts/Interpreter 7.rb +0 -282
  470. data/Scripts/Particles.rb +0 -141
  471. data/Scripts/Persistent.rb +0 -71
  472. data/Scripts/Puzzle_Film.rb +0 -14
  473. data/Scripts/Puzzle_Pixel.rb +0 -210
  474. data/Scripts/Puzzle_Safe.rb +0 -152
  475. data/Scripts/Puzzle_Sokoban.rb +0 -14
  476. data/Scripts/RPG.rb +0 -55
  477. data/Scripts/SaveLoad.rb +0 -275
  478. data/Scripts/Scene_Debug.rb +0 -190
  479. data/Scripts/Scene_End.rb +0 -108
  480. data/Scripts/Scene_Equip.rb +0 -222
  481. data/Scripts/Scene_File.rb +0 -111
  482. data/Scripts/Scene_Item.rb +0 -205
  483. data/Scripts/Scene_Load.rb +0 -106
  484. data/Scripts/Scene_Map.rb +0 -540
  485. data/Scripts/Scene_Menu.rb +0 -213
  486. data/Scripts/Scene_Name.rb +0 -113
  487. data/Scripts/Scene_Save.rb +0 -88
  488. data/Scripts/Scene_Skill.rb +0 -232
  489. data/Scripts/Scene_Status.rb +0 -78
  490. data/Scripts/Scene_Title.rb +0 -237
  491. data/Scripts/Script.rb +0 -780
  492. data/Scripts/Sprite_Battler.rb +0 -131
  493. data/Scripts/Sprite_Character.rb +0 -192
  494. data/Scripts/Sprite_Footprint.rb +0 -35
  495. data/Scripts/Sprite_Footsplash.rb +0 -54
  496. data/Scripts/Sprite_Light.rb +0 -18
  497. data/Scripts/Sprite_MapText.rb +0 -63
  498. data/Scripts/Sprite_Picture.rb +0 -72
  499. data/Scripts/Sprite_Timer.rb +0 -52
  500. data/Scripts/Spriteset_Map.rb +0 -370
  501. data/Scripts/Window_Base.rb +0 -327
  502. data/Scripts/Window_BattleResult.rb +0 -51
  503. data/Scripts/Window_BattleStatus.rb +0 -62
  504. data/Scripts/Window_Command.rb +0 -49
  505. data/Scripts/Window_DebugLeft.rb +0 -57
  506. data/Scripts/Window_DebugRight.rb +0 -69
  507. data/Scripts/Window_EquipItem.rb +0 -94
  508. data/Scripts/Window_EquipLeft.rb +0 -61
  509. data/Scripts/Window_EquipRight.rb +0 -56
  510. data/Scripts/Window_Gold.rb +0 -27
  511. data/Scripts/Window_Help.rb +0 -33
  512. data/Scripts/Window_InputNumber.rb +0 -111
  513. data/Scripts/Window_Item.rb +0 -229
  514. data/Scripts/Window_MainMenu.rb +0 -150
  515. data/Scripts/Window_MenuStatus.rb +0 -48
  516. data/Scripts/Window_Message.rb +0 -459
  517. data/Scripts/Window_NameEdit.rb +0 -108
  518. data/Scripts/Window_NameInput.rb +0 -262
  519. data/Scripts/Window_PartyCommand.rb +0 -42
  520. data/Scripts/Window_PlayTime.rb +0 -40
  521. data/Scripts/Window_SaveFile.rb +0 -91
  522. data/Scripts/Window_Selectable.rb +0 -203
  523. data/Scripts/Window_Settings.rb +0 -469
  524. data/Scripts/Window_ShopBuy.rb +0 -93
  525. data/Scripts/Window_ShopCommand.rb +0 -37
  526. data/Scripts/Window_ShopNumber.rb +0 -87
  527. data/Scripts/Window_ShopSell.rb +0 -94
  528. data/Scripts/Window_ShopStatus.rb +0 -107
  529. data/Scripts/Window_Skill.rb +0 -83
  530. data/Scripts/Window_SkillStatus.rb +0 -28
  531. data/Scripts/Window_Status.rb +0 -64
  532. data/Scripts/Window_Steps.rb +0 -26
  533. data/Scripts/Window_Target.rb +0 -49
  534. data/Scripts/i18n_English.rb +0 -59
  535. data/Scripts/i18n_Language.rb +0 -130
@@ -1,234 +0,0 @@
1
- # Displays Ed message boxes
2
- class Ed_Message
3
- HEIGHT = 160
4
- #--------------------------------------------------------------------------
5
- # * Object Initialization
6
- #--------------------------------------------------------------------------
7
- def initialize
8
- @viewport = Viewport.new(0, 0, 640, 480)
9
- @sprite_bg = Sprite.new(@viewport)
10
- @sprite_bg.bitmap = Bitmap.new(640, 480)
11
- @sprite_bg.bitmap.fill_rect(0, 0, 640, 480, Color.new(0, 0, 0, 128))
12
- @sprite_text = Sprite.new(@viewport)
13
- @contents = Bitmap.new(640, HEIGHT)
14
- Language.register_text_sprite(self.class.name + "_contents", @contents)
15
- @sprite_text.bitmap = @contents
16
- @sprite_text.y = (480 - HEIGHT) / 2
17
- @sprite_bg.z = 0
18
- @sprite_text.z = 1
19
- @viewport.z = 9999
20
- @viewport.visible = false
21
-
22
- # Sprite visibility
23
- @sprite_bg.opacity = 0
24
- @sprite_text.opacity = 0
25
-
26
- # Animation flags
27
- @fade_in = false
28
- @fade_out = false
29
- @fade_in_text = false
30
- @fade_out_text = false
31
- end
32
- #--------------------------------------------------------------------------
33
- # * Dispose
34
- #--------------------------------------------------------------------------
35
- def dispose
36
- terminate_message
37
- $game_temp.message_window_showing = false
38
- @contents.dispose
39
- @sprite_bg.dispose
40
- @sprite_text.dispose
41
- @viewport.dispose
42
- end
43
- #--------------------------------------------------------------------------
44
- # * Terminate Message
45
- #--------------------------------------------------------------------------
46
- def terminate_message
47
- # Call message callback
48
- if !@skip_message_proc && $game_temp.message_proc != nil
49
- $game_temp.message_proc.call
50
- $game_temp.message_proc = nil
51
- end
52
- $game_temp.message_ed_text = nil
53
- end
54
- #--------------------------------------------------------------------------
55
- # * Refresh: Load new message text and pre-process it
56
- #--------------------------------------------------------------------------
57
- def refresh
58
- # Initialize
59
- text = ''
60
- y = -1
61
-
62
- widths = []
63
-
64
- # Pre-process text
65
- text_raw = $game_temp.message_ed_text.to_str
66
-
67
- # Substitute variables, actors, player name, newlines, etc
68
- text_raw.gsub!(/\\v\[([0-9]+)\]/) do
69
- $game_variables[$1.to_i]
70
- end
71
- text_raw.gsub!(/\\n\[([0-9]+)\]/) do
72
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
73
- end
74
- text_raw.gsub!("\\p", $game_oneshot.player_name)
75
- text_raw.gsub!("\\n", "\n")
76
- # Handle text-rendering escape sequences
77
- text_raw.gsub!(/\\c\[([0-9]+)\]/, "\000[\\1]")
78
- # Finally convert the backslash back
79
- text_raw.gsub!("\\\\", "\\")
80
-
81
- # Now split text into lines by measuring text metrics
82
- x = y = 0
83
- maxwidth = @contents.width - 4
84
- spacewidth = @contents.text_size(' ').width
85
- for i in text_raw.split(/ /)
86
- # Split each word around newlines
87
- newline = false
88
- for j in i.split("\n")
89
- # Handle newline
90
- if newline
91
- text << "\n"
92
- widths << x
93
- x = 0
94
- y += 1
95
- break if y >= 4
96
- else
97
- newline = true
98
- end
99
-
100
- # Get width of this word and see if it goes out of bounds
101
- width = @contents.text_size(j.gsub(/\000\[[0-9]+\]/, '')).width
102
- if x + width > maxwidth
103
- text << "\n"
104
- widths << x
105
- x = 0
106
- y += 1
107
- break if y >= 4
108
- end
109
-
110
- # Append word to list
111
- if x == 0
112
- text << j
113
- else
114
- text << ' ' << j
115
- end
116
- x += width + spacewidth
117
- end
118
- break if y >= 4
119
- end
120
- widths << x if y < 4
121
-
122
- # Prepare renderer
123
- @contents.clear
124
- @contents.font.color = Color.new(255, 255, 255, 255)
125
- y_top = (HEIGHT - widths.length * 24) / 2
126
- x = (640 - widths[0]) / 2
127
- y = 0
128
-
129
- # Get 1 text character in c (loop until unable to get text)
130
- while ((c = text.slice!(/./m)) != nil)
131
- # \n
132
- if c == "\n"
133
- y += 1
134
- x = (640 - widths[y]) / 2
135
- next
136
- end
137
- # \c[n]
138
- if c == "\000"
139
- # Change text color
140
- text.sub!(/\[([0-9]+)\]/, "")
141
- color = $1.to_i
142
- if color >= 0 and color <= 7
143
- @contents.font.color = Window_Base.text_color(color)
144
- end
145
- # go to next text
146
- next
147
- end
148
- # Draw text
149
- @contents.draw_text(x, y_top + y * 24, 40, 24, c)
150
- # Add x to drawn text width
151
- x += @contents.text_size(c).width
152
- end
153
- Graphics.frame_reset
154
- end
155
- #--------------------------------------------------------------------------
156
- # * Frame Update
157
- #--------------------------------------------------------------------------
158
- def update
159
- # Handle fade-out effect
160
- if @fade_out
161
- @sprite_bg.opacity -= 20
162
- @sprite_text.opacity -= 20
163
- if @sprite_bg.opacity == 0
164
- @fade_out = false
165
- @fade_out_text = false
166
- @viewport.visible = false
167
- $game_temp.message_window_showing = false
168
- end
169
- return
170
- end
171
-
172
- # Handle fade-in effect
173
- if @fade_in
174
- @sprite_bg.opacity += 20
175
- @sprite_text.opacity += 20
176
- if @sprite_text.opacity == 255
177
- @fade_in = false
178
- $game_temp.message_window_showing = true
179
- end
180
- return
181
- end
182
-
183
- if visible
184
- if Input.trigger?(Input::ACTION) || Input.trigger?(Input::CANCEL) || (Input.press?(Input::R) && $game_switches[253])
185
- terminate_message
186
- @fade_out_text = true
187
- end
188
- end
189
-
190
- # Message is over and should be hidden or advanced to next
191
- if $game_temp.message_ed_text == nil
192
- @fade_out = true if @viewport.visible
193
- else
194
- if !@viewport.visible
195
- # Fade in bg & text
196
- refresh
197
- @viewport.visible = true
198
- @sprite_bg.opacity = 0
199
- @sprite_text.opacity = 0
200
- @fade_in = true
201
- end
202
- end
203
-
204
- # Handle fade-out text effect
205
- if @fade_out_text
206
- @sprite_text.opacity -= 40
207
- if @sprite_text.opacity == 0
208
- @fade_out_text = false
209
- @fade_in_text = true
210
- refresh
211
- end
212
- return
213
- end
214
-
215
- # Handle fade-in text effect
216
- if @fade_in_text
217
- @sprite_text.opacity += 40
218
- if @sprite_text.opacity == 255
219
- @fade_in_text = false
220
- end
221
- return
222
- end
223
-
224
- end
225
- #--------------------------------------------------------------------------
226
- # * Variables
227
- #--------------------------------------------------------------------------
228
- def visible
229
- @viewport.visible
230
- end
231
- def visible=(val)
232
- @viewport.visible = val
233
- end
234
- end
@@ -1,175 +0,0 @@
1
- class FastTravel
2
- MARGIN = 30
3
- TITLE_TOP_MARGIN = 32
4
- TITLE_MARGIN = 100
5
- ITEM_SPACING = 28
6
- ACTIVE_MARGIN = MARGIN * 2 + 20
7
-
8
- def initialize
9
- @viewport = Viewport.new(0, 0, 640, 480)
10
- @bg = Sprite.new(@viewport)
11
- @bg.bitmap = Bitmap.new(640, 480)
12
- @bg.bitmap.fill_rect(0, 0, 640, 480, Color.new(0, 0, 0, 128))
13
- @title = Sprite.new(@viewport)
14
- Language.register_text_sprite(self.class.name + "_title", @title)
15
- @title.bitmap = Bitmap.new(320, TITLE_MARGIN)
16
- @title.bitmap.font.size = 40
17
- @title.y = TITLE_TOP_MARGIN
18
- @title.x = MARGIN
19
- @data_sprites = []
20
- @viewport.z = 9998
21
-
22
- self.visible = false
23
- @index = 0
24
- @fade_in = false
25
- @fade_out = false
26
-
27
- @transfer_player = nil
28
- end
29
-
30
- def dispose
31
- @bg.dispose
32
- @title.dispose
33
- @data_sprites.each do |spr|
34
- spr.dispose
35
- end
36
- @viewport.dispose
37
- end
38
-
39
- def open
40
- self.visible = true
41
- self.opacity = 0
42
- @fade_in = true
43
- @data = $game_fasttravel.unlocked_maps.keys.sort
44
-
45
- # Set cursor to current map
46
- @data.each_with_index do |map, i|
47
- if $game_fasttravel.unlocked_maps[map].id == $game_map.map_id
48
- @index = i
49
- break
50
- end
51
- end
52
- zone = ZONES[$game_fasttravel.zone]
53
-
54
- # Create title
55
- @title.bitmap.clear
56
- @title.bitmap.draw_text(0, 0, @title.bitmap.width, @title.bitmap.height, zone.name)
57
-
58
- # Create menu options
59
- @data.each_with_index do |item, i|
60
- spr = Sprite.new(@viewport)
61
- spr.bitmap = Bitmap.new(320, ITEM_SPACING)
62
- spr.x = MARGIN
63
- spr.y = TITLE_MARGIN + TITLE_TOP_MARGIN + ITEM_SPACING * i
64
- spr.opacity = 0
65
- spr.bitmap.draw_text(0, 0, spr.bitmap.width, spr.bitmap.height, zone.maps[item])
66
- @data_sprites << spr
67
- end
68
- end
69
-
70
- def update
71
- if @fade_in
72
- self.opacity += 20
73
- active_spr = nil
74
- @data_sprites.each do |spr|
75
- spr.opacity += 10
76
- spr.opacity = 128 if spr.opacity > 128
77
- active_spr = spr if !active_spr && spr.x < MARGIN * 2
78
- end
79
- if active_spr
80
- active_spr.x += 6
81
- active_spr.x = MARGIN * 2 if active_spr.x > MARGIN * 2
82
- elsif self.opacity == 255
83
- @fade_in = false
84
- end
85
- return
86
- end
87
-
88
- if @fade_out
89
- self.opacity -= 20
90
- @data_sprites.each do |spr|
91
- spr.opacity -= 10
92
- end
93
- if self.opacity == 0
94
- @fade_out = false
95
- self.visible = false
96
- @data_sprites.each do |spr|
97
- spr.dispose
98
- end
99
- @data_sprites = []
100
-
101
- if @transfer_player
102
- $game_temp.player_transferring = true
103
- $game_temp.player_new_map_id = @transfer_player.id
104
- $game_temp.player_new_x = @transfer_player.x
105
- $game_temp.player_new_y = @transfer_player.y
106
- $game_temp.player_new_direction = @transfer_player.dir
107
- Graphics.freeze
108
- $game_temp.transition_processing = true
109
- $game_temp.transition_name = "black"
110
- @transfer_player = nil
111
- end
112
- end
113
- return
114
- end
115
-
116
- return if !self.visible
117
-
118
- # Adjust position and visibility
119
- @data_sprites.each_with_index do |spr, i|
120
- if i == @index
121
- if spr.x < ACTIVE_MARGIN
122
- spr.x += 6
123
- spr.x = ACTIVE_MARGIN if spr.x > ACTIVE_MARGIN
124
- end
125
- spr.opacity += 10 if spr.opacity < 255
126
- else
127
- if spr.x > MARGIN * 2
128
- spr.x -= 6
129
- spr.x = MARGIN * 2 if spr.x < MARGIN * 2
130
- end
131
- spr.opacity -= 10 if spr.opacity > 128
132
- spr.opacity = 128 if spr.opacity < 128
133
- end
134
- end
135
-
136
- if Input.trigger?(Input::UP)
137
- @index = (@index - 1) % @data.size
138
- $game_system.se_play($data_system.cursor_se)
139
- end
140
- if Input.trigger?(Input::DOWN)
141
- @index = (@index + 1) % @data.size
142
- $game_system.se_play($data_system.cursor_se)
143
- end
144
-
145
- if Input.trigger?(Input::ACTION)
146
- $game_system.se_play($data_system.decision_se)
147
- choice = $game_fasttravel.unlocked_maps[@data[@index]]
148
- if choice.id != $game_map.map_id
149
- @transfer_player = choice
150
- end
151
- @fade_out = true
152
- return
153
- end
154
-
155
- if Input.trigger?(Input::CANCEL)
156
- $game_system.se_play($data_system.cancel_se)
157
- @fade_out = true
158
- end
159
- end
160
-
161
- # Attributes
162
- def visible
163
- @viewport.visible
164
- end
165
- def visible=(val)
166
- @viewport.visible = val
167
- end
168
- def opacity=(val)
169
- @bg.opacity = val
170
- @title.opacity = val
171
- end
172
- def opacity
173
- @bg.opacity
174
- end
175
- end
@@ -1,156 +0,0 @@
1
- #==============================================================================
2
- # ** Game_Actor
3
- #------------------------------------------------------------------------------
4
- # This class handles the actor. It's used within the Game_Actors class
5
- # ($game_actors) and refers to the Game_Party class ($game_party).
6
- #==============================================================================
7
-
8
- class Game_Actor < Game_Battler
9
- #--------------------------------------------------------------------------
10
- # * Public Instance Variables
11
- #--------------------------------------------------------------------------
12
- attr_reader :name # name
13
- attr_reader :character_name # character file name
14
- attr_reader :character_hue # character hue
15
- attr_reader :armor1_id # shield ID
16
- attr_reader :armor2_id # helmet ID
17
- attr_reader :armor3_id # body armor ID
18
- attr_reader :armor4_id # accessory ID
19
- #--------------------------------------------------------------------------
20
- # * Object Initialization
21
- # actor_id : actor ID
22
- #--------------------------------------------------------------------------
23
- def initialize(actor_id)
24
- super()
25
- setup(actor_id)
26
- end
27
- #--------------------------------------------------------------------------
28
- # * Setup
29
- # actor_id : actor ID
30
- #--------------------------------------------------------------------------
31
- def setup(actor_id)
32
- actor = $data_actors[actor_id]
33
- @actor_id = actor_id
34
- @name = actor.name
35
- @character_name = actor.character_name
36
- @character_hue = actor.character_hue
37
- @class_id = actor.class_id
38
- @armor1_id = actor.armor1_id
39
- @armor2_id = actor.armor2_id
40
- @armor3_id = actor.armor3_id
41
- @armor4_id = actor.armor4_id
42
- end
43
- #--------------------------------------------------------------------------
44
- # * Get Actor ID
45
- #--------------------------------------------------------------------------
46
- def id
47
- return @actor_id
48
- end
49
- #--------------------------------------------------------------------------
50
- # * Get Index
51
- #--------------------------------------------------------------------------
52
- def index
53
- return $game_party.actors.index(self)
54
- end
55
- #--------------------------------------------------------------------------
56
- # * Determine Fixed Equipment
57
- # equip_type : type of equipment
58
- #--------------------------------------------------------------------------
59
- def equip_fix?(equip_type)
60
- case equip_type
61
- when 0 # Weapon
62
- return $data_actors[@actor_id].weapon_fix
63
- when 1 # Shield
64
- return $data_actors[@actor_id].armor1_fix
65
- when 2 # Head
66
- return $data_actors[@actor_id].armor2_fix
67
- when 3 # Body
68
- return $data_actors[@actor_id].armor3_fix
69
- when 4 # Accessory
70
- return $data_actors[@actor_id].armor4_fix
71
- end
72
- return false
73
- end
74
- #--------------------------------------------------------------------------
75
- # * Change Equipment
76
- # equip_type : type of equipment
77
- # id : weapon or armor ID (If 0, remove equipment)
78
- #--------------------------------------------------------------------------
79
- def equip(equip_type, id)
80
- case equip_type
81
- when 0 # Weapon
82
- if id == 0 or $game_party.weapon_number(id) > 0
83
- $game_party.gain_weapon(@weapon_id, 1)
84
- @weapon_id = id
85
- $game_party.lose_weapon(id, 1)
86
- end
87
- when 1 # Shield
88
- if id == 0 or $game_party.armor_number(id) > 0
89
- update_auto_state($data_armors[@armor1_id], $data_armors[id])
90
- $game_party.gain_armor(@armor1_id, 1)
91
- @armor1_id = id
92
- $game_party.lose_armor(id, 1)
93
- end
94
- when 2 # Head
95
- if id == 0 or $game_party.armor_number(id) > 0
96
- update_auto_state($data_armors[@armor2_id], $data_armors[id])
97
- $game_party.gain_armor(@armor2_id, 1)
98
- @armor2_id = id
99
- $game_party.lose_armor(id, 1)
100
- end
101
- when 3 # Body
102
- if id == 0 or $game_party.armor_number(id) > 0
103
- update_auto_state($data_armors[@armor3_id], $data_armors[id])
104
- $game_party.gain_armor(@armor3_id, 1)
105
- @armor3_id = id
106
- $game_party.lose_armor(id, 1)
107
- end
108
- when 4 # Accessory
109
- if id == 0 or $game_party.armor_number(id) > 0
110
- update_auto_state($data_armors[@armor4_id], $data_armors[id])
111
- $game_party.gain_armor(@armor4_id, 1)
112
- @armor4_id = id
113
- $game_party.lose_armor(id, 1)
114
- end
115
- end
116
- end
117
- #--------------------------------------------------------------------------
118
- # * Determine if Equippable
119
- # item : item
120
- #--------------------------------------------------------------------------
121
- def equippable?(item)
122
- # If weapon
123
- if item.is_a?(RPG::Weapon)
124
- # If included among equippable weapons in current class
125
- if $data_classes[@class_id].weapon_set.include?(item.id)
126
- return true
127
- end
128
- end
129
- # If armor
130
- if item.is_a?(RPG::Armor)
131
- # If included among equippable armor in current class
132
- if $data_classes[@class_id].armor_set.include?(item.id)
133
- return true
134
- end
135
- end
136
- return false
137
- end
138
- #--------------------------------------------------------------------------
139
- # * Change Name
140
- # name : new name
141
- #--------------------------------------------------------------------------
142
- def name=(name)
143
- @name = name
144
- end
145
- #--------------------------------------------------------------------------
146
- # * Change Graphics
147
- # character_name : new character file name
148
- # character_hue : new character hue
149
- # battler_name : new battler file name
150
- # battler_hue : new battler hue
151
- #--------------------------------------------------------------------------
152
- def set_graphic(character_name, character_hue, battler_name, battler_hue)
153
- @character_name = character_name
154
- @character_hue = character_hue
155
- end
156
- end
@@ -1,28 +0,0 @@
1
- #==============================================================================
2
- # ** Game_Actors
3
- #------------------------------------------------------------------------------
4
- # This class handles the actor array. Refer to "$game_actors" for each
5
- # instance of this class.
6
- #==============================================================================
7
-
8
- class Game_Actors
9
- #--------------------------------------------------------------------------
10
- # * Object Initialization
11
- #--------------------------------------------------------------------------
12
- def initialize
13
- @data = []
14
- end
15
- #--------------------------------------------------------------------------
16
- # * Get Actor
17
- # actor_id : actor ID
18
- #--------------------------------------------------------------------------
19
- def [](actor_id)
20
- if actor_id > 999 or $data_actors[actor_id] == nil
21
- return nil
22
- end
23
- if @data[actor_id] == nil
24
- @data[actor_id] = Game_Actor.new(actor_id)
25
- end
26
- return @data[actor_id]
27
- end
28
- end