#encoding:utf-8
# =============================================================================
# MCCF - 弹药消耗
# 版本 : 1.0
# =============================================================================
$fscript = {} if $fscript == nil
$fscript["MCCFAmmunition"] = "1.0.0703"
# =============================================================================
# 更新记录:
# -----------------------------------------------------------------------------
# 2018.6.21 - V1.0制作完成,在P1发布
# =============================================================================
# 更新记录:
# -----------------------------------------------------------------------------
# 2023.10.16 由霜月冬音修改无武器报错BUG!
# 战斗装备指令是我写上去的,不好用可以删掉!
# =============================================================================
=begin
介绍:
可以设定某些武器普攻消耗弹药。
在武器备注栏备注
消耗弹药ID = ID
ID:该武器普通攻击消耗的弹药(物品)ID
<消耗弹药数量 = NUMBER>
NUMBER:该武器一次普通攻击消耗的弹药(物品)数量,默认为1
作者的测试比较粗略,若有BUG一定要回帖提出哦!
使用方法:
插入到插件脚本之下,Main之上即可。
兼容性:
为保险请放在其它更改攻击指令脚本的下面。(不过一般没有太大必要)
另外,敬请确保没有使用装备栏自定义脚本改变第一个装备,也就是第一个装备位置一定要是
武器。
使用条款:
只要署名MCCF即可。只要不以自己的名义发布,你可以自由修改此脚本。若用于商业游戏,
请给我一份免费的游戏拷贝。
备注:
建议搭配 战斗中切换装备 脚本,以便让玩家没有弹药时,不至于该角色整场战斗都无法攻击。
=end
# =============================================================================
# 设定部分:
# =============================================================================
module MCCF
module Ammunition
# 没有弹药的时候是直接不允许攻击(false)还是攻击时无效(true)
CAN_SELECT = true
# 没有弹药时的无效用语(%s是角色名字)
NO_AMMUNITION_VOCAB = "%s没有弹药了!"
end
end
# =============================================================================
# 设定结束
# =============================================================================
#------------------------------------------------------------------------------
# ■ 以下有关备注读取
#------------------------------------------------------------------------------
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
#=============================================================================
# □ ReadNote
#=============================================================================
module ReadNote
def self.read(str, section, mismatch = nil)
str.each_line do |line|
eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/
end
return mismatch
end
end
#=============================================================================
# ■ BaseItem
#=============================================================================
class BaseItem
#-------------------------------------------------------------------------
# ○ 读取rmva备注栏字段
# section : 字段名
# mismatch : 未匹配时的返回值
#-------------------------------------------------------------------------
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
#=============================================================================
# ■ Actor
#=============================================================================
class Actor
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
end
#------------------------------------------------------------------------------
# ■ 以下有关数据判定
#------------------------------------------------------------------------------
module MCCF
module Ammunition
# 返回当前角色普通攻击消耗的弹药ID,同时作为是否需要弹药的判断标准
def self.Ammunition_id
return false if BattleManager.actor.weapons[0].nil?
note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药ID')
if note != nil
return note
else
return false
end
end
# 返回当前角色一次攻击消耗的弹药数量
def self.Ammunition_once
note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药数量')
if note != nil
return note
elsif MCCF::Ammunition.Ammunition_id
return 1
else
return 0
end
end
# 弹药是否足够的判定
def self.Ammunition_if
if MCCF::Ammunition.Ammunition_id
hold = $game_party.item_number($data_items[MCCF::Ammunition.Ammunition_id])
return hold >= MCCF::Ammunition.Ammunition_once
else
return true
end
end
end
end
#------------------------------------------------------------------------------
# ■ 以下有关实际的弹药消耗/弹药判断
#------------------------------------------------------------------------------
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 指令“攻击”
#--------------------------------------------------------------------------
alias _command_attack command_attack
def command_attack
_command_attack
if MCCF::Ammunition.Ammunition_id
item = $data_items[MCCF::Ammunition.Ammunition_id]
$game_party.lose_item(item, MCCF::Ammunition.Ammunition_once)
end
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定是否能使用普通攻击
#--------------------------------------------------------------------------
def attack_usable?
usable?($data_skills[attack_skill_id]) && MCCF::Ammunition.Ammunition_if && MCCF::Ammunition::CAN_SELECT
end
end
#==============================================================================
# ■ 以下在战斗画面添加装备指令的脚本!如果有冲突可以将下面删除!
#==============================================================================
#定义装备名
#==============================================================================
module Vocab
# 戦闘
WB = "装备"
end
#==============================================================================
# ■ Window_PartyCommand
#------------------------------------------------------------------------------
#
#==============================================================================
class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# ● 创建命令列表
#--------------------------------------------------------------------------
alias wb_make_command_list make_command_list
def make_command_list
wb_make_command_list
add_command(Vocab::WB, :wbgh)
end
end
#--------------------------------------------------------------------------
# ● 生成命令执行
#--------------------------------------------------------------------------
class Scene_Battle < Scene_Base
alias wb_create_party_command_window create_party_command_window
def create_party_command_window
wb_create_party_command_window
@party_command_window.set_handler(:wbgh, method(:command_wbgh))
end
def command_wbgh
SceneManager.call(Scene_Equip)
end
end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |