Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Making a skill use, users weapon element?

NBEOTM

Member

Is there a way to change the formulas so that if say ashes has a fire sword, his cross cut will be fire elemental instead of anti-undead? :thumb:
 
Try inserting this somewhere below every other scripts except Main.

Code:
class RPG::Skill
  Skills_Affected_By_Weapon_Set = []
  alias seph_skillweaponelements_es element_set
  def element_set
    n = seph_skillweaponelements_es
    if Skills_Affected_By_Weapon_Set.include?(@id)
      if $seph_skillweaponelements_battler != nil &&
         $seph_skillweaponelements_battler.is_a?(Game_Actor)
        n << $seph_skillweaponelements_battler.element_set
        n.flatten!.uniq!.sort!
      end
    end
    return n
  end
end

class Game_Battler
  alias seph_skillweaponelements_se skill_effect
  def skill_effect(user, skill)
    $seph_skillweaponelements_battler = user
    seph_skillweaponelements_se(user, skill)
    $seph_skillweaponelements_battler = nil
  end
end

Fill Skills_Affected_By_Weapon_Set with a bunch of skill ids that will be affected by this. So skills 1, 2, 3 and 7 would be

Skills_Affected_By_Weapon_Set = [1, 2, 3, 7]

I didn't bother opening rmxp for this, so let me know if there are any errors.
 
This will make, that the added skills that are in $skill_weapon_element, uses the element set of the weapon, but if the weapon has not any element, it will use the element set of the skill.
Code:
$skill_weapon_element = [1,2,3,4,5,6] # Add here the skills that you want that use the weapon element

class Game_Battler
  def skill_effect(user, skill)
    self.critical = false
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      return false
    end
    effective = false
    effective |= skill.common_event_id > 0
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    effective |= hit < 100
    if hit_result == true
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      self.damage = power * rate / 20
      # Modification
      if $skill_weapon_element.include?(skill.id)
        if user.element_set.size >= 1
          self.damage *= elements_correct(user.element_set)
        else
          self.damage *= elements_correct(skill.element_set)
        end
      else
        self.damage *= elements_correct(skill.element_set)
      end
      # End Modification
      self.damage /= 100
      if self.damage > 0
        if self.guarding?
          self.damage /= 2
        end
      end
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      effective |= hit < 100
    end
    if hit_result == true
      if skill.power != 0 and skill.atk_f > 0
        remove_states_shock
        effective = true
      end
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      if skill.power == 0
        self.damage = ""
        unless @state_changed
          self.damage = "Miss"
        end
      end
    else
      self.damage = "Miss"
    end
    unless $game_temp.in_battle
      self.damage = nil
    end
    return effective
  end
end
If you want any change, especify it.

Edit: I do not see the Seph post, it has been post while I was posting
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top