Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 197.76 KB | None | 0 0
  1. #==============================================================================
  2. # ** MicKo's Skill Tree - Revised
  3. #------------------------------------------------------------------------------
  4. # by DerVVulfman (July 3, 2014)
  5. # based on MicKo's work from February 28, 2011
  6. # Version 1.1
  7. # RPGMaker XP / RGSS
  8. #==============================================================================
  9. #
  10. # INTRODUCTION:
  11. #
  12. # This system allows you to craft a skill tree such as those in games like
  13. # Diablo or some Final Fantasy RPGs. Earlier systems required the crafting
  14. # of these with elaborate events systems, but no more.
  15. #
  16. # Not only can the player select skills from the tree by spending points to
  17. # acquire them, but may also increase or advance a skill from one skill to
  18. # another. Unlike MicKo's original system, this revised version keeps the
  19. # changed skills solely for the individual actor. In the previous version,
  20. # any changes to a skill would affect all users of that partucular skill...
  21. # but no longer will with this version.
  22. #
  23. # There are added bonuses to this system. Through this system, you can make
  24. # a skill give bonus 'passive' effects to an actor, allowing them to gain
  25. # or lose stats and/or maximum health scores. However, the passive skills
  26. # feature from MicKo's original version was removed.
  27. #
  28. # And skills may increase if additional points are added to an already gained
  29. # skill, if that skill allows
  30. #
  31. #------------------------------------------------------------------------------
  32. #
  33. # SCRIPT CALL
  34. #
  35. # $scene = Scene_SkillTree.new(actor_index[, from_map])
  36. # -or-
  37. # skilltree(actor_index[, from_map])
  38. #
  39. # actor_index This is the index value of the actor in your party, not in
  40. # your actor's database. Thus an actor_index of 0 would set
  41. # the system to display your party leader. Default = 0
  42. #
  43. # from_map This is a true/false value that indicates if you are using
  44. # this feature from a menu or from the field map. If set to
  45. # true, the system exits straight to the field map. But if
  46. # set to false, the system goes straight to the main menu.
  47. # By default, it is set to false so you return to the menu.
  48. #
  49. # * * *
  50. #
  51. # NOTE: The first script call method is advised if being used in a custom
  52. # menu system.
  53. #
  54. #==============================================================================
  55. #
  56. # COMPATABILITY
  57. #
  58. # Rewrites the pdef and mdef methods in Game_Battler (683 & 693)
  59. # Rewrites the refresh method in Window_Skill (1072, noted the changed lines)
  60. #
  61. #==============================================================================
  62. #
  63. # CREDITS AND THANKS
  64. #
  65. # Definite thanks to MicKo who crafted the bulk of this fine system. And
  66. # thank to finalholylight who noted a rank leveling issue in the original
  67. # version.
  68. #
  69. #==============================================================================
  70.  
  71.  
  72.  
  73. #==============================================================================
  74. #
  75. # ** C O N F I G U R A T I O N M O D U L E ** #
  76. #
  77. # For purposes of ease, the configuration section, module SkillTree, has been
  78. # broken down into parts. These parts relate to the actors, the skill tree
  79. # layout, default texts, and the like. Please study it.
  80. #
  81. #==============================================================================
  82.  
  83. module SkillTree
  84. #--------------------------------------------------------------------------
  85. # * SYSTEM REQUIRED HASHES - DO NOT TOUCH -
  86. #--------------------------------------------------------------------------
  87. STARTING_POINTS, RANKS, POINT_COST, TREE_COST, PREREQUISITES = {},{},{},{},{}
  88. PASSIVE_EFFECT, BACKGROUND_LIST, INFOBACKGROUND_LIST, BOOKS = {},{},{},{}
  89. #--------------------------------------------------------------------------
  90.  
  91.  
  92.  
  93. #--------------------------------------------------------------------------
  94. # * PART I: STARTUP OPTIONS
  95. #--------------------------------------------------------------------------
  96.  
  97. # == ACTOR POINTS ==
  98. # This sets how many points your actor has when starting. Default = 0
  99. #
  100. # Actor ID Points given to actor
  101. # =================== ======================
  102. STARTING_POINTS[1] = 4,
  103. STARTING_POINTS[2] = 4,
  104. STARTING_POINTS[3] = 4,
  105. STARTING_POINTS[4] = 4,
  106. STARTING_POINTS[5] = 0,
  107. STARTING_POINTS[6] = 0,
  108. STARTING_POINTS[7] = 0,
  109. STARTING_POINTS[8] = 0,
  110. STARTING_POINTS[9] = 0,
  111. STARTING_POINTS[10] = 4,
  112. STARTING_POINTS[11] = 4,
  113. STARTING_POINTS[12] = 4,
  114. STARTING_POINTS[13] = 4,
  115. STARTING_POINTS[14] = 4,
  116. STARTING_POINTS[15] = 4,
  117. STARTING_POINTS[16] = 4,
  118. STARTING_POINTS[17] = 4,
  119. STARTING_POINTS[18] = 4,
  120. STARTING_POINTS[19] = 999,
  121. STARTING_POINTS[20] = 999,
  122. STARTING_POINTS[21] = 999,
  123. STARTING_POINTS[22] = 999,
  124. STARTING_POINTS[23] = 999,
  125. STARTING_POINTS[24] = 3000,
  126. STARTING_POINTS[25] = 2000,
  127. STARTING_POINTS[26] = 4,
  128. STARTING_POINTS[27] = 4,
  129. STARTING_POINTS[28] = 4,
  130. STARTING_POINTS[29] = 4,
  131. STARTING_POINTS[30] = 4,
  132. STARTING_POINTS[31] = 0,
  133. STARTING_POINTS[32] = 0
  134.  
  135. # == CLASS ACTOR BEHAVIOR ==
  136. # This sets whether the tree system is based on individual trees for the
  137. # actor or are skill trees shared among character classes. Default = false
  138. #
  139. # ===================
  140. CLASS_TREE_START = false
  141.  
  142.  
  143.  
  144. #--------------------------------------------------------------------------
  145. # * PART II: BOOK ITEM OPTIONS
  146. #--------------------------------------------------------------------------
  147.  
  148. # == BOOKS ==
  149. # This is fairly straight forward. This identifies an item as a book
  150. # in which an actor can use to either learn a skill or advance an al-
  151. # ready learned skill if the skill itself can be advanced. The ID of
  152. # the skill learned can be any. But note that advancable skills should
  153. # use the ID of the starting skill (ie, the original skill).
  154. #
  155. # Item ID Base Skill ID(s)
  156. # =================== ======================
  157. #BOOKS[33] = [1, 10]
  158.  
  159.  
  160.  
  161. #--------------------------------------------------------------------------
  162. # * PART III: BOARD DESIGN
  163. #--------------------------------------------------------------------------
  164.  
  165. # == SPACING SYSTEM ==
  166. # This set of arrays handles the spacing of the skill icons displayed in
  167. # the skill tree. The first set handles how much space is between the
  168. # individual skills, both horzontally and vertically. The second sets
  169. # how far the icons are from the top and left-most edge of the grid.
  170. #
  171. # Syntax: = [ horiz, vert ]
  172. #
  173. SKILL_SPACING = [6, 10] # Distance (in px) between skills in grid.
  174. BORDER_SPACING = [5, 5] # Distance (in px) from top-left grid corner.
  175.  
  176.  
  177. # == THE SKILL TREE ==
  178. # This literally defines your skill tree. Each tree is a hash array made up
  179. # of a collection of Skill IDs or nil values that are drawn on your screen.
  180. # Nil values act as spaces between the individual skills in the trees.
  181. # And each actor or class may have one or more skill tree branches assigned
  182. # to him or her.
  183. # * * *
  184. # Each row in the hash array tree is defined in this syntax / manner...
  185. # Row number => [ Skill ID, Skill ID,... Skill ID ]
  186. # ... and each row of data for a given tree must have the same number of
  187. # values. So if the first row has five IDs, the second row must likewise
  188. # have five IDs, and so on.
  189. # * * *
  190. # Trees must be uniformly designed, and every row within each branch must
  191. # have the same number of objects.
  192. #
  193. # * * *
  194. # It is possible to use predefined skill trees and place them within the
  195. # arrays of one or more trees as you can see below. Originally, the trees
  196. # for the 2nd tree had to be written within its own skill array. But as you
  197. # can see below, copies of this tree were made and placed within that of
  198. # the 3rd skill tree.
  199. # * * *
  200. # Syntax: SKILLS_ROWS = [{Row number => [skill id, skill id, ...]}]
  201. # -------------------------------------------------------------------------
  202. SKILLS_ROWS = {} # Do Not Touch
  203. # -------------------------------------------------------------------------
  204. # --- First Skill Tree (either 1st actor's or 1st character class's ---
  205.  
  206.  
  207. SKILLS_ROWS[1] = [
  208. # Licht Tree
  209. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  210. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  211. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  212. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  213. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  214. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  215. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  216. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  217.  
  218. # Dunkel Tree
  219. {0 => [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134],
  220. 1 => [856, 862, 868, 874, 880, 886, 892, 898, 904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970],
  221. 2 => [857, 863, 869, 875, 881, 887, 893, 899, 905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971],
  222. 3 => [858, 864, 870, 876, 882, 888, 894, 900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966, 972],
  223. 4 => [859, 865, 871, 877, 883, 889, 895, 901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967, 973],
  224. 5 => [860, 866, 872, 878, 884, 890, 896, 902, 908, 914, 920, 926, 932, 938, 944, 950, 956, 962, 968, 974],
  225. 6 => [861, 867, 873, 879, 885, 891, 897, 903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969, 975],
  226. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  227. ]
  228.  
  229.  
  230. SKILLS_ROWS[2] = [
  231. # Dunkel Tree
  232. {0 => [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134],
  233. 1 => [856, 862, 868, 874, 880, 886, 892, 898, 904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970],
  234. 2 => [857, 863, 869, 875, 881, 887, 893, 899, 905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971],
  235. 3 => [858, 864, 870, 876, 882, 888, 894, 900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966, 972],
  236. 4 => [859, 865, 871, 877, 883, 889, 895, 901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967, 973],
  237. 5 => [860, 866, 872, 878, 884, 890, 896, 902, 908, 914, 920, 926, 932, 938, 944, 950, 956, 962, 968, 974],
  238. 6 => [861, 867, 873, 879, 885, 891, 897, 903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969, 975],
  239. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  240.  
  241. # Licht Tree
  242. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  243. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  244. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  245. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  246. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  247. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  248. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  249. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  250. ]
  251.  
  252.  
  253. SKILLS_ROWS[3] = [
  254. # Dunkel Tree
  255. {0 => [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134],
  256. 1 => [856, 862, 868, 874, 880, 886, 892, 898, 904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970],
  257. 2 => [857, 863, 869, 875, 881, 887, 893, 899, 905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971],
  258. 3 => [858, 864, 870, 876, 882, 888, 894, 900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966, 972],
  259. 4 => [859, 865, 871, 877, 883, 889, 895, 901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967, 973],
  260. 5 => [860, 866, 872, 878, 884, 890, 896, 902, 908, 914, 920, 926, 932, 938, 944, 950, 956, 962, 968, 974],
  261. 6 => [861, 867, 873, 879, 885, 891, 897, 903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969, 975],
  262. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  263.  
  264. # Wind Tree
  265. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  266. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  267. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  268. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  269. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  270. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  271. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  272. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  273. ]
  274.  
  275.  
  276. SKILLS_ROWS[4] = [
  277. # Licht Tree
  278. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  279. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  280. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  281. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  282. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  283. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  284. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  285. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  286.  
  287. # Feuer Tree
  288. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  289. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  290. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  291. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  292. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  293. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  294. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  295. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  296. ]
  297.  
  298.  
  299. SKILLS_ROWS[5] = [
  300. # Feuer Tree
  301. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  302. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  303. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  304. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  305. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  306. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  307. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  308. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  309.  
  310. # Erde Tree
  311. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  312. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  313. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  314. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  315. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  316. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  317. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  318. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  319. ]
  320.  
  321.  
  322. SKILLS_ROWS[6] = [
  323. # Erde Tree
  324. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  325. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  326. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  327. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  328. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  329. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  330. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  331. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  332.  
  333. # Wind Tree
  334. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  335. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  336. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  337. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  338. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  339. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  340. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  341. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  342. ]
  343.  
  344.  
  345. SKILLS_ROWS[7] = [
  346. # Feuer Tree
  347. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  348. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  349. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  350. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  351. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  352. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  353. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  354. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  355.  
  356. # Erde Tree
  357. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  358. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  359. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  360. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  361. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  362. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  363. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  364. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  365. ]
  366.  
  367.  
  368. SKILLS_ROWS[8] = [
  369. # Licht Tree
  370. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  371. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  372. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  373. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  374. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  375. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  376. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  377. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  378.  
  379. # Wind Tree
  380. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  381. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  382. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  383. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  384. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  385. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  386. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  387. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  388. ]
  389.  
  390.  
  391. SKILLS_ROWS[9] = [
  392. # Wasser Tree
  393. {0 => [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54],
  394. 1 => [368, 374, 380, 386, 392, 398, 404, 410, 416, 422, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482],
  395. 2 => [369, 375, 381, 387, 393, 399, 405, 411, 417, 423, 429, 435, 441, 447, 453, 459, 465, 471, 477, 483],
  396. 3 => [370, 376, 382, 388, 394, 400, 406, 412, 418, 424, 430, 436, 442, 448, 454, 460, 466, 472, 478, 484],
  397. 4 => [371, 377, 383, 389, 395, 401, 407, 413, 419, 425, 431, 437, 443, 449, 455, 461, 467, 473, 479, 485],
  398. 5 => [372, 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480, 486],
  399. 6 => [373, 379, 385, 391, 397, 403, 409, 415, 421, 427, 433, 439, 445, 451, 457, 463, 469, 475, 481, 487],
  400. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  401.  
  402. # Licht Tree
  403. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  404. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  405. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  406. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  407. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  408. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  409. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  410. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  411. ]
  412.  
  413.  
  414. SKILLS_ROWS[10] = [
  415. # Licht Tree
  416. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  417. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  418. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  419. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  420. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  421. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  422. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  423. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  424.  
  425. # Erde Tree
  426. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  427. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  428. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  429. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  430. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  431. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  432. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  433. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  434. ]
  435.  
  436.  
  437. SKILLS_ROWS[11] = [
  438. # Feuer Tree
  439. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  440. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  441. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  442. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  443. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  444. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  445. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  446. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  447.  
  448. # Erde Tree
  449. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  450. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  451. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  452. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  453. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  454. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  455. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  456. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  457. ]
  458.  
  459.  
  460. SKILLS_ROWS[12] = [
  461. # Wind Tree
  462. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  463. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  464. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  465. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  466. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  467. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  468. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  469. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  470.  
  471. # Dunkel Tree
  472. {0 => [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134],
  473. 1 => [856, 862, 868, 874, 880, 886, 892, 898, 904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970],
  474. 2 => [857, 863, 869, 875, 881, 887, 893, 899, 905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971],
  475. 3 => [858, 864, 870, 876, 882, 888, 894, 900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966, 972],
  476. 4 => [859, 865, 871, 877, 883, 889, 895, 901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967, 973],
  477. 5 => [860, 866, 872, 878, 884, 890, 896, 902, 908, 914, 920, 926, 932, 938, 944, 950, 956, 962, 968, 974],
  478. 6 => [861, 867, 873, 879, 885, 891, 897, 903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969, 975],
  479. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  480. ]
  481.  
  482.  
  483. SKILLS_ROWS[13] = [
  484. # Wasser Tree
  485. {0 => [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54],
  486. 1 => [368, 374, 380, 386, 392, 398, 404, 410, 416, 422, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482],
  487. 2 => [369, 375, 381, 387, 393, 399, 405, 411, 417, 423, 429, 435, 441, 447, 453, 459, 465, 471, 477, 483],
  488. 3 => [370, 376, 382, 388, 394, 400, 406, 412, 418, 424, 430, 436, 442, 448, 454, 460, 466, 472, 478, 484],
  489. 4 => [371, 377, 383, 389, 395, 401, 407, 413, 419, 425, 431, 437, 443, 449, 455, 461, 467, 473, 479, 485],
  490. 5 => [372, 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480, 486],
  491. 6 => [373, 379, 385, 391, 397, 403, 409, 415, 421, 427, 433, 439, 445, 451, 457, 463, 469, 475, 481, 487],
  492. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  493.  
  494. # Licht Tree
  495. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  496. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  497. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  498. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  499. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  500. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  501. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  502. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  503. ]
  504.  
  505.  
  506. SKILLS_ROWS[14] = [
  507. # Feuer Tree
  508. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  509. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  510. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  511. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  512. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  513. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  514. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  515. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  516.  
  517. # Wind Tree
  518. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  519. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  520. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  521. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  522. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  523. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  524. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  525. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  526. ]
  527.  
  528.  
  529. SKILLS_ROWS[15] = [
  530. # Erde Tree
  531. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  532. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  533. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  534. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  535. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  536. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  537. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  538. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  539.  
  540. # Feuer Tree
  541. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  542. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  543. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  544. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  545. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  546. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  547. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  548. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  549. ]
  550.  
  551.  
  552. SKILLS_ROWS[16] = [
  553. # Wind Tree
  554. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  555. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  556. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  557. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  558. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  559. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  560. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  561. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  562.  
  563. # Wasser Tree
  564. {0 => [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54],
  565. 1 => [368, 374, 380, 386, 392, 398, 404, 410, 416, 422, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482],
  566. 2 => [369, 375, 381, 387, 393, 399, 405, 411, 417, 423, 429, 435, 441, 447, 453, 459, 465, 471, 477, 483],
  567. 3 => [370, 376, 382, 388, 394, 400, 406, 412, 418, 424, 430, 436, 442, 448, 454, 460, 466, 472, 478, 484],
  568. 4 => [371, 377, 383, 389, 395, 401, 407, 413, 419, 425, 431, 437, 443, 449, 455, 461, 467, 473, 479, 485],
  569. 5 => [372, 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480, 486],
  570. 6 => [373, 379, 385, 391, 397, 403, 409, 415, 421, 427, 433, 439, 445, 451, 457, 463, 469, 475, 481, 487],
  571. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  572. ]
  573.  
  574. SKILLS_ROWS[17] = [ { 0 => [nil, 57, nil],
  575. 1 => [nil, nil, 60],
  576. 2 => [nil, nil, 61],
  577. 3 => [nil, 62, nil] } ]
  578.  
  579. SKILLS_ROWS[18] = [ { 0 => [nil, 57, nil],
  580. 1 => [nil, nil, 60],
  581. 2 => [nil, nil, 61],
  582. 3 => [nil, 62, nil] } ]
  583.  
  584. SKILLS_ROWS[19] = [ { 0 => [978, 979, 980],
  585. 1 => [981, 982, 983],
  586. 2 => [nil, nil, nil],
  587. 3 => [nil, nil, nil] } ]
  588.  
  589. SKILLS_ROWS[20] = [ { 0 => [978, 979, 980],
  590. 1 => [981, 982, 983],
  591. 2 => [nil, nil, nil],
  592. 3 => [nil, nil, nil] } ]
  593.  
  594. SKILLS_ROWS[22] = [ { 0 => [978, 979, 980],
  595. 1 => [981, 982, 983],
  596. 2 => [nil, nil, nil],
  597. 3 => [nil, nil, nil] } ]
  598.  
  599. SKILLS_ROWS[23] = [ { 0 => [nil, 57, nil],
  600. 1 => [nil, nil, 60],
  601. 2 => [nil, nil, 61],
  602. 3 => [nil, 62, nil] } ]
  603.  
  604. SKILLS_ROWS[24] = [
  605. # Feuer Tree
  606. {0 => [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34],
  607. 1 => [246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360],
  608. 2 => [247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361],
  609. 3 => [248, 254, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 332, 338, 344, 350, 356, 362],
  610. 4 => [249, 255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 327, 333, 339, 345, 351, 357, 363],
  611. 5 => [250, 256, 262, 268, 274, 280, 286, 292, 298, 304, 310, 316, 322, 328, 334, 340, 346, 352, 358, 364],
  612. 6 => [251, 257, 263, 269, 275, 281, 287, 293, 299, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 365],
  613. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  614. ]
  615.  
  616. SKILLS_ROWS[25] = [
  617. # Wasser Tree
  618. {0 => [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54],
  619. 1 => [368, 374, 380, 386, 392, 398, 404, 410, 416, 422, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482],
  620. 2 => [369, 375, 381, 387, 393, 399, 405, 411, 417, 423, 429, 435, 441, 447, 453, 459, 465, 471, 477, 483],
  621. 3 => [370, 376, 382, 388, 394, 400, 406, 412, 418, 424, 430, 436, 442, 448, 454, 460, 466, 472, 478, 484],
  622. 4 => [371, 377, 383, 389, 395, 401, 407, 413, 419, 425, 431, 437, 443, 449, 455, 461, 467, 473, 479, 485],
  623. 5 => [372, 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480, 486],
  624. 6 => [373, 379, 385, 391, 397, 403, 409, 415, 421, 427, 433, 439, 445, 451, 457, 463, 469, 475, 481, 487],
  625. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  626. ]
  627.  
  628. SKILLS_ROWS[26] = [
  629. # Wind Tree
  630. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  631. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  632. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  633. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  634. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  635. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  636. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  637. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  638. ]
  639.  
  640. SKILLS_ROWS[27] = [
  641. # Erde Tree
  642. {0 => [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94],
  643. 1 => [612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, 726],
  644. 2 => [613, 619, 625, 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, 691, 697, 703, 709, 715, 721, 727],
  645. 3 => [614, 620, 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, 686, 692, 698, 704, 710, 716, 722, 728],
  646. 4 => [615, 621, 627, 633, 639, 645, 651, 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, 717, 723, 729],
  647. 5 => [616, 622, 628, 634, 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, 700, 706, 712, 718, 724, 730],
  648. 6 => [617, 623, 629, 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, 701, 707, 713, 719, 725, 731],
  649. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  650. ]
  651.  
  652. SKILLS_ROWS[28] = [
  653. # Licht Tree
  654. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  655. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  656. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  657. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  658. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  659. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  660. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  661. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  662. ]
  663.  
  664. SKILLS_ROWS[29] = [
  665. # Dunkel Tree
  666. {0 => [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134],
  667. 1 => [856, 862, 868, 874, 880, 886, 892, 898, 904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970],
  668. 2 => [857, 863, 869, 875, 881, 887, 893, 899, 905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971],
  669. 3 => [858, 864, 870, 876, 882, 888, 894, 900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966, 972],
  670. 4 => [859, 865, 871, 877, 883, 889, 895, 901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967, 973],
  671. 5 => [860, 866, 872, 878, 884, 890, 896, 902, 908, 914, 920, 926, 932, 938, 944, 950, 956, 962, 968, 974],
  672. 6 => [861, 867, 873, 879, 885, 891, 897, 903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969, 975],
  673. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  674. ]
  675.  
  676. SKILLS_ROWS[30] = [ { 0 => [nil, 57, nil],
  677. 1 => [nil, nil, 60],
  678. 2 => [nil, nil, 61],
  679. 3 => [nil, 62, nil] } ]
  680.  
  681.  
  682. SKILLS_ROWS[16] = [
  683. # Licht Tree
  684. {0 => [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
  685. 1 => [734, 740, 746, 752, 758, 764, 770, 776, 782, 788, 794, 800, 806, 812, 818, 824, 830, 836, 842, 848],
  686. 2 => [735, 741, 747, 753, 759, 765, 771, 777, 783, 789, 795, 801, 807, 813, 819, 825, 831, 837, 843, 849],
  687. 3 => [736, 742, 748, 754, 760, 766, 772, 778, 784, 790, 796, 802, 808, 814, 820, 826, 832, 838, 844, 850],
  688. 4 => [737, 743, 749, 755, 761, 767, 773, 779, 785, 791, 797, 803, 809, 815, 821, 827, 833, 839, 845, 851],
  689. 5 => [738, 744, 750, 756, 762, 768, 774, 780, 786, 792, 798, 804, 810, 816, 822, 828, 834, 840, 846, 852],
  690. 6 => [739, 745, 751, 757, 763, 769, 775, 781, 787, 793, 799, 805, 811, 817, 823, 829, 835, 841, 847, 853],
  691. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  692.  
  693. # Wind Tree
  694. {0 => [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
  695. 1 => [490, 496, 502, 508, 514, 520, 526, 532, 538, 544, 550, 556, 562, 568, 574, 580, 586, 592, 598, 604],
  696. 2 => [491, 497, 503, 509, 515, 521, 527, 533, 539, 545, 551, 557, 563, 569, 575, 581, 587, 593, 599, 605],
  697. 3 => [492, 498, 504, 510, 516, 522, 528, 534, 540, 546, 552, 558, 564, 570, 576, 582, 588, 594, 600, 606],
  698. 4 => [493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607],
  699. 5 => [494, 500, 506, 512, 518, 524, 530, 536, 542, 548, 554, 560, 566, 572, 578, 584, 590, 596, 602, 608],
  700. 6 => [495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609],
  701. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  702. ]
  703.  
  704.  
  705. SKILLS_ROWS[32] = [
  706. # Wasser Tree
  707. {0 => [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54],
  708. 1 => [368, 374, 380, 386, 392, 398, 404, 410, 416, 422, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482],
  709. 2 => [369, 375, 381, 387, 393, 399, 405, 411, 417, 423, 429, 435, 441, 447, 453, 459, 465, 471, 477, 483],
  710. 3 => [370, 376, 382, 388, 394, 400, 406, 412, 418, 424, 430, 436, 442, 448, 454, 460, 466, 472, 478, 484],
  711. 4 => [371, 377, 383, 389, 395, 401, 407, 413, 419, 425, 431, 437, 443, 449, 455, 461, 467, 473, 479, 485],
  712. 5 => [372, 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480, 486],
  713. 6 => [373, 379, 385, 391, 397, 403, 409, 415, 421, 427, 433, 439, 445, 451, 457, 463, 469, 475, 481, 487],
  714. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]},
  715.  
  716. # Dunkel Tree
  717. {0 => [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134],
  718. 1 => [856, 862, 868, 874, 880, 886, 892, 898, 904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970],
  719. 2 => [857, 863, 869, 875, 881, 887, 893, 899, 905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971],
  720. 3 => [858, 864, 870, 876, 882, 888, 894, 900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966, 972],
  721. 4 => [859, 865, 871, 877, 883, 889, 895, 901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967, 973],
  722. 5 => [860, 866, 872, 878, 884, 890, 896, 902, 908, 914, 920, 926, 932, 938, 944, 950, 956, 962, 968, 974],
  723. 6 => [861, 867, 873, 879, 885, 891, 897, 903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969, 975],
  724. 7 => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]}
  725. ]
  726.  
  727. SKILLS_ROWS[33] = [ { 0 => [nil, 57, nil],
  728. 1 => [nil, nil, 60],
  729. 2 => [nil, nil, 61],
  730. 3 => [nil, 62, nil] } ]
  731.  
  732. SKILLS_ROWS[34] = [ { 0 => [nil, 57, nil],
  733. 1 => [nil, nil, 60],
  734. 2 => [nil, nil, 61],
  735. 3 => [nil, 62, nil] } ]
  736.  
  737. SKILLS_ROWS[35] = [ { 0 => [nil, 57, nil],
  738. 1 => [nil, nil, 60],
  739. 2 => [nil, nil, 61],
  740. 3 => [nil, 62, nil] } ]
  741.  
  742. SKILLS_ROWS[36] = [ { 0 => [nil, 57, nil],
  743. 1 => [nil, nil, 60],
  744. 2 => [nil, nil, 61],
  745. 3 => [nil, 62, nil] } ]
  746.  
  747. SKILLS_ROWS[37] = [ { 0 => [nil, 57, nil],
  748. 1 => [nil, nil, 60],
  749. 2 => [nil, nil, 61],
  750. 3 => [nil, 62, nil] } ]
  751.  
  752. SKILLS_ROWS[38] = [ { 0 => [nil, 57, nil],
  753. 1 => [nil, nil, 60],
  754. 2 => [nil, nil, 61],
  755. 3 => [nil, 62, nil] } ]
  756.  
  757. SKILLS_ROWS[39] = [ { 0 => [nil, 57, nil],
  758. 1 => [nil, nil, 60],
  759. 2 => [nil, nil, 61],
  760. 3 => [nil, 62, nil] } ]
  761.  
  762. SKILLS_ROWS[40] = [ { 0 => [nil, 57, nil],
  763. 1 => [nil, nil, 60],
  764. 2 => [nil, nil, 61],
  765. 3 => [nil, 62, nil] } ]
  766.  
  767. SKILLS_ROWS[41] = [ { 0 => [nil, 57, nil],
  768. 1 => [nil, nil, 60],
  769. 2 => [nil, nil, 61],
  770. 3 => [nil, 62, nil] } ]
  771.  
  772. SKILLS_ROWS[42] = [ { 0 => [nil, 57, nil],
  773. 1 => [nil, nil, 60],
  774. 2 => [nil, nil, 61],
  775. 3 => [nil, 62, nil] } ]
  776.  
  777. SKILLS_ROWS[43] = [ { 0 => [nil, 57, nil],
  778. 1 => [nil, nil, 60],
  779. 2 => [nil, nil, 61],
  780. 3 => [nil, 62, nil] } ]
  781.  
  782. SKILLS_ROWS[44] = [ { 0 => [nil, 57, nil],
  783. 1 => [nil, nil, 60],
  784. 2 => [nil, nil, 61],
  785. 3 => [nil, 62, nil] } ]
  786.  
  787. SKILLS_ROWS[45] = [ { 0 => [nil, 57, nil],
  788. 1 => [nil, nil, 60],
  789. 2 => [nil, nil, 61],
  790. 3 => [nil, 62, nil] } ]
  791.  
  792. # == THE SKILL TABS ==
  793. # This set of arrays defines the names of the individual branches in each
  794. # tree within the system. Not every skill tree need have an array. But if
  795. # an array is defined, its recommended to have as many 'names' or elements
  796. # as it does branches. So, if a tree has three branches, each branch should
  797. # have a name.
  798. # * * *
  799. # And if no tab set is defined for a tree, the tabs for each branch in that
  800. # tree will be blank.
  801. # -------------------------------------------------------------------------
  802. SKILLS_TABS = {} # Do Not Touch
  803. # -------------------------------------------------------------------------
  804. #
  805. SKILLS_TABS[1] = ["Licht","Dunkelheit"],
  806. SKILLS_TABS[2] = ["Dunkelheit","Licht"],
  807. SKILLS_TABS[3] = ["Dunkelheit","Feuer"],
  808. SKILLS_TABS[4] = ["Licht","Wasser"],
  809. SKILLS_TABS[5] = ["Feuer","Erde"],
  810. SKILLS_TABS[6] = ["Erde","Wind"],
  811. SKILLS_TABS[7] = ["Feuer","Erde"],
  812. SKILLS_TABS[8] = ["Erde","Wind"],
  813. SKILLS_TABS[9] = ["Feuer","Erde"],
  814. SKILLS_TABS[10] = ["Licht","Erde"],
  815. SKILLS_TABS[11] = ["Feuer","Erde"],
  816. SKILLS_TABS[12] = ["Erde","Dunkelheit"],
  817. SKILLS_TABS[13] = ["Wind","Licht"],
  818. SKILLS_TABS[14] = ["Feuer","Wasser"],
  819. SKILLS_TABS[15] = ["Erde","Feuer"],
  820. SKILLS_TABS[16] = ["Wind","Wasser"],
  821. SKILLS_TABS[17] = ["Empty"],
  822. SKILLS_TABS[18] = ["Empty"],
  823. SKILLS_TABS[19] = ["Göttlich"],
  824. SKILLS_TABS[20] = ["Göttlich"],
  825. SKILLS_TABS[21] = ["Göttlich"],
  826. SKILLS_TABS[22] = ["Göttlich"],
  827. SKILLS_TABS[23] = ["SCENE"],
  828. SKILLS_TABS[24] = ["Feuer"],
  829. SKILLS_TABS[25] = ["Wasser"],
  830. SKILLS_TABS[26] = ["Wind"],
  831. SKILLS_TABS[27] = ["Erde"],
  832. SKILLS_TABS[28] = ["Licht"],
  833. SKILLS_TABS[29] = ["Dunkelheit"],
  834. SKILLS_TABS[30] = ["Empty"],
  835. SKILLS_TABS[31] = ["Wasser","Wind"],
  836. SKILLS_TABS[32] = ["Wasser","Dunkelheit"]
  837. SKILLS_TABS[33] = ["Empty"],
  838. SKILLS_TABS[34] = ["Empty"],
  839. SKILLS_TABS[35] = ["Empty"],
  840. SKILLS_TABS[36] = ["Empty"],
  841. SKILLS_TABS[37] = ["Empty"],
  842. SKILLS_TABS[38] = ["Empty"],
  843. SKILLS_TABS[39] = ["Empty"],
  844. SKILLS_TABS[40] = ["Empty"],
  845. SKILLS_TABS[41] = ["Empty"],
  846. SKILLS_TABS[42] = ["Empty"],
  847. SKILLS_TABS[43] = ["Empty"],
  848. SKILLS_TABS[44] = ["Empty"],
  849. SKILLS_TABS[45] = ["Empty"],
  850.  
  851. #--------------------------------------------------------------------------
  852. # * PART IV: SKILL REQUIREMENTS
  853. #--------------------------------------------------------------------------
  854.  
  855. # == POINTS COST ==
  856. # Default is set to 1, so if you want all your skills to cost 1 skill point,
  857. # just leave this blank.
  858. #
  859. # Skill ID Point Cost for Skill
  860. # ===================== ======================
  861. POINT_COST[15] = 1
  862. POINT_COST[16] = 2
  863. POINT_COST[17] = 3
  864. POINT_COST[18] = 4
  865. POINT_COST[19] = 5
  866. POINT_COST[20] = 6
  867. POINT_COST[21] = 7
  868. POINT_COST[22] = 8
  869. POINT_COST[23] = 9
  870. POINT_COST[24] = 10
  871. POINT_COST[25] = 11
  872. POINT_COST[26] = 12
  873. POINT_COST[27] = 13
  874. POINT_COST[28] = 14
  875. POINT_COST[29] = 15
  876. POINT_COST[30] = 16
  877. POINT_COST[31] = 17
  878. POINT_COST[32] = 18
  879. POINT_COST[33] = 19
  880. POINT_COST[34] = 20
  881. #===========Wasser===========
  882. POINT_COST[36] = 2
  883. POINT_COST[37] = 3
  884. POINT_COST[38] = 4
  885. POINT_COST[39] = 5
  886. POINT_COST[40] = 6
  887. POINT_COST[41] = 7
  888. POINT_COST[42] = 8
  889. POINT_COST[43] = 9
  890. POINT_COST[44] = 10
  891. POINT_COST[45] = 11
  892. POINT_COST[46] = 12
  893. POINT_COST[47] = 13
  894. POINT_COST[48] = 14
  895. POINT_COST[49] = 15
  896. POINT_COST[50] = 16
  897. POINT_COST[51] = 17
  898. POINT_COST[52] = 18
  899. POINT_COST[53] = 19
  900. POINT_COST[54] = 20
  901. #===========Wind=============
  902. POINT_COST[56] = 2
  903. POINT_COST[57] = 3
  904. POINT_COST[58] = 4
  905. POINT_COST[59] = 5
  906. POINT_COST[60] = 6
  907. POINT_COST[61] = 7
  908. POINT_COST[62] = 8
  909. POINT_COST[63] = 9
  910. POINT_COST[64] = 10
  911. POINT_COST[65] = 11
  912. POINT_COST[66] = 12
  913. POINT_COST[67] = 13
  914. POINT_COST[68] = 14
  915. POINT_COST[69] = 15
  916. POINT_COST[70] = 16
  917. POINT_COST[71] = 17
  918. POINT_COST[72] = 18
  919. POINT_COST[73] = 19
  920. POINT_COST[74] = 20
  921. #===========Erde=============
  922. POINT_COST[76] = 2
  923. POINT_COST[77] = 3
  924. POINT_COST[78] = 4
  925. POINT_COST[79] = 5
  926. POINT_COST[80] = 6
  927. POINT_COST[81] = 7
  928. POINT_COST[82] = 8
  929. POINT_COST[83] = 9
  930. POINT_COST[84] = 10
  931. POINT_COST[85] = 11
  932. POINT_COST[86] = 12
  933. POINT_COST[87] = 13
  934. POINT_COST[88] = 14
  935. POINT_COST[89] = 15
  936. POINT_COST[90] = 16
  937. POINT_COST[91] = 17
  938. POINT_COST[92] = 18
  939. POINT_COST[93] = 19
  940. POINT_COST[94] = 20
  941. #===========Licht=============
  942. POINT_COST[96] = 2
  943. POINT_COST[97] = 3
  944. POINT_COST[98] = 4
  945. POINT_COST[99] = 5
  946. POINT_COST[100] = 6
  947. POINT_COST[101] = 7
  948. POINT_COST[102] = 8
  949. POINT_COST[103] = 9
  950. POINT_COST[104] = 10
  951. POINT_COST[105] = 11
  952. POINT_COST[106] = 12
  953. POINT_COST[107] = 13
  954. POINT_COST[108] = 14
  955. POINT_COST[109] = 15
  956. POINT_COST[110] = 16
  957. POINT_COST[111] = 17
  958. POINT_COST[112] = 18
  959. POINT_COST[113] = 19
  960. POINT_COST[114] = 20
  961. #===========Dunkel=============
  962. POINT_COST[116] = 2
  963. POINT_COST[117] = 3
  964. POINT_COST[118] = 4
  965. POINT_COST[119] = 5
  966. POINT_COST[120] = 6
  967. POINT_COST[121] = 7
  968. POINT_COST[122] = 8
  969. POINT_COST[123] = 9
  970. POINT_COST[124] = 10
  971. POINT_COST[125] = 11
  972. POINT_COST[126] = 12
  973. POINT_COST[127] = 13
  974. POINT_COST[128] = 14
  975. POINT_COST[129] = 15
  976. POINT_COST[130] = 16
  977. POINT_COST[131] = 17
  978. POINT_COST[132] = 18
  979. POINT_COST[133] = 19
  980. POINT_COST[134] = 20
  981.  
  982. # == TREE SYSTEM SPENDING POINTS ==
  983. # Skills are only unlocked when 'X' amount of points have been spent in
  984. # total within the skill tree.
  985. #
  986. # Skill ID Prerequisite Skill IDs
  987. # ===================== ======================
  988. TREE_COST[1] = 0
  989. # TREE_COST[10] = 5 # Must spend at least 5 points in total
  990. # TREE_COST[14] = 4
  991. # TREE_COST[19] = 5
  992. # TREE_COST[21] = 10
  993. # TREE_COST[26] = 10
  994. # TREE_COST[27] = 15 # Must spend at least 15 points in total
  995. # TREE_COST[30] = 15
  996. # TREE_COST[33] = 20
  997.  
  998.  
  999. # == RANK ==
  1000. # Skills that may increase and change when more points are applied.
  1001. # The actual skill increases to the next one in the array.
  1002. #
  1003. RANKS[1] = [2,3,4,5]
  1004. # RANKS[7] = [8,9]
  1005. # RANKS[10] = [11,12]
  1006. # RANKS[14] = [15,16,17,18]
  1007.  
  1008.  
  1009. # == POINT_COST ==
  1010. # Skills that are required before gaining the new one. You can assign
  1011. # a skill to have one or more 'required' skills which must be learned
  1012. # before access is granted through the tree. If the skill ID given is
  1013. # of a ranked skill, the ranked skill must be at its maximum level be-
  1014. # fore the skill is attainable
  1015. #
  1016. # Skill ID Prerequisite Skill IDs
  1017. # ===================== ======================
  1018.  
  1019. #===========Feuer===========
  1020. PREREQUISITES[16] = 15
  1021. PREREQUISITES[17] = 16
  1022. PREREQUISITES[18] = 17
  1023. PREREQUISITES[19] = 18
  1024. PREREQUISITES[20] = 19
  1025. PREREQUISITES[21] = 20
  1026. PREREQUISITES[22] = 21
  1027. PREREQUISITES[23] = 22
  1028. PREREQUISITES[24] = 23
  1029. PREREQUISITES[25] = 24
  1030. PREREQUISITES[26] = 25
  1031. PREREQUISITES[27] = 26
  1032. PREREQUISITES[28] = 27
  1033. PREREQUISITES[29] = 28
  1034. PREREQUISITES[30] = 29
  1035. PREREQUISITES[31] = 30
  1036. PREREQUISITES[32] = 31
  1037. PREREQUISITES[33] = 32
  1038. PREREQUISITES[34] = 33
  1039. PREREQUISITES[246] = 15
  1040. PREREQUISITES[247] = 15
  1041. PREREQUISITES[248] = 15
  1042. PREREQUISITES[249] = 15
  1043. PREREQUISITES[250] = 15
  1044. PREREQUISITES[251] = 15
  1045. PREREQUISITES[252] = 16
  1046. PREREQUISITES[253] = 16
  1047. PREREQUISITES[254] = 16
  1048. PREREQUISITES[255] = 16
  1049. PREREQUISITES[256] = 16
  1050. PREREQUISITES[257] = 16
  1051. PREREQUISITES[258] = 17
  1052. PREREQUISITES[259] = 17
  1053. PREREQUISITES[260] = 17
  1054. PREREQUISITES[261] = 17
  1055. PREREQUISITES[262] = 17
  1056. PREREQUISITES[263] = 17
  1057. PREREQUISITES[264] = 18
  1058. PREREQUISITES[265] = 18
  1059. PREREQUISITES[266] = 18
  1060. PREREQUISITES[267] = 18
  1061. PREREQUISITES[268] = 18
  1062. PREREQUISITES[269] = 18
  1063. PREREQUISITES[270] = 19
  1064. PREREQUISITES[271] = 19
  1065. PREREQUISITES[272] = 19
  1066. PREREQUISITES[273] = 19
  1067. PREREQUISITES[274] = 19
  1068. PREREQUISITES[275] = 19
  1069. PREREQUISITES[276] = 20
  1070. PREREQUISITES[277] = 20
  1071. PREREQUISITES[278] = 20
  1072. PREREQUISITES[279] = 20
  1073. PREREQUISITES[280] = 20
  1074. PREREQUISITES[281] = 20
  1075. PREREQUISITES[282] = 21
  1076. PREREQUISITES[283] = 21
  1077. PREREQUISITES[284] = 21
  1078. PREREQUISITES[285] = 21
  1079. PREREQUISITES[286] = 21
  1080. PREREQUISITES[287] = 21
  1081. PREREQUISITES[288] = 22
  1082. PREREQUISITES[289] = 22
  1083. PREREQUISITES[290] = 22
  1084. PREREQUISITES[291] = 22
  1085. PREREQUISITES[292] = 22
  1086. PREREQUISITES[293] = 22
  1087. PREREQUISITES[294] = 23
  1088. PREREQUISITES[295] = 23
  1089. PREREQUISITES[296] = 23
  1090. PREREQUISITES[297] = 23
  1091. PREREQUISITES[298] = 23
  1092. PREREQUISITES[299] = 23
  1093. PREREQUISITES[300] = 24
  1094. PREREQUISITES[301] = 24
  1095. PREREQUISITES[302] = 24
  1096. PREREQUISITES[303] = 24
  1097. PREREQUISITES[304] = 24
  1098. PREREQUISITES[305] = 24
  1099. PREREQUISITES[306] = 25
  1100. PREREQUISITES[307] = 25
  1101. PREREQUISITES[308] = 25
  1102. PREREQUISITES[309] = 25
  1103. PREREQUISITES[310] = 25
  1104. PREREQUISITES[311] = 25
  1105. PREREQUISITES[312] = 26
  1106. PREREQUISITES[313] = 26
  1107. PREREQUISITES[314] = 26
  1108. PREREQUISITES[315] = 26
  1109. PREREQUISITES[316] = 26
  1110. PREREQUISITES[317] = 26
  1111. PREREQUISITES[318] = 27
  1112. PREREQUISITES[319] = 27
  1113. PREREQUISITES[320] = 27
  1114. PREREQUISITES[321] = 27
  1115. PREREQUISITES[322] = 27
  1116. PREREQUISITES[323] = 27
  1117. PREREQUISITES[324] = 28
  1118. PREREQUISITES[325] = 28
  1119. PREREQUISITES[326] = 28
  1120. PREREQUISITES[327] = 28
  1121. PREREQUISITES[328] = 28
  1122. PREREQUISITES[329] = 28
  1123. PREREQUISITES[330] = 29
  1124. PREREQUISITES[331] = 29
  1125. PREREQUISITES[332] = 29
  1126. PREREQUISITES[333] = 29
  1127. PREREQUISITES[334] = 29
  1128. PREREQUISITES[335] = 29
  1129. PREREQUISITES[336] = 30
  1130. PREREQUISITES[337] = 30
  1131. PREREQUISITES[338] = 30
  1132. PREREQUISITES[339] = 30
  1133. PREREQUISITES[340] = 30
  1134. PREREQUISITES[341] = 30
  1135. PREREQUISITES[342] = 31
  1136. PREREQUISITES[343] = 31
  1137. PREREQUISITES[344] = 31
  1138. PREREQUISITES[345] = 31
  1139. PREREQUISITES[346] = 31
  1140. PREREQUISITES[347] = 31
  1141. PREREQUISITES[348] = 32
  1142. PREREQUISITES[349] = 32
  1143. PREREQUISITES[350] = 32
  1144. PREREQUISITES[351] = 32
  1145. PREREQUISITES[352] = 32
  1146. PREREQUISITES[353] = 32
  1147. PREREQUISITES[354] = 33
  1148. PREREQUISITES[355] = 33
  1149. PREREQUISITES[356] = 33
  1150. PREREQUISITES[357] = 33
  1151. PREREQUISITES[358] = 33
  1152. PREREQUISITES[359] = 33
  1153. PREREQUISITES[360] = 34
  1154. PREREQUISITES[361] = 34
  1155. PREREQUISITES[362] = 34
  1156. PREREQUISITES[363] = 34
  1157. PREREQUISITES[364] = 34
  1158. PREREQUISITES[365] = 34
  1159. #===========Wasser===========
  1160. PREREQUISITES[36] = 35
  1161. PREREQUISITES[37] = 36
  1162. PREREQUISITES[38] = 37
  1163. PREREQUISITES[39] = 38
  1164. PREREQUISITES[40] = 39
  1165. PREREQUISITES[41] = 40
  1166. PREREQUISITES[42] = 41
  1167. PREREQUISITES[43] = 42
  1168. PREREQUISITES[44] = 43
  1169. PREREQUISITES[45] = 44
  1170. PREREQUISITES[46] = 45
  1171. PREREQUISITES[47] = 46
  1172. PREREQUISITES[48] = 47
  1173. PREREQUISITES[49] = 48
  1174. PREREQUISITES[50] = 49
  1175. PREREQUISITES[51] = 50
  1176. PREREQUISITES[52] = 51
  1177. PREREQUISITES[53] = 52
  1178. PREREQUISITES[54] = 53
  1179. PREREQUISITES[368] = 35
  1180. PREREQUISITES[369] = 35
  1181. PREREQUISITES[370] = 35
  1182. PREREQUISITES[371] = 35
  1183. PREREQUISITES[372] = 35
  1184. PREREQUISITES[373] = 35
  1185. PREREQUISITES[374] = 36
  1186. PREREQUISITES[375] = 36
  1187. PREREQUISITES[376] = 36
  1188. PREREQUISITES[377] = 36
  1189. PREREQUISITES[378] = 36
  1190. PREREQUISITES[379] = 36
  1191. PREREQUISITES[380] = 37
  1192. PREREQUISITES[381] = 37
  1193. PREREQUISITES[382] = 37
  1194. PREREQUISITES[383] = 37
  1195. PREREQUISITES[384] = 37
  1196. PREREQUISITES[385] = 37
  1197. PREREQUISITES[386] = 38
  1198. PREREQUISITES[387] = 38
  1199. PREREQUISITES[388] = 38
  1200. PREREQUISITES[389] = 38
  1201. PREREQUISITES[390] = 38
  1202. PREREQUISITES[391] = 38
  1203. PREREQUISITES[392] = 39
  1204. PREREQUISITES[393] = 39
  1205. PREREQUISITES[394] = 39
  1206. PREREQUISITES[395] = 39
  1207. PREREQUISITES[396] = 39
  1208. PREREQUISITES[397] = 39
  1209. PREREQUISITES[398] = 40
  1210. PREREQUISITES[399] = 40
  1211. PREREQUISITES[400] = 40
  1212. PREREQUISITES[401] = 40
  1213. PREREQUISITES[402] = 40
  1214. PREREQUISITES[403] = 40
  1215. PREREQUISITES[404] = 41
  1216. PREREQUISITES[405] = 41
  1217. PREREQUISITES[406] = 41
  1218. PREREQUISITES[407] = 41
  1219. PREREQUISITES[408] = 41
  1220. PREREQUISITES[409] = 41
  1221. PREREQUISITES[410] = 42
  1222. PREREQUISITES[411] = 42
  1223. PREREQUISITES[412] = 42
  1224. PREREQUISITES[413] = 42
  1225. PREREQUISITES[414] = 42
  1226. PREREQUISITES[415] = 42
  1227. PREREQUISITES[416] = 43
  1228. PREREQUISITES[417] = 43
  1229. PREREQUISITES[418] = 43
  1230. PREREQUISITES[419] = 43
  1231. PREREQUISITES[420] = 43
  1232. PREREQUISITES[421] = 43
  1233. PREREQUISITES[422] = 44
  1234. PREREQUISITES[423] = 44
  1235. PREREQUISITES[424] = 44
  1236. PREREQUISITES[425] = 44
  1237. PREREQUISITES[426] = 44
  1238. PREREQUISITES[427] = 44
  1239. PREREQUISITES[428] = 45
  1240. PREREQUISITES[429] = 45
  1241. PREREQUISITES[430] = 45
  1242. PREREQUISITES[431] = 45
  1243. PREREQUISITES[432] = 45
  1244. PREREQUISITES[433] = 45
  1245. PREREQUISITES[434] = 46
  1246. PREREQUISITES[435] = 46
  1247. PREREQUISITES[436] = 46
  1248. PREREQUISITES[437] = 46
  1249. PREREQUISITES[438] = 46
  1250. PREREQUISITES[439] = 46
  1251. PREREQUISITES[440] = 47
  1252. PREREQUISITES[441] = 47
  1253. PREREQUISITES[442] = 47
  1254. PREREQUISITES[443] = 47
  1255. PREREQUISITES[444] = 47
  1256. PREREQUISITES[445] = 47
  1257. PREREQUISITES[446] = 48
  1258. PREREQUISITES[447] = 48
  1259. PREREQUISITES[448] = 48
  1260. PREREQUISITES[449] = 48
  1261. PREREQUISITES[450] = 48
  1262. PREREQUISITES[451] = 48
  1263. PREREQUISITES[452] = 49
  1264. PREREQUISITES[453] = 49
  1265. PREREQUISITES[454] = 49
  1266. PREREQUISITES[455] = 49
  1267. PREREQUISITES[456] = 49
  1268. PREREQUISITES[457] = 49
  1269. PREREQUISITES[458] = 50
  1270. PREREQUISITES[459] = 50
  1271. PREREQUISITES[460] = 50
  1272. PREREQUISITES[461] = 50
  1273. PREREQUISITES[462] = 50
  1274. PREREQUISITES[463] = 50
  1275. PREREQUISITES[464] = 51
  1276. PREREQUISITES[465] = 51
  1277. PREREQUISITES[466] = 51
  1278. PREREQUISITES[467] = 51
  1279. PREREQUISITES[468] = 51
  1280. PREREQUISITES[469] = 51
  1281. PREREQUISITES[470] = 52
  1282. PREREQUISITES[471] = 52
  1283. PREREQUISITES[472] = 52
  1284. PREREQUISITES[473] = 52
  1285. PREREQUISITES[474] = 52
  1286. PREREQUISITES[475] = 52
  1287. PREREQUISITES[476] = 53
  1288. PREREQUISITES[477] = 53
  1289. PREREQUISITES[478] = 53
  1290. PREREQUISITES[479] = 53
  1291. PREREQUISITES[480] = 53
  1292. PREREQUISITES[481] = 53
  1293. PREREQUISITES[482] = 54
  1294. PREREQUISITES[483] = 54
  1295. PREREQUISITES[484] = 54
  1296. PREREQUISITES[485] = 54
  1297. PREREQUISITES[486] = 54
  1298. PREREQUISITES[487] = 54
  1299. #===========Wind=============
  1300. PREREQUISITES[56] = 55
  1301. PREREQUISITES[57] = 56
  1302. PREREQUISITES[58] = 57
  1303. PREREQUISITES[59] = 58
  1304. PREREQUISITES[60] = 59
  1305. PREREQUISITES[61] = 60
  1306. PREREQUISITES[62] = 61
  1307. PREREQUISITES[63] = 62
  1308. PREREQUISITES[64] = 63
  1309. PREREQUISITES[65] = 64
  1310. PREREQUISITES[66] = 65
  1311. PREREQUISITES[67] = 66
  1312. PREREQUISITES[68] = 67
  1313. PREREQUISITES[69] = 68
  1314. PREREQUISITES[70] = 69
  1315. PREREQUISITES[71] = 70
  1316. PREREQUISITES[72] = 71
  1317. PREREQUISITES[73] = 72
  1318. PREREQUISITES[74] = 73
  1319. PREREQUISITES[490] = 55
  1320. PREREQUISITES[491] = 55
  1321. PREREQUISITES[492] = 55
  1322. PREREQUISITES[493] = 55
  1323. PREREQUISITES[494] = 55
  1324. PREREQUISITES[495] = 55
  1325. PREREQUISITES[496] = 56
  1326. PREREQUISITES[497] = 56
  1327. PREREQUISITES[498] = 56
  1328. PREREQUISITES[499] = 56
  1329. PREREQUISITES[500] = 56
  1330. PREREQUISITES[501] = 56
  1331. PREREQUISITES[502] = 57
  1332. PREREQUISITES[503] = 57
  1333. PREREQUISITES[504] = 57
  1334. PREREQUISITES[505] = 57
  1335. PREREQUISITES[506] = 57
  1336. PREREQUISITES[507] = 57
  1337. PREREQUISITES[508] = 58
  1338. PREREQUISITES[509] = 58
  1339. PREREQUISITES[510] = 58
  1340. PREREQUISITES[511] = 58
  1341. PREREQUISITES[512] = 58
  1342. PREREQUISITES[513] = 58
  1343. PREREQUISITES[514] = 59
  1344. PREREQUISITES[515] = 59
  1345. PREREQUISITES[516] = 59
  1346. PREREQUISITES[517] = 59
  1347. PREREQUISITES[518] = 59
  1348. PREREQUISITES[519] = 59
  1349. PREREQUISITES[520] = 60
  1350. PREREQUISITES[521] = 60
  1351. PREREQUISITES[522] = 60
  1352. PREREQUISITES[523] = 60
  1353. PREREQUISITES[524] = 60
  1354. PREREQUISITES[525] = 60
  1355. PREREQUISITES[526] = 61
  1356. PREREQUISITES[527] = 61
  1357. PREREQUISITES[528] = 61
  1358. PREREQUISITES[529] = 61
  1359. PREREQUISITES[530] = 61
  1360. PREREQUISITES[531] = 61
  1361. PREREQUISITES[532] = 62
  1362. PREREQUISITES[533] = 62
  1363. PREREQUISITES[534] = 62
  1364. PREREQUISITES[535] = 62
  1365. PREREQUISITES[536] = 62
  1366. PREREQUISITES[537] = 62
  1367. PREREQUISITES[538] = 63
  1368. PREREQUISITES[539] = 63
  1369. PREREQUISITES[540] = 63
  1370. PREREQUISITES[541] = 63
  1371. PREREQUISITES[542] = 63
  1372. PREREQUISITES[543] = 63
  1373. PREREQUISITES[544] = 64
  1374. PREREQUISITES[545] = 64
  1375. PREREQUISITES[546] = 64
  1376. PREREQUISITES[547] = 64
  1377. PREREQUISITES[548] = 64
  1378. PREREQUISITES[549] = 64
  1379. PREREQUISITES[550] = 65
  1380. PREREQUISITES[551] = 65
  1381. PREREQUISITES[552] = 65
  1382. PREREQUISITES[553] = 65
  1383. PREREQUISITES[554] = 65
  1384. PREREQUISITES[555] = 65
  1385. PREREQUISITES[556] = 66
  1386. PREREQUISITES[557] = 66
  1387. PREREQUISITES[558] = 66
  1388. PREREQUISITES[559] = 66
  1389. PREREQUISITES[560] = 66
  1390. PREREQUISITES[561] = 66
  1391. PREREQUISITES[562] = 67
  1392. PREREQUISITES[563] = 67
  1393. PREREQUISITES[564] = 67
  1394. PREREQUISITES[565] = 67
  1395. PREREQUISITES[566] = 67
  1396. PREREQUISITES[567] = 67
  1397. PREREQUISITES[568] = 68
  1398. PREREQUISITES[569] = 68
  1399. PREREQUISITES[570] = 68
  1400. PREREQUISITES[571] = 68
  1401. PREREQUISITES[572] = 68
  1402. PREREQUISITES[573] = 68
  1403. PREREQUISITES[574] = 69
  1404. PREREQUISITES[575] = 69
  1405. PREREQUISITES[576] = 69
  1406. PREREQUISITES[577] = 69
  1407. PREREQUISITES[578] = 69
  1408. PREREQUISITES[579] = 69
  1409. PREREQUISITES[580] = 70
  1410. PREREQUISITES[581] = 70
  1411. PREREQUISITES[582] = 70
  1412. PREREQUISITES[583] = 70
  1413. PREREQUISITES[584] = 70
  1414. PREREQUISITES[585] = 70
  1415. PREREQUISITES[586] = 71
  1416. PREREQUISITES[587] = 71
  1417. PREREQUISITES[588] = 71
  1418. PREREQUISITES[589] = 71
  1419. PREREQUISITES[590] = 71
  1420. PREREQUISITES[591] = 71
  1421. PREREQUISITES[592] = 72
  1422. PREREQUISITES[593] = 72
  1423. PREREQUISITES[594] = 72
  1424. PREREQUISITES[595] = 72
  1425. PREREQUISITES[596] = 72
  1426. PREREQUISITES[597] = 72
  1427. PREREQUISITES[598] = 73
  1428. PREREQUISITES[599] = 73
  1429. PREREQUISITES[600] = 73
  1430. PREREQUISITES[601] = 73
  1431. PREREQUISITES[602] = 73
  1432. PREREQUISITES[603] = 73
  1433. PREREQUISITES[604] = 74
  1434. PREREQUISITES[605] = 74
  1435. PREREQUISITES[606] = 74
  1436. PREREQUISITES[607] = 74
  1437. PREREQUISITES[608] = 74
  1438. PREREQUISITES[609] = 74
  1439. #===========Erde=============
  1440. PREREQUISITES[76] = 75
  1441. PREREQUISITES[77] = 76
  1442. PREREQUISITES[78] = 77
  1443. PREREQUISITES[79] = 78
  1444. PREREQUISITES[80] = 79
  1445. PREREQUISITES[81] = 80
  1446. PREREQUISITES[82] = 81
  1447. PREREQUISITES[83] = 82
  1448. PREREQUISITES[84] = 83
  1449. PREREQUISITES[85] = 84
  1450. PREREQUISITES[86] = 85
  1451. PREREQUISITES[87] = 86
  1452. PREREQUISITES[88] = 87
  1453. PREREQUISITES[89] = 88
  1454. PREREQUISITES[90] = 89
  1455. PREREQUISITES[91] = 90
  1456. PREREQUISITES[92] = 91
  1457. PREREQUISITES[93] = 92
  1458. PREREQUISITES[94] = 93
  1459. PREREQUISITES[612] = 75
  1460. PREREQUISITES[613] = 75
  1461. PREREQUISITES[614] = 75
  1462. PREREQUISITES[615] = 75
  1463. PREREQUISITES[616] = 75
  1464. PREREQUISITES[617] = 75
  1465. PREREQUISITES[618] = 76
  1466. PREREQUISITES[619] = 76
  1467. PREREQUISITES[620] = 76
  1468. PREREQUISITES[621] = 76
  1469. PREREQUISITES[622] = 76
  1470. PREREQUISITES[623] = 76
  1471. PREREQUISITES[624] = 77
  1472. PREREQUISITES[625] = 77
  1473. PREREQUISITES[626] = 77
  1474. PREREQUISITES[627] = 77
  1475. PREREQUISITES[628] = 77
  1476. PREREQUISITES[629] = 77
  1477. PREREQUISITES[630] = 78
  1478. PREREQUISITES[631] = 78
  1479. PREREQUISITES[632] = 78
  1480. PREREQUISITES[633] = 78
  1481. PREREQUISITES[634] = 78
  1482. PREREQUISITES[635] = 78
  1483. PREREQUISITES[636] = 79
  1484. PREREQUISITES[637] = 79
  1485. PREREQUISITES[638] = 79
  1486. PREREQUISITES[639] = 79
  1487. PREREQUISITES[640] = 79
  1488. PREREQUISITES[641] = 79
  1489. PREREQUISITES[642] = 80
  1490. PREREQUISITES[643] = 80
  1491. PREREQUISITES[644] = 80
  1492. PREREQUISITES[645] = 80
  1493. PREREQUISITES[646] = 80
  1494. PREREQUISITES[647] = 80
  1495. PREREQUISITES[648] = 81
  1496. PREREQUISITES[649] = 81
  1497. PREREQUISITES[650] = 81
  1498. PREREQUISITES[651] = 81
  1499. PREREQUISITES[652] = 81
  1500. PREREQUISITES[653] = 81
  1501. PREREQUISITES[654] = 82
  1502. PREREQUISITES[655] = 82
  1503. PREREQUISITES[656] = 82
  1504. PREREQUISITES[657] = 82
  1505. PREREQUISITES[658] = 82
  1506. PREREQUISITES[659] = 82
  1507. PREREQUISITES[660] = 83
  1508. PREREQUISITES[661] = 83
  1509. PREREQUISITES[662] = 83
  1510. PREREQUISITES[663] = 83
  1511. PREREQUISITES[664] = 83
  1512. PREREQUISITES[665] = 83
  1513. PREREQUISITES[666] = 84
  1514. PREREQUISITES[667] = 84
  1515. PREREQUISITES[668] = 84
  1516. PREREQUISITES[669] = 84
  1517. PREREQUISITES[670] = 84
  1518. PREREQUISITES[671] = 84
  1519. PREREQUISITES[672] = 85
  1520. PREREQUISITES[673] = 85
  1521. PREREQUISITES[674] = 85
  1522. PREREQUISITES[675] = 85
  1523. PREREQUISITES[676] = 85
  1524. PREREQUISITES[677] = 85
  1525. PREREQUISITES[678] = 86
  1526. PREREQUISITES[679] = 86
  1527. PREREQUISITES[680] = 86
  1528. PREREQUISITES[681] = 86
  1529. PREREQUISITES[682] = 86
  1530. PREREQUISITES[683] = 86
  1531. PREREQUISITES[684] = 87
  1532. PREREQUISITES[685] = 87
  1533. PREREQUISITES[686] = 87
  1534. PREREQUISITES[687] = 87
  1535. PREREQUISITES[688] = 87
  1536. PREREQUISITES[689] = 87
  1537. PREREQUISITES[690] = 88
  1538. PREREQUISITES[691] = 88
  1539. PREREQUISITES[692] = 88
  1540. PREREQUISITES[693] = 88
  1541. PREREQUISITES[694] = 88
  1542. PREREQUISITES[695] = 88
  1543. PREREQUISITES[696] = 89
  1544. PREREQUISITES[697] = 89
  1545. PREREQUISITES[698] = 89
  1546. PREREQUISITES[699] = 89
  1547. PREREQUISITES[700] = 89
  1548. PREREQUISITES[701] = 89
  1549. PREREQUISITES[702] = 90
  1550. PREREQUISITES[703] = 90
  1551. PREREQUISITES[704] = 90
  1552. PREREQUISITES[705] = 90
  1553. PREREQUISITES[706] = 90
  1554. PREREQUISITES[707] = 90
  1555. PREREQUISITES[708] = 91
  1556. PREREQUISITES[709] = 91
  1557. PREREQUISITES[710] = 91
  1558. PREREQUISITES[711] = 91
  1559. PREREQUISITES[712] = 91
  1560. PREREQUISITES[713] = 91
  1561. PREREQUISITES[714] = 92
  1562. PREREQUISITES[715] = 92
  1563. PREREQUISITES[716] = 92
  1564. PREREQUISITES[717] = 92
  1565. PREREQUISITES[718] = 92
  1566. PREREQUISITES[719] = 92
  1567. PREREQUISITES[720] = 93
  1568. PREREQUISITES[721] = 93
  1569. PREREQUISITES[722] = 93
  1570. PREREQUISITES[723] = 93
  1571. PREREQUISITES[724] = 93
  1572. PREREQUISITES[725] = 93
  1573. PREREQUISITES[726] = 94
  1574. PREREQUISITES[727] = 94
  1575. PREREQUISITES[728] = 94
  1576. PREREQUISITES[729] = 94
  1577. PREREQUISITES[730] = 94
  1578. PREREQUISITES[731] = 94
  1579. #===========Licht=============
  1580. PREREQUISITES[96] = 95
  1581. PREREQUISITES[97] = 96
  1582. PREREQUISITES[98] = 97
  1583. PREREQUISITES[99] = 98
  1584. PREREQUISITES[100] = 99
  1585. PREREQUISITES[101] = 100
  1586. PREREQUISITES[102] = 101
  1587. PREREQUISITES[103] = 102
  1588. PREREQUISITES[104] = 103
  1589. PREREQUISITES[105] = 104
  1590. PREREQUISITES[106] = 105
  1591. PREREQUISITES[107] = 106
  1592. PREREQUISITES[108] = 107
  1593. PREREQUISITES[109] = 108
  1594. PREREQUISITES[110] = 109
  1595. PREREQUISITES[111] = 110
  1596. PREREQUISITES[112] = 111
  1597. PREREQUISITES[113] = 112
  1598. PREREQUISITES[114] = 113
  1599. PREREQUISITES[734] = 95
  1600. PREREQUISITES[735] = 95
  1601. PREREQUISITES[736] = 95
  1602. PREREQUISITES[737] = 95
  1603. PREREQUISITES[738] = 95
  1604. PREREQUISITES[739] = 95
  1605. PREREQUISITES[740] = 96
  1606. PREREQUISITES[741] = 96
  1607. PREREQUISITES[742] = 96
  1608. PREREQUISITES[743] = 96
  1609. PREREQUISITES[744] = 96
  1610. PREREQUISITES[745] = 96
  1611. PREREQUISITES[746] = 97
  1612. PREREQUISITES[747] = 97
  1613. PREREQUISITES[748] = 97
  1614. PREREQUISITES[749] = 97
  1615. PREREQUISITES[750] = 97
  1616. PREREQUISITES[751] = 97
  1617. PREREQUISITES[752] = 98
  1618. PREREQUISITES[753] = 98
  1619. PREREQUISITES[754] = 98
  1620. PREREQUISITES[755] = 98
  1621. PREREQUISITES[756] = 98
  1622. PREREQUISITES[757] = 98
  1623. PREREQUISITES[758] = 99
  1624. PREREQUISITES[759] = 99
  1625. PREREQUISITES[760] = 99
  1626. PREREQUISITES[761] = 99
  1627. PREREQUISITES[762] = 99
  1628. PREREQUISITES[763] = 99
  1629. PREREQUISITES[764] = 100
  1630. PREREQUISITES[765] = 100
  1631. PREREQUISITES[766] = 100
  1632. PREREQUISITES[767] = 100
  1633. PREREQUISITES[768] = 100
  1634. PREREQUISITES[769] = 100
  1635. PREREQUISITES[770] = 101
  1636. PREREQUISITES[771] = 101
  1637. PREREQUISITES[772] = 101
  1638. PREREQUISITES[773] = 101
  1639. PREREQUISITES[774] = 101
  1640. PREREQUISITES[775] = 101
  1641. PREREQUISITES[776] = 102
  1642. PREREQUISITES[777] = 102
  1643. PREREQUISITES[778] = 102
  1644. PREREQUISITES[779] = 102
  1645. PREREQUISITES[780] = 102
  1646. PREREQUISITES[781] = 102
  1647. PREREQUISITES[782] = 103
  1648. PREREQUISITES[673] = 103
  1649. PREREQUISITES[784] = 103
  1650. PREREQUISITES[785] = 103
  1651. PREREQUISITES[786] = 103
  1652. PREREQUISITES[787] = 103
  1653. PREREQUISITES[788] = 104
  1654. PREREQUISITES[789] = 104
  1655. PREREQUISITES[790] = 104
  1656. PREREQUISITES[791] = 104
  1657. PREREQUISITES[792] = 104
  1658. PREREQUISITES[793] = 104
  1659. PREREQUISITES[794] = 105
  1660. PREREQUISITES[795] = 105
  1661. PREREQUISITES[796] = 105
  1662. PREREQUISITES[797] = 105
  1663. PREREQUISITES[798] = 105
  1664. PREREQUISITES[799] = 105
  1665. PREREQUISITES[800] = 106
  1666. PREREQUISITES[801] = 106
  1667. PREREQUISITES[802] = 106
  1668. PREREQUISITES[803] = 106
  1669. PREREQUISITES[804] = 106
  1670. PREREQUISITES[805] = 106
  1671. PREREQUISITES[806] = 107
  1672. PREREQUISITES[807] = 107
  1673. PREREQUISITES[808] = 107
  1674. PREREQUISITES[809] = 107
  1675. PREREQUISITES[810] = 107
  1676. PREREQUISITES[811] = 107
  1677. PREREQUISITES[812] = 108
  1678. PREREQUISITES[813] = 108
  1679. PREREQUISITES[814] = 108
  1680. PREREQUISITES[815] = 108
  1681. PREREQUISITES[816] = 108
  1682. PREREQUISITES[817] = 108
  1683. PREREQUISITES[818] = 109
  1684. PREREQUISITES[819] = 109
  1685. PREREQUISITES[820] = 109
  1686. PREREQUISITES[821] = 109
  1687. PREREQUISITES[822] = 109
  1688. PREREQUISITES[823] = 109
  1689. PREREQUISITES[824] = 110
  1690. PREREQUISITES[825] = 110
  1691. PREREQUISITES[826] = 110
  1692. PREREQUISITES[827] = 110
  1693. PREREQUISITES[828] = 110
  1694. PREREQUISITES[829] = 110
  1695. PREREQUISITES[830] = 111
  1696. PREREQUISITES[831] = 111
  1697. PREREQUISITES[832] = 111
  1698. PREREQUISITES[833] = 111
  1699. PREREQUISITES[834] = 111
  1700. PREREQUISITES[835] = 111
  1701. PREREQUISITES[836] = 112
  1702. PREREQUISITES[837] = 112
  1703. PREREQUISITES[838] = 112
  1704. PREREQUISITES[839] = 112
  1705. PREREQUISITES[840] = 112
  1706. PREREQUISITES[841] = 112
  1707. PREREQUISITES[842] = 113
  1708. PREREQUISITES[843] = 113
  1709. PREREQUISITES[844] = 113
  1710. PREREQUISITES[845] = 113
  1711. PREREQUISITES[846] = 113
  1712. PREREQUISITES[847] = 113
  1713. PREREQUISITES[848] = 114
  1714. PREREQUISITES[849] = 114
  1715. PREREQUISITES[850] = 114
  1716. PREREQUISITES[851] = 114
  1717. PREREQUISITES[852] = 114
  1718. PREREQUISITES[853] = 114
  1719. #===========Dunkel=============
  1720. PREREQUISITES[116] = 115
  1721. PREREQUISITES[117] = 116
  1722. PREREQUISITES[118] = 117
  1723. PREREQUISITES[119] = 118
  1724. PREREQUISITES[120] = 119
  1725. PREREQUISITES[121] = 120
  1726. PREREQUISITES[122] = 121
  1727. PREREQUISITES[123] = 122
  1728. PREREQUISITES[124] = 123
  1729. PREREQUISITES[125] = 124
  1730. PREREQUISITES[126] = 125
  1731. PREREQUISITES[127] = 126
  1732. PREREQUISITES[128] = 127
  1733. PREREQUISITES[129] = 128
  1734. PREREQUISITES[130] = 129
  1735. PREREQUISITES[131] = 130
  1736. PREREQUISITES[132] = 131
  1737. PREREQUISITES[133] = 132
  1738. PREREQUISITES[134] = 133
  1739. PREREQUISITES[856] = 115
  1740. PREREQUISITES[857] = 115
  1741. PREREQUISITES[858] = 115
  1742. PREREQUISITES[859] = 115
  1743. PREREQUISITES[860] = 115
  1744. PREREQUISITES[861] = 115
  1745. PREREQUISITES[862] = 116
  1746. PREREQUISITES[863] = 116
  1747. PREREQUISITES[864] = 116
  1748. PREREQUISITES[865] = 116
  1749. PREREQUISITES[866] = 116
  1750. PREREQUISITES[867] = 116
  1751. PREREQUISITES[868] = 117
  1752. PREREQUISITES[869] = 117
  1753. PREREQUISITES[870] = 117
  1754. PREREQUISITES[871] = 117
  1755. PREREQUISITES[872] = 117
  1756. PREREQUISITES[873] = 117
  1757. PREREQUISITES[874] = 118
  1758. PREREQUISITES[875] = 118
  1759. PREREQUISITES[876] = 118
  1760. PREREQUISITES[877] = 118
  1761. PREREQUISITES[878] = 118
  1762. PREREQUISITES[879] = 118
  1763. PREREQUISITES[880] = 119
  1764. PREREQUISITES[881] = 119
  1765. PREREQUISITES[882] = 119
  1766. PREREQUISITES[883] = 119
  1767. PREREQUISITES[884] = 119
  1768. PREREQUISITES[885] = 119
  1769. PREREQUISITES[886] = 120
  1770. PREREQUISITES[887] = 120
  1771. PREREQUISITES[888] = 120
  1772. PREREQUISITES[889] = 120
  1773. PREREQUISITES[890] = 120
  1774. PREREQUISITES[891] = 120
  1775. PREREQUISITES[892] = 121
  1776. PREREQUISITES[893] = 121
  1777. PREREQUISITES[894] = 121
  1778. PREREQUISITES[895] = 121
  1779. PREREQUISITES[896] = 121
  1780. PREREQUISITES[897] = 121
  1781. PREREQUISITES[898] = 122
  1782. PREREQUISITES[899] = 122
  1783. PREREQUISITES[900] = 122
  1784. PREREQUISITES[901] = 122
  1785. PREREQUISITES[902] = 122
  1786. PREREQUISITES[903] = 122
  1787. PREREQUISITES[904] = 123
  1788. PREREQUISITES[905] = 123
  1789. PREREQUISITES[906] = 123
  1790. PREREQUISITES[907] = 123
  1791. PREREQUISITES[908] = 123
  1792. PREREQUISITES[909] = 123
  1793. PREREQUISITES[910] = 124
  1794. PREREQUISITES[911] = 124
  1795. PREREQUISITES[912] = 124
  1796. PREREQUISITES[913] = 124
  1797. PREREQUISITES[914] = 124
  1798. PREREQUISITES[915] = 124
  1799. PREREQUISITES[916] = 125
  1800. PREREQUISITES[917] = 125
  1801. PREREQUISITES[918] = 125
  1802. PREREQUISITES[919] = 125
  1803. PREREQUISITES[920] = 125
  1804. PREREQUISITES[921] = 125
  1805. PREREQUISITES[922] = 126
  1806. PREREQUISITES[923] = 126
  1807. PREREQUISITES[924] = 126
  1808. PREREQUISITES[925] = 126
  1809. PREREQUISITES[926] = 126
  1810. PREREQUISITES[927] = 126
  1811. PREREQUISITES[928] = 127
  1812. PREREQUISITES[929] = 127
  1813. PREREQUISITES[930] = 127
  1814. PREREQUISITES[931] = 127
  1815. PREREQUISITES[932] = 127
  1816. PREREQUISITES[933] = 127
  1817. PREREQUISITES[934] = 128
  1818. PREREQUISITES[935] = 128
  1819. PREREQUISITES[936] = 128
  1820. PREREQUISITES[937] = 128
  1821. PREREQUISITES[938] = 128
  1822. PREREQUISITES[939] = 128
  1823. PREREQUISITES[940] = 129
  1824. PREREQUISITES[941] = 129
  1825. PREREQUISITES[942] = 129
  1826. PREREQUISITES[943] = 129
  1827. PREREQUISITES[944] = 129
  1828. PREREQUISITES[945] = 129
  1829. PREREQUISITES[946] = 130
  1830. PREREQUISITES[947] = 130
  1831. PREREQUISITES[948] = 130
  1832. PREREQUISITES[949] = 130
  1833. PREREQUISITES[950] = 130
  1834. PREREQUISITES[951] = 130
  1835. PREREQUISITES[952] = 131
  1836. PREREQUISITES[953] = 131
  1837. PREREQUISITES[954] = 131
  1838. PREREQUISITES[955] = 131
  1839. PREREQUISITES[956] = 131
  1840. PREREQUISITES[957] = 131
  1841. PREREQUISITES[958] = 132
  1842. PREREQUISITES[959] = 132
  1843. PREREQUISITES[960] = 132
  1844. PREREQUISITES[961] = 132
  1845. PREREQUISITES[962] = 132
  1846. PREREQUISITES[963] = 132
  1847. PREREQUISITES[964] = 133
  1848. PREREQUISITES[965] = 133
  1849. PREREQUISITES[966] = 133
  1850. PREREQUISITES[967] = 133
  1851. PREREQUISITES[968] = 133
  1852. PREREQUISITES[969] = 133
  1853. PREREQUISITES[970] = 134
  1854. PREREQUISITES[971] = 134
  1855. PREREQUISITES[972] = 134
  1856. PREREQUISITES[973] = 134
  1857. PREREQUISITES[974] = 134
  1858. PREREQUISITES[975] = 134
  1859.  
  1860.  
  1861.  
  1862. # == PASSIVE EFFECT: ACTOR ==
  1863. # Skills within this group will give the actor bonuses to their max HP,
  1864. # Strength, Physical Defense and like scores. The skill must be learned
  1865. # within the Skill Tree for the bonuses to take effect.
  1866. #
  1867. # Syntax: [ MaxHP+, MaxSP+, STR+, DEX+, AGI+, INT+, PDEF+, MDEF+ ]
  1868. #
  1869. # Skill ID Passive effect changes
  1870. # ===================== ======================
  1871. PASSIVE_EFFECT[15] = [0,0,0,0,0,0]
  1872. #PASSIVE_EFFECT[6] = [15,30,1,2,3,4,5,6]
  1873. #PASSIVE_EFFECT[13] = [20,30,1,2,3,4,5,6]
  1874.  
  1875.  
  1876.  
  1877. #--------------------------------------------------------------------------
  1878. # * PART V: VISIBILITY & FEATURES
  1879. #--------------------------------------------------------------------------
  1880.  
  1881. # == HIGHLIGHTED NOTICE SETTINGS ==
  1882. # These are the values that help notify the player if a skill needs more
  1883. # points to attain, or is used to highlight the rank value drawn over the
  1884. # icons in the tree itself.
  1885. #
  1886. UNAVAILABLE_COLOR = Color.new(255, 0, 0) # Set color to unavailable text
  1887. RANK_DISPLAY_COLOR = Color.new(255,0,255) # Sets color to rank in tree
  1888. RANK_DISPLAY_SIZE = 16 # Adjusts rank text size
  1889. RANK_DISPLAY_SHADOW = true # If rank has shadow effect
  1890.  
  1891.  
  1892. # == WINDOW AREAS ==
  1893. # This allows you to set the position, dimensions and opacity of the
  1894. # individual windows of the tree system.
  1895. #
  1896. # Syntax = [ x, y, width, height, opacity, backopacity ]
  1897. #
  1898. SKILL_NAME_AREA = [500, 416, 140, 64, 255, 100] # Actor Name
  1899. SKILL_TABS_AREA = [ 0, 0, 520, 64, 255, 100] # Selection
  1900. SKILL_WINDOW_AREA = [ 0, 64, 640, 265, 255, 100] # Tree Area
  1901. SKILL_INFO_AREA = [0, 330, 500, 150, 0, 0] # Description
  1902. SKILL_POINT_AREA = [520, 0, 120, 64, 255, 100] # Points Remaining
  1903.  
  1904.  
  1905. # == INFO WINDOW AREAS ==
  1906. # This allows you to set the position, dimensions and alignment of the
  1907. # text in the information window. All arrays follow the same syntax.
  1908. #
  1909. # Syntax = [ x, y, width, height, alignment]
  1910. # Alignment values are: 0=left, 1=right, 2=center
  1911. # The only exception is TEXT_SKILLICON, which has no centering value.
  1912. #
  1913. TEXT_SKILLICON = [ 0, 0 ] # The icon position
  1914. TEXT_SKILLNAME = [ 28, -4, 400, 32, 0 ] # The Skill Name
  1915. TEXT_SKILLRANK = [ 0, 20, 450, 32, 0 ] # The Skill's Rank
  1916. TEXT_SKILLDESC = [ 0, 44, 450, 32, 0 ] # The Skill's Description
  1917. TEXT_SKILLCOST = [160, -4, 300, 32, 2 ] # Cost to gain or level
  1918. TEXT_SKILLSPEND = [130, 20, 330, 32, 2 ] # Points needed spent in tree
  1919. TEXT_SKILLREQUIRED = [ 0, 68, 450, 32, 0 ] # Required skills
  1920. TEXT_SKILLGAIN = [ 0, 92, 450, 32, 0 ] # Skill availability
  1921.  
  1922.  
  1923. # == SHOW/HIDE FLAGS ==
  1924. # These values are used to show or hide certain aspects or dieplays in the
  1925. # skill tree system. These are simple boolean(true/false) values.
  1926. #
  1927. SHOW_NAME_WINDOW = true # Display the actor name window?
  1928. HIDE_NAME_INACTIVE = false # Hide the name window if actor has no tree?
  1929. SHOW_NEXT_SKILL = true # Show next available skill if can level?
  1930. INFO_SHOW_ALL = true # Show info, even if skill unavailable?
  1931. RANK_SHOW_ALL = false # Show rank, even non ranking skills?
  1932. RANK_SHOW_ZERO = false # Show if rank is currently '0'
  1933. SHOW_ALL_TREE = true # Show the arrows & rank to possible skills?
  1934.  
  1935.  
  1936. # == SKILL AVAILABILITY OPACITIES ==
  1937. # This sets how solid or transparent icons are, based on the skill's avail-
  1938. # ability. The first three values in the array govern the icons for the
  1939. # actual skills while the fourth deals with the opacity of the unavailable
  1940. # icon that is typically drawn overtop.
  1941. #
  1942. # The opacity settings are a range of 0 to 255, with 255 being more opaque.
  1943. #
  1944. # Syntax: = [ Learned, Learnable, Unavailable, Unavailable-Icon]
  1945. #
  1946. SKILL_AVAILABLE = [255, 125, 50, 255]
  1947.  
  1948.  
  1949.  
  1950. #--------------------------------------------------------------------------
  1951. # * PART VI: CUSTOM GRAPHICS
  1952. #--------------------------------------------------------------------------
  1953.  
  1954. # == SKILL TREE ARROWS ==
  1955. # These three arrays hold the arrow graphics, corner graphics and the
  1956. # horizontal and vertical line graphics drawn in the skill tree. It
  1957. # should be self-explanatory. All these graphics are stored within
  1958. # the Graphics\SkillGree folder.
  1959. #
  1960. ARROW_ARRAY = ["arrowdown", "arrowup", "arrowleft", "arrowright" ]
  1961. CORNER_ARRAY = ["corner1", "corner2", "corner3", "corner4" ]
  1962. LINE_ARRAY = ["linehoriz", "linevert" ]
  1963.  
  1964.  
  1965. # == UNAVAILABLE SYMBOL ICON ==
  1966. # This is a graphic that is drawn overtop of skills that cannot be
  1967. # selected. If you do not wish to use this feature, just set it to nil.
  1968. # The icon, like the other graphics used in this system, are stored in
  1969. # the Graphics\SkillTree folder.
  1970. #
  1971. UNAVAILABLE_ICON = "Unavailable"
  1972.  
  1973.  
  1974. # == BACKGROUND ==
  1975. # This is the background image shown when the skill tree is running. It
  1976. # may be drawn behind the windows of the system, and concealed if the
  1977. # windows are not set to a transparent setting (see WINDOW AREAS for
  1978. # opacity settings).
  1979. #
  1980. # Optionally, it may be set to nil for no image background, or set to a
  1981. # value of -1 if you opt for the field map as a background.
  1982. #
  1983. # All backgrounds and like images for this system are cached within the
  1984. # Graphics\SkillTree folder
  1985. #
  1986. WINDOW_BACKGROUND = "CRD_PANO"
  1987.  
  1988.  
  1989. # == BACKGROUND ARRAY ==
  1990. # This array collection defines the background images of each skill tree
  1991. # for each actor in your database. Unlike the SKILL_TABS array, this one
  1992. # need not match up with the SKILLS_ROWS array. The image stored within
  1993. # the WINDOW_BACKGROUND value will be used in its place if not found. But
  1994. # if you were to have an actor has four skill trees defined for him alone,
  1995. # this array should have an array containing all four background images.
  1996. #
  1997. # All backgrounds and like images for this system are cached within the
  1998. # Graphics\SkillTree folder.
  1999. #
  2000. # You only need to identify the actor or actors, and their collection of
  2001. # images. Any not listed are assumed to have no background array images
  2002. # and will use the previously defined background image from the above
  2003. # system.
  2004. #
  2005. #
  2006. # BACKGROUND_LIST[2] = ["MN_BK2", "MN_BK2"] # Basil's images
  2007. # BACKGROUND_LIST[5] = ["MN_nil"] # Estelle's image
  2008.  
  2009.  
  2010. # == INFO WINDOW BACKGROUND ==
  2011. # This is the background image optionally used by the Skill Information
  2012. # window. The image is still drawn overtop of the main Skill Tree win-
  2013. # dow, but behind the information window so the windowskin and opacities
  2014. # may influence its appearance. Please make sure you create an image
  2015. # large enough to accommodate your window area. It does not stretch the
  2016. # image to fit.
  2017. #
  2018. # Optionally, just enter nil to avoid using it.
  2019. #
  2020. # And all backgrounds and like images for this system are cached within the
  2021. # Graphics\SkillTree folder
  2022. #
  2023. INFOBACKGROUND = "info"
  2024.  
  2025.  
  2026. # == INFOW WINDOW ARRAY ==
  2027. # This array collection defines the background images for the information
  2028. # window that matches the skill trees for each actor in the database. It
  2029. # works exactly like the BACKGROUND ARRAY system (above) but only relates
  2030. # to the information window.
  2031. #
  2032. # All backgrounds and like images for this system are cached within the
  2033. # Graphics\SkillTree folder
  2034. #
  2035. #
  2036. # INFOBACKGROUND_LIST[2] =[nil, "info2"] # Basil's info box
  2037. # Changes in the 2nd
  2038. # tab of his tree.
  2039.  
  2040.  
  2041.  
  2042. #--------------------------------------------------------------------------
  2043. # * PART VII: INFO WINDOW DIALOG
  2044. #--------------------------------------------------------------------------
  2045. # PURPOSE: Internationalism. This section allows the end user to change
  2046. # the text used in the system depending on his/her own language.
  2047.  
  2048. # == SKILL POINT TEXT ==
  2049. # This array holds the text for both singular and plural versions of the
  2050. # skill points text shown.
  2051. #
  2052. SKILLPOINTS_NAME = ["Skillpunkt", "Skillpunkte"]
  2053.  
  2054.  
  2055. # == RANK SCORE TEXT ==
  2056. # Thexe strings set the text that displays the skill's current rank. The
  2057. # text ' {rank_score} ' is a required placeholder that is filled with the
  2058. # actual rank score.
  2059. #
  2060. RANK_TEXT_1 = "Current Rank : {rank_score}" # If the skill has a rank
  2061. RANK_TEXT_2 = "Current Rank : 0" # If the skill has no rank
  2062.  
  2063.  
  2064. # == REQUIRED POINTS TEXT ==
  2065. # These strings set the text that displays how many points are needed
  2066. # to be spent to obtain the skill or to increase that skill's rank/level.
  2067. # And one to display how many points need to be spent in total in the tree.
  2068. # The text ' {point_score} ' is a required placeholder that is filled with
  2069. # the points needed, while the ' {point_text} ' value is a placeholder
  2070. # filled with the text from the SKILLPOINTS_NAME array, whether it is
  2071. # singular or plural.
  2072. #
  2073. POINT_COST_1 = "Benötigt {point_score} {point_text}"
  2074. POINT_COST_2 = "Benötigt {point_score} {point_text} zum leveln"
  2075. POINT_COST_3 = "Benötigt {point_score} {point_text} in diesem Element"
  2076.  
  2077.  
  2078.  
  2079. # == SKILL ACCESS TEXT ==
  2080. # This string sets the text that displays if a skill is acquired, leveled
  2081. # to its maximum rank, has another level attainable, or unavailable.
  2082. #
  2083. ACQUIRED_TXT = "Skill freigeschaltet"
  2084. ACQUIRED_LEVEL = "Maximum level acquired"
  2085. NEXT_RANKING_SKILL = "Nächster Skill: "
  2086. UNAVAILABLE = "Nicht verfügbar"
  2087.  
  2088.  
  2089. # == SKILL PREREQUISITES TEXT ==
  2090. # This string sets the text that displays if you need prerequisite skills
  2091. # to garner the new skill.
  2092. #
  2093. SKILLS_REQ = "Benötigt: "
  2094.  
  2095.  
  2096.  
  2097. end
  2098.  
  2099.  
  2100.  
  2101. #==============================================================================
  2102. # ** RPG::Cache
  2103. #------------------------------------------------------------------------------
  2104. # A module that loads each of RPGXP's graphic formats, creates a Bitmap
  2105. # object, and retains it.
  2106. #==============================================================================
  2107.  
  2108. module RPG::Cache
  2109. #--------------------------------------------------------------------------
  2110. # * SkillTree Image Folder
  2111. #--------------------------------------------------------------------------
  2112. def self.skilltree(filename)
  2113. self.load_bitmap("Graphics/SkillTree/", filename)
  2114. end
  2115. end
  2116.  
  2117.  
  2118.  
  2119. #==============================================================================
  2120. # ** RPG::Skill
  2121. #------------------------------------------------------------------------------
  2122. # Data class for skills.
  2123. #==============================================================================
  2124.  
  2125. class RPG::Skill
  2126. #--------------------------------------------------------------------------
  2127. # * Public Instance Variables
  2128. #--------------------------------------------------------------------------
  2129. attr_reader :need_update
  2130. #--------------------------------------------------------------------------
  2131. # * Alias Listings
  2132. #--------------------------------------------------------------------------
  2133. alias skilltree_rpgskill_initialize initialize
  2134. #--------------------------------------------------------------------------
  2135. # * Object Initialization
  2136. #--------------------------------------------------------------------------
  2137. def initialize
  2138. # Perform the original call
  2139. skilltree_rpgskill_initialize
  2140. # Add Skilltree values
  2141. @rank = 1
  2142. @need_update = true
  2143. end
  2144. #--------------------------------------------------------------------------
  2145. # * Set Update Needed
  2146. #--------------------------------------------------------------------------
  2147. def need_update=(need_update)
  2148. @need_update = need_update
  2149. end
  2150. #--------------------------------------------------------------------------
  2151. # * Get Skill Point Cost
  2152. #--------------------------------------------------------------------------
  2153. def skill_points_cost
  2154. value = (SkillTree::POINT_COST[@id].nil?) ? 1 : SkillTree::POINT_COST[@id]
  2155. return value
  2156. end
  2157. #--------------------------------------------------------------------------
  2158. # * Get Skill Tree Spending Points Needed
  2159. #--------------------------------------------------------------------------
  2160. def spentpoints_needed
  2161. value = SkillTree::TREE_COST.include?(@id) ? SkillTree::TREE_COST[@id] : 0
  2162. return value
  2163. end
  2164. #--------------------------------------------------------------------------
  2165. # * Defines skill's line
  2166. #--------------------------------------------------------------------------
  2167. def line(actor, tree)
  2168. for i in $game_actors[actor].initialskills[tree].keys
  2169. if $game_actors[actor].initialskills[tree][i].include?(@id)
  2170. @goodline = i
  2171. return @goodline
  2172. end
  2173. end
  2174. end
  2175. #--------------------------------------------------------------------------
  2176. # * Defines skill's position in line
  2177. #--------------------------------------------------------------------------
  2178. def position(actor, tree)
  2179. return if @goodline.nil?
  2180. for i in 0...$game_actors[actor].initialskills[tree][@goodline].size
  2181. if $game_actors[actor].initialskills[tree][@goodline][i] == (@id)
  2182. @goodposition = i
  2183. return @goodposition
  2184. end
  2185. end
  2186. end
  2187. #--------------------------------------------------------------------------
  2188. # * Defines skill's x position
  2189. #--------------------------------------------------------------------------
  2190. def x
  2191. (24 + SkillTree::SKILL_SPACING[0]) * @goodposition +
  2192. SkillTree::BORDER_SPACING[0]
  2193. end
  2194. #--------------------------------------------------------------------------
  2195. # * Defines skill's y position
  2196. #--------------------------------------------------------------------------
  2197. def y
  2198. (24 + SkillTree::SKILL_SPACING[1]) * @goodline +
  2199. SkillTree::BORDER_SPACING[1]
  2200. end
  2201. end
  2202.  
  2203.  
  2204.  
  2205. #==============================================================================
  2206. # ** Game_Battler
  2207. #------------------------------------------------------------------------------
  2208. # This class deals with battlers. It's used as a superclass for the Game_Actor
  2209. # and Game_Enemy classes.
  2210. #==============================================================================
  2211.  
  2212. class Game_Battler
  2213. #--------------------------------------------------------------------------
  2214. # * Alias Listings
  2215. #--------------------------------------------------------------------------
  2216. alias skilltree_game_battler_initialize initialize
  2217. alias skilltree_game_battler_skill_can_use? skill_can_use?
  2218. alias skilltree_game_battler_skill_effect skill_effect
  2219. alias skilltree_game_battler_item_effect item_effect
  2220. #--------------------------------------------------------------------------
  2221. # * Object Initialization
  2222. #--------------------------------------------------------------------------
  2223. def initialize
  2224. @pdef_plus = 0
  2225. @mdef_plus = 0
  2226. # Perform the original call
  2227. skilltree_game_battler_initialize
  2228. end
  2229. #--------------------------------------------------------------------------
  2230. # * Set Pdef
  2231. # pdef : new Pdef
  2232. #--------------------------------------------------------------------------
  2233. def pdef=(pdef)
  2234. @pdef_plus += pdef - self.pdef
  2235. end
  2236. #--------------------------------------------------------------------------
  2237. # * Set Mdef
  2238. # mdef : new Mdef
  2239. #--------------------------------------------------------------------------
  2240. def mdef=(mdef)
  2241. @mdef_plus += mdef - self.mdef
  2242. end
  2243. #--------------------------------------------------------------------------
  2244. # * Get Physical Defense Power
  2245. #--------------------------------------------------------------------------
  2246. def pdef
  2247. n = base_pdef + @pdef_plus
  2248. for i in @states
  2249. n *= $data_states[i].pdef_rate / 100.0
  2250. end
  2251. return Integer(n)
  2252. end
  2253. #--------------------------------------------------------------------------
  2254. # * Get Magic Defense Power
  2255. #--------------------------------------------------------------------------
  2256. def mdef
  2257. n = base_mdef + @mdef_plus
  2258. for i in @states
  2259. n *= $data_states[i].mdef_rate / 100.0
  2260. end
  2261. return Integer(n)
  2262. end
  2263. #--------------------------------------------------------------------------
  2264. # * Determine Usable Skills
  2265. # skill_id : skill ID
  2266. #--------------------------------------------------------------------------
  2267. def skill_can_use?(skill_id)
  2268. if self.is_a?(Game_Actor)
  2269. for skill in @skills
  2270. if SkillTree::RANKS.has_key?(skill)
  2271. if SkillTree::RANKS[skill].include?(skill_id)
  2272. skill_id = skill
  2273. break
  2274. end
  2275. end
  2276. end
  2277. end
  2278. return skilltree_game_battler_skill_can_use?(skill_id)
  2279. end
  2280. #--------------------------------------------------------------------------
  2281. # * Apply Skill Effects
  2282. # user : the one using skills (battler)
  2283. # skill : skill
  2284. #--------------------------------------------------------------------------
  2285. def skill_effect(user, skill)
  2286. if self.is_a?(Game_Actor)
  2287. id = skill.id
  2288. new_id = @skill_id[id]
  2289. skill = $data_skills[new_id]
  2290. end
  2291. return skilltree_game_battler_skill_effect(user, skill)
  2292. end
  2293. #--------------------------------------------------------------------------
  2294. # * Application of Item Effects
  2295. # item : item
  2296. #--------------------------------------------------------------------------
  2297. def item_effect(item)
  2298. # Perform Book Effect and return effective
  2299. book_effective = book_effect(item)
  2300. # The original call
  2301. effective = skilltree_game_battler_item_effect(item)
  2302. # Return effective (true if either original or book is true, else false)
  2303. return book_effective if book_effective == true
  2304. return effective
  2305. end
  2306. #--------------------------------------------------------------------------
  2307. # * Application of Book Effects
  2308. # item : item
  2309. #--------------------------------------------------------------------------
  2310. def book_effect(item)
  2311. effective = false
  2312. if SkillTree::BOOKS.has_key?(item.id)
  2313. skill_list = SkillTree::BOOKS[item.id]
  2314. for skill in skill_list
  2315. rank = @skill_level[skill]
  2316. rank_max = 0
  2317. if SkillTree::RANKS.has_key?(skill)
  2318. rank_max = SkillTree::RANKS[skill].size
  2319. end
  2320. if !skill_check(skill)
  2321. update_add_skill(skill)
  2322. effective = true
  2323. elsif rank < rank_max && skill_check(skill)
  2324. update_increase_skill(skill)
  2325. effective = true
  2326. end
  2327. end
  2328. end
  2329. return effective
  2330. end
  2331. #--------------------------------------------------------------------------
  2332. # * Check if Finished Learning Skill Including Ranked Skills
  2333. # skill_id : skill ID
  2334. #--------------------------------------------------------------------------
  2335. def skill_check(skill_id)
  2336. for skill in @skills
  2337. if SkillTree::RANKS.has_key?(skill)
  2338. return true if SkillTree::RANKS[skill].include?(skill_id)
  2339. end
  2340. end
  2341. return @skills.include?(skill_id)
  2342. end
  2343. #--------------------------------------------------------------------------
  2344. # * Frame Update (updating with new skill not learned)
  2345. #--------------------------------------------------------------------------
  2346. def update_add_skill(skill)
  2347. learn_skill(skill)
  2348. $data_skills[skill].need_update = true
  2349. update_actor_tree_passive_effects(skill)
  2350. end
  2351. #--------------------------------------------------------------------------
  2352. # * Learn Skill
  2353. # skill_id : skill ID
  2354. #--------------------------------------------------------------------------
  2355. def learn_skill(skill_id)
  2356. return unless (skill_id > 0 and not skill_learn?(skill_id))
  2357. @skills.push(skill_id)
  2358. @skills.sort!
  2359. end
  2360. #--------------------------------------------------------------------------
  2361. # * Frame Update (updating new skill that was learned)
  2362. #--------------------------------------------------------------------------
  2363. def update_increase_skill(skill)
  2364. rank_max = SkillTree::RANKS[skill].size
  2365. rank = @skill_level[skill]
  2366. @skill_level[skill] += 1
  2367. $data_skills[skill].need_update = true
  2368. new_id = SkillTree::RANKS[skill][@skill_level[skill]-1]
  2369. update_skill(skill, new_id)
  2370. end
  2371. #--------------------------------------------------------------------------
  2372. # * Update actor skill (based on new learned skill)
  2373. #--------------------------------------------------------------------------
  2374. def update_skill(id, new_id)
  2375. return if skill_id[id] == $data_skills[new_id].id
  2376. @skill_id[id] = $data_skills[new_id].id
  2377. @skill_icon_name[id] = $data_skills[new_id].icon_name
  2378. update_actor_tree_passive_effects(id)
  2379. return
  2380. end
  2381. #--------------------------------------------------------------------------
  2382. # * Update actor stats (support for passive skills)
  2383. #--------------------------------------------------------------------------
  2384. def update_actor_tree_passive_effects(skill)
  2385. # Get Current 'recorded' Skill ID
  2386. current_skill = @skill_id[skill]
  2387. # Get Previous 'recorded' Skill ID
  2388. prev_skill = update_actor_prev_skill_rank_id(skill_id)
  2389. # Perform passive effect removal and additions
  2390. update_actor_passive_removal(prev_skill)
  2391. update_actor_passive_addition(current_skill)
  2392. end
  2393. #--------------------------------------------------------------------------
  2394. # * Determine previous skill ID from Skill Rank Chain if any
  2395. # skill_id : skill ID
  2396. #--------------------------------------------------------------------------
  2397. def update_actor_prev_skill_rank_id(skill_id)
  2398. # Get Previous 'recorded' Skill ID
  2399. target_id = nil
  2400. for skills in @skills
  2401. next unless SkillTree::RANKS.has_key?(skills)
  2402. test = SkillTree::RANKS[skills]
  2403. ind = test.index(skill_id)
  2404. unless ind.nil?
  2405. target_id = test[ind-1] if ind > 0
  2406. end
  2407. end
  2408. return target_id
  2409. end
  2410. #--------------------------------------------------------------------------
  2411. # * Decrease actor stats from losing passive effect skill
  2412. # skill_id : skill ID
  2413. #--------------------------------------------------------------------------
  2414. def update_actor_passive_removal(skill_id)
  2415. return if skill_id.nil?
  2416. return unless SkillTree::PASSIVE_EFFECT.has_key?(skill_id)
  2417. self.maxhp -= SkillTree::PASSIVE_EFFECT[skill_id][0]
  2418. self.maxsp -= SkillTree::PASSIVE_EFFECT[skill_id][1]
  2419. self.str -= SkillTree::PASSIVE_EFFECT[skill_id][2]
  2420. self.dex -= SkillTree::PASSIVE_EFFECT[skill_id][3]
  2421. self.agi -= SkillTree::PASSIVE_EFFECT[skill_id][4]
  2422. self.int -= SkillTree::PASSIVE_EFFECT[skill_id][5]
  2423. self.pdef -= SkillTree::PASSIVE_EFFECT[skill_id][6]
  2424. self.mdef -= SkillTree::PASSIVE_EFFECT[skill_id][7]
  2425. end
  2426. #--------------------------------------------------------------------------
  2427. # * Increase actor stats after adding passive effect skill
  2428. # skill_id : skill ID
  2429. #--------------------------------------------------------------------------
  2430. def update_actor_passive_addition(skill_id)
  2431. return unless SkillTree::PASSIVE_EFFECT.has_key?(skill_id)
  2432. self.maxhp += SkillTree::PASSIVE_EFFECT[skill_id][0]
  2433. self.maxsp += SkillTree::PASSIVE_EFFECT[skill_id][1]
  2434. self.str += SkillTree::PASSIVE_EFFECT[skill_id][2]
  2435. self.dex += SkillTree::PASSIVE_EFFECT[skill_id][3]
  2436. self.agi += SkillTree::PASSIVE_EFFECT[skill_id][4]
  2437. self.int += SkillTree::PASSIVE_EFFECT[skill_id][5]
  2438. # self.pdef += SkillTree::PASSIVE_EFFECT[skill_id][6]
  2439. # self.mdef += SkillTree::PASSIVE_EFFECT[skill_id][7]
  2440. end
  2441. end
  2442.  
  2443.  
  2444.  
  2445. #==============================================================================
  2446. # ** Game_Actor
  2447. #------------------------------------------------------------------------------
  2448. # This class handles the actor. It's used within the Game_Actors class
  2449. # ($game_actors) and refers to the Game_Party class ($game_party).
  2450. #==============================================================================
  2451.  
  2452. class Game_Actor < Game_Battler
  2453. #--------------------------------------------------------------------------
  2454. # * Public Instance Variables
  2455. #--------------------------------------------------------------------------
  2456. attr_accessor :skill_level # Skill level or rank attained
  2457. attr_accessor :skill_id # Revised Skill ID (New skill)
  2458. attr_accessor :skill_icon_name # Revised Skill Icon Used
  2459. attr_accessor :skillpoints # Initial Tree System Skill Points
  2460. attr_accessor :initialskills # Initial Skills in Tree System
  2461. attr_accessor :skills_used # Tree System Skills Flagged
  2462. attr_accessor :points_spent # Total Points Spent in Tree
  2463. #--------------------------------------------------------------------------
  2464. # * Alias Listings
  2465. #--------------------------------------------------------------------------
  2466. alias skilltree_game_actor_setup setup
  2467. alias skilltree_game_actor_skill_can_use? skill_can_use?
  2468. #--------------------------------------------------------------------------
  2469. # * Setup
  2470. # actor_id : actor ID
  2471. #--------------------------------------------------------------------------
  2472. def setup(actor_id)
  2473. # Perform the original call
  2474. skilltree_game_actor_setup(actor_id)
  2475. # Set Skill Tree Data
  2476. @skillpoints = 0
  2477. @points_spent = 0
  2478. @skill_level = []
  2479. @skill_id = []
  2480. @skill_icon_name = []
  2481. @passive_skills = []
  2482. @skills_used = []
  2483. @initialskills = []
  2484. # Create individual (adjustable) list per actor
  2485. for id in 1...$data_skills.size
  2486. @skill_level[id] = 0
  2487. @skill_id[id] = $data_skills[id].id
  2488. @skill_icon_name[id] = $data_skills[id].icon_name
  2489. unless $data_skills[id].nil?
  2490. update_actor_tree_passive_effects(id)
  2491. end
  2492. end
  2493. # Reupdate HP and SP if changed
  2494. @hp = maxhp
  2495. @sp = maxsp
  2496. # Skip if no tree
  2497. return if SkillTree::SKILLS_ROWS[actor_id].nil?
  2498. switch_id = (SkillTree::CLASS_TREE_START == true) ? @class_id : actor_id
  2499. # Loop through skill tree
  2500. for i in 0...SkillTree::SKILLS_ROWS[switch_id].size
  2501. # Determine how many rows in selected tree
  2502. cnt = SkillTree::SKILLS_ROWS[switch_id][i].size
  2503. # Create a temp array
  2504. temparray = []
  2505. # Loop through rows in tree branch
  2506. for j in 0..cnt-1
  2507. # Add each row into temp data array
  2508. temparray = temparray + SkillTree::SKILLS_ROWS[switch_id][i][j]
  2509. end
  2510. # Add temp data
  2511. @skills_used[i] = temparray
  2512. @skills_used[i].flatten!
  2513. @initialskills[i] = SkillTree::SKILLS_ROWS[switch_id][i]
  2514. end
  2515. # Add Points to actors
  2516. if SkillTree::STARTING_POINTS[actor_id] != nil
  2517. @skillpoints = SkillTree::STARTING_POINTS[actor_id]
  2518. end
  2519. # Delete Skill Used
  2520. @skills_used.delete(nil)
  2521. end
  2522. #--------------------------------------------------------------------------
  2523. # * Check if actor can learn skill
  2524. # skill_id : skill ID
  2525. # tree : Tree
  2526. #--------------------------------------------------------------------------
  2527. def can_learn?(id, tree)
  2528. return false unless ( (was_used?(id, tree) || can_rank?(id, tree) ||
  2529. !skill_learn?(id)) && enough_points?(id) && enough_points_spent?(id))
  2530. # Return true if no needed prereqisites
  2531. return true if SkillTree::PREREQUISITES[id].nil?
  2532. # Handle multiple Prerequisites for a skill
  2533. if SkillTree::PREREQUISITES[id].is_a?(Array)
  2534. id_array = SkillTree::PREREQUISITES[id]
  2535. if SkillTree::PREREQUISITES[id].all? {|v|
  2536. if SkillTree::RANKS.has_key?(v)
  2537. skill_learn?(v) && @skill_id[v] == ranked_skill(v)
  2538. else
  2539. skill_learn?(v)
  2540. end
  2541. }
  2542. return true
  2543. end
  2544. # Handle multiple Prerequisites for a skill
  2545. else
  2546. pid = SkillTree::PREREQUISITES[id]
  2547. flag_passed = false
  2548. if SkillTree::RANKS.has_key?(pid)
  2549. flag_passed = skill_learn?(pid) && @skill_id[pid] == ranked_skill(pid)
  2550. else
  2551. flag_passed = skill_learn?(pid)
  2552. end
  2553. return true if flag_passed
  2554. end
  2555. # End Method
  2556. return false
  2557. end
  2558. #--------------------------------------------------------------------------
  2559. # * Check highest ranked skill in list
  2560. # skill_id : skill ID
  2561. #--------------------------------------------------------------------------
  2562. def ranked_skill(skill_id)
  2563. placement = (SkillTree::RANKS[skill_id].size)-1
  2564. value = SkillTree::RANKS[skill_id][placement]
  2565. return value
  2566. end
  2567. #--------------------------------------------------------------------------
  2568. # * Determine Usable Skills
  2569. # skill_id : skill ID
  2570. #--------------------------------------------------------------------------
  2571. def skill_can_use?(skill_id)
  2572. for skill in @skills
  2573. if SkillTree::RANKS.has_key?(skill)
  2574. if SkillTree::RANKS[skill].include?(skill_id)
  2575. skill_id = skill
  2576. break
  2577. end
  2578. end
  2579. end
  2580. return skilltree_game_actor_skill_can_use?(skill_id)
  2581. end
  2582. #--------------------------------------------------------------------------
  2583. # * Check if actor used skill in tree
  2584. # id : skill ID
  2585. # tree : Tree
  2586. #--------------------------------------------------------------------------
  2587. def was_used?(id, tree)
  2588. (@skills_used[tree].include?(skill_id))
  2589. end
  2590. #--------------------------------------------------------------------------
  2591. # * Check if actor can increase skill rank
  2592. # id : skill ID
  2593. # tree : Tree
  2594. #--------------------------------------------------------------------------
  2595. def can_rank?(id, tree)
  2596. rank_max = 1
  2597. if SkillTree::RANKS.has_key?(id)
  2598. rank_max = SkillTree::RANKS[id].size + 1
  2599. end
  2600. (@skills_used[tree].include?(id) && skill_learn?(id) && rank_max > 1)
  2601. end
  2602. #--------------------------------------------------------------------------
  2603. # * Check if actor has enough points
  2604. # id : skill ID
  2605. # tree : Tree
  2606. #--------------------------------------------------------------------------
  2607. def enough_points?(id)
  2608. (@skillpoints >= $data_skills[id].skill_points_cost)
  2609. end
  2610. #--------------------------------------------------------------------------
  2611. # * Check if actor has spent enough points in tree
  2612. # id : skill ID
  2613. # tree : Tree
  2614. #--------------------------------------------------------------------------
  2615. def enough_points_spent?(id)
  2616. $data_skills[id].spentpoints_needed <= @points_spent
  2617. end
  2618. end
  2619.  
  2620.  
  2621.  
  2622. #==============================================================================
  2623. # ** Window_Base
  2624. #------------------------------------------------------------------------------
  2625. # This class is for all in-game windows.
  2626. #==============================================================================
  2627.  
  2628. class Window_Base < Window
  2629. #--------------------------------------------------------------------------
  2630. # * Reset the font
  2631. #--------------------------------------------------------------------------
  2632. def reset_font
  2633. self.contents.font.name = Font.default_name
  2634. self.contents.font.size = Font.default_size
  2635. self.contents.font.color = Font.default_color
  2636. end
  2637. end
  2638.  
  2639.  
  2640.  
  2641. #==============================================================================
  2642. # ** Window_Skill
  2643. #------------------------------------------------------------------------------
  2644. # This window displays usable skills on the skill and battle screens.
  2645. #==============================================================================
  2646.  
  2647. class Window_Skill < Window_Selectable
  2648. #--------------------------------------------------------------------------
  2649. # * Refresh
  2650. #--------------------------------------------------------------------------
  2651. def refresh
  2652. if self.contents != nil
  2653. self.contents.dispose
  2654. self.contents = nil
  2655. end
  2656. @data = []
  2657. for i in 0...@actor.skills.size
  2658. skill = $data_skills[@actor.skills[i]]
  2659. if skill != nil
  2660. # -- ( Changed Code Between Comment Set ) ---------------------------
  2661. new_id = @actor.skill_id[skill.id]
  2662. skill = $data_skills[new_id]
  2663. # -- ( Changed Code Between Comment Set ) ---------------------------
  2664. @data.push(skill)
  2665. end
  2666. end
  2667. # If item count is not 0, make a bit map and draw all items
  2668. @item_max = @data.size
  2669. if @item_max > 0
  2670. self.contents = Bitmap.new(width - 32, row_max * 32)
  2671. for i in 0...@item_max
  2672. draw_item(i)
  2673. end
  2674. end
  2675. end
  2676. end
  2677.  
  2678.  
  2679.  
  2680. #==============================================================================
  2681. # ** Window_SkillTreeName
  2682. #------------------------------------------------------------------------------
  2683. # This window class contains all skill tree choice display functions
  2684. #==============================================================================
  2685.  
  2686. class Window_SkillTreeName < Window_Selectable
  2687. #--------------------------------------------------------------------------
  2688. # * Object Initialization
  2689. #--------------------------------------------------------------------------
  2690. def initialize(actor_index)
  2691. super(SkillTree::SKILL_NAME_AREA[0], SkillTree::SKILL_NAME_AREA[1],
  2692. SkillTree::SKILL_NAME_AREA[2], SkillTree::SKILL_NAME_AREA[3])
  2693. width = SkillTree::SKILL_NAME_AREA[2] - 32
  2694. height = SkillTree::SKILL_NAME_AREA[3] - 32
  2695. self.contents = Bitmap.new(width, height)
  2696. self.opacity = SkillTree::SKILL_NAME_AREA[4]
  2697. self.back_opacity = SkillTree::SKILL_NAME_AREA[5]
  2698. @actor = $game_party.actors[actor_index]
  2699. refresh
  2700. end
  2701. #--------------------------------------------------------------------------
  2702. # * Refresh
  2703. #--------------------------------------------------------------------------
  2704. def refresh
  2705. self.contents.clear
  2706. draw_actor_name(@actor, 0, 0)
  2707. end
  2708. end
  2709.  
  2710.  
  2711.  
  2712. #==============================================================================
  2713. # ** Window_SkillTreeTabs
  2714. #------------------------------------------------------------------------------
  2715. # This window class contains all skill tree choice display functions
  2716. #==============================================================================
  2717.  
  2718. class Window_SkillTreeTabs < Window_Selectable
  2719. #--------------------------------------------------------------------------
  2720. # * Public Instance Values
  2721. #--------------------------------------------------------------------------
  2722. attr_reader :item_max
  2723. #--------------------------------------------------------------------------
  2724. # * Object Initialization
  2725. #--------------------------------------------------------------------------
  2726. def initialize(actor_index)
  2727. super(SkillTree::SKILL_TABS_AREA[0], SkillTree::SKILL_TABS_AREA[1],
  2728. SkillTree::SKILL_TABS_AREA[2], SkillTree::SKILL_TABS_AREA[3])
  2729. @actor = $game_party.actors[actor_index]
  2730. @switch_id = (SkillTree::CLASS_TREE_START == true) ?
  2731. @actor.class_id : @actor.id
  2732. @item_max = SkillTree::SKILLS_ROWS[@switch_id].size
  2733. @column_max = SkillTree::SKILLS_ROWS[@switch_id].size
  2734. @row_max = 1
  2735. self.index = 0
  2736. width = SkillTree::SKILL_TABS_AREA[2] - 32
  2737. height = SkillTree::SKILL_TABS_AREA[3] - 32
  2738. self.contents = Bitmap.new(width, height)
  2739. self.opacity = SkillTree::SKILL_TABS_AREA[4]
  2740. self.back_opacity = SkillTree::SKILL_TABS_AREA[5]
  2741. end
  2742. #--------------------------------------------------------------------------
  2743. # * Refresh
  2744. #--------------------------------------------------------------------------
  2745. def refresh
  2746. self.contents.clear
  2747. for i in 0...@item_max
  2748. my_text = ''
  2749. next if SkillTree::SKILLS_TABS[@switch_id].nil?
  2750. my_text = SkillTree::SKILLS_TABS[@switch_id][i]
  2751. next if my_text.nil?
  2752. self.contents.draw_text( (self.width - 32) / @item_max * i, 0,
  2753. (self.width - 32) / @item_max, 32, my_text, 1 )
  2754. end
  2755. end
  2756. end
  2757.  
  2758.  
  2759.  
  2760. #==============================================================================
  2761. # ** Window_SkillTreeMain
  2762. #------------------------------------------------------------------------------
  2763. # This window class contains all skill tree display functions
  2764. #==============================================================================
  2765.  
  2766. class Window_SkillTreeMain < Window_Base
  2767. #--------------------------------------------------------------------------
  2768. # * Public Instance Variables
  2769. #--------------------------------------------------------------------------
  2770. attr_accessor :initialskills
  2771. attr_accessor :tree
  2772. attr_reader :index
  2773. attr_reader :item_used
  2774. attr_reader :line
  2775. attr_reader :item_max
  2776. #--------------------------------------------------------------------------
  2777. # * Object Initialization
  2778. # actor_index : actor_index
  2779. #--------------------------------------------------------------------------
  2780. def initialize(actor_index)
  2781. super(SkillTree::SKILL_WINDOW_AREA[0], SkillTree::SKILL_WINDOW_AREA[1],
  2782. SkillTree::SKILL_WINDOW_AREA[2], SkillTree::SKILL_WINDOW_AREA[3])
  2783. @tree = 0
  2784. @actor = $game_party.actors[actor_index]
  2785. @switch_id = (SkillTree::CLASS_TREE_START == true) ?
  2786. @actor.class_id : @actor.id
  2787. # Discontinue if no skill tree for actor
  2788. return if SkillTree::SKILLS_ROWS[@switch_id].nil?
  2789. # Initialize Skills
  2790. initialize_skills
  2791. @column_max = SkillTree::SKILLS_ROWS[@switch_id][@tree][0].size
  2792. @row_max = SkillTree::SKILLS_ROWS[@switch_id][@tree].keys.size
  2793. @item_max = @item_used.size
  2794. self.index = 0
  2795. width = SkillTree::SKILL_WINDOW_AREA[2] - 32
  2796. height = @row_max * ( SkillTree::SKILL_SPACING[1] + 24 ) +
  2797. SkillTree::BORDER_SPACING[1]- 16
  2798. self.contents = Bitmap.new(width, height)
  2799. self.opacity = SkillTree::SKILL_WINDOW_AREA[4]
  2800. self.back_opacity = SkillTree::SKILL_WINDOW_AREA[5]
  2801. # Refresh
  2802. refresh
  2803. end
  2804. #--------------------------------------------------------------------------
  2805. # * Initialize Skills list and position
  2806. #--------------------------------------------------------------------------
  2807. def initialize_skills
  2808. @initialskills = @actor.initialskills[@tree]
  2809. @item_used = @actor.skills_used[@tree]
  2810. @item_used.flatten!
  2811. @item_used.delete(nil)
  2812. for i in 0...@item_used.size
  2813. skillid = @item_used[i]
  2814. $data_skills[skillid].line(@actor.id, @tree)
  2815. $data_skills[skillid].position(@actor.id, @tree)
  2816. $data_skills[skillid].need_update = true
  2817. end
  2818. @prerequisites = []
  2819. end
  2820. #--------------------------------------------------------------------------
  2821. # * Set Cursor Position
  2822. #--------------------------------------------------------------------------
  2823. def index=(index)
  2824. @index = index
  2825. update_cursor_rect
  2826. end
  2827. #--------------------------------------------------------------------------
  2828. # * Update Cursor position
  2829. #--------------------------------------------------------------------------
  2830. def update_cursor_rect
  2831. if self.active
  2832. @line = $data_skills[@item_used[@index]].line(@switch_id, @tree)
  2833. @position = $data_skills[@item_used[@index]].position(@switch_id, @tree)
  2834. new_x = $data_skills[@item_used[@index]].x
  2835. new_y = $data_skills[@item_used[@index]].y
  2836. self.cursor_rect.set(new_x, new_y, 24, 30)
  2837. else
  2838. self.cursor_rect.empty
  2839. end
  2840. end
  2841. #--------------------------------------------------------------------------
  2842. # * Update Skill Tree Window content
  2843. #--------------------------------------------------------------------------
  2844. def update
  2845. super
  2846. # Update index
  2847. @index = @item_used.size - 1 if @index > @item_used.size - 1
  2848. if self.active and @item_max > 0 and @index >= 0
  2849. @line = $data_skills[@item_used[@index]].line(@switch_id,@tree)
  2850. @position = $data_skills[@item_used[@index]].position(@switch_id,@tree)
  2851. # If directional button was pressed
  2852. update_cursor_up if Input.repeat?(Input::UP)
  2853. update_cursor_down if Input.repeat?(Input::DOWN)
  2854. update_cursor_left if Input.repeat?(Input::LEFT)
  2855. update_cursor_right if Input.repeat?(Input::RIGHT)
  2856. end
  2857. # Update cursor rectangle
  2858. update_cursor_rect
  2859. end
  2860. #--------------------------------------------------------------------------
  2861. # * Update Skill Tree Window cursor movement (UP)
  2862. #--------------------------------------------------------------------------
  2863. def update_cursor_up
  2864. # Values Acquired
  2865. curline = @line
  2866. curpos = @position
  2867. moving = checked = false
  2868. #
  2869. for i in 1..@line
  2870. if @initialskills[curline - i].any? {|v| v.is_a?(Integer)}
  2871. if @initialskills[curline - i].any? { |v|
  2872. v != nil &&
  2873. $data_skills[v].position(@switch_id,@tree) == @position} &&
  2874. !moving
  2875. # Play Cancel SE
  2876. $game_system.se_play($data_system.cursor_se)
  2877. # Move Index
  2878. moving = move_type_two(curpos, curline)
  2879. elsif i == @line
  2880. checked = true
  2881. end
  2882. if @initialskills[curline - i].any? {|v|
  2883. v != nil &&
  2884. $data_skills[v].position(@switch_id,@tree) < @position} &&
  2885. !@initialskills[curline - i].any? { |v|
  2886. v != nil &&
  2887. $data_skills[v].position(@switch_id,@tree) == @position} &&
  2888. !moving && checked
  2889. # Play Decision SE
  2890. $game_system.se_play($data_system.decision_se)
  2891. # Garner Check Position
  2892. checkpos = check_position(curpos)
  2893. until $data_skills[@item_used[@index]].position(@switch_id,
  2894. @tree) < curpos &&
  2895. $data_skills[@item_used[@index]].line(@switch_id,@tree) < curline &&
  2896. !checkpos
  2897. moving = true
  2898. @index -= 1
  2899. @newoy = false
  2900. # Garner Check Position
  2901. checkpos = check_position(curpos)
  2902. end
  2903. elsif @initialskills[curline - i].any? {|v|
  2904. v != nil &&
  2905. $data_skills[v].position(@switch_id,@tree) > @position} &&
  2906. !@initialskills[curline - i].any? {|v|
  2907. v != nil &&
  2908. $data_skills[v].position(@switch_id,@tree) <= @position} &&
  2909. !moving && checked
  2910. # Play Cancel SE
  2911. $game_system.se_play($data_system.cancel_se)
  2912. # Garner Check Position
  2913. checkpos = check_position(curpos)
  2914. until $data_skills[@item_used[@index]].position(@switch_id,
  2915. @tree) > curpos &&
  2916. $data_skills[@item_used[@index]].line(@switch_id,@tree) < curline &&
  2917. !checkpos
  2918. moving = true
  2919. @index -= 1
  2920. @newoy = false
  2921. # Garner Check Position
  2922. checkpos = check_position(curpos)
  2923. end
  2924. end
  2925. end
  2926. end
  2927. end
  2928. #--------------------------------------------------------------------------
  2929. # * Update Skill Tree Window cursor movement (DOWN)
  2930. #--------------------------------------------------------------------------
  2931. def update_cursor_down
  2932. # Values Acquired
  2933. curline = @line
  2934. curpos = @position
  2935. moving = checked = false
  2936. # Sort through the tree
  2937. for i in curline + 1...@initialskills.size
  2938. if @initialskills[i].any? {|v| v.is_a?(Integer)}
  2939. if @initialskills[i].any? {|v|
  2940. v != nil &&
  2941. $data_skills[v].position(@switch_id,@tree) == @position} &&
  2942. !moving
  2943. # Play Cancel SE
  2944. $game_system.se_play($data_system.cursor_se)
  2945. # Move Index
  2946. moving = move_type_one(curpos, curline)
  2947. elsif i == @initialskills.size - 1
  2948. checked = true
  2949. end
  2950. if @initialskills[i].any? {|v|
  2951. v != nil &&
  2952. $data_skills[v].position(@switch_id,@tree) < @position} &&
  2953. !@initialskills[i].any? {|v|
  2954. v != nil &&
  2955. $data_skills[v].position(@switch_id,@tree) == @position} &&
  2956. !moving && checked
  2957. # Play Decision SE
  2958. $game_system.se_play($data_system.decision_se)
  2959. # Garner Check Position
  2960. checkpos = check_position(curpos)
  2961. until $data_skills[@item_used[@index]].position(@switch_id,
  2962. @tree) < curpos &&
  2963. $data_skills[@item_used[@index]].line(@switch_id,@tree) > curline &&
  2964. !checkpos
  2965. moving = true
  2966. @index += 1
  2967. @newoy = false
  2968. # Garner Check Position
  2969. checkpos = check_position(curpos)
  2970. end
  2971. elsif @initialskills[i].any? {|v|
  2972. v != nil &&
  2973. $data_skills[v].position(@switch_id,@tree) > @position} &&
  2974. !@initialskills[i].any? {|v|
  2975. v != nil &&
  2976. $data_skills[v].position(@switch_id,@tree) <= @position} &&
  2977. !moving && checked
  2978. # Play Cancel SE
  2979. $game_system.se_play($data_system.cancel_se)
  2980. # Garner Check Position
  2981. checkpos = check_position(curpos)
  2982. until $data_skills[@item_used[@index]].position(@switch_id,
  2983. @tree) > curpos &&
  2984. $data_skills[@item_used[@index]].line(@switch_id,@tree) > curline &&
  2985. !checkpos
  2986. moving = true
  2987. @index += 1
  2988. @newoy = false
  2989. # Garner Check Position
  2990. checkpos = check_position(curpos)
  2991. end
  2992. end
  2993. end
  2994. end
  2995. end
  2996. #--------------------------------------------------------------------------
  2997. # * Update Skill Tree Window cursor movement (LEFT)
  2998. #--------------------------------------------------------------------------
  2999. def update_cursor_left
  3000. if (@column_max >= 2 && @position > 0)
  3001. # Values Acquired
  3002. curline = @line
  3003. curpos = @position
  3004. moving = checked = false
  3005. #
  3006. if @initialskills[curline].any? {|v|
  3007. v != nil &&
  3008. $data_skills[v].position(@switch_id,@tree) < curpos}
  3009. # Play Cursor SE
  3010. $game_system.se_play($data_system.cursor_se)
  3011. until $data_skills[@item_used[@index]].position(@switch_id,
  3012. @tree) < curpos &&
  3013. $data_skills[@item_used[@index]].line(@switch_id,@tree) == curline
  3014. moving = true
  3015. @index -= 1
  3016. end
  3017. else
  3018. checked = true
  3019. end
  3020. for i in 1..@line
  3021. if @initialskills[curline - i] != nil &&
  3022. @initialskills[curline - i].any? {|v|
  3023. v != nil &&
  3024. $data_skills[v].position(@switch_id,@tree) < @position} &&
  3025. !@initialskills[curline].any? {|v|
  3026. v != nil &&
  3027. $data_skills[v].position(@switch_id,@tree) < @position} &&
  3028. !moving && checked
  3029. # Play Decision SE
  3030. $game_system.se_play($data_system.decision_se)
  3031. # Move Index
  3032. moving = move_type_four(curpos, curline)
  3033. end
  3034. end
  3035. for i in curline + 1...@initialskills.size
  3036. if @initialskills[i].any? {|v|
  3037. v != nil &&
  3038. $data_skills[v].position(@switch_id,@tree) < @position} &&
  3039. !@initialskills[curline].any? {|v|
  3040. v != nil &&
  3041. $data_skills[v].position(@switch_id,@tree) < @position} &&
  3042. !moving && checked
  3043. # Play Decision SE
  3044. $game_system.se_play($data_system.decision_se)
  3045. until $data_skills[@item_used[@index]].position(@switch_id,
  3046. @tree) < curpos &&
  3047. $data_skills[@item_used[@index]].line(@switch_id,@tree) > curline
  3048. moving = true
  3049. @index += 1
  3050. @newoy = false
  3051. end
  3052. end
  3053. end
  3054. end
  3055. end
  3056. #--------------------------------------------------------------------------
  3057. # * Update Skill Tree Window cursor movement (RIGHT)
  3058. #--------------------------------------------------------------------------
  3059. def update_cursor_right
  3060. if (@column_max >= 2 && @position < @initialskills[@line].size)
  3061. # Values Acquired
  3062. curline = @line
  3063. curpos = @position
  3064. moving = checked = false
  3065. #
  3066. if @initialskills[curline].any? {|v|
  3067. v != nil &&
  3068. $data_skills[v].position(@switch_id,@tree) > curpos}
  3069. $game_system.se_play($data_system.cursor_se)
  3070. #
  3071. until $data_skills[@item_used[@index]].position(@switch_id,
  3072. @tree) > curpos &&
  3073. $data_skills[@item_used[@index]].line(@switch_id,@tree) == curline
  3074. moving = true
  3075. @index += 1
  3076. end
  3077. else
  3078. checked = true
  3079. end
  3080. for i in 1..@line
  3081. if @initialskills[curline - i] != nil &&
  3082. @initialskills[curline - i].any? {|v|
  3083. v != nil &&
  3084. $data_skills[v].position(@switch_id,@tree) > @position} &&
  3085. !@initialskills[curline].any? {|v|
  3086. v != nil &&
  3087. $data_skills[v].position(@switch_id,@tree) > @position} &&
  3088. !moving && checked
  3089. # Play Decision SE
  3090. $game_system.se_play($data_system.decision_se)
  3091. # Garner Check Position
  3092. checkpos = check_position(curpos)
  3093. until $data_skills[@item_used[@index]].position(@switch_id,
  3094. @tree) > curpos &&
  3095. $data_skills[@item_used[@index]].line(@switch_id,@tree) < curline &&
  3096. !checkpos
  3097. moving = true
  3098. @index -= 1
  3099. @newoy = false
  3100. # Garner Check Position
  3101. checkpos = check_position(curpos)
  3102. end
  3103. end
  3104. end
  3105. for i in curline + 1...@initialskills.size
  3106. if @initialskills[i].any? {|v|
  3107. v != nil &&
  3108. $data_skills[v].position(@switch_id,@tree) > @position} &&
  3109. !@initialskills[curline].any? {|v|
  3110. v != nil &&
  3111. $data_skills[v].position(@switch_id,@tree) > @position} &&
  3112. !moving && checked
  3113. # Play Decision SE
  3114. $game_system.se_play($data_system.decision_se)
  3115. # Move Index
  3116. moving = move_type_three(curpos, curline)
  3117. end
  3118. end
  3119. end
  3120. end
  3121. #--------------------------------------------------------------------------
  3122. # * Get Checked Position
  3123. #--------------------------------------------------------------------------
  3124. def check_position(position)
  3125. checkpos = @item_used.any? {|id|
  3126. $data_skills[id].position(@switch_id, @tree) < position &&
  3127. $data_skills[id].position(@switch_id, @tree) >
  3128. $data_skills[@item_used[@index]].position(@switch_id, @tree) &&
  3129. $data_skills[id].line(@switch_id, @tree) ==
  3130. $data_skills[@item_used[@index]].line(@switch_id, @tree)}
  3131. return checkpos
  3132. end
  3133. #--------------------------------------------------------------------------
  3134. # * Move Index (One)
  3135. #--------------------------------------------------------------------------
  3136. def move_type_one(curpos, curline)
  3137. until $data_skills[@item_used[@index]].position(@switch_id,
  3138. @tree) == curpos &&
  3139. $data_skills[@item_used[@index]].line(@switch_id, @tree) > curline
  3140. @index += 1
  3141. @newoy = false
  3142. moving = true
  3143. end
  3144. return moving
  3145. end
  3146. #--------------------------------------------------------------------------
  3147. # * Move Index (Two)
  3148. #--------------------------------------------------------------------------
  3149. def move_type_two(curpos, curline)
  3150. until $data_skills[@item_used[@index]].position(@switch_id,
  3151. @tree) == curpos &&
  3152. $data_skills[@item_used[@index]].line(@switch_id, @tree) < curline
  3153. @index -= 1
  3154. @newoy = false
  3155. moving = true
  3156. end
  3157. return moving
  3158. end
  3159. #--------------------------------------------------------------------------
  3160. # * Move Index (Three
  3161. #--------------------------------------------------------------------------
  3162. def move_type_three(curpos, curline)
  3163. until $data_skills[@item_used[@index]].position(@switch_id,
  3164. @tree) > curpos &&
  3165. $data_skills[@item_used[@index]].line(@switch_id, @tree) > curline
  3166. moving = true
  3167. @index += 1
  3168. @newoy = false
  3169. end
  3170. return moving
  3171. end
  3172. #--------------------------------------------------------------------------
  3173. # * Move Index (Four)
  3174. #--------------------------------------------------------------------------
  3175. def move_type_four(curpos, curline)
  3176. until $data_skills[@item_used[@index]].position(@switch_id,
  3177. @tree) < curpos &&
  3178. $data_skills[@item_used[@index]].line(@switch_id, @tree) < curline
  3179. moving = true
  3180. @index -= 1
  3181. @newoy = false
  3182. end
  3183. return moving
  3184. end
  3185. #--------------------------------------------------------------------------
  3186. # * Refresh skills display
  3187. #--------------------------------------------------------------------------
  3188. def refresh
  3189. self.contents.clear
  3190. for i in 0...@item_used.size
  3191. skillid = @item_used[i]
  3192. $data_skills[skillid].line(@switch_id, @tree)
  3193. $data_skills[skillid].position(@switch_id, @tree)
  3194. draw_skill(skillid)
  3195. #
  3196. if SkillTree::PREREQUISITES[skillid] != nil
  3197. arrowskillid = $data_skills[skillid]
  3198. arrowskillpreid = SkillTree::PREREQUISITES[skillid]
  3199. draw_arrow(arrowskillid, arrowskillpreid)
  3200. end
  3201. #
  3202. draw_skill_rank(skillid)
  3203. end
  3204. end
  3205. #--------------------------------------------------------------------------
  3206. # * Draw Arrows for prerequisites
  3207. # skill_id : Skill ID
  3208. # preskill_id : prerequisite skill ID
  3209. #--------------------------------------------------------------------------
  3210. def draw_arrow(skill_id, preskill_id)
  3211. # Set the draw arrow flag
  3212. ret_flag = false
  3213. if preskill_id.is_a?(Array)
  3214. count = preskill_id.size
  3215. counter = 0
  3216. for j in preskill_id
  3217. for i in @initialskills
  3218. counter += 1 if i[1].include?(j)
  3219. end
  3220. end
  3221. ret_flag = true if count == counter
  3222. else
  3223. for i in @initialskills
  3224. ret_flag = true if i[1].include?(preskill_id)
  3225. end
  3226. end
  3227. return unless ret_flag
  3228. # Hide Arrows if Hide unavailable skills and arrows
  3229. unless SkillTree::SHOW_ALL_TREE
  3230. unless @actor.skills.include?(skill_id.id)
  3231. return if !@actor.can_learn?(skill_id.id, @tree)
  3232. end
  3233. end
  3234. #
  3235. @prerequisites.clear
  3236. prerequisites = []
  3237. prerequisites << preskill_id
  3238. @prerequisites = prerequisites.flatten
  3239. for i in 0...@prerequisites.size
  3240. preskill = $data_skills[@prerequisites[i]]
  3241. skill_img = RPG::Cache.icon(skill_id.icon_name)
  3242. preskill_img = RPG::Cache.icon(preskill.icon_name)
  3243. # Make Horizontal Graphics
  3244. @arrow_h, @arrow_h_src = skill_tree_object(SkillTree::LINE_ARRAY[0])
  3245. # Make Vertical Graphics
  3246. @arrow_v, @arrow_v_rect = skill_tree_object(SkillTree::LINE_ARRAY[1])
  3247. # Make Corner Graphics
  3248. if skill_id.y > preskill.y
  3249. if skill_id.x < preskill.x
  3250. @corner, @corner_rect = skill_tree_object(SkillTree::CORNER_ARRAY[0])
  3251. end
  3252. if skill_id.x > preskill.x
  3253. @corner, @corner_rect = skill_tree_object(SkillTree::CORNER_ARRAY[1])
  3254. end
  3255. else
  3256. if skill_id.x < preskill.x
  3257. @corner, @corner_rect = skill_tree_object(SkillTree::CORNER_ARRAY[2])
  3258. end
  3259. if skill_id.x > preskill.x
  3260. @corner, @corner_rect = skill_tree_object(SkillTree::CORNER_ARRAY[3])
  3261. end
  3262. end
  3263. # If required skill is above target in tree
  3264. if skill_id.y > preskill.y
  3265. draw_arrow_pre_lesser(skill_id, preskill, skill_img, preskill_img)
  3266. # If required skill is below target in tree
  3267. elsif skill_id.y < preskill.y
  3268. draw_arrow_pre_greater(skill_id, preskill, skill_img, preskill_img)
  3269. # If Skill and preqrequisite are at same height
  3270. elsif skill_id.y == preskill.y
  3271. draw_arrow_pre_equal(skill_id, preskill, skill_img, preskill_img)
  3272. end
  3273. end
  3274. end
  3275. #--------------------------------------------------------------------------
  3276. # * Draw Arrows for prerequisites lesser prerequisites
  3277. #--------------------------------------------------------------------------
  3278. def draw_arrow_pre_lesser(skill_id, preskill, skill_img, preskill_img)
  3279. # Make the Arrow Graphic
  3280. arrow, arrow_rect = skill_tree_object(SkillTree::ARROW_ARRAY[0])
  3281. # Draw the Arrow Graphic
  3282. self.contents.blt(skill_id.x + skill_img.width / 2 - arrow.width / 2,
  3283. skill_id.y - arrow.height, arrow, arrow_rect)
  3284. if skill_id.x == preskill.x
  3285. # Calculate Horizontal Space
  3286. arrowspace = skill_id.y - preskill.y - preskill_img.height - arrow.height
  3287. # Create Vertical Rect
  3288. arrow_v_dest = Rect.new(
  3289. skill_id.x + skill_img.width / 2 - @arrow_v.width / 2,
  3290. preskill.y + preskill_img.height,@arrow_v.width, arrowspace)
  3291. elsif skill_id.x != preskill.x
  3292. # Calculate Horizontal Space
  3293. arrowspace = skill_id.y - preskill.y - preskill_img.height /
  3294. 2 - arrow.height - @corner.height / 2
  3295. # Create Vertical Rect
  3296. arrow_v_dest = Rect.new(skill_id.x + skill_img.width / 2 -
  3297. @arrow_v.width / 2, preskill.y + preskill_img.height / 2 +
  3298. @corner.height / 2, @arrow_v.width, arrowspace)
  3299. end
  3300. # Draw the Vertical Graphic
  3301. self.contents.stretch_blt(arrow_v_dest, @arrow_v, @arrow_v_rect)
  3302. #
  3303. if skill_id.x != preskill.x
  3304. # Draw the Corner Graphic
  3305. self.contents.blt(skill_id.x + skill_img.width / 2 - @corner.width / 2,
  3306. preskill.y + preskill_img.height / 2 - @corner.height / 2,
  3307. @corner, @corner_rect)
  3308. # Reset draw flag
  3309. arrow_draw = false
  3310. # If skill is to the right of the required skill
  3311. if skill_id.x > preskill.x
  3312. # Obtain the right corner graphic
  3313. arrow_h_dest = corner_right(skill_id, skill_img, preskill, preskill_img)
  3314. arrow_draw = true
  3315. # If skill is to the keft of the required skill
  3316. elsif skill_id.x < preskill.x
  3317. # Obtain the left corner graphic
  3318. arrow_h_dest = corner_left(skill_id, skill_img, preskill, preskill_img)
  3319. arrow_draw = true
  3320. end
  3321. # Draw the Horizontal Graphic
  3322. draw_arrow_stretch(arrow_h_dest, @arrow_h, @arrow_h_src, arrow_draw)
  3323. end
  3324. end
  3325. #--------------------------------------------------------------------------
  3326. # * Draw Arrows for prerequisites greater prerequisites
  3327. #--------------------------------------------------------------------------
  3328. def draw_arrow_pre_greater(skill_id, preskill, skill_img, preskill_img)
  3329. # Make the Arrow Graphic
  3330. arrow, arrow_rect = skill_tree_object(SkillTree::ARROW_ARRAY[1])
  3331. # Draw the Arrow Graphic
  3332. self.contents.blt(skill_id.x + skill_img.width / 2 - arrow.width / 2,
  3333. skill_id.y + skill_img.height, arrow, arrow_rect)
  3334. # Drawing the vertical
  3335. if skill_id.x == preskill.x
  3336. # Calculate Horizontal Space
  3337. arrowspace = preskill.y - skill_id.y - skill_img.height - arrow.height
  3338. # Create Vertical Rect
  3339. arrow_v_dest = Rect.new(
  3340. preskill.x + preskill_img.width / 2 - @arrow_v.width / 2,
  3341. preskill.y - arrowspace, @arrow_v.width, arrowspace)
  3342. elsif skill_id.x != preskill.x
  3343. # Calculate Horizontal Space
  3344. arrowspace = preskill.y - skill_id.y - (skill_img.height / 2) -
  3345. arrow.height - @corner.height / 2
  3346. # Create Vertical Rect
  3347. arrow_v_dest = Rect.new(skill_id.x + skill_img.width / 2 -
  3348. @arrow_v.width / 2,
  3349. 2 + skill_id.y + skill_img.height + @corner.height,
  3350. @arrow_v.width, arrowspace)
  3351. end
  3352. # Draw the Vertical Graphic
  3353. self.contents.stretch_blt(arrow_v_dest, @arrow_v, @arrow_v_rect)
  3354. # If the required skill is to the left or right of the skill
  3355. if skill_id.x != preskill.x
  3356. # Draw the Corner Graphic
  3357. self.contents.blt(skill_id.x + skill_img.width / 2 - @corner.width / 2,
  3358. preskill.y + preskill_img.height / 2 - @corner.height / 2,
  3359. @corner, @corner_rect)
  3360. # Reset draw flag
  3361. arrow_draw = false
  3362. # If skill is to the right of the required skill
  3363. if skill_id.x > preskill.x
  3364. # Obtain the right corner graphic
  3365. arrow_h_dest = corner_right(skill_id, skill_img, preskill, preskill_img)
  3366. arrow_draw = true
  3367. # If skill is to the keft of the required skill
  3368. elsif skill_id.x < preskill.x
  3369. # Obtain the left corner graphic
  3370. arrow_h_dest = corner_left(skill_id, skill_img, preskill, preskill_img)
  3371. arrow_draw = true
  3372. end
  3373. # Draw the Horizontal Graphic
  3374. draw_arrow_stretch(arrow_h_dest, @arrow_h, @arrow_h_src, arrow_draw)
  3375. end
  3376. end
  3377. #--------------------------------------------------------------------------
  3378. # * Draw Arrows for prerequisites equal prerequisites
  3379. #--------------------------------------------------------------------------
  3380. def draw_arrow_pre_equal(skill_id, preskill, skill_img, preskill_img)
  3381. # Reset the draw flag
  3382. arrow_draw = false
  3383. # If skill is left of the required skill
  3384. if skill_id.x < preskill.x
  3385. # Make the arrow graphic
  3386. arrow, arrow_rect = skill_tree_object(SkillTree::ARROW_ARRAY[2])
  3387. # Draw the Arrow Graphic
  3388. self.contents.blt(skill_id.x + skill_img.width, skill_id.y +
  3389. skill_img.height / 2 - arrow.height / 2, arrow, arrow_rect)
  3390. # Calculate Horizontal Space
  3391. arrow_h_spc = preskill.x - skill_id.x - preskill_img.width - arrow.width
  3392. # Create Horizontal Rect
  3393. arrow_h_dest = Rect.new(
  3394. skill_id.x + skill_img.width + arrow.width,
  3395. preskill.y + preskill_img.height / 2 - @arrow_h.height / 2,
  3396. arrow_h_spc, @arrow_h.height)
  3397. # Set the draw-me flag
  3398. arrow_draw = true
  3399. # If skill is right of the required skill
  3400. elsif skill_id.x > preskill.x
  3401. # Make the Arrow Graphic
  3402. arrow, arrow_rect = skill_tree_object(SkillTree::ARROW_ARRAY[3])
  3403. # Draw the Arrow Graphic
  3404. self.contents.blt(skill_id.x - arrow.width, skill_id.y +
  3405. skill_img.height / 2 - arrow.height / 2, arrow, arrow_rect)
  3406. # Calculate Horizontal Space
  3407. arrow_h_spc = skill_id.x - preskill.x - skill_img.width - arrow.width
  3408. # Create Horizontal Rect
  3409. arrow_h_dest = Rect.new(
  3410. preskill.x + preskill_img.width,
  3411. preskill.y + preskill_img.height / 2 - @arrow_h.height / 2,
  3412. arrow_h_spc, @arrow_h.height)
  3413. # Set the draw-me flag
  3414. arrow_draw = true
  3415. end
  3416. # Draw the Horizontal Graphic
  3417. draw_arrow_stretch(arrow_h_dest, @arrow_h, @arrow_h_src, arrow_draw)
  3418. end
  3419. #--------------------------------------------------------------------------
  3420. # * Draw stretched arrow body
  3421. #--------------------------------------------------------------------------
  3422. def draw_arrow_stretch(dest, img, source, flag)
  3423. return unless flag == true
  3424. self.contents.stretch_blt(dest, img, source)
  3425. end
  3426. #--------------------------------------------------------------------------
  3427. # * Load Skill Tree Object Graphic
  3428. # filename : filename
  3429. #--------------------------------------------------------------------------
  3430. def skill_tree_object(filename)
  3431. temp = RPG::Cache.skilltree(filename)
  3432. temp_rect = Rect.new(0,0,temp.width, temp.height)
  3433. return [temp, temp_rect]
  3434. end
  3435. #--------------------------------------------------------------------------
  3436. # * Load the left corner rectangle
  3437. #--------------------------------------------------------------------------
  3438. def corner_left(s_id,s_img, p_req, p_req_img)
  3439. horiz, vert, corner = @arrow_h, @arrow_v, @corner
  3440. h_space = p_req.x - s_id.x - p_req_img.width +
  3441. (p_req_img.width / 2 - corner.width / 2)
  3442. bodyhor_dest = Rect.new( s_id.x + s_img.width / 2 + vert.width / 2,
  3443. p_req.y + p_req_img.height / 2 - horiz.height / 2, h_space, horiz.height)
  3444. return bodyhor_dest
  3445. end
  3446. #--------------------------------------------------------------------------
  3447. # * Load the right corner rectangle
  3448. #--------------------------------------------------------------------------
  3449. def corner_right(s_id,s_img, p_req, p_req_img)
  3450. horiz, corner = @arrow_h, @corner
  3451. # Calculate Horizontal Space
  3452. h_space = s_id.x - p_req.x - s_img.width + (s_img.width/2 - corner.width/2)
  3453. # Create Horizontal Rect
  3454. bodyhor_dest = Rect.new(p_req.x + p_req_img.width, p_req.y +
  3455. p_req_img.height / 2 - horiz.height / 2, h_space, horiz.height)
  3456. return bodyhor_dest
  3457. end
  3458. #--------------------------------------------------------------------------
  3459. # * Draw Skill Icon
  3460. # skillid : Skill ID
  3461. #--------------------------------------------------------------------------
  3462. def draw_skill(skillid)
  3463. line = $data_skills[skillid].line(@switch_id, @tree)
  3464. position = $data_skills[skillid].position(@switch_id, @tree)
  3465. new_id = @actor.skill_id[skillid]
  3466. icon = RPG::Cache.icon($data_skills[new_id].icon_name)
  3467. cw, ch = icon.width, icon.height
  3468. src_rect = Rect.new(0, 0, cw, ch)
  3469. if @actor.skill_learn?(skillid)
  3470. opacity = SkillTree::SKILL_AVAILABLE[0]
  3471. elsif @actor.can_learn?(skillid, @tree)
  3472. opacity = SkillTree::SKILL_AVAILABLE[1]
  3473. elsif !@actor.can_learn?(skillid, @tree)
  3474. opacity = SkillTree::SKILL_AVAILABLE[2]
  3475. end
  3476. pos, linepos = $data_skills[skillid].x, $data_skills[skillid].y
  3477. self.contents.blt(pos, linepos, icon, src_rect, opacity)
  3478. # For the unavailable icon
  3479. unless SkillTree::UNAVAILABLE_ICON == nil
  3480. if @actor.skill_check(skillid)
  3481. # 'nothing'
  3482. elsif !@actor.can_learn?(skillid, @tree)
  3483. icon = RPG::Cache.skilltree(SkillTree::UNAVAILABLE_ICON)
  3484. opacity = SkillTree::SKILL_AVAILABLE[3]
  3485. self.contents.blt(pos, linepos, icon, src_rect, opacity)
  3486. end
  3487. end
  3488. end
  3489. #--------------------------------------------------------------------------
  3490. # * Draw Skill Rank
  3491. #--------------------------------------------------------------------------
  3492. def draw_skill_rank(skillid)
  3493. rank = @actor.skill_level[skillid]+1
  3494. rank_max = 1
  3495. if SkillTree::RANKS.has_key?(skillid)
  3496. rank_max = SkillTree::RANKS[skillid].size + 1
  3497. end
  3498. return if rank_max == 1 && !SkillTree::RANK_SHOW_ALL
  3499. return if !@actor.can_learn?(skillid, @tree) &&
  3500. !SkillTree::SHOW_ALL_TREE
  3501. self.contents.font.size = SkillTree::RANK_DISPLAY_SIZE
  3502. pos, linepos = $data_skills[skillid].x, $data_skills[skillid].y
  3503. icon = RPG::Cache.icon($data_skills[skillid].icon_name)
  3504. cw, ch = icon.width, icon.height
  3505. rankcheck = @actor.skill_check(skillid)
  3506. rank = (rankcheck) ? (@actor.skill_level[skillid]+1).to_s : "0"
  3507. return if rank == "0" and SkillTree::RANK_SHOW_ZERO == false
  3508. rankmax = "/" + rank_max.to_s
  3509. text_size = self.contents.text_size(rank + rankmax)
  3510. rect_x = pos + cw - text_size.width
  3511. rect_y = linepos + ch - text_size.height
  3512. rect_width = text_size.width
  3513. rect_height = text_size.height
  3514. if SkillTree::RANK_DISPLAY_SHADOW
  3515. self.contents.font.color = Color.new(0,0,0)
  3516. text_rect = Rect.new(rect_x+1, rect_y+1, rect_width, rect_height)
  3517. self.contents.draw_text(text_rect, rank + rankmax, 1)
  3518. end
  3519. self.contents.font.color = SkillTree::RANK_DISPLAY_COLOR
  3520. text_rect = Rect.new(rect_x, rect_y, rect_width, rect_height)
  3521. self.contents.draw_text(text_rect, rank + rankmax, 1)
  3522. # Reset the font
  3523. reset_font
  3524. # Update skills
  3525. $data_skills[skillid].need_update = false
  3526. end
  3527. end
  3528.  
  3529.  
  3530.  
  3531. #==============================================================================
  3532. # ** Window_SkillTreeInfo
  3533. #------------------------------------------------------------------------------
  3534. # This window displays information about the highlighted skill in the tree.
  3535. #==============================================================================
  3536.  
  3537. class Window_SkillTreeInfo < Window_Base
  3538. #--------------------------------------------------------------------------
  3539. # * Public Instance Variables
  3540. #--------------------------------------------------------------------------
  3541. attr_accessor :skill_id
  3542. attr_accessor :actor
  3543. attr_accessor :tree
  3544. #--------------------------------------------------------------------------
  3545. # * Object Initialization
  3546. #--------------------------------------------------------------------------
  3547. def initialize
  3548. super(SkillTree::SKILL_INFO_AREA[0], SkillTree::SKILL_INFO_AREA[1],
  3549. SkillTree::SKILL_INFO_AREA[2], SkillTree::SKILL_INFO_AREA[3])
  3550. @skill_id = nil
  3551. @actor = nil
  3552. @tree = 0
  3553. width = SkillTree::SKILL_INFO_AREA[2] - 32
  3554. height = SkillTree::SKILL_INFO_AREA[3] - 32
  3555. self.contents = Bitmap.new(width, height)
  3556. self.opacity = SkillTree::SKILL_INFO_AREA[4]
  3557. self.back_opacity = SkillTree::SKILL_INFO_AREA[5]
  3558. refresh if @skill_id != nil && @actor != nil
  3559. end
  3560. #--------------------------------------------------------------------------
  3561. # * Refresh skill informations
  3562. #--------------------------------------------------------------------------
  3563. def refresh
  3564. self.contents.clear
  3565. draw_skill_icon
  3566. draw_skill_name
  3567. draw_skill_currank
  3568. draw_skill_description
  3569. draw_skill_points_needed
  3570. if $data_skills[@skill_id].spentpoints_needed > 0
  3571. draw_skill_pointsintree_needed
  3572. end
  3573. draw_required_skills
  3574. draw_unavailable
  3575. end
  3576. #--------------------------------------------------------------------------
  3577. # * Draw skill's icon
  3578. #--------------------------------------------------------------------------
  3579. def draw_skill_icon
  3580. @icon = RPG::Cache.icon(@actor.skill_icon_name[@skill_id])
  3581. src_rect = Rect.new(0,0,@icon.width,@icon.height)
  3582. self.contents.blt(SkillTree::TEXT_SKILLICON[0],SkillTree::TEXT_SKILLICON[1],
  3583. @icon, src_rect, 255)
  3584. end
  3585. #--------------------------------------------------------------------------
  3586. # * Draw skill text
  3587. #--------------------------------------------------------------------------
  3588. def draw_skill_text(text_array, text_string)
  3589. self.contents.draw_text(text_array[0], text_array[1], text_array[2],
  3590. text_array[3], text_string, text_array[4])
  3591. end
  3592. #--------------------------------------------------------------------------
  3593. # * Draw skill's name
  3594. #--------------------------------------------------------------------------
  3595. def draw_skill_name
  3596. # Reset the font
  3597. reset_font
  3598. id = @skill_id
  3599. skill_id = @actor.skill_id[id]
  3600. skill_name = $data_skills[skill_id].name.to_s
  3601. draw_skill_text(SkillTree::TEXT_SKILLNAME, skill_name)
  3602. end
  3603. #--------------------------------------------------------------------------
  3604. # * Draw skill's current rank
  3605. #--------------------------------------------------------------------------
  3606. def draw_skill_currank
  3607. rank_max = 1
  3608. if SkillTree::RANKS.has_key?(@skill_id)
  3609. rank_max = SkillTree::RANKS[@skill_id].size + 1
  3610. end
  3611. # Reset the font
  3612. reset_font
  3613. # Draw Rank for levelable skills
  3614. if @actor.skill_check(skill_id)
  3615. msg = SkillTree::RANK_TEXT_1.dup
  3616. begin
  3617. msg[/{rank_score}/] = "#{@actor.skill_level[@skill_id]+1}"
  3618. rescue
  3619. end
  3620. cur_rank = msg
  3621. else
  3622. cur_rank = " "
  3623. if SkillTree::RANK_SHOW_ZERO == true
  3624. cur_rank = SkillTree::RANK_TEXT_2
  3625. end
  3626. end
  3627. # Erase if 1 level only...
  3628. cur_rank = " " if rank_max == 1
  3629. draw_skill_text(SkillTree::TEXT_SKILLRANK, cur_rank)
  3630. end
  3631. #--------------------------------------------------------------------------
  3632. # * Draw skill's current rank's description
  3633. #--------------------------------------------------------------------------
  3634. def draw_skill_description
  3635. # Reset the font
  3636. reset_font
  3637. # Get ID of new skill
  3638. id = @skill_id
  3639. skill_id = @actor.skill_id[id]
  3640. # Obtain skill description and display
  3641. skill_desc = $data_skills[skill_id].description.to_s
  3642. draw_skill_text(SkillTree::TEXT_SKILLDESC, skill_desc)
  3643. end
  3644. #--------------------------------------------------------------------------
  3645. # * Draw skill points needed to learn next rank
  3646. #--------------------------------------------------------------------------
  3647. def draw_skill_points_needed
  3648. rank = @actor.skill_level[@skill_id]+1
  3649. rank_max = 1
  3650. if SkillTree::RANKS.has_key?(@skill_id)
  3651. rank_max = SkillTree::RANKS[@skill_id].size + 1
  3652. end
  3653. # Reset the font
  3654. reset_font
  3655. return unless (rank < rank_max || (rank_max == 1 &&
  3656. !@actor.skill_check(@skill_id)))
  3657. if @actor.skillpoints < $data_skills[@skill_id].skill_points_cost
  3658. self.contents.font.color = SkillTree::UNAVAILABLE_COLOR
  3659. else
  3660. self.contents.font.color = Font.default_color
  3661. end
  3662. # Obtain the points text (singular or plural)
  3663. points = s_points($data_skills[@skill_id].skill_points_cost)
  3664. # Generate the point cost message
  3665. skill_cost = draw_skill_points_needed_message(points, rank_max)
  3666. # Display Message
  3667. draw_skill_text(SkillTree::TEXT_SKILLCOST, skill_cost)
  3668. end
  3669. #--------------------------------------------------------------------------
  3670. # * Process skill points message type 1
  3671. #--------------------------------------------------------------------------
  3672. def draw_skill_points_needed_message(points, flag)
  3673. msg = (flag=1) ? SkillTree::POINT_COST_1.dup : SkillTree::POINT_COST_2.dup
  3674. begin
  3675. msg[/{point_score}/] = "#{$data_skills[@skill_id].skill_points_cost}"
  3676. rescue
  3677. end
  3678. begin
  3679. msg[/{point_text}/] = "#{points}"
  3680. rescue
  3681. end
  3682. return msg
  3683. end
  3684. #--------------------------------------------------------------------------
  3685. # * Draw skill points needed in skill tree to learn next rank
  3686. #--------------------------------------------------------------------------
  3687. def draw_skill_pointsintree_needed
  3688. # Reset the font
  3689. reset_font
  3690. if @actor.points_spent < $data_skills[@skill_id].spentpoints_needed
  3691. self.contents.font.color = SkillTree::UNAVAILABLE_COLOR
  3692. else
  3693. self.contents.font.color = Font.default_color
  3694. end
  3695. # Obtain the points text (singular or plural)
  3696. points = s_points($data_skills[@skill_id].spentpoints_needed)
  3697. # Apply and display the point spend message
  3698. msg = SkillTree::POINT_COST_3.dup
  3699. begin
  3700. msg[/{point_score}/] = "#{$data_skills[@skill_id].spentpoints_needed}"
  3701. rescue
  3702. end
  3703. begin
  3704. msg[/{point_text}/] = "#{points}"
  3705. rescue
  3706. end
  3707. points_spent = msg
  3708. draw_skill_text(SkillTree::TEXT_SKILLSPEND, points_spent)
  3709. end
  3710. #--------------------------------------------------------------------------
  3711. # * Get the Spend Points string
  3712. # spend_points : spend points
  3713. #--------------------------------------------------------------------------
  3714. def s_points(spend_points)
  3715. point_return = SkillTree::SKILLPOINTS_NAME[0] if spend_points == 1
  3716. point_return = SkillTree::SKILLPOINTS_NAME[1] if spend_points > 1
  3717. return point_return
  3718. end
  3719. #--------------------------------------------------------------------------
  3720. # * Draw if skill unavailable or already maxed out
  3721. #--------------------------------------------------------------------------
  3722. def draw_required_skills
  3723. reset_font
  3724. return if SkillTree::PREREQUISITES[@skill_id] == nil
  3725. text = SkillTree::SKILLS_REQ #"Skills Required: "
  3726. required_ids = SkillTree::PREREQUISITES[@skill_id]
  3727. unless required_ids == nil
  3728. if required_ids.is_a?(Array)
  3729. for i in required_ids
  3730. r_id = $data_skills[i].id
  3731. rank = 0
  3732. if SkillTree::RANKS.has_key?(i)
  3733. rank = SkillTree::RANKS[i].size
  3734. end
  3735. text += $data_skills[r_id + rank].name + ", "
  3736. end
  3737. text.slice!(text.size-2, 2)
  3738. else
  3739. r_id = $data_skills[required_ids].id
  3740. rank = 0
  3741. if SkillTree::RANKS.has_key?(required_ids)
  3742. rank = SkillTree::RANKS[required_ids].size
  3743. end
  3744. text += $data_skills[r_id + rank].name
  3745. end
  3746. end
  3747. draw_skill_text(SkillTree::TEXT_SKILLREQUIRED, text)
  3748. end
  3749. #--------------------------------------------------------------------------
  3750. # * Draw if skill unavailable or already maxed out
  3751. #--------------------------------------------------------------------------
  3752. def draw_unavailable
  3753. rank = @actor.skill_level[@skill_id]+1
  3754. rank_max = 1
  3755. if SkillTree::RANKS.has_key?(@skill_id)
  3756. rank_max = SkillTree::RANKS[@skill_id].size + 1
  3757. end
  3758. # Reset the font
  3759. reset_font
  3760. # Obtain the party index
  3761. i = 0
  3762. for j in $game_party.actors
  3763. break if j == @actor
  3764. i += 1
  3765. end
  3766. # Branch on activeness
  3767. if $game_party.actors[i].skill_check(@skill_id)
  3768. if rank_max == rank
  3769. if rank_max == 1
  3770. text = SkillTree::ACQUIRED_TXT
  3771. else
  3772. text = SkillTree::ACQUIRED_LEVEL
  3773. end
  3774. else
  3775. return unless SkillTree::SHOW_NEXT_SKILL
  3776. if rank_max != 1 && rank != rank_max
  3777. skill_id = SkillTree::RANKS[@skill_id][rank-1]
  3778. skill_name = $data_skills[skill_id].name.to_s
  3779. text = SkillTree::NEXT_RANKING_SKILL + skill_name
  3780. end
  3781. end
  3782. elsif $game_party.actors[i].can_learn?(@skill_id, @tree)
  3783. return
  3784. elsif !$game_party.actors[i].can_learn?(@skill_id, @tree)
  3785. text = SkillTree::UNAVAILABLE
  3786. end
  3787. draw_skill_text(SkillTree::TEXT_SKILLGAIN, text)
  3788. end
  3789. end
  3790.  
  3791.  
  3792.  
  3793. #==============================================================================
  3794. # ** Window_SkillTreePoints
  3795. #------------------------------------------------------------------------------
  3796. # This window displays amount of skill tree points
  3797. #==============================================================================
  3798.  
  3799. class Window_SkillTreePoints < Window_Base
  3800. #--------------------------------------------------------------------------
  3801. # * Object Initialization
  3802. # actor_index : actor index
  3803. #--------------------------------------------------------------------------
  3804. def initialize(actor_index)
  3805. super(SkillTree::SKILL_POINT_AREA[0], SkillTree::SKILL_POINT_AREA[1],
  3806. SkillTree::SKILL_POINT_AREA[2], SkillTree::SKILL_POINT_AREA[3])
  3807. self.contents = Bitmap.new(width - 32, height - 32)
  3808. self.opacity = SkillTree::SKILL_POINT_AREA[4]
  3809. self.back_opacity = SkillTree::SKILL_POINT_AREA[5]
  3810. @actor = $game_party.actors[actor_index]
  3811. refresh
  3812. end
  3813. #--------------------------------------------------------------------------
  3814. # * Refresh
  3815. #--------------------------------------------------------------------------
  3816. def refresh
  3817. self.contents.clear
  3818. self.contents.font.color = normal_color
  3819. self.contents.draw_text(0, 0, SkillTree::SKILL_POINT_AREA[2] - 32, 32,
  3820. @actor.skillpoints.to_s, 2)
  3821. end
  3822. end
  3823.  
  3824.  
  3825.  
  3826. #==============================================================================
  3827. # ** Interpreter
  3828. #------------------------------------------------------------------------------
  3829. # This interpreter runs event commands. This class is used within the
  3830. # Game_System class and the Game_Event class.
  3831. #==============================================================================
  3832.  
  3833. class Interpreter
  3834. #--------------------------------------------------------------------------
  3835. # * Alias Listings
  3836. #--------------------------------------------------------------------------
  3837. alias skilltree_interpreter_command_318 command_318
  3838. #--------------------------------------------------------------------------
  3839. # * Object Initialization
  3840. # actor_index : actor index
  3841. # from_map : from_map
  3842. #--------------------------------------------------------------------------
  3843. def skilltree(actor_index=0, from_map=false)
  3844. $scene = Scene_SkillTree.new(actor_index, from_map)
  3845. end
  3846. #--------------------------------------------------------------------------
  3847. # * Change Skills
  3848. #--------------------------------------------------------------------------
  3849. def command_318
  3850. # Get actor
  3851. actor = $game_actors[@parameters[0]]
  3852. # Get Skill Data
  3853. skill_id_value = @parameters[2]
  3854. found_rank = false
  3855. found_rank_skill = 0
  3856. index_value = nil
  3857. # Find index value and rank data
  3858. for skill in $data_skills
  3859. if SkillTree::RANKS.has_key?(skill.id)
  3860. if SkillTree::RANKS[skill.id].include?(skill_id_value)
  3861. found_rank = true
  3862. found_rank_skill = skill.id
  3863. test = SkillTree::RANKS[skill.id]
  3864. index_value = test.index(skill_id_value)
  3865. end
  3866. end
  3867. end
  3868. # Perform only if a ranked skill and not at skill start
  3869. if found_rank == true && index_value != nil
  3870. # if forget skill type
  3871. if @parameters[1] != 0
  3872. # Exit as this ranked skill isn't in memory
  3873. return true unless actor.skills.include?(found_rank_skill)
  3874. # Actor's currently loaded skill at current level
  3875. current_id = actor.skill_id[found_rank_skill]
  3876. test_array = SkillTree::RANKS[found_rank_skill]
  3877. current_idx = test_array.index(current_id)
  3878. idx = (current_idx.nil?) ? 0 : current_idx + 1
  3879. if idx == index_value+1
  3880. # Reset to original and remove
  3881. frs = found_rank_skill
  3882. actor.skill_id[frs] = frs
  3883. actor.skill_level[frs] = 0
  3884. actor.skill_icon_name[frs] = $data_skills[frs].icon_name
  3885. actor.forget_skill(frs)
  3886. end
  3887. # if learn skill type
  3888. else
  3889. # If actor has a skill to upgrade... based on ranked skill passed
  3890. if actor.skills.include?(found_rank_skill)
  3891. current_id = actor.skill_id[found_rank_skill]
  3892. # Exit method if skill currently memorized
  3893. return true if current_id == skill_id_value
  3894. # Get Testing array
  3895. test_array = SkillTree::RANKS[found_rank_skill]
  3896. if index_value >= 0
  3897. for skill in actor.skills
  3898. found_flag = false
  3899. current_id = actor.skill_id[skill]
  3900. # If either BASE skill in actor's database
  3901. if current_id == found_rank_skill
  3902. original_skill_index = 0
  3903. found_flag = true
  3904. # Or a LEVELED skill in actor's database
  3905. elsif test_array.include?(current_id)
  3906. original_skill_index = test_array.index(current_id)+1
  3907. found_flag = true
  3908. end
  3909. if found_flag == true
  3910. new_skill_index = index_value+1
  3911. if !(new_skill_index > original_skill_index)
  3912. return true
  3913. end
  3914. actor.skill_id[found_rank_skill] = skill_id_value
  3915. actor.skill_level[found_rank_skill] = new_skill_index
  3916. return true
  3917. end
  3918. end
  3919. end
  3920. # Otherwise, add the skill
  3921. else
  3922. diff = 0
  3923. test = SkillTree::RANKS[found_rank_skill]
  3924. if test.include?(skill_id_value)
  3925. diff = test.index(skill_id_value)
  3926. end
  3927. actor.learn_skill(found_rank_skill)
  3928. actor.skill_id[found_rank_skill] = skill_id_value
  3929. actor.skill_level[found_rank_skill] = diff+1
  3930. return true
  3931. end
  3932. end
  3933. end
  3934. # Lest the original call
  3935. return skilltree_interpreter_command_318
  3936. end
  3937. end
  3938.  
  3939.  
  3940.  
  3941. #==============================================================================
  3942. # ** Scene_SkillTree
  3943. #------------------------------------------------------------------------------
  3944. # This class performs SkillTree screen processing.
  3945. #==============================================================================
  3946.  
  3947. class Scene_SkillTree
  3948. #--------------------------------------------------------------------------
  3949. # * Object Initialization
  3950. # actor_index : actor index
  3951. # from_map : from_map
  3952. # id : if ID used
  3953. #--------------------------------------------------------------------------
  3954. def initialize(actor_index=0, from_map=false)
  3955. @actor_index = actor_index
  3956. @from_map = from_map
  3957. end
  3958. #--------------------------------------------------------------------------
  3959. # * Main Processing
  3960. #--------------------------------------------------------------------------
  3961. def main
  3962. @actor = $game_party.actors[@actor_index]
  3963. @switch_id = (SkillTree::CLASS_TREE_START == true) ?
  3964. @actor.class_id : @actor.id
  3965. main_windows
  3966. main_update
  3967. main_dispose
  3968. end
  3969. #--------------------------------------------------------------------------
  3970. # * Main Processing of Window Display
  3971. #--------------------------------------------------------------------------
  3972. def main_windows
  3973. if SkillTree::SHOW_NAME_WINDOW
  3974. unless (SkillTree::HIDE_NAME_INACTIVE &&
  3975. SkillTree::SKILLS_ROWS[@switch_id].nil?)
  3976. @name_win = Window_SkillTreeName.new(@actor_index)
  3977. end
  3978. end
  3979. unless SkillTree::SKILLS_ROWS[@switch_id].nil?
  3980. @tabs_win = Window_SkillTreeTabs.new(@actor_index)
  3981. @points_win = Window_SkillTreePoints.new(@actor_index)
  3982. end
  3983. @tree_win = Window_SkillTreeMain.new(@actor_index)
  3984. @tree_win.active = false
  3985. @tree_win.visible = false if SkillTree::SKILLS_ROWS[@switch_id].nil?
  3986. @info_win = Window_SkillTreeInfo.new
  3987. @info_win.z = @tree_win.z + 3
  3988. @info_win.visible = false
  3989. @info_pic = Sprite.new
  3990. refresh_infopicture
  3991. @info_pic.opacity = 255
  3992. @info_pic.z = @tree_win.z + 2
  3993. @info_pic.x = @info_win.x
  3994. @info_pic.y = @info_win.y
  3995. @info_pic.visible = false
  3996. @rankchanged = false
  3997. # Switch backgrounds
  3998. refresh_background
  3999. # Execute transition
  4000. Graphics.transition
  4001. end
  4002. #--------------------------------------------------------------------------
  4003. # * Main Processing of Update System
  4004. #--------------------------------------------------------------------------
  4005. def main_update
  4006. loop do
  4007. # Update game screen
  4008. Graphics.update
  4009. # Update input information
  4010. Input.update
  4011. # Frame update
  4012. update
  4013. # Abort loop if screen is changed
  4014. break if $scene != self
  4015. end
  4016. end
  4017. #--------------------------------------------------------------------------
  4018. # * Main Processing of Window Disposal
  4019. #--------------------------------------------------------------------------
  4020. def main_dispose
  4021. # Prepare for transition
  4022. Graphics.freeze
  4023. # Dispose of background
  4024. if SkillTree::WINDOW_BACKGROUND != nil
  4025. if SkillTree::WINDOW_BACKGROUND == -1
  4026. @spriteset.dispose
  4027. else
  4028. @stback.dispose
  4029. end
  4030. end
  4031. # Dispose of windows
  4032. @info_pic.dispose
  4033. @tree_win.dispose
  4034. @info_win.dispose
  4035. @name_win.dispose unless @name_win.nil?
  4036. @tabs_win.dispose unless @tabs_win.nil?
  4037. @points_win.dispose unless @points_win.nil?
  4038. end
  4039. #--------------------------------------------------------------------------
  4040. # * Set or refresh the background
  4041. #--------------------------------------------------------------------------
  4042. def refresh_background
  4043. # Prevent re-refreshes if not needed (They can stack!)
  4044. return if (@oldactor == @switch_id) && (@oldtree == @tree_win.tree)
  4045. @oldactor = @switch_id
  4046. @oldtree = @tree_win.tree
  4047. # If there is a window background
  4048. return if SkillTree::WINDOW_BACKGROUND.nil?
  4049. # If it is a spriteset
  4050. if SkillTree::WINDOW_BACKGROUND == -1
  4051. refresh_background_spriteset
  4052. # Otherwise, an image
  4053. else
  4054. refresh_background_image
  4055. end
  4056. end
  4057. #--------------------------------------------------------------------------
  4058. # * Set or refresh the background (Spriteset)
  4059. #--------------------------------------------------------------------------
  4060. def refresh_background_spriteset
  4061. @spriteset = Spriteset_Map.new
  4062. end
  4063. #--------------------------------------------------------------------------
  4064. # * Set or refresh the background (Image)
  4065. #--------------------------------------------------------------------------
  4066. def refresh_background_image
  4067. # Create the background plane if it doesn't exist
  4068. @stback = Plane.new if @stback == nil
  4069. # Set the default background image file & a clear area for the array image
  4070. temp1 = RPG::Cache.skilltree(SkillTree::WINDOW_BACKGROUND)
  4071. temp2 = nil
  4072. # Load the array image file if one exists
  4073. if SkillTree::BACKGROUND_LIST[@switch_id] != nil
  4074. img = SkillTree::BACKGROUND_LIST[@switch_id][@tree_win.tree]
  4075. temp2 = RPG::Cache.skilltree(img) if img != nil
  4076. end
  4077. # Load the array image file into the default background image if exists
  4078. temp1 = temp2 if temp2 != nil
  4079. # Set the background
  4080. @stback.bitmap = temp1
  4081. @stback.z = 1
  4082. end
  4083. #--------------------------------------------------------------------------
  4084. # * Set or refresh the information window background
  4085. #--------------------------------------------------------------------------
  4086. def refresh_infopicture
  4087. return if SkillTree::INFOBACKGROUND.nil?
  4088. @info_pic.bitmap = RPG::Cache.skilltree(SkillTree::INFOBACKGROUND)
  4089. return if SkillTree::INFOBACKGROUND_LIST[@switch_id].nil?
  4090. img = SkillTree::INFOBACKGROUND_LIST[@switch_id][@tree_win.tree]
  4091. @info_pic.bitmap = RPG::Cache.skilltree(img) if img != nil
  4092. end
  4093. #--------------------------------------------------------------------------
  4094. # * Frame Update
  4095. #--------------------------------------------------------------------------
  4096. def update
  4097. # Update the windows
  4098. update_tree_windows
  4099. # Based on active/inactive system
  4100. return frame_update_active if @tree_win.active
  4101. frame_update_inactive
  4102. end
  4103. #--------------------------------------------------------------------------
  4104. # * Frame Update (Handle windows update and refresh)
  4105. #--------------------------------------------------------------------------
  4106. def update_tree_windows
  4107. # Skip if no tree for actor
  4108. return if SkillTree::SKILLS_ROWS[@switch_id].nil?
  4109. # Update and refresh
  4110. @tabs_win.update
  4111. @tabs_win.refresh
  4112. @points_win.refresh
  4113. if @tree_win.item_used.any? {|v| $data_skills[v].need_update}
  4114. @tree_win.refresh
  4115. end
  4116. @tree_win.update
  4117. @info_win.actor = @actor
  4118. if @info_win.skill_id != @tree_win.item_used[@tree_win.index] ||
  4119. @rankchanged
  4120. @info_win.skill_id = @tree_win.item_used[@tree_win.index]
  4121. @info_win.refresh
  4122. @rankchanged = false
  4123. end
  4124. end
  4125. #--------------------------------------------------------------------------
  4126. # * Frame Update (in active screen)
  4127. #--------------------------------------------------------------------------
  4128. def frame_update_active
  4129. return update_perform_action if Input::trigger?(Input::C)
  4130. return update_cancel_tree if Input::trigger?(Input::B)
  4131. return update_cursor_selection if Input::repeat?(Input::LEFT)
  4132. return update_cursor_selection if Input::repeat?(Input::RIGHT)
  4133. return update_cursor_selection if Input::repeat?(Input::DOWN)
  4134. return update_cursor_selection if Input::repeat?(Input::UP)
  4135. end
  4136. #--------------------------------------------------------------------------
  4137. # * Frame Update (in inactive screen)
  4138. #--------------------------------------------------------------------------
  4139. def frame_update_inactive
  4140. return update_full_cancel if Input::trigger?(Input::B)
  4141. return update_cycle_actor if Input::trigger?(Input::R)
  4142. return update_cycle_actor(-1) if Input::trigger?(Input::L)
  4143. # No further action if no valid skill tree
  4144. return if SkillTree::SKILLS_ROWS[@switch_id].nil?
  4145. return update_select_tree if Input::trigger?(Input::C)
  4146. return update_cycle_tree_screen if Input::repeat?(Input::LEFT)
  4147. return update_cycle_tree_screen if Input::repeat?(Input::RIGHT)
  4148. end
  4149. #--------------------------------------------------------------------------
  4150. # * Frame Update (in active screen - cancel current tree)
  4151. #--------------------------------------------------------------------------
  4152. def update_perform_action
  4153. skill = @tree_win.item_used[@tree_win.index]
  4154. rank = @actor.skill_level[skill]
  4155. rank_max = 0
  4156. if SkillTree::RANKS.has_key?(skill)
  4157. rank_max = SkillTree::RANKS[skill].size
  4158. end
  4159. # Get skill checking and ranking values
  4160. rank_checked = (rank < rank_max)
  4161. skill_checked = @actor.skill_check(skill)
  4162. # If a skill can be learned or upgraded
  4163. if @actor.can_learn?(skill,@tree_win.tree)
  4164. return update_add_skill(skill) if !skill_checked
  4165. return update_increase_skill(skill) if (rank_checked && skill_checked)
  4166. end
  4167. $game_system.se_play($data_system.buzzer_se)
  4168. @rankchanged = true
  4169. end
  4170. #--------------------------------------------------------------------------
  4171. # * Frame Update (updating with new skill not learned)
  4172. #--------------------------------------------------------------------------
  4173. def update_add_skill(skill)
  4174. $game_system.se_play($data_system.decision_se)
  4175. @actor.learn_skill(skill)
  4176. @rankchanged = true
  4177. $data_skills[skill].need_update = true
  4178. @actor.skillpoints -= $data_skills[skill].skill_points_cost
  4179. @actor.points_spent += $data_skills[skill].skill_points_cost
  4180. @actor.update_actor_tree_passive_effects(skill)
  4181. end
  4182. #--------------------------------------------------------------------------
  4183. # * Frame Update (updating new skill that was learned)
  4184. #--------------------------------------------------------------------------
  4185. def update_increase_skill(skill)
  4186. return unless SkillTree::RANKS.has_key?(skill)
  4187. $game_system.se_play($data_system.decision_se)
  4188. rank_max = SkillTree::RANKS[skill].size
  4189. rank = @actor.skill_level[skill]
  4190. @actor.skill_level[skill] += 1
  4191. $data_skills[skill].need_update = true
  4192. @rankchanged = true
  4193. @actor.skillpoints -= $data_skills[skill].skill_points_cost
  4194. @actor.points_spent += $data_skills[skill].skill_points_cost
  4195. new_id = SkillTree::RANKS[skill][@actor.skill_level[skill]-1]
  4196. @actor.update_skill(skill, new_id)
  4197. end
  4198. #--------------------------------------------------------------------------
  4199. # * Frame Update (in active screen - cancel current tree)
  4200. #--------------------------------------------------------------------------
  4201. def update_cancel_tree
  4202. $game_system.se_play($data_system.cancel_se)
  4203. @tree_win.oy = 0
  4204. @tabs_win.active = true
  4205. @tree_win.active = false
  4206. @info_win.visible = false
  4207. @info_pic.visible = false
  4208. end
  4209. #--------------------------------------------------------------------------
  4210. # * Frame Update (in active screen - move cursor into skill for selection)
  4211. #--------------------------------------------------------------------------
  4212. def update_cursor_selection
  4213. testskill = @tree_win.item_used[@tree_win.index]
  4214. return if (SkillTree::SHOW_ALL_TREE || SkillTree::INFO_SHOW_ALL)
  4215. if !$game_party.actors[@actor_index].can_learn?(testskill, @tree_win.tree)
  4216. @info_win.visible = false
  4217. @info_pic.visible = false
  4218. else
  4219. @info_win.visible = true
  4220. @info_pic.visible = true
  4221. end
  4222. end
  4223. #--------------------------------------------------------------------------
  4224. # * Frame Update (in inactive screen - selection/choosing of tree in system)
  4225. #--------------------------------------------------------------------------
  4226. def update_select_tree
  4227. $game_system.se_play($data_system.decision_se)
  4228. @tree_win.index = 0
  4229. @tabs_win.active = false
  4230. @tree_win.active = true
  4231. @info_win.visible = true
  4232. @info_pic.visible = true
  4233. end
  4234. #--------------------------------------------------------------------------
  4235. # * Frame Update (in inactive screen - performing full cancel of tree system)
  4236. #--------------------------------------------------------------------------
  4237. def update_full_cancel
  4238. $game_system.se_play($data_system.cancel_se)
  4239. $scene = Scene_Map.new if @from_map == true
  4240. $scene = Scene_Menu.new
  4241. end
  4242. #--------------------------------------------------------------------------
  4243. # * Frame Update (in inactive screen - performing cycle of tree in system)
  4244. #--------------------------------------------------------------------------
  4245. def update_cycle_tree_screen
  4246. $game_system.se_play($data_system.cursor_se)
  4247. @tree_win.tree = @tabs_win.index
  4248. @info_win.tree = @tabs_win.index
  4249. @tree_win.initialize_skills
  4250. # Refresh when switching actors
  4251. refresh_background
  4252. refresh_infopicture
  4253. @tree_win.refresh
  4254. end
  4255. #--------------------------------------------------------------------------
  4256. # * Frame Update (in inactive screen - performing actor cycle)
  4257. # direction : direction of cycle (1/-1) negative reverses cycle)
  4258. #--------------------------------------------------------------------------
  4259. def update_cycle_actor(direction=1)
  4260. $game_system.se_play($data_system.cursor_se)
  4261. @actor_index += direction
  4262. @actor_index %= $game_party.actors.size
  4263. $scene = Scene_SkillTree.new(@actor_index, @from_map)
  4264. end
  4265. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement