| 
		
	
	
	
		
	Posts: 611Threads: 19
 Joined: Feb 2021
 
	
	
		So i did basically nothing this week because burnout and birthday brunch but thankfully I'm not the only clown working on this game so i have some progress to share!Xiie/Rune 
They got productive as hell and last night dropped not only the full Agrat Bat Mahlat but also made substantial progress on Eisheth Zenunim's sprites.
Agrat Bat Mahlat ![[Image: aOQWEaD.png]](https://i.imgur.com/aOQWEaD.png) Eisheth Zenunim WIP ![[Image: agHgiy9.png]](https://i.imgur.com/agHgiy9.png)  
Hm? Whazzat? You think me getting nothing done is a joke?
 
Well, I did get something done, and it wasn'tjust  your mum (though that was certainly a part of it) but the rest was playing Terraria.
	 
	
	
	
		
	Posts: 11,566Threads: 672
 Joined: May 2009
 
	
	
		 (01-28-2025, 11:51 PM)DerVVulfman Wrote:   The battler project requires major work as I redesigned the body template to recognize both Left-handed NPCs as well as the traditional Right-handed NPCs.  The original design offered only a Right-handed NPC, though a fault existed within as the pose used for bows showed off NPCs using such Left-handed to get a better shot of the body. 
 
  Right now, my work is still in RGB format, though they will be converted to an indexed format to severely reduce filesize.  I have the bodies recreated. a baseline set of eyes of roughly 8 designs (no colorized palettes yet), multiple ears, separate heads/faces, a reworked bodysuit, and now brand new 'Pants' ... denim specifically. 
 Full-sleeve pullover shirts will be next.
  
That was then.  And it turned out that working on the tertiary resources of shirts and pants worked in favor of fine-tuning the newer left-handed battler templates.
 
Some heads had extra pixels that became more visible upon the recreation of full-body unitards, shirts and pants.  And as began recreating the basic 'boots' resources, undesired pixels within the feet of the female left-handed template appeared.
 
Imagine the reactions in a Twitch channel when someone goes, "Hey, wolfie!  Whatchu been up to." for me to say "Oh, I've been working on over 700 pairs of boots".
      Wut???
 
Well, it is for four templates with over 190 frames of animation each.     
I'm not done with all the boots yet, but mostly.  And I know I need to update more before the re-release...
	 
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
  Above are clickable links 
	
	
	
		
	Posts: 611Threads: 19
 Joined: Feb 2021
 
	
	
		What's up gamedevs, it's ya girl Remi-Chan! And today i come to announce that I am... still largely unrpoductive. Thanks, burnout! 
But even with the most crippling episode of burn out I've endured since... the last one- I still have managed to gwet some manner of work done. Mostly re-writing a scene that desperately needed an update. But that is a story for later. Right now I'm just going to share what the actual productive people in my collective have done.
Xiie 
You might recall the neat preview of Eisheth Zenunim from last time, weh-heh-heh-heh-hell~! It's done now!
 ![[Image: zb8cDJf.png]](https://i.imgur.com/zb8cDJf.png) 
And while it isn't nearly done yet, the first preview of lilith is incredibly promising!
 ![[Image: Bpxef05.png]](https://i.imgur.com/Bpxef05.png) 
Cool!
 
Anyway, I've mostly been re-writing stuff where I have been working, so- here's a bit of that.
 
	
	
	
		
	Posts: 508Threads: 9
 Joined: Sep 2013
 
	
		
		
		02-16-2025, 12:35 AM 
(This post was last modified: 02-16-2025, 12:36 AM by Steel Beast 6Beets.)
	
	 
		A quick question. This is Dargor's Large Party Script  Code: #==============================================================================# ** Large Party
 #------------------------------------------------------------------------------
 #  Author: Dargor
 #  Version 1.4
 #  16/05/2014
 #==============================================================================
 
 #==============================================================================
 # ** Large Party Customization Module
 #==============================================================================
 
 module Dargor
 module Large_Party
 # Maximum number of actors allowed in the party
 Max_Size = 12
 # Battle status window refresh rate (used in phase5)
 Battle_Refresh_Rate = 130
 end
 end
 
 #==============================================================================
 # ** Game_Temp
 #------------------------------------------------------------------------------
 #  This class handles temporary data that is not included with save data.
 #  Refer to "$game_temp" for the instance of this class.
 #==============================================================================
 
 class Game_Temp
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :battle_actor_index  # @actor_index in battle scene
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_temp_initialize initialize
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 large_party_temp_initialize
 @battle_actor_index = 0
 end
 end
 
 #==============================================================================
 # ** Game_Party
 #------------------------------------------------------------------------------
 #  This class handles the party. It includes information on amount of gold
 #  and items. Refer to "$game_party" for the instance of this class.
 #==============================================================================
 
 class Game_Party
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :max_size  # Max number of actors allowed in the party
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_initialize initialize
 alias large_party_add_actor add_actor
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 large_party_initialize
 @max_size = Dargor::Large_Party::Max_Size
 end
 #--------------------------------------------------------------------------
 # * Add an Actor
 #    actor_id : actor ID
 #--------------------------------------------------------------------------
 def add_actor(actor_id)
 # Original method
 large_party_add_actor(actor_id)
 # Get actor
 actor = $game_actors[actor_id]
 # If the party has less than 4 members and this actor is not in the party
 if @actors.size < @max_size and not @actors.include?(actor)
 # Add actor
 @actors.push(actor)
 # Refresh player
 $game_player.refresh
 end
 end
 end
 
 #==============================================================================
 # ** Sprite_Battler
 #------------------------------------------------------------------------------
 #  This sprite is used to display the battler.It observes the Game_Character
 #  class and automatically changes sprite conditions.
 #==============================================================================
 
 class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_sprite_update update
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
 # Original method
 large_party_sprite_update
 # Set sprite coordinates
 if @battler.is_a?(Game_Actor)
 self.x = @battler.screen_x - ($game_temp.battle_actor_index / 4) * 640
 end
 end
 end
 #==============================================================================
 # ** Spriteset_Battle
 #------------------------------------------------------------------------------
 #  This class brings together battle screen sprites. It's used within
 #  the Scene_Battle class.
 #==============================================================================
 
 class Spriteset_Battle
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_spriteset_update update
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
 # Cycle through all extra actors (4+)
 # Create/update sprites
 for i in 4...$game_party.actors.size
 if @actor_sprites[i].nil?
 @actor_sprites.push(Sprite_Battler.new(@viewport2))
 end
 @actor_sprites[i].battler = $game_party.actors[i]
 end
 # Original method
 large_party_spriteset_update
 end
 end
 
 #==============================================================================
 # ** Window_MenuStatus
 #------------------------------------------------------------------------------
 #  This window displays party member status on the menu screen.
 #==============================================================================
 
 class Window_MenuStatus < Window_Selectable
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_menu_status_initialize initialize
 alias large_party_menu_status_refresh refresh
 alias large_party_menu_status_update_cursor_rect update_cursor_rect
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 # Original method
 large_party_menu_status_initialize
 # Adjust contents height
 @item_max = $game_party.actors.size
 height = @item_max * 120
 self.contents = Bitmap.new(width - 32, height - 32)
 # Refresh
 refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh(*args)
 # Original method
 large_party_menu_status_refresh(*args)
 # Adjust default height
 self.height = 480
 end
 #--------------------------------------------------------------------------
 # * Cursor Rectangle Update
 #--------------------------------------------------------------------------
 def update_cursor_rect
 large_party_menu_status_update_cursor_rect
 row = @index / @column_max
 if row < self.top_row
 self.top_row = row
 end
 if row > self.top_row + (self.page_row_max - 1)
 self.top_row = row - (self.page_row_max - 1)
 end
 cursor_width = self.width / @column_max - 32
 x = @index % @column_max * (cursor_width + 32)
 y = @index / @column_max * 116 - self.oy
 self.cursor_rect.set(x, y, cursor_width, 96)
 end
 #--------------------------------------------------------------------------
 # * Top Row
 #--------------------------------------------------------------------------
 def top_row
 return self.oy / 116
 end
 #--------------------------------------------------------------------------
 # * Set Top Row
 #    row : new row
 #--------------------------------------------------------------------------
 def top_row=(row)
 if row < 0
 row = 0
 end
 if row > row_max - 1
 row = row_max - 1
 end
 self.oy = row * 116
 end
 #--------------------------------------------------------------------------
 # * Page Row Max
 #--------------------------------------------------------------------------
 def page_row_max
 return 4
 end
 end
 
 #==============================================================================
 # ** Window_BattleStatus
 #------------------------------------------------------------------------------
 #  This window displays the status of all party members on the battle screen.
 #==============================================================================
 
 class Window_BattleStatus < Window_Base
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_battle_status_initialize initialize
 alias large_party_battle_status_refresh refresh
 alias large_party_battle_status_update update
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 @column_max = 4
 large_party_battle_status_initialize
 width = $game_party.actors.size * 160
 self.contents = Bitmap.new(width - 32, height - 32)
 self.width = 640
 @level_up_flags = []
 for i in 0...$game_party.actors.size
 @level_up_flags << false
 end
 @item_max = $game_party.actors.size
 refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
 # Refresh contents when actors are added/removed in-battle
 if $game_party.actors.size != @item_max
 @item_max = $game_party.actors.size
 width = @item_max * 160
 self.contents = Bitmap.new(width - 32, height - 32)
 self.width = 640
 end
 large_party_battle_status_refresh
 column = $game_temp.battle_actor_index / 4
 self.ox = column * 640
 end
 end
 
 #==============================================================================
 # ** Arrow_Actor
 #------------------------------------------------------------------------------
 #  This arrow cursor is used to choose an actor. This class inherits from the
 #  Arrow_Base class.
 #==============================================================================
 
 class Arrow_Actor < Arrow_Base
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
 super
 # Cursor right
 if Input.repeat?(Input::RIGHT)
 $game_system.se_play($data_system.cursor_se)
 @index += 1
 @index %= $game_party.actors.size
 end
 # Cursor left
 if Input.repeat?(Input::LEFT)
 $game_system.se_play($data_system.cursor_se)
 @index += $game_party.actors.size - 1
 @index %= $game_party.actors.size
 end
 # Because of the large party script, we need to offset the X position
 # of the cursor to make sure it's at the right position
 ox_actor = $game_party.actors[@index % 4]
 # Set sprite coordinates
 if self.actor != nil
 self.x = ox_actor.screen_x
 self.y = ox_actor.screen_y
 end
 end
 end
 
 #==============================================================================
 # ** Scene_Battle
 #------------------------------------------------------------------------------
 #  This class performs battle screen processing.
 #==============================================================================
 
 class Scene_Battle
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_phase3_setup_command_window phase3_setup_command_window
 alias large_party_update_phase3_actor_select update_phase3_actor_select
 alias large_party_update_phase4_step2 update_phase4_step2
 alias large_party_start_phase5 start_phase5
 alias large_party_update_phase5 update_phase5
 #--------------------------------------------------------------------------
 # * Actor Command Window Setup
 #--------------------------------------------------------------------------
 def phase3_setup_command_window
 $game_temp.battle_actor_index = @actor_index
 @status_window.refresh
 large_party_phase3_setup_command_window
 @actor_command_window.x = (@actor_index%4) * 160
 end
 #--------------------------------------------------------------------------
 # * Frame Update (actor command phase : actor selection)
 #--------------------------------------------------------------------------
 def update_phase3_actor_select
 # Update status window scroll position
 $game_temp.battle_actor_index = @actor_arrow.index
 @status_window.refresh
 # Call the original method
 large_party_update_phase3_actor_select
 end
 #--------------------------------------------------------------------------
 # * Frame Update (main phase step 2 : start action)
 #--------------------------------------------------------------------------
 def update_phase4_step2
 if @active_battler.is_a?(Game_Actor)
 $game_temp.battle_actor_index = @active_battler.index
 @status_window.refresh
 end
 large_party_update_phase4_step2
 end
 #--------------------------------------------------------------------------
 # * Frame Update (main phase step 4 : animation for target)
 #--------------------------------------------------------------------------
 def update_phase4_step4
 if @target_battlers[0] != nil
 $game_temp.battle_actor_index = @target_battlers[0].index
 @status_window.refresh
 end
 # Animation for target
 for target in @target_battlers
 target.animation_id = @animation2_id
 target.animation_hit = (target.damage != "Miss")
 end
 # Animation has at least 8 frames, regardless of its length
 @wait_count = 8
 # Shift to step 5
 @phase4_step = 5
 end
 #--------------------------------------------------------------------------
 # * Start After Battle Phase
 #--------------------------------------------------------------------------
 def start_phase5
 @actor_index = 0
 @status_wait = Graphics.frame_count
 large_party_start_phase5
 end
 #--------------------------------------------------------------------------
 # * Frame Update (after battle phase)
 #--------------------------------------------------------------------------
 def update_phase5
 refresh_rate = Dargor::Large_Party::Battle_Refresh_Rate
 if Graphics.frame_count >= @status_wait + refresh_rate
 $game_temp.battle_actor_index = @actor_index
 @status_window.refresh
 @status_wait = Graphics.frame_count
 max = ($game_party.actors.size.to_f/4).ceil * 4
 @actor_index = (@actor_index+1) % max
 end
 large_party_update_phase5
 end
 end
What does the "Battle_Refresh_Rate" option do? I've been using this script since the very beginning and never actually stopped to think about this bit until now.
	 
	
	
	
		
	Posts: 11,566Threads: 672
 Joined: May 2009
 
	
		
		
		02-16-2025, 01:17 AM 
(This post was last modified: 02-16-2025, 01:17 AM by DerVVulfman.)
	
	 
		It is a sort of timer delay system based on the number of actors you have.  In essence, each actor will have a frame delay of (by default) 130 frames (or just over 3 seconds).  So after running 3 seconds for Aluxes, Basil, Gloria and Hilda each... you will THEN find the Battlestatus window cycle to the next batch of actors, each having their own 130 frame delay each before continuing this cycle. 
 It will allow you to see each actor's current stats despite the size of the party.
 
 I'd prolly reduce the value a bit.
 
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
  Above are clickable links 
	
	
	
		
	Posts: 508Threads: 9
 Joined: Sep 2013
 
	
	
		That makes sense. Thanks for the explanation.
 Testing a common event made me remember there's a nasty slowdown/framedrop when playing battle animations via events when using this script.
 
 To elaborate: I created a skill that deals damage based on the party's current wealth divided by five and then playing the attack animation and dealing the correspondent damage via a common event, the FPS drops to single digits. This only happen when there are more than 5 actors otherwise there's no slowdown.
 
	
	
	
		
	Posts: 11,566Threads: 672
 Joined: May 2009
 
	
		
		
		02-16-2025, 01:51 AM 
(This post was last modified: 02-16-2025, 01:59 AM by DerVVulfman.)
	
	 
		I understand why.
 It isn't a fault of the SCENE_BATTLE code, but a necessary evil of code added into SPRITESET_BATTLE.
 
 You see, the Initialize method is the method where all the actors and enemies are added.  Sadly, it isn't a small method and not broken into bitesize pieces.  And the developers never thought that there would be more than 4 party members in battle.  It is hard-coded.   So many who seek to add the additional party members need perform that in the 'update' method.   So indeed, it is running new code for extra actors every time the spriteset is being update.
 
 EDIT:  This code looks like MY style.  Did I perform cleanup on an old script or is his standard like mine?   Well, coming up with a fix for that.
 
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
  Above are clickable links 
	
	
	
		
	Posts: 11,566Threads: 672
 Joined: May 2009
 
	
		
		
		02-16-2025, 02:05 AM 
(This post was last modified: 02-16-2025, 02:07 AM by DerVVulfman.)
	
	 
		I am doing a Double-Bump, solely to ensure Steel Beast 6Beets gets this message: 
Replace the Spriteset_Battle code within Dargor's script with this:
 Code: #==============================================================================# ** Spriteset_Battle
 #------------------------------------------------------------------------------
 #  This class brings together battle screen sprites. It's used within
 #  the Scene_Battle class.
 #==============================================================================
 
 class Spriteset_Battle
 
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias large_party_spriteset_initialize initialize
 alias large_party_spriteset_update update
 
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 #
 # Assume that large party code has not been initialized
 @lp_init = false
 #
 # Perform the original method (which includes 'update')
 large_party_spriteset_initialize
 #
 # Cycle through all extra actors (4+) and create sprites where needed
 for i in 4...$game_party.actors.size
 if @actor_sprites[i].nil?
 @actor_sprites.push(Sprite_Battler.new(@viewport2))
 end
 end
 #
 # Set the flag indicating the large party has now been initialized)
 @lp_init = true
 #
 # Frame Update
 update
 #
 end
 
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
 #
 # Update any large-party actors when initialized
 update_large_party if @lp_init
 #
 # Perform the original method
 large_party_spriteset_update
 #
 end
 
 #--------------------------------------------------------------------------
 # * Frame Update (when updating large party members)
 #--------------------------------------------------------------------------
 def update_large_party
 #
 # Cycle through all extra actors (4+) and update sprites
 for i in 4...$game_party.actors.size
 @actor_sprites[i].battler = $game_party.actors[i]
 end
 #
 end
 
 end
This should greatly decrease the lag you are receiving with the battle animations.
	
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
  Above are clickable links 
	
	
	
		
	Posts: 508Threads: 9
 Joined: Sep 2013
 
	
	
		I tested it and sadly the issue remains.
	 
	
	
	
		
	Posts: 11,566Threads: 672
 Joined: May 2009
 
	
	
		That is unfortunate... and odd indeed.   Because the very first lines in Spriteset_Battle are:
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
 # Update actor sprite contents (corresponds with actor switching)
 @actor_sprites[0].battler = $game_party.actors[0]
 @actor_sprites[1].battler = $game_party.actors[1]
 @actor_sprites[2].battler = $game_party.actors[2]
 @actor_sprites[3].battler = $game_party.actors[3]
 
 So adding just...
 
 # Cycle through all extra actors (4+) and update sprites
 for j in 4...$game_party.actors.size
 @actor_sprites[j].battler = $game_party.actors[j]
 end
 
 ... really shouldn't be an issue.  Oh, I changed the i value to j  only to avoid bbcode errors as I'm not using the CODE bllock bbcode.   It does look pretty though.
 
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
  Above are clickable links |