[Resolved][XP]Help with Lazor's Counter Script.

Started by Simon Greedwell, April 22, 2016, 03:27:00 pm

Previous topic - Next topic

Simon Greedwell

April 22, 2016, 03:27:00 pm Last Edit: April 22, 2016, 04:10:04 pm by Simon Greedwell
I'd like to use this counter script found on this very forum:

#==========================================================================
    # ** 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 = { 32 => [100,100]} #ADD MORE BY THE SAME SYNTAX


    # MESSAGGE WHEN COUNTER
    Scene_Battle::UL_Counter_Messages = ['\m Counter!']

    # CHECKING SCRIPT
    if !@ul_counterattack_disabled

    # START
    class Game_Battler
       
      alias lanzer_counter_battler_atkeff attack_effect
      def attack_effect(attacker)
        lanzer_counter_battler_atkeff(attacker)
        if $scene.active_battler == attacker
          $scene.ul_atkcounter_test(self)
        end
      end
     
      alias counter_skill_attacks skill_effect
      def skill_effect(attacker, skill)
        counter_skill_attacks(attacker, skill)
        if $scene.active_battler == attacker and skill.power > 0
          $scene.ul_atkcounter_test(self)
        end
      end
     
    end

    class Scene_Battle
      attr_accessor :active_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
     
      alias lanzer_counter_battle_up4s5 update_phase4_step5
      def update_phase4_step5
        lanzer_counter_battle_up4s5
        if @ul_countertarget != nil
          @phase4_step = 1337  # LEET
          @ul_atkcounter = 28
        end
      end
     
      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
     
      alias lanzer_counter_battle_update update
      def update
        if @ul_atkcounter != nil
          ul_counter_update
        end
        lanzer_counter_battle_update
      end
    end

    #--------------------------------------------------------------------------#
    end


After a thorough test, this error popped out when trying to use healing skills from the main menu (I'm currently using the latest version of Stormtronic CMS):

Bury with my...money!

KK20

Replace the Game_Battler class in the script with this:

    class Game_Battler
       
      alias lanzer_counter_battler_atkeff attack_effect
      def attack_effect(attacker)
        lanzer_counter_battler_atkeff(attacker)
        if $scene.is_a?(Scene_Battle) && $scene.active_battler == attacker
          $scene.ul_atkcounter_test(self)
        end
      end
     
      alias counter_skill_attacks skill_effect
      def skill_effect(attacker, skill)
        counter_skill_attacks(attacker, skill)
        if $scene.is_a?(Scene_Battle) && $scene.active_battler == attacker and skill.power > 0
          $scene.ul_atkcounter_test(self)
        end
      end
     
    end

Just added a couple checks to see if the current scene is Scene_Battle.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

Simon Greedwell

Bury with my...money!