Mr. Mo v 5.5 + Immense Events
#1
Hi, I'm starting this topic to solve the Mr. Mo script integrity error in version 5.5 of Immense Events by Der Wulfman.

Maybe you have some ideas or a solution to the problem of not being able to attack huge events with the Mr. Mo script?

I'm attaching a package with scripts for your reference.

Mr_Mo_ABS 5.5

Edit 1:

Immense event can be attacked by skills but not by meele, arrows and bullets.
Reply }
#2
I will get to it when I can.  I am nit at my PC where I do all my RMXP work right now, and won't expect to until the Heater repair men have left .  My house is very .. VERY... chilly right now *BRRRR*

Frozen  Frozen  Frozen  Frozen  Frozen  Frozen  Frozen  Frozen  Frozen  Frozen  Frozen 

Ya know, ya haven't added an avatar to your account.  I just had to don my 'cowl' for Halloween.  Laughing
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)

[Image: QrnbKlx.jpg]
[Image: sGz1ErF.png]    [Image: liM4ikn.png]    [Image: fdzKgZA.png]    [Image: sj0H81z.png]
[Image: QL7oRau.png]    [Image: uSqjY09.png]    [Image: GAA3qE9.png]    [Image: 2Hmnx1G.png]    [Image: BwtNdKw.png%5B]
  Above are clickable links
Reply }
#3
Okay! I'm waiting for good news. :D Maybe in some while i will solve this problem but will see what can I do.
Reply }
#4
Analysis performed.  Two areas to confront.  Should work with the actual MrMo ABS 4.5 as well. 

Funny.  Whoever doctored this system neglected to change the date.  It still has MrMo's 4.5 date of 01/04/06. 

INCIDENTALLY, it is using a variation of my PERSONALITY comment option.  The staying at a distance and run if dying was from my MrMo Addon #3: Cassandra script. (here) ... which I also included two FIXES that may have been overlooked by whomever did this.

I will have to work on it tomorrow, sometime after a repair crew is done with the furnace replacement.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)

[Image: QrnbKlx.jpg]
[Image: sGz1ErF.png]    [Image: liM4ikn.png]    [Image: fdzKgZA.png]    [Image: sj0H81z.png]
[Image: QL7oRau.png]    [Image: uSqjY09.png]    [Image: GAA3qE9.png]    [Image: 2Hmnx1G.png]    [Image: BwtNdKw.png%5B]
  Above are clickable links
Reply }
#5
There is a third section that is within both MrMo's ABS v4.5 circa 2006, and the edition supplied that needs to be touched upon.  It is a section handling ballistic weapon hits. Unfortunately, there are some differences between the two and I am loathe to have two separate scripts... so I will put in an auto-detect  feature so it knows if it is dealing with 4.5 or this.

BUT, for melee combat:

.mp4   2024-10-29 18-51-36_x264_Segment_0_x264.mp4 (Size: 714.89 KB / Downloads: 1)
Oh, I wish I had a generic "Play the MP4" bbcode (yet).

I reduced the framerate of the video to 15fps because I didn't figure I needed it for this.  However, the video shows a DUMMY enemy target being hit from all sides and based upon the enemy's SIZE.  I set the enemy to be 3tiles wide and 2 tiles tall regardless of it facing vertically or horizontally. :) 

And melee combat works.

Ballistics is next.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)

[Image: QrnbKlx.jpg]
[Image: sGz1ErF.png]    [Image: liM4ikn.png]    [Image: fdzKgZA.png]    [Image: sj0H81z.png]
[Image: QL7oRau.png]    [Image: uSqjY09.png]    [Image: GAA3qE9.png]    [Image: 2Hmnx1G.png]    [Image: BwtNdKw.png%5B]
  Above are clickable links
Reply }
#6
Here it is... basic instructions.

Code:
#==============================================================================
# ** MrMo's Immense Events Patch
#------------------------------------------------------------------------------
#    by DerVVulfman
#    version 1.0
#    10-30-2024
#    RGSS / RPGMaker XP
#
#==============================================================================
#
#  INSTALLATION:
#
#  The Immense Events script must be below MrMo's ABS.
#  This patch goes below both.
#  Par-tay!
#
#------------------------------------------------------------------------------
#
#  USAGE:
#
#  Apply the 'size' command used by Immense Events to the 'first page' in any
#  enemy event.  The size is only defined once for any event and won't reset.
#  Using the 'size' command multiple times for an event changing its graphics
#  will not function.
#
#------------------------------------------------------------------------------


#==============================================================================
# ** MrMo_ABS
#------------------------------------------------------------------------------
#  This class deals with the Action Battle System and controls all Player,
#  Enemy and Companion Actions on the map.
#==============================================================================

class MrMo_ABS
  #--------------------------------------------------------------------------
  # * In Direction?(source, target) - Near Fantastica
  #     source : source of search (object performing test)
  #     target : target of search (object being searched)
  #--------------------------------------------------------------------------
  def in_direction?(source, target)
    #
    # Obtain size differences
    change          = get_size(target)
    o_ch_x, o_ch_y  = change[0], change[1]
    #
    # Get facing direction of seearch source
    dir = source.direction
    #
    # Cycle through object/target x coordinates
    for x in (target.x - o_ch_x)..(target.x + o_ch_x)
      # Return with success based on diretion and coordinates
      return true if dir == 2 and source.y <= target.y and source.x == x
      return true if dir == 8 and source.y >= target.y and source.x == x
    end
    #
    # Cycle through object/target y coordinates
    for y in (target.y - o_ch_y)..(target.y)
      # Return with success based on diretion and coordinates
      return true if dir == 4 and source.x >= target.x and source.y == y
      return true if dir == 6 and source.x <= target.x and source.y == y
    end
    #
    # Return failed
    return false
    #
  end
  #--------------------------------------------------------------------------
  # * In Range?(Element, Object, Range) - Near Fantastica
  #     source : source of search (object performing test)
  #     target : target of search (object being searched)
  #     range  : range distance in tiles
  #--------------------------------------------------------------------------
  def in_range?(source, target, range)
    #
    # Get differences
    change          = get_size(source)
    s_ch_x, s_ch_y  = change[0], change[1]
    change          = get_size(target)
    t_ch_x, t_ch_y  = change[0], change[1]
    #
    # Loop through source and target coordinates with tile extensions
    for xs in (source.x - s_ch_x)..(source.x + s_ch_x)
      for xt in (target.x - t_ch_x)..(target.x + t_ch_x)
        for ys in (source.y - s_ch_y)..(source.y)
          for yt in (target.y - t_ch_y)..(target.y)
            #
            # Confirm if updated coordinate are within the range test
            return true if in_range_numeric?(xs, ys, xt, yt, range)
            #
          end
        end
      end
    end
    #
    # Exit method with no confirmation
    return false
    #
  end
  #--------------------------------------------------------------------------
  # * In Range based on given values (variant of Near Fantastica's)
  #     s_x   : source object's x-coordinates
  #     s_y   : source object's y-coordinates
  #     t_x   : target object's x-coordinates
  #     t_y   : target object's y-coordinates
  #     range : range distance in tiles
  #--------------------------------------------------------------------------
  def in_range_numeric?(s_x, s_y, t_x, t_y, range)
    #
    x = (s_x - t_x) * (s_x - t_x)
    y = (s_y - t_y) * (s_y - t_y)
    r = x + y
    return true if r <= (range * range)
    return false
    #
  end  
  #--------------------------------------------------------------------------
  # * Obtain extending tile quantity (size) based on facing direction
  #     t : target object character
  #--------------------------------------------------------------------------
  def get_size(t)
    #
    # Get facing direction of target
    d = t.direction
    #    
    # Set the size variables depending on the direction
    t_x = ((d == 2 or d == 8) ? t.vertical_size_x : t.horizontal_size_x).to_i
    t_y = ((d == 2 or d == 8) ? t.vertical_size_y : t.horizontal_size_y).to_i
    #    
    # Work out the number of tiles either side of the event
    t_x /= 2
    t_y -= 1
    #
    # Return array with horizontal and vertical tile extensions
    return [t_x, t_y]
    #
  end
end



#==============================================================================
# ** Game_Ranged_Weapon
#------------------------------------------------------------------------------
#  This class handles ranged missiles that deliver damage based on the weapon
#  currently equipped.
#==============================================================================

class Game_Ranged_Weapon < Range_Base
  #--------------------------------------------------------------------------
  # * Check Event Trigger Touch(x,y)
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    #
    # If using non-official update to 4.5
    faux = (Object.const_defined?(:DEFEND_DAMAGE_PERCENT))
    #
    # Exit if the stop flag is set
    return if @stop
    #
    if faux
      # Exit and set stop flag if neither an enemy nor player
      if $ABS.enemies[@parent.id].nil? and !@parent.is_a?(Game_Player)
        return @stop = true
      end
    end
    #
    # Hit the player if missile in range of the player
    hit_player if in_range_ballistic?(x, y, $game_player, 1)
    #
    # Cycle through all map events
    for event in $game_map.events.values
      #
      # Skip if not an enemy, or missile not in range to strike
      next if $ABS.enemies[event.id].nil?      
      next unless in_range_ballistic?(x, y, event, 1)      
      #
      # Acquire hit condition tests
      if faux
        # Adding unofficial friendly-fire option
        hate    = true
        unless $ABS.enemies[@parent.id].nil?
          e_id  = $ABS.enemies[event.id].enemy_id
          hate  = $ABS.enemies[@parent.id].hate_group.include?(e_id)
        end
      end
      c1      = event.character_name == ""
      c2      = ($ABS.enemies[event.id] != nil and $ABS.enemies[event.id].dead?)
      c3      = event.erased
      c4      = @parent.is_a?(Game_Event) and !hate      
      #
      # Move if hit condition not met, or perform hit
      if (c1 or c2 or c3) && !faux
        force_movement
      elsif (c1 or c2 or c3 or c4) && faux
        force_movement
      else
        hit_event(event.id)
      end
      #
    end
  end
  #--------------------------------------------------------------------------
  # * In Range?(Element, Object, Range) - Near Fantastica
  #     source : source of search (object performing test)
  #     target : target of search (object being searched)
  #     range  : range distance in tiles
  #--------------------------------------------------------------------------
  def in_range_ballistic?(x, y, target, range)
    #
    # Get differences
    change          = $ABS.get_size(target)
    t_ch_x, t_ch_y  = change[0], change[1]
    #
    # Loop through source and target coordinates with tile extensions
    for xt in (target.x - t_ch_x)..(target.x + t_ch_x)
      for yt in (target.y - t_ch_y)..(target.y)
        #
        # Confirm if updated coordinate are within the range test
        return true if $ABS.in_range_numeric?(x, y, xt, yt, range)
        #
      end
    end
    #
    # Exit method with no confirmation
    return false
    #
  end
end

I had to perform an auto-detect switch (looking for "DEFEND_DAMAGE_PERCENT" which is not part of 4.5) because the unofficial version's ballistic's enemy hit detect system adds a 4th condition.

This will eventually be placed within the Scripts Database with better written instructions... and credit to Tepe for the request.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)

[Image: QrnbKlx.jpg]
[Image: sGz1ErF.png]    [Image: liM4ikn.png]    [Image: fdzKgZA.png]    [Image: sj0H81z.png]
[Image: QL7oRau.png]    [Image: uSqjY09.png]    [Image: GAA3qE9.png]    [Image: 2Hmnx1G.png]    [Image: BwtNdKw.png%5B]
  Above are clickable links
Reply }


Possibly Related Threads…
Thread Author Replies Views Last Post
  Icon Display 1.0 scripts makes events impossible to go to events, which are passable Djigit 0 3,868 01-03-2015, 09:11 PM
Last Post: Djigit
   in FPLE touching events after battle causes rpg maker to crash ThePrinceofMars 1 5,465 11-27-2014, 09:11 PM
Last Post: MechanicalPen



Users browsing this thread: 1 Guest(s)