10-04-2016, 04:16 AM 
	
	
	
		Oh... how I hate sloppy code (but like the 'Dark Knight' quote in the script ^_^).  Well, it was kinda clean... but one should add comments and keep with a more traditional 'indent' system.
Technically, he forgot that both the 'attack_effect' and 'skill_effect' methods return a true/false value after they are run... to determine if the actions were effective. As he left that little bit out, the system thought the skills were not effective and thus *BRRRZZZZZZZ!!!!* ... even though the members were healed. You may not have noticed that the SPs weren't being used up either.
	
	
	
	
Code:
#==========================================================================
# ** UL Counter Attack
#==========================================================================
# Uncle Lanzer
# Version 1
# 21.09.10
#==========================================================================
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#   
#  This work is protected by the following license:
# #----------------------------------------------------------------------------
# #  
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# #  
# #  You are free:
# #  
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# #  
# #  Under the following conditions:
# #  
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# #  
# #  Noncommercial. You may not use this work for commercial purposes.
# #  
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# #  
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# #  
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# #  
# #  - Nothing in this license impairs or restricts the author's moral rights.
# #  
# #----------------------------------------------------------------------------
#################
#               #  
# CONFIGURATION #
#               #
#################
# IT`S PRETTY SIMPLE........ JUST KILL THE BATMAN! <-- FORGET THAT -.-U
# MAKE A "(YOUR COUNTER NAME)" STATE
# UL_COUNTER_STATES = { A => [ B,C]}
# A = THE COUNTER STATE
# B = RATE OF SUCCESS
# C = STRENGHT OF COUNTER ( % OF A NORMAL ATTACK)
Scene_Battle::UL_Counter_States = { 33 => [25,100],
                                    68 => [50, 100],
                                    69 => [75, 100]
                                  } #ADD MORE BY THE SAME SYNTAX
# MESSAGGE WHEN COUNTER
Scene_Battle::UL_Counter_Messages = ['Counter']
#==============================================================================
# ** Perform script only if not disabled
#==============================================================================
if !@ul_counterattack_disabled
  #============================================================================
  # ** Game_Battler
  #----------------------------------------------------------------------------
  #  This class deals with battlers. It's used as a superclass for the
  #  Game_Actor and Game_Enemy classes.
  #============================================================================
  
  class Game_Battler
    #------------------------------------------------------------------------
    # * Alias Listings
    #------------------------------------------------------------------------
    alias lanzer_counter_battler_atkeff attack_effect
    alias counter_skill_attacks skill_effect
    #------------------------------------------------------------------------
    # * Applying Normal Attack Effects
    #     attacker : battler
    #------------------------------------------------------------------------    
    def attack_effect(attacker)
      # Perform the original call and get the returned 'did it work?' value
      effective = lanzer_counter_battler_atkeff(attacker)
      # Perform the battlesystem test
      if $scene.is_a?(Scene_Battle) && $scene.active_battler == attacker
        $scene.ul_atkcounter_test(self)
      end
      # Return effective
      return effective
    end
    #------------------------------------------------------------------------
    # * Apply Skill Effects
    #     user  : the one using skills (battler)
    #     skill : skill
    #------------------------------------------------------------------------      
    def skill_effect(attacker, skill)
      # Perform the original call and get the returned 'did it work?' value
      effective = counter_skill_attacks(attacker, skill)
      # Perform the battlesystem test
      if $scene.is_a?(Scene_Battle) && 
        $scene.active_battler == attacker and skill.power > 0
        $scene.ul_atkcounter_test(self)
      end
      # Return effective
      return effective 
    end
  end
  
  #============================================================================
  # ** Scene_Battle (part 1)
  #----------------------------------------------------------------------------
  #  This class performs battle screen processing.
  #============================================================================
  
  class Scene_Battle
    #--------------------------------------------------------------------------
    # * Public Instance Variables
    #--------------------------------------------------------------------------
    attr_accessor :active_battler         # active battler
    #--------------------------------------------------------------------------
    # * Alias Listings
    #--------------------------------------------------------------------------
    alias lanzer_counter_battle_up4s5 update_phase4_step5
    alias lanzer_counter_battle_update update
    #--------------------------------------------------------------------------
    # * Uncle Lanzar's counter test
    #     battler : battler
    #--------------------------------------------------------------------------
    def ul_atkcounter_test(battler)
      # The actor is applied with a state that prevents movement. Stop counter.
      return unless battler.movable?
      ul_temp = UL_Counter_States.keys
      for i in 0...ul_temp.size
        if battler.state?(ul_temp[i])
          if UL_Counter_States[ul_temp[i]][0] > rand(99)
            @ul_counter = UL_Counter_States[ul_temp[i]][1]
            @ul_countertarget = battler
            return
          end
        end
      end
    end
    #--------------------------------------------------------------------------
    # * Frame Update (main phase step 5 : damage display)
    #--------------------------------------------------------------------------
    def update_phase4_step5
      lanzer_counter_battle_up4s5
      if @ul_countertarget != nil
        @phase4_step = 1337  # LEET
        @ul_atkcounter = 28
      end
    end
   #--------------------------------------------------------------------------
    # * Uncle Lanzar's update
    #     battler : battler
    #--------------------------------------------------------------------------
    def ul_counter_update
      if @ul_countertarget.dead? or 
          @ul_atkcounter == 0 or
          !@ul_countertarget.movable?
        @ul_atkcounter    = nil
        @ul_counter       = nil
        @ul_countertarget = nil
        @phase4_step      = 6
        return
      end
      @ul_atkcounter -= 1
      if @ul_atkcounter == 10
        @ul_countertarget.animation_id  = @ul_countertarget.animation1_id
        @active_battler.animation_id    = @ul_countertarget.animation2_id
        ul_temp     = rand(UL_Counter_Messages.size)
        ul_temp     = UL_Counter_Messages[ul_temp].clone
        ul_temp.gsub!(/\\[Mm]/) { @ul_countertarget.name }
        @help_window.set_text(ul_temp, 1)
        @active_battler.attack_effect(@ul_countertarget)
        if !@active_battler.damage.is_a?(String)
          @active_battler.hp += @active_battler.damage
          @active_battler.damage = @active_battler.damage * @ul_counter / 100
          @active_battler.hp -= @active_battler.damage
          @status_window.refresh
        end
        @active_battler.damage_pop = true
      end
    end
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
      if @ul_atkcounter != nil
        ul_counter_update
      end
      lanzer_counter_battle_update
    end
  end
endTechnically, he forgot that both the 'attack_effect' and 'skill_effect' methods return a true/false value after they are run... to determine if the actions were effective. As he left that little bit out, the system thought the skills were not effective and thus *BRRRZZZZZZZ!!!!* ... even though the members were healed. You may not have noticed that the SPs weren't being used up either.

 
 
 Bizarre issue with Lanzer counter script.
 Bizarre issue with Lanzer counter script.
 
 
![[Image: QrnbKlx.jpg]](https://i.imgur.com/QrnbKlx.jpg)
![[Image: sGz1ErF.png]](https://i.imgur.com/sGz1ErF.png)
![[Image: liM4ikn.png]](https://i.imgur.com/liM4ikn.png)
![[Image: fdzKgZA.png]](https://i.imgur.com/fdzKgZA.png)
![[Image: sj0H81z.png]](https://i.imgur.com/sj0H81z.png)
![[Image: QL7oRau.png]](https://i.imgur.com/QL7oRau.png)
![[Image: uSqjY09.png]](https://i.imgur.com/uSqjY09.png)
![[Image: GAA3qE9.png]](https://i.imgur.com/GAA3qE9.png)
![[Image: 2Hmnx1G.png]](https://i.imgur.com/2Hmnx1G.png)
![[Image: BwtNdKw.png%5B]](https://i.imgur.com/BwtNdKw.png%5B)
 
 