Chaos Project

RPG Maker => RPG Maker Scripts => Script Requests => Topic started by: Jragyn on March 02, 2010, 04:08:07 am

Title: More about 'DMG' pops.
Post by: Jragyn on March 02, 2010, 04:08:07 am
I'm tinkering around with it, but having serious trouble figuring out the method of which 'dmg' pops are created and used...more specifically, I'm trying to create a way to make XP & GP pop on enemy defeat.

And thinking about 'dmg' pops, I've seen scripts where in regular battles where a single animation would produce multiple dmgpops, is this possible to re-create within/for Blizz-ABS? None of the ones that work in regular battle that I've seen seem to work in the ABS...I suppose its more a curiousity as to possibility than a request.

Thanks for those that reply with information on these two concepts.
You contribute to my learning experience :)


--JeR
Title: Re: More about 'DMG' pops.
Post by: ForeverZer0 on March 02, 2010, 05:39:56 pm
I personally don't know, I've never used it, but check out Caldaron's Realistic ABS.
I believe there is a demo for it at RPG-Palace.

I'm not sure, but I think there might be something along them lines in the script.
Title: Re: More about 'DMG' pops.
Post by: winkio on March 02, 2010, 05:57:17 pm
From what I can tell,

damage(string damage, bool critical)


is a method of RPG::Sprite, which we don't have access to modify.  In-game, it is used in Sprite_Battler to pop damage (line 110).

If you want everything to look the same (color-wise and all), you should just just be able to tack on 'XP' or something at the end of damage and make a separate call.  If you want to modify how the pops are displayed, you need to write your own pop method.
Title: Re: More about [BlizzABS] 'DMG' pops.
Post by: Jragyn on March 03, 2010, 12:51:05 am
Its interesting that there is so much code that they left open and available to the public to dawdle with, but even more interesting that they hide a lot of it as well.

In regards to XP popping, I've seen scripts that modify the default battle system so that on defeat, enemies will spew forth their XP/GP amounts, etc. However, the XP/GP pop that I refer to was more aiming at the popping of the Blizz-ABS damage sprites.

I've found a couple important parts that I believe could play a role in what I seek:

This is within the module BlizzABS::Utility.
Spoiler: ShowHide

    #--------------------------------------------------------------------------
    # request_damage_sprite
    #  char - map character
    #  Requests a sprite for damage display.
    #--------------------------------------------------------------------------
    def request_damage_sprite(char, damage = nil)
      # if map battler
      if damage != nil
        # get damage text colors and strings
        colors, damages = self.get_damage_data(damage)
      else
        # get damage text colors and strings
        colors, damages = self.get_damage_data(char.battler)
      end
      # for each existing color
      colors.each_index {|i|
          # create one damage sprite request
          $BlizzABS.cache.damages.push(DamageRequest.new(char, damages[i],
              colors[i], char.battler.critical))}
    end


and this lies within module BlizzABS::Processor.
Spoiler: ShowHide
    #--------------------------------------------------------------------------
    # remove_enemy
    #  enemy - the killed enemy event
    #  Processes the after-death period of enemies.
    #--------------------------------------------------------------------------
    def remove_enemy(enemy)
      # stop except if enemy event code is to be executed or enemy is erased
      return if enemy.execute || enemy.erased
      # start event code if there is some
      enemy.start if enemy.trigger == BlizzABS::CETDeath
      # remove except if code needs to be executed
      $game_map.events.delete(enemy.id) unless enemy.execute
      # get all dropped items on the map
      items = drop_items(enemy)
      # experience result
      exp_result(enemy)
      # gold result
      gold = gold_result(enemy)
      # if not using drop gold mode
      if BlizzABS::Config::DROP_GOLD == ''
        # just increase gold
        $game_party.gain_gold(gold)
      # if dropping any gold
      elsif gold > 0
        # add gold to items
        items = [gold] + items
      end
      # execute all additional enemy results
      additional_result(enemy)
      # if using corpses
      if BlizzABS::Config::CORPSES
        # if using empty corpses or any drop exists
        if BlizzABS::Config::EMPTY_CORPSES || items.size > 0
          # create a corpse dropped items
          drop_event(items, enemy.real_x, enemy.real_y, enemy)
        end
      else
        # create all necessary dropped items
        items.each {|item| drop_event([item], enemy.real_x, enemy.real_y)}
      end
    end


But for the life of me I cannot put the two together(or more if required), and its kind of frustrating.

Title: Re: More about 'DMG' pops.
Post by: Blizzard on March 03, 2010, 02:40:54 pm
What jragyn00 said. Alias BlizzABS::Processor#remove_enemy and add calls with $BlizzABS.request_sprite_damage(ARGS).