10-17-2024, 08:01 PM
Here Are Some Goodies for VX Users!
This script is incompatible with the Targetting Extended for Tankentai Non-ATB v1.1 by Crimsonseas. So you'd need to use this modified version of Crimsonseas' script and my custom patch to make it work as intended.
Modified Version of Targetting Extended
Code:
=begin
################################################################################
Targetting Extended for Tankentai Non-ATB v1.1
by CrimsonSeas
################################################################################
Use with the base script to enable the targetting extended.
This script adds to the rewrites list of the base script
Rewrites:
+Scene_Battle
-start_target_selection
-select_member
################################################################################
=end
class Scene_Battle
def start_target_selection(actor = false)
members = actor ? $game_party.members : $game_troop.members
action = @active_battler.action
if action.kind == 1
obj = action.skill
elsif action.kind == 2
obj = action.item
end
case obj
when nil
@target_any = TargetExt::ATTACK_ANY
when RPG::Skill
@target_any = !TargetExt::NO_TARGET_ANY_S.include?(action.skill.id)
when RPG::Item
@target_any = !TargetExt::NO_TARGET_ANY_I.include?(action.item.id)
end
if obj != nil && obj.extension.include?("TARGETALL")
members = $game_party.members + $game_troop.members
end
# �‚��ƒ��‚��ƒ��‚��ƒ—�ƒ��‚��ƒˆの�œ�ˆ�
@all = false
if obj != nil
scope_all = [2, 4, 5, 6, 8, 10].include?(obj.scope)
@all = (scope_all || obj.extension.include?("TARGETALL"))
end
@cursor = Sprite.new
@cursor.bitmap = Cache.character("cursor")
@cursor.src_rect.set(0, 0, 32, 32)
@cursor_flame = 0
@cursor.x = -200
@cursor.y = -200
@cursor.ox = @cursor.width
@cursor.oy = @cursor.height
@cursor.visible = !@all
# �‚��ƒ��‚��ƒƒ�ƒˆ名�‚’表示�™�‚‹�ƒ˜�ƒ��ƒ—�‚��‚��ƒ��ƒ‰�‚��‚’�œ�ˆ�
@help_window.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == nil
# 不要な�‚��‚��ƒ��ƒ‰�‚��‚’�ˆ�™
@actor_command_window.active = false
@skill_window.visible = false if @skill_window != nil
@item_window.visible = false if @item_window != nil
# �˜�œ��—て�„�‚‹�‚��ƒ��‚��ƒƒ�ƒˆで�œ€�‚‚�•�号の�Ž�„対象�‚’�œ€�ˆ�に�Œ‡�™�‚ˆ�†に
@index = 0
@max_index = members.size - 1
# �‚��‚��‚��ƒ�は�ˆ��—˜不�ƒ��€…で�‚‚�‚��ƒ��‚��ƒƒ�ƒˆでき�‚‹�‚ˆ�†に�‚��ƒ��ƒŸ�ƒ�と�Œ��ˆ�
unless actor
members.size.times do
break if members[@index].exist?
@index += 1
end
end
@help_window2.set_text(members[@index].name, 1)
if @all
string, strings = TargetExt::TARGET_ALL_VOC
string2 = actor ? strings[0] : strings[1]
string += " " + string2 unless obj.extension.include?("TARGETALL")
@help_window2.set_text(string, 1)
make_cursor_all(members)
cursor_all_visible(true)
@cursor.visible = false
else
# Call New Method: Reset Single Cursor
reset_single_cursor(actor)
end
select_member(members, actor)
end
#--------------------------------------------------------------------------
# �—� �‚��ƒ��‚��ƒƒ�ƒˆ選�Šž
#--------------------------------------------------------------------------
def select_member(targets, actor = true)
members = targets
action = @active_battler.action
if action.kind == 1
obj = action.skill
elsif action.kind == 2
obj = action.item
end
#rect = @cursor.src_rect
#rect.set(0, 0, 32, 32)
loop do
update_basic
@cursor_flame = 0 if @cursor_flame == 30
#rect.y = 0 if @cursor_flame == 29
#rect.y = 32 if @cursor_flame == 15
point_x, point_y = @spriteset.set_cursor(actor, @index)
@cursor.x = point_x
@cursor.y = point_y
@cursor_flame += 1
if Input.trigger?(Input::B)
select_member_cancel
break
elsif Input.trigger?(Input::C)
select_member_ok
break
end
if Input.repeat?(Input::LEFT) && !(@all || @active_battler.target_all)
if actor
$back_attack ? cursor_down(members, actor) : cursor_up(members, actor)
else
$back_attack ? cursor_up(members, actor) : cursor_down(members, actor)
end
end
if Input.repeat?(Input::RIGHT) && !(@all || @active_battler.target_all)
if actor
$back_attack ? cursor_up(members, actor) : cursor_down(members, actor)
else
$back_attack ? cursor_down(members, actor) : cursor_up(members, actor)
end
end
#if (Input.trigger?(Input::L) || Input.trigger?(Input::R)) && @target_any
if (Input.trigger?(Input::L) || Input.trigger?(Input::R)) #&& nil
if members == $game_party.members
members = $game_troop.members
actor = false
elsif members == $game_troop.members
members = $game_party.members
actor = true
end
if @active_battler.inverse_target
@active_battler.inverse_target = false
else
@active_battler.inverse_target = true
end
@index = 0 if @index >= members.size
@max_index = members.size - 1
# �‚��‚��‚��ƒ�は�ˆ��—˜不�ƒ��€…で�‚‚�‚��ƒ��‚��ƒƒ�ƒˆでき�‚‹�‚ˆ�†に�‚��ƒ��ƒŸ�ƒ�と�Œ��ˆ�
unless actor
members.size.times do
break if members[@index].exist?
@index += 1
end
end
if @cursor != nil
# Modified Process: Make Sure Any Kind of Cursor is Visible
many_targets = (@active_battler.target_all || @all)
if many_targets
dispose_cursor_all
make_cursor_all(members)
cursor_all_visible(false)
@cursor.visible = false
else
@cursor.visible = true
end
end
if @active_battler.target_all || @all
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = actor ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
if TargetExt::SHOW_MP_ALTER && @active_battler.target_all && obj.is_a?(RPG::Skill)
cost = @active_battler.calc_mp_cost(obj)
string1 += ": " + cost.to_s + Vocab::mp
end
@help_window2.set_text(string1, 1)
end
@help_window2.set_text(members[@index].name, 1) if !@active_battler.target_all && !@all
Sound.play_cursor
end
if Input.trigger?(Input::A) && !@all && obj != nil
if obj.all_available
Sound.play_cursor
if @active_battler.target_all
@active_battler.target_all = false
@cursor.visible = true
cursor_all_visible(false) if @cursor2 != nil
@help_window2.set_text(members[@index].name, 1)
else
@active_battler.target_all = true
@cursor.visible = false
make_cursor_all(members) if @cursor2 == nil
cursor_all_visible(true)
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = actor ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
if TargetExt::SHOW_MP_ALTER && @active_battler.target_all && obj.is_a?(RPG::Skill)
cost = @active_battler.calc_mp_cost(obj)
string1 += ": " + cost.to_s + Vocab::mp
end
@help_window2.set_text(string1 , 1)
end
end
end
many_targets = (@active_battler.target_all || @all)
cursor_up(members, actor) if Input.repeat?(Input::UP) && !many_targets
cursor_down(members, actor) if Input.repeat?(Input::DOWN) && !many_targets
end
end
def select_member_cancel
Sound.play_cancel
@active_battler.target_all = false
end_target_selection
end
def select_member_ok
Sound.play_decision
@active_battler.action.target_index = @index
end_target_selection
end_skill_selection
end_item_selection
next_actor
end
def make_cursor_all(members)
@cursor2 = []
for i in 0...members.size
next if members == $game_troop.members && !members[i].exist?
@cursor2[i] = Sprite.new
@cursor2[i].bitmap = Cache.character("cursor")
@cursor2[i].src_rect.set(0, 0, 32, 32)
@cursor2[i].x = members[i].position_x - 48
@cursor2[i].y = members[i].position_y - 48
end
@cursor2.compact!
end
end
The Patch
Code:
# * Battle Item Count VX - Takentai Patch * #
# Scripter : Kyonides Arkanthes
# 2024-10-17
class Scene_Battle
alias :kyon_btl_itm_cnt_scn_btl_sel_mem_ok :select_member_ok
def select_member_ok
action = @active_battler.action
item_id = action.kind == 2 ? action.item.id : nil
@active_battler.battle_item_id = item_id if item_id
kyon_btl_itm_cnt_scn_btl_sel_mem_ok
end
def reset_single_cursor(is_actor)
point_x, point_y = @spriteset.set_cursor(is_actor, @index)
@cursor.x = point_x
@cursor.y = point_y
end
end
"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
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