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).
Spoiler: 2 Screenshots
[/quote]
Spoiler: The Script[quote] 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 复制代码
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!
本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:
https://forums.rpgmakerweb.com/threads/bless-kurse-xp.180221/