Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 KExpBooK XP VX & ACE
#1
KExpBooK XP VX & ACE

by Kyonides Arkanthes


Introduction

Yes, I know that this is a scriptlet but I thought that some of you might have been thinking about an easy way to make items become actual experience books that allow your heroes to earn some experience points. Well, here's my version of such a script.

All versions of my scriptlet will let you freeze or thaw an actor's experience gaining feature.
By default the experience gaining feature is enabled. (@exp_frozen = nil)

XP Version

Please edit the BOOKS constant found in the KExp module accordingly.
Then open the Item DB and set their Recover HP as EXP.

Code:
# * KExpBooK XP
#   Scripter : Kyonides Arkanthes
#   v1.0.0 - 2022-01-02

# Let items become books filled with experience points!
# Add as many item ID's to the BOOKS constant found below as deemed
# necessary. Then open the Item DB and set their Recover HP as EXP.
# You can also freeze the experience gaining feature at any given time.
# Offer only valid for Actors aka Heroes!

# This scriptlet is free as in beer and speech!

# * Script Calls * #

# - Get a Party Member
# actor = $game_party.actors[ActorIndex]
# - Get an Actor listed in the DB
# actor = $game_actors[ActorID]

# - Freeze or Thaw the Experience Gaining Feature
# actor.exp_frozen = true or false # Default: nil (here the same as false)

module KExp
  # List of Item ID's: [ItemID1, ItemID2, etc.]
  BOOKS = [38, 39, 40]
  BOOK_EFFECT_LABEL = "EXP UP!"
end

class Game_Battler
  alias :kyon_exp_book_gm_btlr_item_fx :item_effect
  def actor?() @actor_id != nil end
  def item_effect(item)
    if actor? and KExp::BOOKS.include?(item.id)
      return false if @exp_frozen
      self.exp += item.recover_hp
      self.damage = KExp::BOOK_EFFECT_LABEL if $game_temp.in_battle
      return true
    end
    kyon_exp_book_gm_btlr_item_fx(item)
  end
end

class Game_Actor
  attr_accessor :exp_frozen
end

class Game_Party
  alias :kyon_exp_book_gm_pty_use_item? :item_can_use?
  def item_can_use?(item_id)
    return false if KExp::BOOKS.include?(item_id) and $game_temp.in_battle
    kyon_exp_book_gm_pty_use_item?(item_id)
  end
end



VX Version

You will need to use the following note tag: <exp 100>

Its value could be 100 or anything you game devs can come up with.

Code:
# * KExpBooK VX
#   Scripter : Kyonides Arkanthes
#   v1.0.0 - 2022-01-02

# Let items become books filled with experience points by adding a simple
# note tag! * Offer only valid for Actors aka Heroes! *
# You can also freeze the experience gaining feature at any given time.
# Item Note Example: <exp 500>

# This scriptlet is free as in beer and speech!

# * Script Calls * #

# - Get a Party Member
# actor = $game_party.members[ActorIndex]
# - Get an Actor listed in the DB
# actor = $game_actors[ActorID]

# - Freeze or Thaw the Experience Gaining Feature
# actor.exp_frozen = true or false # Default: nil (here the same as false)

module KExp
  BOOKS_NOTE = /<exp (\d+)>/i
end

class Game_Battler
  alias :kyon_exp_book_gm_btlr_item_gr_fx :item_growth_effect
  alias :kyon_exp_book_gm_btlr_item_fx? :item_effective?
  def item_growth_effect(user, item)
    if actor?
      item.note[KExp::BOOKS_NOTE]
      book_exp = $1.to_i
      return gain_exp(book_exp, true) if book_exp > 0
    end
    kyon_exp_book_gm_btlr_item_gr_fx(user, item)
  end

  def item_effective?(user, item)
    return !@exp_frozen if actor? and item.note[KExp::BOOKS_NOTE]
    kyon_exp_book_gm_btlr_item_fx?(user, item)
  end
end

class Game_Actor
  attr_accessor :exp_frozen
end




VX ACE Version

You will need to use the following note tag: <exp 100>

Its value could be 100 or anything you game devs can come up with.

Code:
# * KExpBooK ACE
#   Scripter : Kyonides Arkanthes
#   v1.0.0 - 2022-01-02

# Let items become books filled with experience points by adding a simple
# note tag! * Offer only valid for Actors aka Heroes! *
# You can also freeze the experience gaining feature at any given time.
# Item Note Example: <exp 500>

# This scriptlet is free as in beer and speech!

# * Script Calls * #

# - Get a Party Member
# actor = $game_party.members[ActorIndex]
# - Get an Actor listed in the DB
# actor = $game_actors[ActorID]

# - Freeze or Thaw the Experience Gaining Feature
# actor.exp_frozen = true or false # Default: nil (here the same as false)

module KExp
  BOOKS_NOTE = /<exp (\d+)>/i
end

class Game_Battler
  alias :kyon_exp_book_gm_btlr_item_apply :item_apply
  alias :kyon_exp_book_gm_btlr_item_test :item_test
  def item_apply(user, item)
    if actor?
      item.note[KExp::BOOKS_NOTE]
      book_exp = $1.to_i
      gain_exp(book_exp) if book_exp > 0
    end
    kyon_exp_book_gm_btlr_item_apply(user, item)
  end

  def item_test(user, item)
    return !@exp_frozen if actor? and item.note[KExp::BOOKS_NOTE]
    kyon_exp_book_gm_btlr_item_test(user, item)
  end
end

class Game_Actor
  attr_accessor :exp_frozen
end


Terms & Conditions

The only thing you need to know about it is that it is free as in Beer beer and Shocked speech!
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9

Maranatha!

The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.

[Image: SP1-Scripter.png]
[Image: SP1-Writer.png]
[Image: SP1-Poet.png]
[Image: SP1-PixelArtist.png]
[Image: SP1-Reporter.png]

My Original Stories (available in English and Spanish)

List of Compiled Binary Executables I have published...
HiddenChest & Roole

Give me a free copy of your completed game if you include at least 3 of my scripts! Laughing + Tongue sticking out

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Reply }
#2
An Interesting Update

All versions of my scriptlet will let you freeze or thaw an actor's experience gaining feature.
By default the experience gaining feature is enabled. (@exp_frozen = nil)

Plus you can now use it in all RGSS based versions of the RPG Maker engine, including VX! Grinning
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9

Maranatha!

The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.

[Image: SP1-Scripter.png]
[Image: SP1-Writer.png]
[Image: SP1-Poet.png]
[Image: SP1-PixelArtist.png]
[Image: SP1-Reporter.png]

My Original Stories (available in English and Spanish)

List of Compiled Binary Executables I have published...
HiddenChest & Roole

Give me a free copy of your completed game if you include at least 3 of my scripts! Laughing + Tongue sticking out

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Reply }




Users browsing this thread: