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
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).
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 downloadLicense / 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
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.
Replies (0)
No replies yet.
0
replies
1
view
Topic Summary
Loading summary...