Tips & Tricks – Joint Penalty

Yanfly Engine Plugins is a plugin library made for RPG Maker MV, a wonderful piece of software to help you make that role playing game of your dreams. You can find out more about RPG Maker MV here.

From Tree of Savior, the Linker class has a rather unique ability to link allies and enemies. For this video, we’ll be exploring the Joint Penalty skill, which links together enemies. Linked enemies with the Joint Penalty link will split and share any damage they take to other enemies affected by Joint Penalty. This tips & tricks video will show you just how to do that!

Needed plugins:
Battle Engine Core
Buffs & States Core

Copy and Paste Versions~

Please wait while you are redirected...or Click Here if you do not want to wait.

Physical Only Damage

<Custom React Effect>
// Check if the damage is positive and if it's a physical action.
if (value > 0 && this.isPhysical()) {
  // Get the living members of the same party.
  var members = target.friendsUnit().aliveMembers();
  // Make an empty group to list affected members.
  var affected = [];
  // We'll go through each member to check them.
  for (var i = 0; i < members.length; ++i) {
    // Getting the individual member.
    var member = members[i];
    // Does the member exist and is the member affected by state 91 (the Joint Penalty state)?
    if (member && member.isStateAffected(91)) {
      // If the member is affected, add it to the affected group.
      affected.push(member);
    }
  }
  // Divide up the damage by how many members are affected.
  value = Math.ceil(value / affected.length);
  // We'll go through each of the affected members now.
  for (var i = 0; i < affected.length; ++i) {
    // Getting the individual affected member.
    var member = affected[i];
    // Ignore the effect if the member is the target of attack.
    if (member !== target) {
      // Let's play animation 12 on the affected member.
      member.startAnimation(12);
      // The affected member takes damage.
      member.gainHp(-value);
      // We'll have the affected member reveal a damage popup.
      member.startDamagePopup();
      // Clear the results of the effect.
      member.clearResult();
      // Next, check to see if the member is dead.
      if (member.isDead()) {
        // If the member is dead, we'll make it collapse.
        member.performCollapse();
      }
    }
  }
}
</Custom React Effect>

Magical Only Damage

<Custom React Effect>
// Check if the damage is positive and if it's a magical action.
if (value > 0 && this.isMagical()) {
  // Get the living members of the same party.
  var members = target.friendsUnit().aliveMembers();
  // Make an empty group to list affected members.
  var affected = [];
  // We'll go through each member to check them.
  for (var i = 0; i < members.length; ++i) {
    // Getting the individual member.
    var member = members[i];
    // Does the member exist and is the member affected by state 91 (the Joint Penalty state)?
    if (member && member.isStateAffected(91)) {
      // If the member is affected, add it to the affected group.
      affected.push(member);
    }
  }
  // Divide up the damage by how many members are affected.
  value = Math.ceil(value / affected.length);
  // We'll go through each of the affected members now.
  for (var i = 0; i < affected.length; ++i) {
    // Getting the individual affected member.
    var member = affected[i];
    // Ignore the effect if the member is the target of attack.
    if (member !== target) {
      // Let's play animation 12 on the affected member.
      member.startAnimation(12);
      // The affected member takes damage.
      member.gainHp(-value);
      // We'll have the affected member reveal a damage popup.
      member.startDamagePopup();
      // Clear the results of the effect.
      member.clearResult();
      // Next, check to see if the member is dead.
      if (member.isDead()) {
        // If the member is dead, we'll make it collapse.
        member.performCollapse();
      }
    }
  }
}
</Custom React Effect>

Certain-Hit Only Damage

<Custom React Effect>
// Check if the damage is positive and if it's a certain hit action.
if (value > 0 && this.isCertainHit()) {
  // Get the living members of the same party.
  var members = target.friendsUnit().aliveMembers();
  // Make an empty group to list affected members.
  var affected = [];
  // We'll go through each member to check them.
  for (var i = 0; i < members.length; ++i) {
    // Getting the individual member.
    var member = members[i];
    // Does the member exist and is the member affected by state 91 (the Joint Penalty state)?
    if (member && member.isStateAffected(91)) {
      // If the member is affected, add it to the affected group.
      affected.push(member);
    }
  }
  // Divide up the damage by how many members are affected.
  value = Math.ceil(value / affected.length);
  // We'll go through each of the affected members now.
  for (var i = 0; i < affected.length; ++i) {
    // Getting the individual affected member.
    var member = affected[i];
    // Ignore the effect if the member is the target of attack.
    if (member !== target) {
      // Let's play animation 12 on the affected member.
      member.startAnimation(12);
      // The affected member takes damage.
      member.gainHp(-value);
      // We'll have the affected member reveal a damage popup.
      member.startDamagePopup();
      // Clear the results of the effect.
      member.clearResult();
      // Next, check to see if the member is dead.
      if (member.isDead()) {
        // If the member is dead, we'll make it collapse.
        member.performCollapse();
      }
    }
  }
}
</Custom React Effect>

All Damage

<Custom React Effect>
// Check if the damage is positive.
if (value > 0) {
  // Get the living members of the same party.
  var members = target.friendsUnit().aliveMembers();
  // Make an empty group to list affected members.
  var affected = [];
  // We'll go through each member to check them.
  for (var i = 0; i < members.length; ++i) {
    // Getting the individual member.
    var member = members[i];
    // Does the member exist and is the member affected by state 91 (the Joint Penalty state)?
    if (member && member.isStateAffected(91)) {
      // If the member is affected, add it to the affected group.
      affected.push(member);
    }
  }
  // Divide up the damage by how many members are affected.
  value = Math.ceil(value / affected.length);
  // We'll go through each of the affected members now.
  for (var i = 0; i < affected.length; ++i) {
    // Getting the individual affected member.
    var member = affected[i];
    // Ignore the effect if the member is the target of attack.
    if (member !== target) {
      // Let's play animation 12 on the affected member.
      member.startAnimation(12);
      // The affected member takes damage.
      member.gainHp(-value);
      // We'll have the affected member reveal a damage popup.
      member.startDamagePopup();
      // Clear the results of the effect.
      member.clearResult();
      // Next, check to see if the member is dead.
      if (member.isDead()) {
        // If the member is dead, we'll make it collapse.
        member.performCollapse();
      }
    }
  }
}
</Custom React Effect>

Have fun!