Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Shiggy

  1. Apparently the script was affected by the site migration so you can download it here if you want a clean version https://www.dropbox.com/s/rloftmzysowo5f2/ffx_battle_order.rb?dl=0
  2. This script modify the way battle order works. Now each batter acts separately from the other and the time before its next action is determined by its speed . It modify heavily the way the battle systems works so it may not be compatible with a lot of battle scripts. I will try to work on compatibility patches in the next days , first with my own scripts and then with yanfly battle engine .(It's almost like there is more people that use this than people using the default engine) I'm still releasing now to gather some feedback first on the UI , should I hide the battle order window and only show it on a button press? How would you put in the interface a preview of how an action will affect the battle order? (I'm really bad at imagining at UI) Second I would also like to know what kind of skills affecting the battle order would you like to see ? I have some ideas but if you have suggestions,I will start with them . Also should the agility stat affect the speed whith which a battle recover its action . If yes,how? = false if page.span == 1 } @turn_count += 1 end def battle_start @timer = FFX::ActionSpeed-1 BattleManager.battle_start @action_battlers = [] preemptive = BattleManager.make_action_list all_battle_members.each { |battler| battler.speed = 0 - battler.agi } preemptive.each{ |battler| battler.speed -= FFX::SurpriseBonus } battler_turn end def speed_order(a, diff = a.speed - b.speed if diff < 0 return -1 elsif diff > 0 return 1 else return a.name <=> b.name end end def update_action_order @active_battlers = [] @alive_members = [] all_battle_members.each { |battler| @active_battlers.push(battler) if battler.alive? && battler.movable? @alive_members.push(battler) if battler.alive? } @active_battlers.sort! {|a,b| speed_order(a, } while @active_battlers[0].speed > 0 @active_battlers.each{|m| m.speed -=1 } @alive_members.each{|m| m.update_buff_states } @timer+=1 $game_troop.increase_turn if @timer%FFX::ActionSpeed == 0 end update_list end def update_list list = [] @active_battlers.each { |battler| for i in 0 .. 3 list.push(Info_Battler.new(battler,i)) end } list.sort! {|a,b| speed_order(a, } @action_list_window.refresh(list) end def battler_turn update_action_order @subject = @active_battlers.shift @subject.make_actions if @subject.actor? BattleManager.actor_index = @subject.index start_actor_command_selection else turn_start end end def command_attack BattleManager.actor.make_actions BattleManager.actor.input.set_attack select_enemy_selection end def command_guard BattleManager.actor.make_actions BattleManager.actor.input.set_guard next_command end alias ffx_on_skill_ok on_skill_ok def on_skill_ok BattleManager.actor.make_actions ffx_on_skill_ok end alias ffx_on_item_ok on_item_ok def on_item_ok BattleManager.actor.make_actions ffx_on_item_ok end def next_command turn_start end def turn_start @party_command_window.close @actor_command_window.close @status_window.unselect BattleManager.turn_start @log_window.wait @log_window.clear end def start_actor_command_selection unless scene_changing? refresh_status @status_window.unselect @status_window.open @status_window.select(BattleManager.actor.index) @party_command_window.close @actor_command_window.setup(BattleManager.actor) end end def process_action return if scene_changing? if !@subject || !@subject.current_action turn_end end return turn_end unless @subject if @subject.current_action @subject.current_action.prepare if @subject.current_action.valid? @status_window.open @subject.speed += @subject.current_action.speed execute_action end @subject.remove_current_action end process_action_end unless @subject.current_action end def turn_end BattleManager.turn_end process_event battler_turn end def process_action_end @subject.on_action_end refresh_status @log_window.display_auto_affected_status(@subject) @log_window.wait_and_clear @log_window.display_current_state(@subject) @log_window.wait_and_clear BattleManager.judge_win_loss end end class Window_ActionList < Window_Selectable def initialize(height) @list=[] super(Graphics.width-100,50,100,height-100) end def refresh(list) @list=list contents.clear draw_all_items end def item_max @list.size end def draw_item(index) rect = item_rect(index) string = @list[index].name change_color(FFX::Active_Color) #if @list[index] == @list[0] draw_text_ex(rect.x,rect.y,string) draw_horz_line(rect.y+rect.height/2) #change_color(normal_color) end def draw_horz_line(y) line_y = y + line_height / 2 - 1 contents.fill_rect(0, line_y, width, 2, line_color) end def line_color color = normal_color color.alpha = 128 color end end class Info_Battler attr_reader :name attr_reader :battler attr_accessor :speed def initialize(battler,turn) @name = battler.name @battler = battler @speed = battler.speed + turn * FFX.action_time(battler,battler.atk_speed) end end
  3. Shiggy

    Actor Idle Animation Script

    Following a request, the script has been updated: https://www.dropbox.com/s/frqs24vqutfn95q/idle_anim.rb -A license has been added (you can use the script however you want but there is no warranty and you need to include the license and copyright terms) -The animations now work only if a switch is turned on (but that switch will be turned on automatically at the start of the game) - Beside the idle animation, you can add a blinking animation, every few minutes the sprite of the character will change for 10 frames as if the character was blinking
  4. Shiggy

    Shaz's Region Common Events

    Ok good, I've updated the dropbox file in case someone else uses the script.
  5. Shiggy

    Shaz's Region Common Events

    Obviously, it's been a while so I'm not sure. But with a quick glance . I would say that at line 37, it should be @req.push(@reg_evt[next_reg]["trigger_face"]) instead of @req.push(@reg_evt[reg]["trigger_face"]) Try it, I will then update the file if it works.
  6. Shiggy

    Game Idea!

    I just discovered this thread. I love the plot. It goes through all the JRPG tropes I like while still being unique. I would make the weapons stay the same, but gain more stats or change names /appearance as you progress through the main quest. Thematically, I like the idea of the weapons being old artifacts that regain their power through the game. Mechanically, I like guaranteed power increases. Also I made an ace script for party tp a while back. https://www.rpgmakercentral.com/topic/37825-party-tp/?tab=comments#comment-264743
  7. I updated the script, it should work wirh Yanfly battle engine core https://www.dropbox.com/s/hhil5y24yv4j4vx/ColoredEnemyName.js?dl=0
  8. Sorry there was some error in the plugin, it wasn't reading parameters properly. I fixed the script but it only works for the default enemy selection window. I amy be able to modify it for another pluging if you tell me which one makes the ennemy name appear.
  9. Try this plugin: https://www.dropbox.com/s/hhil5y24yv4j4vx/ColoredEnemyName.js?dl=0
  10. Shiggy

    Help with checkIsAlive for Troops

    ok sorry the event trigger should be enemy below 0 % hp(not sure it would work with turn X event trigger) to make sure there no enemy left when reinforcement arrive try if script $gameTroop.aliveMembers.length == 0
  11. Shiggy

    Help with checkIsAlive for Troops

    Try using this plugin instead http://himeworks.com/2015/10/end-phase-triggers-mv/ and run an event that makes ennemies appear when the first ones are dead
  12. Shiggy

    Help with checkIsAlive for Troops

    It looks like you didn't define checkIsAlive checkIsAlive should be a boolean you should write something like $gameTroop.isTroopReinforcementAdded(1, true) or $gameTroop.isTroopReinforcementAdded(1, false) or even $gameTroop.isTroopReinforcementAdded(1)
  13. Shiggy

    💖My Little Pony: The Game

    You can't lock the resolution? This is the simplest solution. What are your targets platforms? I fiddled a bit with web games where resolution has to adapt to different browser windows sizes as well as work on mobiles, tablets. Here is what i did: I consider three different parts of the game: the HUD, the background and the game zone I plan the game zone for the lowest resolution (let's say 200x300) and I scale it up by full integer if I have enough space (so if my output device is 900 x 900, I scaled my game zone by 3) . All the game movement has to be scaled up as well (you are moving three pixels/frame instead of one pixel/frame) I then put my game zone in the center of the screen. The HUD size is determined the same way as the game zone buts its position is determined by percentage of the screen size. The background is the trickiest one, you can start with any resolution, you scale it up to the nearest integer but upwards this time so if your background base resolultion was 200x300 and your outputdevice resolution is 900x900, you scale it up to 1000x1500 but you put your background image origin at (-50, -250) . It looks nice but in this situation, you will have 100 pixels horizontally and 600 vertically that are not visible, horizontally you even have 300 pixels that are visible but not playable (because not in the game zone). This worked well for me because I knew the background would be totally separated from gameplay for me and was just decoration. So you would have to adapt this strategy to your game or use a background unrelated to gameplay just to fill the screen (think about these 4:3 to 16:9 fillers people use sometimes on youtube for retro games). Also this work well when you know your lowest resolution will be very low (smartphone) but with a 768x432 default resolution, it may not be as good. I know this is a bit complicated so I hope it helped. You can find more (and better) information about this online. Good luck with your project.
  14. Shiggy

    Shiggy Longer Item Description crash

    Honestly, I'm more surprised that it wasn't mentionned before (it seems weird but it could have disappear during site migration). I can't seem to be able to edit the post so I will ask a moderator I suppose. As for why I used cancel_enabled? It's because process_handle is a generic method from Window_Selectable and I wanted to make a new version of item for Window_ItemList And because I was beginning at the time , I copy paste the process_handling code. What you are supposed to do normally is this: def process_handling super return process_description if Input.trigger?(:SHIFT) #<===== change which button to press to show window end as a Ruby programmer (super calls the method with the same name from the supercalss) or alias longer_item_description_process_handling process_handling def process_handling longer_item_description_process_handling return process_description if Input.trigger?(:SHIFT) #<===== change which button to press to show window end if you are making a RPG Maker script (the alias makes a copy of the current method, let's say another script situated above this one modify the method by adding a button for :CTRL , it would be overridden by the super way of doing but not by the alias way, so script maker should favor alias for script compatibilities)
  15. Can you send of screenshot of what your pursuer event looks like, please?
  16. (I had an idea but I then realised it doesn't work)
  17. Something like this should work <shop show eval> $game_variables[23] >= x </shop show eval>
  18. Shiggy

    Needed an escape script

    Yeah you would have to use a redefiition instead of an alias to better include the message. For victory, you could even add the item to the list of battle rewards and it would appear as a dropped item.
  19. Shiggy

    Needed an escape script

    Yeah I saw, it doesn't really matter , I just wanted to show that you could remove some lines . It would work exactly the same way anyway.
  20. Shiggy

    Needed an escape script

    Does it work for you? The messages may interact in a weird way with victory and defeat. But I'm not sure what your goal is with this
  21. Shiggy

    Needed an escape script

    @PhoenixSoulTry to replace all instances of "process_abort" to "process_victory" or "process_defeat" (untested)
  22. Shiggy

    Needed an escape script

    Try this https://www.dropbox.com/s/29a1dbygo2ez7ep/item_on_escape.rb?dl=0 This script will give an item to the party everytime they escape (they can get the item several times) You need to change the id of the item you want to give the player You can modify or remove the end message as well
  23. Shiggy

    Temporary Death

    You asked for opinion but a mechanic is just a tool . A mechanic is good or bad only in the context of the goals you have for your game. If you want to make a narrative-driven game with minimal challenge, this is a terrible mechanic. Because I lack the context, I talked about the situations that I think, make this mechanic interesting. I didn't really understand the point of the mechanic at first, it took me some thought to realise how it could be interesting if a character dies in battle, it is a soft defeat. You can't continue the dungeon but you keep the rewards you get already ( xp, gold, loot) whereas if all characters die , you also lose the rewards. Just a few notes: I would call the state Crippled instead of Weak I would add the state at the end of battle to any character that died during battle (I understand you don't want characters to get half-stats mid_battle but the point is to punish character death, not to punish character not revived at the end of battle. ) At the end of battle, I would put a message box warning the player that one of their character is crippled/weak and give the option to warp to town immediately so they understand better it is in fact a soft defeat.
  24. Sry , apparently I can't write 15 lines of code that work on the first try, my bad. Ok try this: https://www.dropbox.com/s/zniolyjk0msp7j8/backup_save.rb?dl=0
  25. Shiggy

    3rd post: TP in menu show

    Oh, I made something like this but it was for VX ace not MV
Top ArrowTop Arrow Highlighted