public

Rpg Maker Developers Group

Simple enough for a child, powerful enough for a developer

2 Followers
Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.

Original Source

  • Original title: Bless & Kurse XP
  • Original author: kyonides
  • Original date: September 22, 2025
  • Source thread: https://forums.rpgmakerweb.com/threads/bless-kurse-xp.180221/
  • Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSS Scripts (RMXP)

Summary

Bless & Kurse XP by Kyonides​ Introduction Cast a skill or consume an item that will summon some unknown being with its own agenda.

Archived First Post

Bless & Kurse XP

by Kyonides

Introduction

Cast a skill or consume an item that will summon some unknown being with its own agenda.
Will the heroes or the troopers be blessed or cursed by that mysterious meddler?

NOTES

Set ITEM_ID or SKILL_ID to 0 if you wish to disable any of them.
ENEMY_AS_SUMMON_IDS holds the ID's for a good and a evil being (an enemy in the database).

blessnkurse-xp01.jpg

blessnkurse-xp02.jpg

Ruby:
# * Bless & Kurse XP * #
# - Not a Plug & Play Script - #
#   Scripter : Kyonides
#   v1.0.0 - 2025-09-24

# Cast a skill or consume an item that will summon some unknown being with
# its own agenda. Will the heroes or the troopers be blessed or cursed by
# that mysterious meddler?

# Set ITEM_ID or SKILL_ID to 0 if you wish to disable any of them.
# ENEMY_AS_SUMMON_IDS holds the ID's for a good and a evil being, both are
# enemies available on the DB.

module BlessKurse
  ITEM_ID  = 0
  SKILL_ID = 24
  ENEMY_AS_SUMMON_IDS = { :good => 24, :evil => 23, :meh => 20 }
  ITEM_PERCENT  = { :dmg => 80,  :heal => 150 }
  SKILL_PERCENT = { :dmg => 120, :heal => 100 }

  module BKBattler
    def base_maxhp() 100 end
    def base_maxsp() 100 end
    attr_accessor :battler_name, :battler_hue
    attr_accessor :screen_x, :screen_y, :screen_z
  end

  module BKSprite
    def summon!
      @battler_name = @battler.battler_name
      @battler_hue = @battler.battler_hue
      self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
      @width = bitmap.width
      @height = bitmap.height
      @battler.screen_x = (640 - @width) / 2
      @battler.screen_y = (320 - @height) / 2
      self.x = @battler.screen_x
      self.y = @battler.screen_y
      self.z = @battler.screen_z
      self.opacity = 255
      self.visible = true
      @battler_visible = true
    end
  end
end

module RPG
  class Item
    def recover_list
      [@recover_hp, @recover_hp_rate, @recover_sp, @recover_sp_rate]
    end
  end
end

class Spriteset_Battle
  def make_bk_summon(summon)
    summon.screen_z = @enemy_sprites[-1].z - 50
    @bk_summon = Sprite_Battler.new(@viewport1, summon)
    @enemy_sprites << @bk_summon
    @bk_summon.extend BlessKurse::BKSprite
    @bk_summon.summon!
  end

  def dispose_bk_summon
    @bk_summon.dispose
    @enemy_sprites.pop
  end
end

class Scene_Battle
  alias :kyon_bless_kurse_scn_btl_st_trgt_btlrs :set_target_battlers
  alias :kyon_bless_kurse_scn_btl_mk_skl_act_res :make_skill_action_result
  alias :kyon_bless_kurse_scn_btl_mk_itm_act_res :make_item_action_result
  alias :kyon_bless_kurse_scn_btl_up_ph4_stp3 :update_phase4_step3
  alias :kyon_bless_kurse_scn_btl_up_ph4_stp4 :update_phase4_step4
  alias :kyon_bless_kurse_scn_btl_up_ph4_stp5 :update_phase4_step5
  alias :kyon_bless_kurse_scn_btl_up_ph4_stp6 :update_phase4_step6
  def set_target_battlers(scope)
    change_bk_item_skill
    kyon_bless_kurse_scn_btl_st_trgt_btlrs(scope)
  end

  def change_bk_sign
    @bk_neutral = rand(100) < 50
    @bk_sign = rand(100) < 50 ? 1 : -1
  end

  def change_bk_item_skill
    return if @bless_kurse
    if @skill
      return if BlessKurse::SKILL_ID != @skill.id
      @old_skill = @skill.dup
      change_bk_sign
      change_bk_skill_power
    else
      return if BlessKurse::ITEM_ID != @item.id
      @old_item = @item.dup
      change_bk_sign
      change_bk_item_power
    end
    @bless_kurse = true
  end

  def change_bk_skill_power
    @skill = @old_skill.dup
    value = @bk_sign * @skill.power
    key = value > 0 ? :dmg : :heal
    percent = BlessKurse::SKILL_PERCENT[key]
    @skill.power = value * percent / 100
  end

  def change_bk_item_power
    @item = @old_item.dup
    perc = BlessKurse::ITEM_PERCENT
    key = @bk_sign * @item.recover_hp >= 0 ? :heal : :dmg
    @item.recover_hp = @bk_sign * @item.recover_hp * perc[key] / 100
    key = @bk_sign * @item.recover_hp_rate >= 0 ? :heal : :dmg
    @item.recover_hp_rate = @bk_sign * @item.recover_hp_rate * perc[key] / 100
    key = @bk_sign * @item.recover_sp >= 0 ? :heal : :dmg
    @item.recover_sp = @bk_sign * @item.recover_sp * perc[key] / 100
    key = @bk_sign * @item.recover_sp_rate >= 0 ? :heal : :dmg
    @item.recover_sp_rate = @bk_sign * @item.recover_sp_rate * perc[key] / 100
    value = @item.recover_list.inject {|a,b| a + b }
    @bk_heal = (@bk_sign * value > 0)
  end

  def make_skill_action_result
    kyon_bless_kurse_scn_btl_mk_skl_act_res
    make_skill_bk_action_result
  end

  def make_skill_bk_action_result
    return if @phase4_step == 1 or !@bless_kurse
    case @skill.scope
    when 2
      summon_key = @skill.power < 0 ? :evil : :good
    when 4
      summon_key = @skill.power < 0 ? :good : :evil
    end
    @skill = @old_skill
    if @bk_neutral
      summon_key = :meh
    else
      @bk_sign *= -1
    end
    @bk_summon_id = BlessKurse::ENEMY_AS_SUMMON_IDS[summon_key]
    change_bk_skill_power
    battler = @active_battler
    @old_targets = @target_battlers
    scope = @skill.scope == 2 ? 4 : 2
    @target_battlers = []
    set_target_battlers(scope)
    @bk_battlers = @target_battlers
    @bk_battlers.each {|target| target.skill_effect(battler, @skill) }
    @target_battlers = @old_targets
    @old_skill = @bk_sign = nil
  end

  def make_item_action_result
    kyon_bless_kurse_scn_btl_mk_itm_act_res
    return if @phase4_step == 1 or !@bless_kurse
    make_item_bk_action_result
  end

  def make_item_bk_action_result
    return if @phase4_step == 1 or !@bless_kurse
    case @item.scope
    when 2
      summon_key = @bk_heal ? :evil : :good
    when 4
      summon_key = @bk_heal ? :good : :evil
    end
    @item = @old_item
    if @bk_neutral
      summon_key = :meh
    else
      @bk_sign *= -1
    end
    @bk_summon_id = BlessKurse::ENEMY_AS_SUMMON_IDS[summon_key]
    change_bk_item_power
    @old_targets = @target_battlers
    scope = @item.scope == 2 ? 4 : 2
    @target_battlers = []
    set_target_battlers(scope)
    @bk_battlers = @target_battlers
    @bk_battlers.each {|target| target.item_effect(@item) }
    @target_battlers = @old_targets
    @old_item = @bk_sign = nil
  end

  def update_phase4_step3
    kyon_bless_kurse_scn_btl_up_ph4_stp3
    make_bless_kurse_summon
  end

  def make_bless_kurse_summon
    return unless @bless_kurse
    summon = $data_enemies[@bk_summon_id]
    unless @bk_summon
      @bk_summon = Game_Battler.new
      @bk_summon.extend BlessKurse::BKBattler
      @bk_summon.hp = 100000
    end
    @bk_summon.hidden = false
    @bk_summon.battler_name = summon.battler_name
    @bk_summon.battler_hue = summon.battler_hue
    @spriteset.make_bk_summon(@bk_summon)
    if @animation1_id == 0
      @bk_summon.white_flash = true
    else
      @bk_summon.animation_id = @animation1_id
      @bk_summon.animation_hit = true
    end
  end

  def update_phase4_step4
    kyon_bless_kurse_scn_btl_up_ph4_stp4
    return unless @bless_kurse
    for target in @bk_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != "Miss")
    end
  end

  def update_phase4_step5
    kyon_bless_kurse_scn_btl_up_ph4_stp5
    bk_summon_exit
  end

  def bk_summon_exit
    return unless @bless_kurse
    @bk_battlers.each {|target| target.damage_pop = target.damage != nil }
    @bk_summon.hidden = true
    @bk_battlers.clear
  end

  def update_phase4_step6
    kyon_bless_kurse_scn_btl_up_ph4_stp6
    bk_dispose_summon
  end

  def bk_dispose_summon
    return unless @bless_kurse
    @spriteset.dispose_bk_summon
    @bless_kurse = @bk_heal = @bk_summon_id = nil
  end
end

DOWNLOAD DEMO NOW!

Terms & Conditions

Free as in beer for non commercial games.
Include my nickname in your game credits.
Mention this forum in your game credits as well.
That's it!

Downloads / Referenced Files

Log in to download

Log in, then follow the RPG Maker Developers Group to see these download links.

Log in to download

License / Terms Note

Free as in beer for non commercial games. Include my nickname in your game credits. Mention this forum in your game credits as well. That's it!

Referenced Images / Attachments

blessnkurse-xp01.jpg
blessnkurse-xp01.jpg
blessnkurse-xp02.jpg
blessnkurse-xp02.jpg
Creator Claims / Removal

If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.

#039#rgss#script-archive

Replies (0)

No replies yet.

0 replies 1 view

Log in to reply.

User Avatar