More about 'DMG' pops.

Started by Jragyn, March 02, 2010, 04:08:07 am

Previous topic - Next topic

Jragyn

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
A bright light can either illuminate or blind, but how will you know which until you open your eyes?

ForeverZer0

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.
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.

winkio

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.

Jragyn

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.

A bright light can either illuminate or blind, but how will you know which until you open your eyes?

Blizzard

What jragyn00 said. Alias BlizzABS::Processor#remove_enemy and add calls with $BlizzABS.request_sprite_damage(ARGS).
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.