Grathnode Install

Have you ever played the Ar Tonelico series? Do you remember how you could install Grathnode crystals (in an awfully sexually suggesting way) into the heroines to power up their songs?
Well, basically, this is what this script does, minus the sexual innuendos. It keeps the original name Grathnode because it is completely inspired by AT.

For an in-depth explanation, you will create items with certain properties. They can cause damage, possess traits, etc… When one of those items is put inside a skill, the skill will take all its properties, be it additional damage with a different formula, or status effects, debuffs… The “upgrades” made that way are actor-dependent, meaning that several actors with the same skill won’t necessarily share the same Grathnodes set.

Download!

Instructions
There are several steps to follow in order to use this script.

Create the grathnode items. It is a regular item, which can cause damage/recovery, have certain traits and so on… All of those abilities will be transferred to the skill. Therefore, for balancing issues, really powerful Grathnodes with a lot of effects should be scarce in-game because for all those effects only one slot will be used.
There are several tags that can be written in the item’s notebox:

<grathnode>
Mandatory tag used to identify an item as a Grathnode crystal.

<scope: string>
This tag allows you to determine on which kind of skill an effect can be applied or not. “string” can be any of those:
for_opponent?
for_friend?
for_dead_friend?
for_user?
for_all?

Basically, the item scope must match the skill scope. If you omit this tag, the Grathnode can be used on any skill – you could potentially put damaging effects on healing spells for instance.

<mp_inflation: x>
<tp_inflation: x>

The MP and/or TP cost of the skill will raise per x% if this item is assigned.

Database Example 1

Example of a Grathnode item. Only works for offensive skills and raises MP cost by 20%.

Limit the slots on the skills. By default, a skill can take 5 items at maximum. However, you can balance things out by limiting the number of slots either individually or globally. Global setting can be accessed within the script: you need to change the value for ABSOLUTE_MAX_GRATHNODES to whatever you fancy. Note that this script’s visual interface is not designed for more than 5 slots.
Individual settings are made in the skill’s notebox, with this tag;
<max_grathnodes: x>
x should be below ABSOLUTE_MAX_GRATHNODES and will actually be ignored if superior.

Additional options.
CLEAR_FORGET_SKILL
This option can be found in the config module of the script. Set to true, it automatically removes the grathnodes on a skill when an actor forgets it.

$game_actors[actor_id].barring_grathnode = true/fase
In a script call event, this allows or disallows a specific actor to be listed in the grathnode menu.

SINGLE_ACTOR_INSTALL = true/false
SINGLE_ACTOR_INSTALL_ID = actor_id

Also in the config module, those options are only used if you want to install feature to be used by a single actor, effectively disabling the whole selection process altogether.

Call the scene. SceneManager.call(Scene_Grathnode) is the way to go; however, this is an actor related scene, just like Skill or Equip. Therefore, it is strongly recommended to use a menu manager to put the option directly in the main menu. I prepared beforehand the required methods to use with Yanfly’s Ace Menu Engine so you would be well inspired to use it. All you have to do is add this line in the CUSTOM_COMMANDS hash:
:grath => [ "Install", 0, 0, :command_install],
Needless to say, you can rename “Install” to whatever you want, and you’re free to add switch conditions too. Refer to the script for more details.
Once it’s done, just add :grath to the COMMAND hash.

Now the players can customize their skills!

Scene Example 1

Alice can't use offensive effects on her "Heal" spell 😦

Scene Example 2

There is no order - you can choose any slot as a target.

Scene Example 3

Fire now costs 5 MP - 30% more than 4, and rounded. It will do 150 additional damage and inflict Silence.

Final Example

Yup, it works!

Compatibility notes
Meant to work with either the DBS or Yanfly’s Ace Battle Engine. I would go as far as recommend you to use the latter because its pop-ups are conceptually GUST-styled. Even better with the Element Popups, that are used in Ar Tonelico.

  1. one question, is it possible to get all this, but have it equipped to weapons?

  2. Bit of a long shot but is there a way to exclude a skill type from the scene menu e.g. you don’t want passive skills to be listed.

  3. Starsinger

    Is it possible to set a skill to come with grathnodes equipped? I was kind of hoping to use this behind the scenes for multi-element skills, and not actually adjustable by the player.

  4. So is it possible to make the grathnodes actor specific? Like by adding a note tag
    to a grathnode item that lets it only be used by “actor 1”.

  5. Its possible to limite equip by skill type or skill element? I’m try to add a “Freezing” effect that can be add only to “Ice” skills.

    tyvm

  6. For some reason, if I add a grathnode with hp damage to a skill, the grathnode doesn’t add damage, instead, replaces the original damage formula of the skill. Is there any way to fix this?

  7. Hi, this is a fantastic script but I do have one question.

    Is it possible to limit specific grathnodes to only be accessible to certain classes and how would I go about doing so?

    Thanks for anyone who replies in advance.

  8. It doesnt work for me, I’m a novice and have only been using Yanfly scripts.

    On a new game, nothing happens. I goto skills and it doesnt show grathnode. Nor is it in the pause menu.

    Am I doing something wrong?

    On a loaded file it says Script ‘Katz Grathnode’ line 302: NoMethodError occurred
    undefined method [] for nil:NilClass

    The line is: 297 – 307

    #————————————————————————–
    # ● Calculates the TP cost inflation
    #————————————————————————–
    def process_grathnode_tp_cost(skill)
    result = 0.0
    return result if @installs[skill.id].nil?
    @installs[skill.id].compact.each do |grathnode|
    result += $data_items[grathnode].tp_inflation
    end
    return result
    end

Leave a comment