Posts: 4,934
Threads: 598
Joined: Dec 2009
09-22-2025, 12:16 AM
(This post was last modified: 09-24-2025, 09:39 AM by kyonides .
Edit Reason: Script Reloaded!
)
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 DB).
The Script
Code:
# * 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
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!
"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.
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!
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
Posts: 4,934
Threads: 598
Joined: Dec 2009
Script Update!
I came back to publish the first update of your infamous script Bless & Kurse XP!
This release now allows you to randomly pick a :meh monster,
I mean, a neutral monster instead of just a good guy or an evil one.
The new category lets you apply the same positive or negative skill effect or item effect to
ALL BATTLERS!
What that means is that this neutral guy could easily
heal all combatants at once. Or he or she could simply
kill them all.
"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.
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!
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