This script gives a complete control of the game challengue, not only with a
initial decision. Now it also let you create a menu in scene title to
select the difficulty to use.
initial decision. Now it also let you create a menu in scene title to
select the difficulty to use.

Code:
#==============================================================================
# Difficulty effects
# By gerkrt/gerrtunk, Dargor(used his difficulty script for scene title
# modification)
# Version: 2
# License: GPL, credits
#==============================================================================
=begin
This script gives a complete control of the game challengue, not only with a
initial decision. Now it also let you create a menu in scene title to
select the difficulty to use.
Features:
-You can create all the difficulty effects you want and active and desactive
at your will. Each effect can changue some nemy atributes based in %.
The effects are accumulative and saved when quit the game.
4 ways of choosing what enemies are using the effects:
-By enemies ids
-By maps ids
-Using the map tree system. You only have to write the name of the parent map
and all the others are included in rhe effect.
-Global
-All the atributes are optional.
-You can use the value in a event variable to control all the values of a effect
in real time.
-HP, SP, ATK, PDEF, PMAG, EVS, STR, DEX, AGI, INT, EXPERIENCIE, GOLD and DROP
-You can optionally create a menu in the scene title with each number of difficulty
options, names, descriptions, switch and difficulty effects that they active.
-Vocabulary control
############ Values and sintaxis #########
Enemies atributes are calculated in %. Each atribute you add to a effect to
modify starts wuth a value of 100% and then you can sum or rest to it.
Example:
Difficulty_effects[5] = {
:active => false,
:type => 3,
:base_map_name => 'Forest',
:hp => 50,
:sp =>-30
}
This makes that the hp is 150 and sp 70.
:x => value of x,
You must respect : before x name, the => separating them and the final ,
-Each new effect must have a new and unique number ID in Difficulty_effects[ID]
-Dont touch the {}. They mean start and end and have to be in that positions.
-You can add or remove any values, just use the same sintaxis.
-The last value dont use the final ,
############ Option types #########
Obligatory:
active: If you give this a true value the script will start actived.
type: Define how is going to know the script wich enemies affect.
Values:
1.By enemies ids
2.By maps ids
3.By map tree
4.Global
enemies_ids: Obligatory when type is 1. Define wich enemies are affected.
:enemies_ids => [1,2,3]
maps_ids: Obligatory when type is 2. Define wich maps are affected.
:maps_ids => [1,2,3]
base_map_name: Obligatory when type is 3. Define the parent map name.
Optionals:
variable: Makes that all values of the effect depend of that event variable value.
value*event_variable/100
hp
sp
atk
pdef
mdef
evs
str STRENGTH
dex DEXTERITY
agi AGILITY
int INTELIGENCE
exp EXPERIENCIE
gold MONEY
drop % OF ITEMS
Note that you can erase the example effects.
############ Select wich enemies will use the effect #########
-Global. All combats
-By enemies: Only the enemies that you add to the list.
-By maps: All combats in the maps that you add to the list.
-By map tree: With this you only have to define a parent map and write its name in
the effect. All the maps and combats under it will have the effect.
The map tree is show under the tileset tool. If you doubleclick to - or + you will
see that the maps are shown in groups that depend in parent maps.
Note: I recomend having the maps having the maps ordered and directly relationed with
its parent map to have optimal performance.
Use example:
Mapamundi
Forest
Mapa3
Mapa4
Mapa5
Mapa6
Mapa7
Pantano del Wep
Mapa9
Ex:
Difficulty_effects[2] = {
:active => false,
:hp => 50,
:sp => 30,
:atk => 20,
:spi => 20,
:agi => 10,
:drop => -20,
:variable => 6,
:type => 3,
:base_map_name => 'Forest'
}
Maps 3,4,5,6,7, and Forest have that effect.
############ Activating effects #########
Activate: start_difficulty_effect(effect number)
Desactivate: stop_difficulty_effect(effect number)
Ex: start_difficulty_effect(1)
########### Difficulties menu ##########
I have comented in the module itself what is what. Anyway, the main thing
is to define what number of difficluties, etc, want to use, and then, create
a entry in the same order and position for each one, so:
# For each difficulty, his command name
Names = [
'Loser', # 1
'Medium', # 2
'Hard', # 3
'Game Master' # 4
]
# For each difficulty, his description
Descriptions = [
'Only a loser take this mode.', # 1
'Medium difficulty, standard way', # 2
'You rules!', # 3
'Killing a slime in this mode is a miracle' # 4
]
Each time the first named loser have the 1 name, the 1 description, etc
############ Last notes #########
-All the effects to an enemy are sumed and then applied.
-You can create large number groups with this:
:enemies_ids => (1..25).to_a
This is like putting the enemies ids 1-25
-Creditss: this script have been created studying KGC
BattleDifficuly
=end
module Wep
# Dont touch this
Difficulty_effects = []
Difficulty_effects[1] = {
:active => false,
:hp => 50,
:mp => 30,
:atk => 20,
:agi => 10,
:drop => 20,
:variable => 4,
:type => 1,
:enemies_ids => [2,3]
}
Difficulty_effects[2] = {
:active => false,
:hp => 50,
:mp =>30,
:atk => 20,
:agi => 10,
:drop => 20,
:gold => 20,
:exp => 20,
:variable => 5,
:type => 2,
:maps_ids => [1,2,3,4,6,7]
}
Difficulty_effects[3] = {
:active => false,
:hp => 50,
:mp => 30,
:atk => 20,
:dex => 20,
:agi => 10,
:drop => -20,
:variable => 6,
:type => 3,
:base_map_name => 'Forest'
}
Difficulty_effects[4] = {
:active => false,
:hp => 50,
:mp => 30,
:atk => 20,
:agi => 10,
:drop => -20,
:variable => 6,
:type => 4
}
# Desactive this, = false, if you dont want to modify the scene title and only
# wanto to use the geneal difficulty effects
Diff_modify_scene_title = true
end
# The configuration of the title modification.
module Difficulty
# Default difficulty used in the list
Default = 1 # medium
# For each difficulty, his command name
Names = [
'Loser',
'Medium',
'Hard',
'Game Master'
]
# For each difficulty, his description
Descriptions = [
'Only a loser take this mode.',
'Medium difficulty, standard way',
'You rules!',
'Killing a slime in this mode is a miracle'
]
# For each difficulty, the game switch they active
Switches = [
2,
3,
4,
5
]
# For each difficulty, the difficulty effect they active
Effects = [
1,
2,
3,
4
]
# Vicabulary words used in default menu
Diff_new_game_word = 'New'
Diff_load_game_word = 'Load'
Diff_exit_game_word = 'Exit'
end
class Game_System
attr_accessor :difficulty_effects
alias gs_wep_cc_init initialize
def initialize
@difficulty_effects = Wep::Difficulty_effects
gs_wep_cc_init
end
end
class Interpreter
def start_difficulty_effect(num)
$game_system.difficulty_effects[num][:active] = true
end
def stop_difficulty_effect(num)
$game_system.difficulty_effects[num][:active] = false
end
end
class Game_Party
def tree_includes_map? (name)
# Load mapinfos for map name
mapinfos = load_data("Data/MapInfos.rxdata")
# If his name is the name searched
if mapinfos[$game_map.map_id].name == name
return true
end
map = $game_map.map_id
# Iterate all parents maps
while mapinfos[map].parent_id != 0
if mapinfos[mapinfos[map].parent_id].name == name
return true
else
map = mapinfos[map].parent_id
end
end
end
end
#==============================================================================
# ¦ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ? MaxHP
#--------------------------------------------------------------------------
alias base_maxhp_Challengue_Compensator base_maxhp
def base_maxhp
# Gets normal atribute
n = base_maxhp_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:hp] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:hp]*$game_variables[effect[:variable]]/100
else
total+=effect[:hp]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:hp] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:hp]*$game_variables[effect[:variable]]/100
else
total+=effect[:hp]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:hp] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:hp]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:hp]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:hp] != nil
if effect[:variable] != nil
total+=effect[:hp]*$game_variables[effect[:variable]]/100
else
total+=effect[:hp]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? MaxSP
#--------------------------------------------------------------------------
alias base_maxsp_Challengue_Compensator base_maxsp
def base_maxsp
# Gets normal atribute
n = base_maxsp_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:sp] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:sp]*$game_variables[effect[:variable]]/100
else
total+=effect[:sp]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:sp] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:sp]*$game_variables[effect[:variable]]/100
else
total+=effect[:sp]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:sp] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:sp]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:sp]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:sp] != nil
if effect[:variable] != nil
total+=effect[:sp]*$game_variables[effect[:variable]]/100
else
total+=effect[:sp]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxstr
#--------------------------------------------------------------------------
alias base_str_Challengue_Compensator base_str
def base_str
# Gets normal atribute
n = base_str_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:str] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:str]*$game_variables[effect[:variable]]/100
else
total+=effect[:str]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:str] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:str]*$game_variables[effect[:variable]]/100
else
total+=effect[:str]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:str] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:str]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:str]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:str] != nil
if effect[:variable] != nil
total+=effect[:str]*$game_variables[effect[:variable]]/100
else
total+=effect[:str]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxdex
#--------------------------------------------------------------------------
alias base_dex_Challengue_Compensator base_dex
def base_dex
# Gets normal atribute
n = base_dex_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:dex] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:dex]*$game_variables[effect[:variable]]/100
else
total+=effect[:dex]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:dex] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:dex]*$game_variables[effect[:variable]]/100
else
total+=effect[:dex]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:dex] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:dex]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:dex]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:dex] != nil
if effect[:variable] != nil
total+=effect[:dex]*$game_variables[effect[:variable]]/100
else
total+=effect[:dex]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxagi
#--------------------------------------------------------------------------
alias base_agi_Challengue_Compensator base_agi
def base_agi
# Gets normal atribute
n = base_agi_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:agi] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:agi]*$game_variables[effect[:variable]]/100
else
total+=effect[:agi]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:agi] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:agi]*$game_variables[effect[:variable]]/100
else
total+=effect[:agi]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:agi] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:agi]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:agi]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:agi] != nil
if effect[:variable] != nil
total+=effect[:agi]*$game_variables[effect[:variable]]/100
else
total+=effect[:agi]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxint
#--------------------------------------------------------------------------
alias base_int_Challengue_Compensator base_int
def base_int
# Gets normal atribute
n = base_int_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:int] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:int]*$game_variables[effect[:variable]]/100
else
total+=effect[:int]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:int] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:int]*$game_variables[effect[:variable]]/100
else
total+=effect[:int]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:int] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:int]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:int]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:int] != nil
if effect[:variable] != nil
total+=effect[:int]*$game_variables[effect[:variable]]/100
else
total+=effect[:int]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxatk
#--------------------------------------------------------------------------
alias base_atk_Challengue_Compensator base_atk
def base_atk
# Gets normal atribute
n = base_atk_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:atk] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:atk]*$game_variables[effect[:variable]]/100
else
total+=effect[:atk]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:atk] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:atk]*$game_variables[effect[:variable]]/100
else
total+=effect[:atk]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:atk] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:atk]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:atk]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:atk] != nil
if effect[:variable] != nil
total+=effect[:atk]*$game_variables[effect[:variable]]/100
else
total+=effect[:atk]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxpdef
#--------------------------------------------------------------------------
alias base_pdef_Challengue_Compensator base_pdef
def base_pdef
# Gets normal atribute
n = base_pdef_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:pdef] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:pdef]*$game_variables[effect[:variable]]/100
else
total+=effect[:pdef]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:pdef] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:pdef]*$game_variables[effect[:variable]]/100
else
total+=effect[:pdef]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:pdef] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:pdef]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:pdef]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:pdef] != nil
if effect[:variable] != nil
total+=effect[:pdef]*$game_variables[effect[:variable]]/100
else
total+=effect[:pdef]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxmdef
#--------------------------------------------------------------------------
alias base_mdef_Challengue_Compensator base_mdef
def base_mdef
# Gets normal atribute
n = base_mdef_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:mdef] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:mdef]*$game_variables[effect[:variable]]/100
else
total+=effect[:mdef]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:mdef] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:mdef]*$game_variables[effect[:variable]]/100
else
total+=effect[:mdef]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:mdef] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:mdef]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:mdef]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:mdef] != nil
if effect[:variable] != nil
total+=effect[:mdef]*$game_variables[effect[:variable]]/100
else
total+=effect[:mdef]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxeva
#--------------------------------------------------------------------------
alias base_eva_Challengue_Compensator base_eva
def base_eva
# Gets normal atribute
n = base_eva_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:eva] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:eva]*$game_variables[effect[:variable]]/100
else
total+=effect[:eva]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:eva] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:eva]*$game_variables[effect[:variable]]/100
else
total+=effect[:eva]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:eva] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:eva]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:eva]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:eva] != nil
if effect[:variable] != nil
total+=effect[:eva]*$game_variables[effect[:variable]]/100
else
total+=effect[:eva]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxexp
#--------------------------------------------------------------------------
alias exp_Challengue_Compensator exp
def exp
# Gets normal atribute
n = exp_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:exp] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:exp]*$game_variables[effect[:variable]]/100
else
total+=effect[:exp]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:exp] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:exp]*$game_variables[effect[:variable]]/100
else
total+=effect[:exp]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:exp] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:exp]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:exp]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:exp] != nil
if effect[:variable] != nil
total+=effect[:exp]*$game_variables[effect[:variable]]/100
else
total+=effect[:exp]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxgold
#--------------------------------------------------------------------------
alias gold_Challengue_Compensator gold
def gold
# Gets normal atribute
n = gold_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:gold] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:gold]*$game_variables[effect[:variable]]/100
else
total+=effect[:gold]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:gold] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:gold]*$game_variables[effect[:variable]]/100
else
total+=effect[:gold]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:gold] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:gold]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:gold]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:gold] != nil
if effect[:variable] != nil
total+=effect[:gold]*$game_variables[effect[:variable]]/100
else
total+=effect[:gold]
end
end
end
n = n * total / 100
return n.to_i
end
#--------------------------------------------------------------------------
# ? Maxdrop
#--------------------------------------------------------------------------
alias treasure_prob_Challengue_Compensator treasure_prob
def treasure_prob
# Gets normal atribute
n = treasure_prob_Challengue_Compensator
# Sets total to a base 100%
total = 100
# Search in all effects
for effect in $game_system.difficulty_effects
# Effect type 1
if effect[:active] and effect[:type] == 1 and effect[:drop] != nil and effect[:enemies_ids].include?(@enemy_id)
if effect[:variable] != nil
total+=effect[:drop]*$game_variables[effect[:variable]]/100
else
total+=effect[:drop]
end
end
# Effect type 2
if effect[:active] and effect[:type] == 2 and effect[:drop] != nil and effect[:maps_ids].include?($game_map.map_id)
if effect[:variable] != nil
total+=effect[:drop]*$game_variables[effect[:variable]]/100
else
total+=effect[:drop]
end
end
# Effect type 3
if effect[:active] and effect[:type] == 3 and effect[:drop] != nil and $game_party.tree_includes_map? (effect[:base_map_name])
if effect[:variable] != nil
total+=effect[:drop]*$game_variables[effect[:variable]].to_f/100
else
total+=effect[:drop]
end
end
# Effect type 4
if effect[:active] and effect[:type] == 4 and effect[:drop] != nil
if effect[:variable] != nil
total+=effect[:drop]*$game_variables[effect[:variable]]/100
else
total+=effect[:drop]
end
end
end
n = n * total / 100
return n.to_i
end
end
#==============================================================================
# ** Difficulties
#------------------------------------------------------------------------------
# © Dargor, 2008
# Ported to Xp and Modified by gerkrt to use difficulty effects script
# 24/06/08
# Version 1.1
# Pedido do van hellblaze
# Tradução para português: Rafidelis
# www.ReinoRpg.com
#------------------------------------------------------------------------------
# HISTORICO DAS VERSÕES
# - 1.0 (24/06/08), Versão inicial
# - 1.1 (24/06/08),Adicionada EXP e Gold modificações
#------------------------------------------------------------------------------
# INSTRUÇÕES:
# - Cole Acima do Main
# - Edit as constates no modulo de Dificuldade
#==============================================================================
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# Esta classe manipula dados relacionados com o sistema.Também gerencia veículos e BGM, etc
# A instância desta classe é referenciado por $ game_system.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Variaveis de Instacia Publica
#--------------------------------------------------------------------------
attr_accessor :difficulty_id
#--------------------------------------------------------------------------
# * Alias Listing
#--------------------------------------------------------------------------
alias dargor_vx_difficulty_system_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
dargor_vx_difficulty_system_initialize
@difficulty_id = Difficulty::Default
end
#--------------------------------------------------------------------------
# * Get Difficulty
#--------------------------------------------------------------------------
def difficulty
return Difficulty::Modifiers[@difficulty_id]
end
end
if Wep::Diff_modify_scene_title
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# Esta classe realiza a tranformação da tela de título.
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Make title graphic
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# Make command window
s1 = Difficulty::Diff_new_game_word
s2 = Difficulty::Diff_load_game_word
s3 = Difficulty::Diff_exit_game_word
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
@help_window = Window_Help.new
@help_window.visible = false
create_difficulty_window
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
@command_window.dispose
# Dispose of title graphic
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# * Create difficulty window: size based in number of dificulties
#--------------------------------------------------------------------------
alias dargor_vx_difficulty_title_update update
def create_difficulty_window
names = []
for name in Difficulty::Names
names << name
end
@difficulty_window = Window_Command.new(172, names)
@difficulty_window.x = @command_window.x
@difficulty_window.y = @command_window.y
@difficulty_window.height = @command_window.height
@difficulty_window.visible = false
@difficulty_window.active = false
# Set initial dificult text
@help_window.set_text(Difficulty::Descriptions[0])
@help_window.visible = false
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update command window
@command_window.update
@difficulty_window.update
if @difficulty_window.active
@help_window.update
update_difficulty_window
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 0 # New game
# Play decision SE
$game_system.se_play($data_system.decision_se)
@difficulty_window.visible = true
@difficulty_window.active = true
@help_window.visible = true
@command_window.visible = false
@command_window.active = false
return
when 1 # Continue
command_continue
when 2 # Shutdown
command_shutdown
end
end
if @command_window.methods.include?('selection')
condition = '@command_window.selection == Vocab::new_game'
else
condition = '@command_window.index == 0'
end
if Input.trigger?(Input::C) && eval(condition)
if !@difficulty_window.active && Difficulty::In_Title
end
end
end
#--------------------------------------------------------------------------
# * Command: New Game
# modified to active dif switch when $game is created
#--------------------------------------------------------------------------
alias wep_dif_command_new_game command_new_game
def command_new_game(id)
wep_dif_command_new_game
$game_switches[Difficulty::Switches[id]] = true
end
#--------------------------------------------------------------------------
# * Frame Update (Difficulty)
#--------------------------------------------------------------------------
def update_difficulty_window
# Diff id = window index
id = $game_system.difficulty_id = @difficulty_window.index
# Back
if Input.trigger?(Input::B)
# Play SE
$game_system.se_play($data_system.cancel_se)
@difficulty_window.visible = false
@difficulty_window.active = false
@command_window.visible = true
@command_window.active = true
# Select diff
elsif Input.trigger?(Input::C)
@difficulty_window.dispose
@help_window.dispose
# Active difficulty effect and swithch
$game_system.difficulty_effects[Difficulty::Effects[id]][:active] = true
command_new_game(id)
else
@help_window.set_text(Difficulty::Descriptions[id])
end
end
end
end