Название работы: Yin_&_Yang energy
Имя автора работы: Doctor Bug
Для какого редактора написана работа: RPG Maker VX ACE
Контактная информация (как связаться): через личные сообщения на форуме rpgmaker.ru
Версия: 0.3
Этот скрипт позволяет перенаправлять состояния и баффы, дебаффы героев.
Реализованы 6 команд. С манипуляцией состояний героев и врагов. Все действие производятся через навыки (скиллы)
Манипуляция с бафами и дебафами пока не реализована ((
История версий:
~~~~2018-09-19 -> Версия 0.3
- Добавлены еще 4 команды. Передача и забирания состояний.
~~~~2018-09-17 -> Версия 0.2
- Скрещен с Янфлаем.
"Yanfly Engine Ace - Ace Battle Engine v1.22"
Может работать и без него.
~~~~2018-09-17 -> Версия 0.1
- Реализация
P.S. Находится в состояние разработки.
Багованый код:
=begin ~~~o o~~~ begin=
:...~o[ Doctor Bug's представляет ]o~...:
:...~o[ Yin_&_Yang energy ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
Автор: Doctor Bug
Для: RPGMAKER VX ACE
Версия: 0.3
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
:...~o[ История версий ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
2018-09-19 -> Версия 0.3
- Добавлены еще 4 команды. Передача и забирания состояний.
2018-09-17 -> Версия 0.2
- Скрещен с Янфлаем.
"Yanfly Engine Ace - Ace Battle Engine v1.22"
Может работать и без него.
2018-09-17 -> Версия 0.1
- Реализация
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
:...~o[ Описание ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
Этот скрипт позволяет перенаправлять состояния и баффы, дебаффы героев.
Пока реализованы две команды. Удаления конкретного состояние и всех
состояний, через скил.
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
:...~o[ Инструкция ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
Просто скопируйте и вставьте скрипт над Main.
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
:...~o[ Вызов скрипта ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
Поместите соответствующие команды в заметки скилла (навыка), каждая из
них выполняет соответствующие действие:
<delete_state: id> # ~~o удаляет с использующего конкретное состояние.
Нужно указать номер (id) состояния.
<delete_states> # ~~o удаляет с использующего все состояние.
<transfer_state: id> # ~~o передает состояние кому-либо. Можно использовать
в паре. Нужно указать номер (id) состояния.
<transfer_states> # ~~o передает все состояние кому либо.
<take_state: id> # ~~o забирает себе конкретное состояние кого-либо.
Нужно указать номер (id) состояния.
<take_states> # ~~o забирает себе все состояние кого-либо.
Работает только в области действия союзника. Пока что.
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
:...~o[ Требование ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
Данный скрипт можно использовать в любых проектах.
В том числе и коммерческих.
Если указано моё авторство (Doctor Bug Lindesh) на данный скрипт.
=end
class RPG::BaseItem
def delete_state
if @delete_state.nil?
if @note =~ /<delete_state:[ ](.*)>/i
@delete_state = $1.to_i
else
@delete_state = 0
end
end
@delete_state
end
def delete_states
if @note =~ /<delete_states>/i
return true
else
return false
end
end
def transfer_state
if @transfer_state.nil?
if @note =~ /<transfer_state:[ ](.*)>/i
@transfer_state = $1.to_i
else
@transfer_state = 0
end
end
@transfer_state
end
def transfer_states
if @note =~ /<transfer_states>/i
return true
else
return false
end
end
def take_state
if @take_state.nil?
if @note =~ /<take_state:[ ](.*)>/i
@take_state = $1.to_i
else
@take_state = 0
end
end
@take_state
end
def take_states
if @note =~ /<take_states>/i
return true
else
return false
end
end
end # RPG::Item
class Game_BattlerBase
def buffs
@buffs
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Execute Battle Actions
#--------------------------------------------------------------------------
def execute_action
@subject.sprite_effect_type = :whiten
use_item
@log_window.wait_and_clear
end
unless $imported.nil?
if $imported["YEA-BattleEngine"]
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
# :...~o[ overwrite method: use_item ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
def use_item
item = @subject.current_action.item
@log_window.display_use_item(@subject, item)
@subject.use_item(item)
status_redraw_target(@subject)
if $imported["YEA-LunaticObjects"]
lunatic_object_effect(:before, item, @subject, @subject)
end
process_casting_animation if $imported["YEA-CastAnimations"]
targets = @subject.current_action.make_targets.compact rescue []
manipulation_of_energy_Jin(item,targets)
show_animation(targets, item.animation_id) if show_all_animation?(item)
targets.each {|target|
if $imported["YEA-TargetManager"]
target = alive_random_target(target, item) if item.for_random?
end
item.repeats.times { invoke_item(target, item) } }
if $imported["YEA-LunaticObjects"]
lunatic_object_effect(:after, item, @subject, @subject)
end
end
end
else
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
# :...~o[ overwrite method: use_item ]o~...:
#~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~o~~~
def use_item
item = @subject.current_action.item
@log_window.display_use_item(@subject, item)
@subject.use_item(item)
refresh_status
targets = @subject.current_action.make_targets.compact
manipulation_of_energy_Jin(item,targets)
show_animation(targets, item.animation_id)
targets.each {|target| item.repeats.times { invoke_item(target, item) } }
end
end
def manipulation_of_energy_Jin(item,targets)
check_states(item,targets)
take_states(item,targets)
end
def check_states(item,targets)
@subject.states.each do |state|
bring_states(item,state)
targets.each do |target|
transfer_states(item,target,state)
end
end
end
def transfer_states(item,target,state)
if @subject.state?(item.transfer_state)
target.add_state(state.id)
#@subject.erase_state(state.id)
end
if item.transfer_states
target.add_state(state.id)
#@subject.erase_state(state.id)
end
end
def take_states(item,targets)
targets.each do |target|
if target.state?(item.take_state)
target.erase_state(item.take_state)
@subject.add_state(item.take_state)
end
if item.take_states
target.states.each do |state|
target.erase_state(state.id)
@subject.add_state(state.id)
end
end
end
end
def bring_states(item,state)
@subject.erase_state(state.id) if item.delete_states
@subject.erase_state(state.id) if @subject.state?(item.delete_state)
end
end
ссылка на демку.