じ☆ve冰风 发表于 2026-7-12 17:48:21

KFrozenSkill XP

KFrozenSkill XP

by Kyonides Arkanthes​

I guess there could be such moments where you would love to freeze a given hero's skill :wizard: as a plot device :book: or just as a funny way to bother the player.
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Guess what! Now you can do that!

Note: Instructions are already embedded in my script!

                Ruby:        
# * KFrozenSkill XP
#   Scripter : Kyonides Arkanthes
#   v 1.0.0 - 2022-06-09

# Have you ever wanted to freeze a hero's given skill?
# Now you can!

# * Script Calls * #

# actor = $game_actors
# OR...
# actor = $game_party.actors
# actor.freeze_skill(SkillID, Options)

# - Options - They got to be separated by commas!

# - Actor with a given ID has got to be dead:
# :actor => 1
# :hp => 1500 (as minimum)
# :sp => 275 (as minimum)
# :gold => 1500
# :item =>

# Example:
# actor.freeze_skill(1, :actor => 3, :hp => 1200)

# * Optional Script Calls * #

# actor.frozen_skill?(skill_id)
# actor.thawed_skill?(skill_id)

# * Warnings * #

# Skills can only be frozen once!
# The script call will fail if the hero has not learned the chosen skill!

class Game_Actor
alias :kyon_frozen_skill_gm_actor_init :initialize
alias :kyon_frozen_skill_gm_actor_skill_use? :skill_can_use?
def initialize(actor_id)
    kyon_frozen_skill_gm_actor_init(actor_id)
    @frozen_skills = {}
    @thawed_skills = []
end

def freeze_skill(skill_id, options={})
    return if !@skills.include?(skill_id) or @thawed_skills.include?(skill_id)
    return if options.empty?
    @frozen_skills = options
end

def thaw_skill(skill_id)
    req = @frozen_skills
    return unless req
    gold = req[:gold]
    if gold and $game_party.gold >= gold
      $game_party.lose_gold(gold)
      req.delete(:gold)
    end
    item = req[:item]
    if item and $game_party.item_number(item) >= item
      $game_party.lose_item(item, item)
      req.delete(:item)
    end
    var = req[:actor]
    req.delete(:actor) if var and $game_actors.dead?
    var = req[:hp]
    req.delete(:hp) if var and var <= maxhp
    var = req[:sp]
    req.delete(:sp) if var and var <= maxsp
    return if req.keys.size > 0
    @frozen_skills.delete(skill_id)
    @thawed_skills << skill_id
    @thawed_skills = @thawed_skills.sort.uniq
    true
end

def skill_can_use?(skill_id)
    return false if frozen_skill?(skill_id)
    kyon_frozen_skill_gm_actor_skill_use?(skill_id)
end
def frozen_skill?(skill_id) @frozen_skills.keys.include?(skill_id) end
def thawed_skill?(skill_id) @thawed_skills.include?(skill_id) end
def frozen_skill_ids() @frozen_skills.keys.sort end
attr_reader :frozen_skills, :thawed_skills
end


Terms & Conditions

Free as in beer for use in non commercial games. Contact me if you want to go commercial. ;D
Don't worry pals! I know it's a scriptlet so it'll be quite inexpensive. Guaranteed.
Later on I might publish a small menu that could let you handle this actions with ease.


本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/kfrozenskill-xp.148387/
页: [1]
查看完整版本: KFrozenSkill XP