RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu

Help! Variables not increasing after battles! [RMXP]

Started by djskagnetti, September 25, 2011, 03:03:02 AM

0 Members and 1 Guest are viewing this topic.

djskagnetti

can somebody please help me with this? for RMXP

I have a simple job system where you get xp and gold when you kill a set amount of a certain type of monster.

I have a variable for each type of monster.

I have, on the troop screen, When [monster]'s HP < 0 then [monster]'s variable increase +1. I have it set to Turn for the span.

I realized after a while that the Turn span is flawed, as it checks each turn, and, for every turn that that specific monster's hp is below 0, it adds +1. Which is great if it lasts only 1 turn after it dies. But if, say, it lasts 10 turns more as you kill the other monsters in it's group, you get +1 for every turn. So it registers as 10 kills.

So I tried this instead in the troop screen.
I added a conditional branch.
If self switch A is on
[do nothing]
Else
Increase [monster]'s variable +1
self switch A = on

So this seems to work for stopping it from counting 10 or whatever number of turns it is after it dies.

EDIT: ^^ The above conditional doesn't work after all.  I guess self switches don't work in the troop window?  because it's still registering for every turn it is dead, which, I assume, is because self switch A is not turning on and thus not triggering the conditional branch of A=on...

But, let's say I'm fighting 2 Goblins.
If I kill both in the same turn, ending the battle, it only registers 1.
If I use a skill that attacks all monsters at once, and it kills everything on the screen on the first turn, it doesn't register at all!

I tried setting it to moment and it froze the battle screen.
I tried setting it to battle and it only registers 1.


Please somebody help!


EDIT:

Thanks to ForeverZero for making me this script.  This adds 1 to the variable at the end of battle to whatever enemy is specified, completely fixing all my problems!  Thanks again ForeverZero!


"Place the script anywhere below Game_Enemy and fill out the simple configuration at the top of the script."

class Game_Enemy

#-------------------------------------------------------------------------------
# CONFIGURATION
#-------------------------------------------------------------------------------
#  Define the variable used for each enemy here. Follow this pattern:
#
#    when ENEMY_ID then VARIABLE_ID
#
#  If more than one eneky share the same variable, you can define multiple
#  IDs on one line. For example, say you had a Goblin whose ID was 1, and an
#  Orc whose ID was 17. You wanted both of them to be of the same "type", and
#  use the variable with ID of 6:
#
#     when 1, 17 then 6
#
#-------------------------------------------------------------------------------

  def enemy_variable(enemy_id)
    return case enemy_id
    when 1 then 1
    when 2 then 2
    when 3 then 3
    when 4 then 4
    when 5 then 5
    end
  end

#-------------------------------------------------------------------------------
# END CONFIGURATION
#-------------------------------------------------------------------------------

  def increase_count(enemy_id)
    var_id = enemy_variable(enemy_id)
    if var_id != nil
      $game_variables[var_id] += 1
    end
  end

  alias zer0_enemy_type_attack attack_effect
  def attack_effect(attacker)
    result = zer0_enemy_type_attack(attacker)
    if self.dead? && @counted == nil
      increase_count(@enemy_id)
      @counted = true
    end
    return result
  end

  alias zer0_enemy_type_skill skill_effect
  def skill_effect(user, skill)
    result = zer0_enemy_type_skill(user, skill)
    if self.dead? && @counted == nil
      increase_count(@enemy_id)
      @counted = true
    end
    return result
  end

  alias zer0_enemy_type_item item_effect
  def item_effect(item)
    result = zer0_enemy_type_item(item)
    if self.dead? && @counted == nil
      increase_count(@enemy_id)
      @counted = true
    end
    return result
  end
end