[code] =begin
================================================================================
Item Almanac v1.2
by wltr3565
================================================================================
This is mainly for my project. No item library scripts or something for items?
Come on, why only enemies?! We need an item library for hardcore collecting
challenges, you know!
================================================================================
Features:
- Auto flag for acquired items!
- Customizeable for list showing between items, weapons, and armors!
- Integration with variables!
- Easy use of script commands!
- Auto command install! (Thanks to KGC)
- Commentary for items! (Thanks to Yanfly)
- Flag between collectible items and uncollectible items! In case for key items.
- PLUG AND PLAY! If you're lazy to setup this.
================================================================================
How it will work:
This script tracks your item collection. If you get an item, the item will be
flaged that you already had it. And your collected items will be shown in the
almanac. You can check the item collecting progession via script command that
will be instructed below.
================================================================================
How to Use:
There are several functions available in the items'(Items, Weapons, and Armors)
note tags:
- <Almanac out>
If an item has that tag included, that item will not be added in the almanac,
no matter what. Suggested if the item is a key item. More information can be
read at DEFAULT_DOCUMENTATION.
- <Almanac com_on> text <Almanac com_off>
That tag will make the comment for the item. The comment will be shown in the
almanac. The text between the tags will be the one to be shown as the comment.
You can use several message functions for the text like /n and /v. Don't forget
to add | for each new lines. The use is like this:
<almanac com_on>
comment
<almanac com_off>
- <Almanac graphic name>
The items' image. Only useful when GRAPHIC_USE below is true. The item's image
must be added in Graphics/Pictures folder.
Example:
<Almanac graphic club>
You'll have an image with a filename "club" for the item's image.
And some script commands to access the almanac for events (inside [] is
optional):
- $game_system.complete_almanac
That command will make the almanac to be fully completed. I suggest to NOT use
it for the main gameplay. That command will ruin the collecting fun because
the collection is already complete!
- $game_system.check_item_get(code, id)
This will check if the item has been recorded in the almanac. Suggested to use
in conditional branches. Code is the item code, between "I", "W", and "A". "I"
for items, "W" for weapons, and "A" for armors. The id is for the item's id to
check. Example:
$game_system.check_item_get("A", 5)
That will check if you've already got the Armor ID 5.
- $game_system.flag_item_get(code, id[, flag])
This will alter the almanac record. between "I", "W", and "A". "I"
for items, "W" for weapons, and "A" for armors. The id is for the item's id,
like this:
$game_system.flag_item_get("I", 2, false)
That will alter the record of getting Item ID 2 to false (Like you haven't got
it).
If you write it like this:
$game_system.flag_item_get("W", 2)
That will alter the record of getting Weapon ID 2 to true (Like you already got
it, even if you haven't).
- $game_system.check_item_completition[(code)]
This will check if you've already completed the almanac. Returns to true if
the almanac is already completed. Vice versa if the almanac has not yet been
completed. Code represents the item code, "I", "W", and "A". You can mix them
like "IW" (checks both items and weapons) or "WA" (checks both weapons and
armors). Writing simply $game_system.check_item_completition will check all
items (Items, weapons, and armors).
- $game_system.check_item_completition_rate[(code, variable)]
This will get the completition rate of the almanac of the said code. Variable
represents the variable to store the rate, like this:
$game_system.check_item_completition_rate("IA", 10)
That will calculate the completition rate of items and armors, and the rate
will be recorded in variable ID 10. Simply write
$game_system.check_item_completition_rate will check all items (Items, weapons,
and armors) without storing the rate to a variable. For conditional branches.
I don't really suggest to store the rate to a variable since the rate will be
in a decimal value and might give errors while using that. Use this function
at your own risk!
- $game_system.check_item_total[(code, variable)]
This will check the total of available items to be recorded of the said code,
like this:
$game_system.check_item_total("A", 5)
That will count the total of collectible armors and store the count in variable
ID 5.
- $game_system.check_item_get_total[(code, variable)]
Like above, but for counting the collected items.
- $scene = Scene_Almanac.new[(code)]
This will open the almanac scene.
You can do more configurations below.
================================================================================
Install:
Insert this above main.
================================================================================
Terms of Use:
Credit me, wltr3565. For commercial uses, contact me so your game can be
included in my free-to-play lists
. Crediting who I thanked will be a good
idea.
================================================================================
Thanks:
Capcom: Megaman Battle Network's chip collecting frenzy!
Yanfly: Method for commenting.
KGC: Method for adding command in the menu.
================================================================================
=end
#===============================================================================
# COMMENCING COMPATIBILITY FLAG
#===============================================================================
$imported = {} if $imported == nil
$imported["wltr3565's_Item_Almanac"] = true
#===============================================================================
# END COMPATIBILITY FLAG
#===============================================================================
module WLTR
module ALMANAC_SETUP
#===============================================================================
# The letter used if the corresponding item is not yet known. Defaultly "?".
# If the unknown item is named Calibur, the result will be ???????.
#===============================================================================
UNKNOWN_WORD = "?"
#===============================================================================
# The icon id used if the item is not yet known.
#===============================================================================
UNKNOWN_ICON = 50
#===============================================================================
# Help description for unknown items. Write it in a string.
#===============================================================================
UNKNOWN_HELP = "???"
#===============================================================================
# This will toggle the <Almanac out>'s function.
# true : Items with <Almanac out> tag will not be added in the almanac.
# false : Items without <Almanac out> tag will not be added in the almanac.
#===============================================================================
DEFAULT_DOCUMENTATION = true
#===============================================================================
# Comment for unknown items. Write it in the string.
#===============================================================================
UNKNOWN_COMMENT = ""
#===============================================================================
# Image filename for unknown items. Write it in a string. Useable only if
# GRAPHIC_USE is true.
#===============================================================================
UNKNOWN_GRAPHIC = ""
#===============================================================================
# Space for the item graphic.
#===============================================================================
ITEM_GRAPH_HEIGHT = 208
#===============================================================================
# Text for the page 1 that will tell the item's type. Page 1 will only be
# shown if GRAPHIC_USE is true. Add %s for the type.
#===============================================================================
PAGE_1_TEXT = "Type = %s"
#===============================================================================
# The almanac type for show in menu. Type is for deciding the items available
# to be shown.
# "I" = Show items only.
# "W" = Show weapons only.
# "A" = Show armors only.
# "IW" = Show both items and weapons.
# "IA" = Show both items and armors.
# "WA" = Show both weapons and armors.
# "IWA" = Show all of them.
#===============================================================================
ALMANAC_SHOW_MENU = "IWA"
#===============================================================================
# Checks if you want to use graphics for items.
# true = use
# false = don't use
#===============================================================================
GRAPHIC_USE = false
#===============================================================================
# The sfx while flipping between item pages. The format is:
# PAGE_FLIP_SE = [filename, volume, pitch]
#===============================================================================
PAGE_FLIP_SE = ["Book", 80, 100]
#===============================================================================
# The background image while opening the almanac. The image must be put in
# Graphics/System folder. Just write "" if you don't want to use one.
#===============================================================================
BACKGROUND = ""
#===============================================================================
# Checks if you want to let the option for opening the almanac via menu.
# true = make it available to access via menu.
# false = make it not available to access via menu.
#===============================================================================
ADD_TO_MENU = true
#===============================================================================
# The command's name for opening the almanac. Write it in a string.
#===============================================================================
ALMANAC_NAME = "Item Almanac"
#===============================================================================
# These will set the icons for coressponding attributes.
#===============================================================================
ITEM_ICON = 144 # Item
WEAPON_ICON = 2 # Weapon
ARMOR_ICON = 41 # Armor
ELEMENT_ICONS = {
# id => icon_id
9 => 104, # Fire
10 => 105, # Ice
11 => 106, # Thunder
12 => 107, # Water
13 => 108, # Earth
14 => 109, # Wind
15 => 110, # Holy
16 => 111, # Darkness
}
#===============================================================================
# Set's the elements available to be shown
#===============================================================================
ELEMENTS_SHOWN = [9, 10, 11, 12, 13, 14, 15, 16]
#===============================================================================
# Setting the icons again.
#===============================================================================
PRICE_ICON = 85
HRECOVERY_PER_ICON = 64
HRECOVERY_ICON = 64
MRECOVERY_PER_ICON = 65
MRECOVERY_ICON = 65
HP_ICON = 96
MP_ICON = 97
ATK_ICON = 1
DEF_ICON = 52
SPI_ICON = 18
MDF_ICON = 57
AGI_ICON = 48
#===============================================================================
# This will set the words for corresponding attributes. Always add the % things
# if there's one. Like "HP Heal = %d". Keep the %d in the new one.
#===============================================================================
HP_REC_TEXT = "HP Heal = %d"
HP_PER_TEXT = "HP Heal = %d%"
HP_TEXT = "MaxHP = %d"
MP_REC_TEXT = "MP Heal = %d"
MP_PER_TEXT = "MP Heal = %d%"
MP_TEXT = "MaxMP = %d"
ATK_TEXT = "Attack = %d"
DEF_TEXT = "Defense = %d"
SPI_TEXT = "Intellegence = %d"
MDF_TEXT = "Resistance = %d"
AGI_TEXT = "Speed = %d"
STATUS_ADD_TEXT = "Status Effects"
STATUS_REMOVE_TEXT ="Status Remove"
STATUS_GUARD_TEXT = "Status Resistance"
ELEMENT_ADD = "Attack Elements"
ELEMENT_GUARD = "Element Resistance"
PRICE_TEXT = "Cost = %d %s"
PARAMETER_TEXT = "Parameter Boost"
NO_STATUS_TEXT = "None"
PERCENTAGE_SHOW = "Collection Rate = %10.2f%"
end
"=============================================================================="
" BELOW IS TOO DANGEROUS TO READ WITHOUT PROPER SCRIPTING SKILLS. THEREFOR, "
" EDIT AT YOUR OWN RISK! "
"=============================================================================="
module ALMANAC_REGEXP
DONT_INCLUDE = /<Almanac out>/i
COMMENT_ON = /<Almanac com_on>/i
COMMENT_OFF = /<Almanac com_off>/i
GRAPHIC = /<Almanac graphic[ ]*(\w+)>/i
end
end
module RPG
class BaseItem
attr_accessor :include_flag
attr_accessor :comment
attr_accessor :graphic
def scan_almanac_property
@include_flag = WLTR::ALMANAC_SETUP::DEFAULT_DOCUMENTATION
@comment = ""; @graphic = "";
start_comment_scan
self.note.split(/[\r\n]+/).each { |line|
case line
when WLTR::ALMANAC_REGEXP::DONT_INCLUDE
@include_flag = (!WLTR::ALMANAC_SETUP::DEFAULT_DOCUMENTATION)
when WLTR::ALMANAC_REGEXP::GRAPHIC
@graphic = $1.to_s
end
}
end
def start_comment_scan
read = false
self.note.split(/[\r\n]+/).each { |line|
case line
when WLTR::ALMANAC_REGEXP::COMMENT_ON
read = true
when WLTR::ALMANAC_REGEXP::COMMENT_OFF
read = false
else
if read
@comment += line
end
end
}
@comment = WLTR::ALMANAC_SETUP::UNKNOWN_COMMENT if @comment == ""
end
end
end
class Game_System
attr_accessor :almanac
alias almanac_make initialize
def initialize
almanac_make
@almanac = {
"I" => make_item_blank_record,
"W" => make_weapon_blank_record,
"A" => make_armor_blank_record,
}
end
def make_item_blank_record
result = {}
(1...$data_items.size).each { |i|
item = $data_items[i]
item.scan_almanac_property
result[item.id] = false if item.include_flag
}
return result
end
def make_weapon_blank_record
result = {}
(1...$data_weapons.size).each { |i|
item = $data_weapons[i]
item.scan_almanac_property
result[item.id] = false if item.include_flag
}
return result
end
def make_armor_blank_record
result = {}
(1...$data_armors.size).each { |i|
item = $data_armors[i]
item.scan_almanac_property
result[item.id] = false if item.include_flag
}
return result
end
def complete_almanac
(1...$data_items.size).each { |i|
item = $data_items[i]
next if !item.include_flag
@almanac["I"][item.id] = true
}
(1...$data_weapons.size).each { |i|
item = $data_weapons[i]
next if !item.include_flag
@almanac["W"][item.id] = true
}
(1...$data_armors.size).each { |i|
item = $data_armors[i]
next if !item.include_flag
@almanac["A"][item.id] = true
}
end
def check_item_get(code, id)
return @almanac[code][id]
end
def flag_item_get(code, id, flag = true)
@almanac[code][id] = flag
end
def check_item_completition(code = "IWA")
if code.include?("I")
(1...$data_items.size).each { |i|
item = $data_items[i]
next if !item.include_flag
return false unless @almanac["I"][item.id] == true
}
end
if code.include?("W")
(1...$data_weapons.size).each { |i|
item = $data_weapons[i]
next if !item.include_flag
return false unless @almanac["W"][item.id] == true
}
end
if code.include?("A")
(1...$data_armors.size).each { |i|
item = $data_armors[i]
next if !item.include_flag
return false unless @almanac["A"][item.id] == true
}
end
return true
end
def check_item_completition_rate(code = "IWA", variable = nil)
total = 0
total += @almanac["I"].size if code.include?("I")
total += @almanac["W"].size if code.include?("W")
total += @almanac["A"].size if code.include?("A")
get = 0
if code.include?("I")
(1...$data_items.size).each { |i|
item = $data_items[i]
next if !item.include_flag
get += 1 if @almanac["I"][item.id] == true
}
end
if code.include?("W")
(1...$data_weapons.size).each { |i|
item = $data_weapons[i]
next if !item.include_flag
get += 1 if @almanac["W"][item.id] == true
}
end
if code.include?("A")
(1...$data_armors.size).each { |i|
item = $data_armors[i]
next if !item.include_flag
get += 1 if @almanac["A"][item.id] == true
}
end
result = 100.0 * get / total
$game_variables[variable] = result if variable != nil
return result
end
def check_item_total(code = "IWA", variable = nil)
total = 0
total += @almanac["I"].size if code.include?("I")
total += @almanac["W"].size if code.include?("W")
total += @almanac["A"].size if code.include?("A")
$game_variables[variable] = total if variable != nil
return total
end
def check_item_get_total(code = "IWA", variable = nil)
get = 0
if code.include?("I")
(1...$data_items.size).each { |i|
item = $data_items[i]
next if !item.include_flag
get += 1 if @almanac["I"][item.id] == true
}
end
if code.include?("W")
(1...$data_weapons.size).each { |i|
item = $data_weapons[i]
next if !item.include_flag
get += 1 if @almanac["W"][item.id] == true
}
end
if code.include?("A")
(1...$data_armors.size).each { |i|
item = $data_armors[i]
next if !item.include_flag
get += 1 if @almanac["A"][item.id] == true
}
end
$game_variables[variable] = get if variable != nil
return get
end
end
class Game_Party < Game_Unit
alias item_record gain_item
def gain_item(item, n, include_equip = false)
item_record(item, n, include_equip)
case item
when RPG::Item
$game_system.almanac["I"][item.id] = true
when RPG::Weapon
$game_system.almanac["W"][item.id] = true
when RPG::Armor
$game_system.almanac["A"][item.id] = true
end
end
end
class Window_Item_Almanac_List < Window_Selectable
def initialize(x, y, width, height, type = "I")
super(x, y, width, height)
@type = type
if type.size == 2
if type == "IW"
@item_max = $game_system.almanac["I"].size + $game_system.almanac["W"].size
elsif type == "IA"
@item_max = $game_system.almanac["I"].size + $game_system.almanac["A"].size
elsif type == "WA"
@item_max = $game_system.almanac["W"].size + $game_system.almanac["A"].size
end
elsif type == "IWA"
@item_max = ($game_system.almanac["I"].size + $game_system.almanac["W"].size + $game_system.almanac["A"].size)
else
@item_max = $game_system.almanac[@type].size
end
create_contents
self.opacity = 0 if WLTR::ALMANAC_SETUP::BACKGROUND != ""
@real_index = 0
@real_item_id = []
@index = 0
draw_list
end
def item
case @type
when "I"; return $data_items[@real_item_id[@index]]
when "W"; return $data_weapons[@real_item_id[@index]]
when "A"; return $data_armors[@real_item_id[@index]]
end
if @type.size == 2
if @type == "IW"
if @index > $game_system.almanac["I"].size - 1
return $data_weapons[@real_item_id[@index]]
else
return $data_items[@real_item_id[@index]]
end
elsif @type == "IA"
if @index > $game_system.almanac["I"].size - 1
return $data_armors[@real_item_id[@index]]
else
return $data_items[@real_item_id[@index]]
end
elsif @type == "WA"
if @index > $game_system.almanac["W"].size - 1
return $data_armors[@real_item_id[@index]]
else
return $data_weapons[@real_item_id[@index]]
end
end
end
if @type == "IWA"
if @index > $game_system.almanac["I"].size + $game_system.almanac["W"].size - 1
return $data_armors[@real_item_id[@index]]
elsif @index > $game_system.almanac["I"].size - 1
return $data_weapons[@real_item_id[@index]]
else
return $data_items[@real_item_id[@index]]
end
end
end
def draw_list
case @type
when "I"; size = $data_items.size
when "W"; size = $data_weapons.size
when "A"; size = $data_armors.size
end
if @type.size == 2
if @type == "IW"
size = $data_items.size + $data_weapons.size
elsif @type == "IA"
size = $data_items.size + $data_armors.size
elsif @type == "WA"
size = $data_weapons.size + $data_armors.size
end
size -= 1
end
if @type == "IWA"
size = $data_items.size + $data_weapons.size + $data_armors.size
size -= 2
end
for index in 1...size
case @type
when "I"; item = $data_items[index]
when "W"; item = $data_weapons[index]
when "A"; item = $data_armors[index]
end
if @type.size == 2
if @type == "IW"
if index > $data_items.size - 1
item = $data_weapons[index - $data_items.size + 1]
else
item = $data_items[index]
end
elsif @type == "IA"
if index > $data_items.size - 1
item = $data_armors[index - $data_items.size + 1]
else
item = $data_items[index]
end
elsif @type == "WA"
if index > $data_weapons.size - 1
item = $data_armors[index - $data_weapons.size + 1]
else
item = $data_weapons[index]
end
end
end
if @type == "IWA"
if index > $data_items.size + $data_weapons.size - 2
item = $data_armors[index - $data_weapons.size - $data_items.size + 2]
elsif index > $data_items.size - 1
item = $data_weapons[index - $data_items.size + 1]
else
item = $data_items[index]
end
end
draw_item(index) if item.include_flag
end
end
def draw_item(index)
@real_index += 1
case @type
when "I"; item = $data_items[index]
when "W"; item = $data_weapons[index]
when "A"; item = $data_armors[index]
end
if @type.size == 2
if @type == "IW"
if index > $data_items.size - 1
item = $data_weapons[index - $data_items.size + 1]
else
item = $data_items[index]
end
elsif @type == "IA"
if index > $data_items.size - 1
item = $data_armors[index - $data_items.size + 1]
else
item = $data_items[index]
end
elsif @type == "WA"
if index > $data_weapons.size - 1
item = $data_armors[index - $data_weapons.size + 1]
else
item = $data_weapons[index]
end
end
end
if @type == "IWA"
if index > $data_items.size + $data_weapons.size - 2
item = $data_armors[index - $data_weapons.size - $data_items.size + 2]
elsif index > $data_items.size - 1
item = $data_weapons[index - $data_items.size + 1]
else
item = $data_items[index]
end
end
rect = item_rect(@real_index - 1)
self.contents.clear_rect(rect)
if item != nil
case item
when RPG::Item
code = "I"
when RPG::Weapon
code = "W"
when RPG::Armor
code = "A"
end
known = $game_system.almanac[code][item.id]
@real_item_id << item.id
name = item.name
icon = item.icon_index
if !known
count = name.size + 1
icon = WLTR::ALMANAC_SETUP::UNKNOWN_ICON
name = ""
for i in 1...count
name += WLTR::ALMANAC_SETUP::UNKNOWN_WORD
end
end
rect.width -= 4
self.contents.draw_text(0, rect.y, 24, rect.height, sprintf("%2d", @real_index), 2)
draw_icon(icon, 24, rect.y, true)
self.contents.draw_text(rect.x + 48, rect.y, 172, WLH, name)
end
end
def update_help
des = item.description
case item
when RPG::Item
code = "I"
when RPG::Weapon
code = "W"
when RPG::Armor
code = "A"
end
des = WLTR::ALMANAC_SETUP::UNKNOWN_HELP if !$game_system.check_item_get(code, item.id)
@help_window.set_text(item == nil ? "" : des)
end
end
class Window_Almanac_Item_Status < Window_Base
attr_accessor :item
attr_accessor :page
def initialize(x, y, width, height, item, page = 1)
super(x, y, width, height)
@item = item
@page = page
refresh(@page)
self.opacity = 0 if WLTR::ALMANAC_SETUP::BACKGROUND != ""
end
def refresh(page)
@page = page
self.contents.clear
case item
when RPG::Item
code = "I"
when RPG::Weapon
code = "W"
when RPG::Armor
code = "A"
end
known = $game_system.almanac[code][item.id]
if !known
draw_icon(WLTR::ALMANAC_SETUP::UNKNOWN_ICON, 0, 0, true)
count = item.name.size + 1
name = ""
for i in 1...count
name += WLTR::ALMANAC_SETUP::UNKNOWN_WORD
end
self.contents.draw_text(24, 0, 172, WLH, name)
# Took from Yanfly's
dy = WLH * 2
x = 8
y = WLH * 2
text = WLTR::ALMANAC_SETUP::UNKNOWN_COMMENT
return if text == nil
txsize = 24
nwidth = 500
dx = 28; dy = WLH * 2
text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
lines = text.split(/(?:[|]|\\n)/i)
lines.each_with_index { |l, i|
l.gsub!(/\\__(\[\d+\])/i) { "\\N#{$1}" }
self.contents.draw_text(0, i * txsize + dy, nwidth, WLH, l, 0)}
else
draw_item_name(item, 0, 0)
case item
when RPG::Item
icon = WLTR::ALMANAC_SETUP::ITEM_ICON
when RPG::Weapon
icon = WLTR::ALMANAC_SETUP::WEAPON_ICON
when RPG::Armor
icon = WLTR::ALMANAC_SETUP::ARMOR_ICON
end
draw_icon(icon, self.width - 60, 0, true)
page += 1 if !WLTR::ALMANAC_SETUP::GRAPHIC_USE
case page
when 1
graph = Cache.picture(item.graphic)
w = graph.width
self.contents.blt((self.width / 2) - (w / 2) , WLH, graph, graph.rect)
case item
when RPG::Item
type = Vocab::item
when RPG::Weapon
type = Vocab::weapon
when RPG::Armor
type = Vocab::armor3
end
y = WLTR::ALMANAC_SETUP::ITEM_GRAPH_HEIGHT
y = WLH if item.graphic == ""
self.contents.draw_text(0, y, self.width, 24, sprintf(WLTR::ALMANAC_SETUP::PAGE_1_TEXT, type))
when 2
case item
when RPG::Item
draw_icon(WLTR::ALMANAC_SETUP::HRECOVERY_ICON, 0, WLH*2, true)
self.contents.draw_text(24, WLH * 2, 272, 24, sprintf(WLTR::ALMANAC_SETUP::HP_REC_TEXT, item.hp_recovery))
draw_icon(WLTR::ALMANAC_SETUP::HRECOVERY_PER_ICON, 0, WLH*3, true)
self.contents.draw_text(24, WLH * 3, 272, 24, sprintf(WLTR::ALMANAC_SETUP::HP_PER_TEXT, item.hp_recovery_rate))
draw_icon(WLTR::ALMANAC_SETUP::MRECOVERY_ICON, 0, WLH*4, true)
self.contents.draw_text(24, WLH * 4, 272, 24, sprintf(WLTR::ALMANAC_SETUP::MP_REC_TEXT, item.mp_recovery))
draw_icon(WLTR::ALMANAC_SETUP::MRECOVERY_PER_ICON, 0, WLH*5, true)
self.contents.draw_text(24, WLH * 5, 272, 24, sprintf(WLTR::ALMANAC_SETUP::MP_PER_TEXT, item.mp_recovery_rate))
self.contents.draw_text(24, WLH * 6, 272, 24, WLTR::ALMANAC_SETUP::STATUS_ADD_TEXT)
x = 0
for state in item.plus_state_set
status = $data_states[state]
draw_icon(status.icon_index, x, WLH * 7, true)
x += 24
end
self.contents.draw_text(24, WLH * 8, 272, 24, WLTR::ALMANAC_SETUP::STATUS_REMOVE_TEXT)
x = 0
for state in item.minus_state_set
status = $data_states[state]
draw_icon(status.icon_index, x, WLH * 9, true)
x += 24
end
draw_icon(WLTR::ALMANAC_SETUP::PRICE_ICON, 0, WLH*10, true)
self.contents.draw_text(24, WLH * 10, 272, 24, sprintf(WLTR::ALMANAC_SETUP::PRICE_TEXT, item.price, Vocab::gold))
self.contents.draw_text(0, WLH * 11, 272, 24, WLTR::ALMANAC_SETUP::PARAMETER_TEXT, 1)
case item.parameter_type
when 0
self.contents.draw_text(0, WLH * 12, 272, 24, WLTR::ALMANAC_SETUP::NO_STATUS_TEXT, 1)
when 1
draw_icon(WLTR::ALMANAC_SETUP::HP_ICON, 0, WLH * 12, true)
self.contents.draw_text(24, WLH * 12, 272, 24, sprintf(WLTR::ALMANAC_SETUP::HP_TEXT, item.parameter_points))
when 2
draw_icon(WLTR::ALMANAC_SETUP::MP_ICON, 0, WLH * 12, true)
self.contents.draw_text(24, WLH * 12, 272, 24, sprintf(WLTR::ALMANAC_SETUP::MP_TEXT, item.parameter_points))
when 3
draw_icon(WLTR::ALMANAC_SETUP::ATK_ICON, 0, WLH * 12, true)
self.contents.draw_text(24, WLH * 12, 272, 24, sprintf(WLTR::ALMANAC_SETUP::ATK_TEXT, item.parameter_points))
when 4
draw_icon(WLTR::ALMANAC_SETUP::DEF_ICON, 0, WLH * 12, true)
self.contents.draw_text(24, WLH * 12, 272, 24, sprintf(WLTR::ALMANAC_SETUP::DEF_TEXT, item.parameter_points))
when 5
draw_icon(WLTR::ALMANAC_SETUP::SPI_ICON, 0, WLH * 12, true)
self.contents.draw_text(24, WLH * 12, 272, 24, sprintf(WLTR::ALMANAC_SETUP::SPI_TEXT, item.parameter_points))
when 6
draw_icon(WLTR::ALMANAC_SETUP::AGI_ICON, 0, WLH * 12, true)
self.contents.draw_text(24, WLH * 12, 272, 24, sprintf(WLTR::ALMANAC_SETUP::AGI_TEXT, item.parameter_points))
end
when RPG::Weapon
draw_icon(WLTR::ALMANAC_SETUP::ATK_ICON, 0, WLH * 2, true)
self.contents.draw_text(24, WLH * 2, 200, 24, sprintf(WLTR::ALMANAC_SETUP::ATK_TEXT, item.atk), 2)
draw_icon(WLTR::ALMANAC_SETUP::DEF_ICON, 0, WLH * 3, true)
self.contents.draw_text(24, WLH * 3, 200, 24, sprintf(WLTR::ALMANAC_SETUP::DEF_TEXT, item.def), 2)
draw_icon(WLTR::ALMANAC_SETUP::SPI_ICON, 0, WLH * 4, true)
self.contents.draw_text(24, WLH * 4, 200, 24, sprintf(WLTR::ALMANAC_SETUP::SPI_TEXT, item.spi), 2)
if defined?(CSU) != nil
draw_icon(WLTR::ALMANAC_SETUP::AGI_ICON, 0, WLH * 6, true) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
self.contents.draw_text(24, WLH * 6, 200, 24, sprintf(WLTR::ALMANAC_SETUP::AGI_TEXT, item.agi), 2) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
else
draw_icon(WLTR::ALMANAC_SETUP::AGI_ICON, 0, WLH * 5, true)
self.contents.draw_text(24, WLH * 5, 200, 24, sprintf(WLTR::ALMANAC_SETUP::AGI_TEXT, item.agi), 2)
end
if defined?(CSU)
draw_icon(WLTR::ALMANAC_SETUP::MDF_ICON, 0, WLH * 5, true) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
self.contents.draw_text(24, WLH * 5, 200, 24, sprintf(WLTR::ALMANAC_SETUP::MDF_TEXT, item.mdf), 2) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
end
self.contents.draw_text(24, WLH * 7, 200, 24, WLTR::ALMANAC_SETUP::ELEMENT_ADD)
x = 0
for el in item.element_set
next unless WLTR::ALMANAC_SETUP::ELEMENTS_SHOWN.include?(el)
draw_icon(WLTR::ALMANAC_SETUP::ELEMENT_ICONS[el], x, WLH * 8, true)
x += 24
end
self.contents.draw_text(24, WLH * 9, 200, 24, WLTR::ALMANAC_SETUP::STATUS_ADD_TEXT)
x = 0
for state in item.state_set
status = $data_states[state]
draw_icon(status.icon_index, x, WLH * 10, true)
x += 24
end
draw_icon(WLTR::ALMANAC_SETUP::PRICE_ICON, 0, WLH*11, true)
self.contents.draw_text(24, WLH * 11, 272, 24, sprintf(WLTR::ALMANAC_SETUP::PRICE_TEXT, item.price, Vocab::gold))
when RPG::Armor
draw_icon(WLTR::ALMANAC_SETUP::ATK_ICON, 0, WLH * 2, true)
self.contents.draw_text(24, WLH * 2, 200, 24, sprintf(WLTR::ALMANAC_SETUP::ATK_TEXT, item.atk), 2)
draw_icon(WLTR::ALMANAC_SETUP::DEF_ICON, 0, WLH * 3, true)
self.contents.draw_text(24, WLH * 3, 200, 24, sprintf(WLTR::ALMANAC_SETUP::DEF_TEXT, item.def), 2)
draw_icon(WLTR::ALMANAC_SETUP::SPI_ICON, 0, WLH * 4, true)
self.contents.draw_text(24, WLH * 4, 200, 24, sprintf(WLTR::ALMANAC_SETUP::SPI_TEXT, item.spi), 2)
if defined?(CSU) != nil
draw_icon(WLTR::ALMANAC_SETUP::AGI_ICON, 0, WLH * 6, true) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
self.contents.draw_text(24, WLH * 6, 200, 24, sprintf(WLTR::ALMANAC_SETUP::AGI_TEXT, item.agi), 2) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
else
draw_icon(WLTR::ALMANAC_SETUP::AGI_ICON, 0, WLH * 5, true)
self.contents.draw_text(24, WLH * 5, 200, 24, sprintf(WLTR::ALMANAC_SETUP::AGI_TEXT, item.agi), 2)
end
if defined?(CSU)
draw_icon(WLTR::ALMANAC_SETUP::MDF_ICON, 0, WLH * 5, true) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
self.contents.draw_text(24, WLH * 5, 200, 24, sprintf(WLTR::ALMANAC_SETUP::MDF_TEXT, item.mdf), 2) if CSU::SCRIPTLIST.include?("Ultimate Battler Stat")
end
self.contents.draw_text(24, WLH * 7, 200, 24, WLTR::ALMANAC_SETUP::ELEMENT_GUARD)
x = 0
for el in item.element_set
next unless WLTR::ALMANAC_SETUP::ELEMENTS_SHOWN.include?(el)
draw_icon(WLTR::ALMANAC_SETUP::ELEMENT_ICONS[el], x, WLH * 8, true)
x += 24
end
self.contents.draw_text(24, WLH * 9, 200, 24, WLTR::ALMANAC_SETUP::STATUS_GUARD_TEXT)
x = 0
for state in item.state_set
status = $data_states[state]
draw_icon(status.icon_index, x, WLH * 10, true)
x += 24
end
draw_icon(WLTR::ALMANAC_SETUP::PRICE_ICON, 0, WLH*11, true)
self.contents.draw_text(24, WLH * 11, 272, 24, sprintf(WLTR::ALMANAC_SETUP::PRICE_TEXT, item.price, Vocab::gold))
end
when 3
# Took from Yanfly's
dy = WLH * 2
x = 8
y = WLH * 2
text = @item.comment
return if text == nil
txsize = 24
nwidth = 500
dx = 28; dy = WLH * 2
text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
lines = text.split(/(?:[|]|\\n)/i)
lines.each_with_index { |l, i|
l.gsub!(/\\__(\[\d+\])/i) { "\\N#{$1}" }
self.contents.draw_text(0, i * txsize + dy, nwidth, WLH, l, 0)}
else
custom_page(page)
end
end
end
def custom_page(page)
#===============================================================================
# Add your own custom script here if you want to add extra part of item pages.
#===============================================================================
end
end
class Scene_Almanac < Scene_Base
def initialize(type = "IWA")
@type = type
end
def start
super
create_menu_background
if WLTR::ALMANAC_SETUP::BACKGROUND != ""
@background = Sprite.new
@background.bitmap = Cache.system(WLTR::ALMANAC_SETUP::BACKGROUND)
end
@viewport = Viewport.new(0, 0, 544, 416)
@help_window = Window_Help.new
@help_window.viewport = @viewport
@help_window.opacity = 0 if WLTR::ALMANAC_SETUP::BACKGROUND != ""
@collection_list = Window_Item_Almanac_List.new(0, 56, 272, 360 - 48, @type)
@collection_list.viewport = @viewport
@collection_status = Window_Almanac_Item_Status.new(272, 56, 272, 360, @collection_list.item)
@collection_status.viewport = @viewport
@collection_list.help_window = @help_window
@percentage_window = Window_Base.new(0, 416 - 48, 272, 48)
@percentage_window.contents.draw_text(0, 0, 272, 20, sprintf(WLTR::ALMANAC_SETUP::PERCENTAGE_SHOW, $game_system.check_item_completition_rate(@type)))
@collection_list.active = true
@page = 1
end
def terminate
super
dispose_menu_background
@background.dispose if @background != nil
@help_window.dispose
@collection_list.dispose
@collection_status.dispose
@percentage_window.dispose
end
def return_scene
$scene = Scene_Menu.new
end
def update
super
update_menu_background
@help_window.update
@collection_list.update
@collection_status.update
@percentage_window.update
update_collection
end
def update_collection
if @collection_status.item != @collection_list.item
@collection_status.item = @collection_list.item
@collection_status.refresh(@page)
end
@collection_status.refresh(@page) if @page != @collection_status.page
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::RIGHT)
return if @page == 2 and !WLTR::ALMANAC_SETUP::GRAPHIC_USE
return if @page == 3
Audio.se_play("Audio/SE/" + WLTR::ALMANAC_SETUP::PAGE_FLIP_SE[0], WLTR::ALMANAC_SETUP::PAGE_FLIP_SE[1], WLTR::ALMANAC_SETUP::PAGE_FLIP_SE[2])
@page += 1
elsif Input.trigger?(Input::LEFT)
return if @page == 1
Audio.se_play("Audio/SE/" + WLTR::ALMANAC_SETUP::PAGE_FLIP_SE[0], WLTR::ALMANAC_SETUP::PAGE_FLIP_SE[1], WLTR::ALMANAC_SETUP::PAGE_FLIP_SE[2])
@page -= 1
end
end
end
#==============================================================================
# ■ Window_Command
#==============================================================================
# Stole this from KGC...
class Window_Command < Window_Selectable
unless method_defined?(:add_command)
#--------------------------------------------------------------------------
# ○ コマンドを追加
# 追加した位置を返す
#--------------------------------------------------------------------------
def add_command(command)
@commands << command
@item_max = @commands.size
item_index = @item_max - 1
refresh_command
draw_item(item_index)
return item_index
end
#--------------------------------------------------------------------------
# ○ コマンドをリフレッシュ
#--------------------------------------------------------------------------
def refresh_command
buf = self.contents.clone
self.height = [self.height, row_max * WLH + 32].max
create_contents
self.contents.blt(0, 0, buf, buf.rect)
buf.dispose
end
#--------------------------------------------------------------------------
# ○ コマンドを挿入
#--------------------------------------------------------------------------
def insert_command(index, command)
@commands.insert(index, command)
@item_max = @commands.size
refresh_command
refresh
end
#--------------------------------------------------------------------------
# ○ コマンドを削除
#--------------------------------------------------------------------------
def remove_command(command)
@commands.delete(command)
@item_max = @commands.size
refresh
end
end
end
class Scene_Menu < Scene_Base
# Stole this from KGC's enemy guide.
if WLTR::ALMANAC_SETUP::ADD_TO_MENU
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_command_window_item_almanac create_command_window
def create_command_window
create_command_window_item_almanac
return if $imported["CustomMenuCommand"]
@__command_item_almanac =
@command_window.add_command(WLTR::ALMANAC_SETUP::ALMANAC_NAME)
if @command_window.oy > 0
@command_window.oy -= Window_Base::WLH
end
@command_window.index = @menu_index
end
end
#--------------------------------------------------------------------------
# ● コマンド選択の更新
#--------------------------------------------------------------------------
alias update_command_selection_item_almanac update_command_selection
def update_command_selection
current_menu_index = @__command_item_almanac
call_item_almanac = false
if Input.trigger?(Input::C)
case @command_window.index
when @__command_item_almanac # モンスター図鑑
call_enemy_guide_flag = true
end
end
# モンスター図鑑に移行
if call_enemy_guide_flag
Sound.play_decision
$scene = Scene_Almanac.new(WLTR::ALMANAC_SETUP::ALMANAC_SHOW_MENU)
return
end
update_command_selection_item_almanac
end
end
#===============================================================================
#
# END OF SCRIPT
#
#=============================================================================== [/code]