lunariafantasia/Scripts/_.63.rb
2024-01-12 03:12:38 -06:00

846 lines
No EOL
35 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module FAKEREAL
SEX_POINT = 4 #淫性値の変数
end
module FRGP
ICON_DEBUFF_START = 80 # 弱体16 個)
#--------------------------------------------------------------------------
# ○ 適正や耐性の描画ベース
#--------------------------------------------------------------------------
def draw_percent(x, y, str, rate, icon = false, plus = 0)
change_color(system_color)
i = 0
draw_text(x, y + line_height * i, 85, line_height, str)
change_color(normal_color)
return unless rate
h = line_height
h += 2 if icon && line_height == 22
rate.each do |name, num|
i += 1
if icon
draw_icon(name, x, y + h * i)
else
draw_text(x + 4, y + h * i, 82, h, "#{name}")
end
draw_text(x + plus, y + h * i, 82, h, "#{num}", 2)
end
end
#--------------------------------------------------------------------------
# ○ 術適正の描画
#--------------------------------------------------------------------------
def draw_magic_elements(x, y)
ary = ["","","","","","","回復"]
str = "術適正"
rate = {}
ary.each{|name| rate[name] = el_rate(name)}
draw_percent(x, y, str, rate, false, 13)
end
#--------------------------------------------------------------------------
# ○ 属性耐性の描画
#--------------------------------------------------------------------------
def draw_guard_elements(x, y)
ary = ["","","","","",""]
str = "属性耐性"
rate = {}
ary.each{|name| rate[ELEMENT_ICON[elements_comvert(name)]] = elg_rate(name)}
draw_percent(x, y, str, rate, true)
end
#--------------------------------------------------------------------------
# ○ 状態耐性の描画
#--------------------------------------------------------------------------
def draw_guard_state(x, y, ext = "閉門")
ary = ["即死","","暗闇","沈黙","混乱","睡眠","麻痺","スタン",ext]
str = "状態耐性"
rate = {}
ary.compact.each{|name| rate[$data_states[state_comvert(name)].icon_index] = stg_rate(name)}
draw_percent(x, y, str, rate, true)
end
#--------------------------------------------------------------------------
# ○ 弱体耐性の描画
#--------------------------------------------------------------------------
def draw_guard_debuff(x, y)
ary = [2, 3, 4, 5, 6, 7]
str = "弱体耐性"
rate = {}
ary.each{|id| rate[ICON_DEBUFF_START + id] = debuff_rate(id)}
draw_percent(x, y, str, rate, true)
end
#--------------------------------------------------------------------------
# ○ IDを術適正に変換
#--------------------------------------------------------------------------
def el_rate(element_name)
(@actor.atk_elements_rate(elements_comvert(element_name)) * 100).round
end
#--------------------------------------------------------------------------
# ○ IDを属性耐性に変換
#--------------------------------------------------------------------------
def elg_rate(element_name)
100 - (@actor.element_rate(elements_comvert(element_name)) * 100).round
end
#--------------------------------------------------------------------------
# ○ IDを状態耐性に変換
#--------------------------------------------------------------------------
def stg_rate(state_name)
id = state_comvert(state_name)
return 100 if @actor.state_resist?(id)
100 - (@actor.state_rate(id) * 100).round
end
#--------------------------------------------------------------------------
# ○ IDを弱体耐性に変換
#--------------------------------------------------------------------------
def debuff_rate(id)
100 - (@actor.debuff_rate(id) * 100).round
end
#--------------------------------------------------------------------------
# ○ 属性名をIDに変換
#--------------------------------------------------------------------------
def elements_comvert(element_name)
case element_name
when "" ; 0
when "" ; 3
when "" ; 4
when "" ; 5
when "" ; 7
when "" ; 9
when "" ; 10
when "回復" ; 50
when "退魔" ; 6
when "物理" ; 1
when "吸収" ; 2
when "盗み" ; 11
else ; 0
end
end
#--------------------------------------------------------------------------
# ○ 状態名をIDに変換
#--------------------------------------------------------------------------
def state_comvert(state_name)
case state_name
when "即死" ; 1
when "" ; 2
when "暗闇" ; 3
when "沈黙" ; 4
when "混乱" ; 5
when "睡眠" ; 6
when "麻痺" ; 7
when "スタン" ; 8
when "閉門" ; 31
when "魅了" ; 26
else ; 31
end
end
end
#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================
class Window_Status < Window_Selectable
include FRGP
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, Graphics.width, Graphics.height)
@actor = actor
@page_index = 0
self.opacity = 0
refresh
activate
end
#--------------------------------------------------------------------------
# ● アクターの設定
#--------------------------------------------------------------------------
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ○ 文字の大きさを設定
#--------------------------------------------------------------------------
def font_size
return 22
end
#--------------------------------------------------------------------------
# ● 行の高さを取得
#--------------------------------------------------------------------------
def line_height
return font_size
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
contents.font.size = font_size
@actor.summon_level_set($game_actors[1].level) if @actor.summon_type? && @actor.level != $game_actors[1].level
draw_page (line_height * 0)
draw_block1 (line_height * 1)
draw_block2 (line_height * 2)
draw_horz_line(line_height * 6, 0.6) if !(@page_index == 2)
draw_block3 (line_height * 7)
draw_horz_line(line_height * 17, 0.52) if @page_index == 0
draw_block4 (line_height * 18)
end
#--------------------------------------------------------------------------
# ● ページ数の描画
#--------------------------------------------------------------------------
def draw_page(y)
change_color(normal_color)
draw_text(0, y, contents_width, line_height, "page#{@page_index + 1}/#{page_max}", 2)
draw_text(-2, y + line_height, contents_width, line_height, "← →", 2)
end
#--------------------------------------------------------------------------
# ● ブロック 1 の描画
#--------------------------------------------------------------------------
def draw_block1(y)
draw_actor_nickname(@actor, 4, y * 0, 300)
draw_actor_class(@actor, 4, y * 1)
end
#--------------------------------------------------------------------------
# ● ブロック 2 の描画
#--------------------------------------------------------------------------
def draw_block2(y)
if @page_index == 0 || @page_index == 1
draw_basic_info(8, y)
draw_exp_info(164, y + line_height * 2) if !@actor.summon_type?
else
draw_equipments(8, y)
draw_skill_equipments(228, y)
draw_horz_line(y + 24 * 6, 0.52)
end
end
#--------------------------------------------------------------------------
# ● ブロック 3 の描画
#--------------------------------------------------------------------------
def draw_block3(y)
if @page_index == 0
draw_parameters(8, y + line_height * 0)
draw_extra_parameters(8, y + line_height * 6)
draw_magic_elements(188, y + line_height * 0)
elsif @page_index == 1
draw_guard_state(8, y + line_height * 0)
draw_guard_debuff(128, y + line_height * 0)
draw_guard_elements(248, y + line_height * 0)
#draw_guard_elements(128, y + line_height * 0)
#draw_equipments(248, y + line_height * 0)
else
draw_profile(@actor, 8, y + line_height * 0)
end
end
#--------------------------------------------------------------------------
# ● ブロック 4 の描画
#--------------------------------------------------------------------------
def draw_block4(y)
draw_description(4, y)
end
#--------------------------------------------------------------------------
# ● 水平線の描画
#--------------------------------------------------------------------------
def draw_horz_line(y, rate)
line_y = y + line_height / 2 - 1
contents.fill_rect(0, line_y, contents_width * rate, 2, line_color)#contents_width, 2, line_color)
end
#--------------------------------------------------------------------------
# ● 水平線の色を取得
#--------------------------------------------------------------------------
def line_color
color = normal_color #system_color
color.alpha = 180
color
end
#--------------------------------------------------------------------------
# ● 基本情報の描画
#--------------------------------------------------------------------------
def draw_basic_info(x, y)
draw_actor_level(@actor, x, y + line_height * 0)
#draw_actor_icons(@actor, x, y + line_height * 1)
draw_actor_hp(@actor, x, y + line_height * 1)
draw_actor_mp(@actor, x, y + line_height * 2)
draw_actor_tp(@actor, x, y + line_height * 3)
end
#--------------------------------------------------------------------------
# ● 能力値の描画
#--------------------------------------------------------------------------
def draw_parameters(x, y)
6.times {|i| draw_actor_param(@actor, x, y + line_height * i, i + 2) }
end
#--------------------------------------------------------------------------
# ○ 特殊能力値の描画
#--------------------------------------------------------------------------
def draw_extra_parameters(x, y)
3.times {|i| draw_actor_extra_param(@actor, x, y + line_height * i, i) }
end
#--------------------------------------------------------------------------
# ● 経験値情報の描画 ※再定義 汎用ゲージ描画
#--------------------------------------------------------------------------
def draw_exp_info(x, y)
#s1 = @actor.max_level? ? "-------" : @actor.exp
#s2 = @actor.max_level? ? "-------" : @actor.next_level_exp - @actor.exp
#s_next = sprintf(Vocab::ExpNext, Vocab::level)
#change_color(system_color)
#draw_text(x, y + line_height * 0, 110, line_height, Vocab::ExpTotal)
#draw_text(x, y + line_height * 1, 110, line_height, s_next)
#change_color(normal_color)
#draw_text(x, y + line_height * 0, 110, line_height, s1, 2)
#draw_text(x, y + line_height * 1, 110, line_height, s2, 2)
s_next = sprintf(Vocab::ExpNext, Vocab::level)
change_color(normal_color)
draw_actor_exp( @actor, x, y + line_height * 0)
draw_actor_next_exp(@actor, x, y + line_height * 1)
change_color(system_color)
draw_text(x, y + line_height * 0, 110, line_height, Vocab::ExpTotal)
draw_text(x, y + line_height * 1, 110, line_height, s_next)
change_color(normal_color)
end
#--------------------------------------------------------------------------
# ● 装備品の描画
#--------------------------------------------------------------------------
def draw_equipments(x, y)
contents.font.size = 24
h = 24
change_color(system_color)
draw_text(x, y, width, h, "装備品")
change_color(normal_color)
@actor.equips.each_with_index do |item, i|
draw_item_name(item, x, y + h * (i + 1), i)
end
contents.font.size = font_size
end
#--------------------------------------------------------------------------
# ● 装備スキルの描画
#--------------------------------------------------------------------------
def draw_skill_equipments(x, y)
contents.font.size = 24
h = 24
change_color(system_color)
draw_text(x, y, width, h, "スキル")
change_color(normal_color)
@actor.change_skill.each_with_index do |item, i|
draw_item_name(item, x, y + h * (i + 1), i)
end
contents.font.size = font_size
end
#--------------------------------------------------------------------------
# ● アイテム名の描画
# enabled : 有効フラグ。false のとき半透明で描画
#--------------------------------------------------------------------------
=begin
def draw_item_name(item, x, y, i = 0, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y, width, line_height, item.name)
end
=end
#--------------------------------------------------------------------------
# ● 説明の描画
#--------------------------------------------------------------------------
def draw_description(x, y)
if @page_index == 0
contents.font.size = 19
draw_text_ex(x, y, @actor.description)
end
contents.font.size = font_size
end
#--------------------------------------------------------------------------
# ● 能力値の描画 ※オーバーライド
#--------------------------------------------------------------------------
def draw_actor_param(actor, x, y, param_id)
change_color(system_color)
draw_text(x, y, 80, line_height, Vocab::param(param_id))
change_color(normal_color)
draw_text(x, y, 120, line_height, actor.param(param_id), 2)
end
#--------------------------------------------------------------------------
# ○ 特殊能力値の描画
#--------------------------------------------------------------------------
def ex_param(param_id, actor)
case param_id
when 0; return actor.hit * 100
when 1; return actor.eva * 100
when 2; return actor.cri * 100
else ; return 0
end
end
#--------------------------------------------------------------------------
# ○ 特殊能力値の描画
#--------------------------------------------------------------------------
def draw_actor_extra_param(actor, x, y, param_id)
change_color(system_color)
draw_text(x, y, 80, line_height, FAKEREAL::xparam(param_id))
change_color(normal_color)
draw_text(x + 40, y, 80, line_height, "#{format("%.2f",ex_param(param_id, actor))}", 2)
end
=begin
#--------------------------------------------------------------------------
# ○ 適正や耐性の描画ベース
#--------------------------------------------------------------------------
def draw_percent(x, y, str, rate, icon = false, plus = 0)
change_color(system_color)
i = 0
draw_text(x, y + line_height * i, 85, line_height, str)
change_color(normal_color)
return unless rate
h = line_height
h += 2 if icon
rate.each do |name, num|
i += 1
if icon
draw_icon(name, x, y + h * i)
else
draw_text(x + 4, y + h * i, 82, h, "#{name}")
end
draw_text(x + plus, y + h * i, 82, h, "#{num}", 2)
end
end
#--------------------------------------------------------------------------
# ○ 術適正の描画
#--------------------------------------------------------------------------
def draw_magic_elements(x, y)
ary = ["炎","氷","雷","光","闇","無","回復"]
str = "術適正"
rate = {}
ary.each{|name| rate[name] = el_rate(name)}
draw_percent(x, y, str, rate, false, 13)
end
#--------------------------------------------------------------------------
# ○ 属性耐性の描画
#--------------------------------------------------------------------------
def draw_guard_elements(x, y)
ary = ["炎","氷","雷","光","闇"]
str = "属性耐性"
rate = {}
#ary.each{|name| rate[FRGP::ELEMENT_ICON[elements_comvert(name)]] = elg_rate(name)}
ary.each{|name| rate[ELEMENT_ICON[elements_comvert(name)]] = elg_rate(name)}
draw_percent(x, y, str, rate, true)
end
#--------------------------------------------------------------------------
# ○ 状態耐性の描画
#--------------------------------------------------------------------------
def draw_guard_state(x, y)
ary = ["即死","毒","暗闇","沈黙","混乱","睡眠","麻痺","スタン","閉門"]
str = "状態耐性"
rate = {}
ary.each{|name| rate[$data_states[state_comvert(name)].icon_index] = stg_rate(name)}
draw_percent(x, y, str, rate, true)
end
#--------------------------------------------------------------------------
# ○ 弱体耐性の描画
#--------------------------------------------------------------------------
def draw_guard_debuff(x, y)
ary = [2, 3, 4, 5, 6, 7]
str = "弱体耐性"
rate = {}
#ary.each{|id| rate[Vocab.param(id)] = debuff_rate(id)}
#ary.each{|id| rate[FRGP::ICON_DEBUFF_START + id] = debuff_rate(id)}
ary.each{|id| rate[ICON_DEBUFF_START + id] = debuff_rate(id)}
draw_percent(x, y, str, rate, true)
end
#--------------------------------------------------------------------------
# ○ IDを術適正に変換
#--------------------------------------------------------------------------
def el_rate(element_name)
(@actor.atk_elements_rate(elements_comvert(element_name)) * 100).round
end
#--------------------------------------------------------------------------
# ○ IDを属性耐性に変換
#--------------------------------------------------------------------------
def elg_rate(element_name)
100 - (@actor.element_rate(elements_comvert(element_name)) * 100).round
end
#--------------------------------------------------------------------------
# ○ IDを状態耐性に変換
#--------------------------------------------------------------------------
def stg_rate(state_name)
id = state_comvert(state_name)
return 100 if @actor.state_resist?(id)
100 - (@actor.state_rate(id) * 100).round
end
#--------------------------------------------------------------------------
# ○ IDを弱体耐性に変換
#--------------------------------------------------------------------------
def debuff_rate(id)
100 - (@actor.debuff_rate(id) * 100).round
end
#--------------------------------------------------------------------------
# ○ 属性名をIDに変換
#--------------------------------------------------------------------------
def elements_comvert(element_name)
case element_name
when "無" ; 0
when "炎" ; 3
when "氷" ; 4
when "雷" ; 5
when "光" ; 9
when "闇" ; 10
when "回復" ; 50
else ; 0
end
end
#--------------------------------------------------------------------------
# ○ 状態名をIDに変換
#--------------------------------------------------------------------------
def state_comvert(state_name)
case state_name
when "即死" ; 1
when "毒" ; 2
when "暗闇" ; 3
when "沈黙" ; 4
when "混乱" ; 5
when "睡眠" ; 6
when "麻痺" ; 7
when "スタン" ; 8
else ; 31
end
end
=end
#--------------------------------------------------------------------------
# ○ プロフィールの描画
#--------------------------------------------------------------------------
def draw_profile(actor, x, y)
contents.font.size = 24
h = 24
xp = 148
yp = 10
change_color(system_color)
draw_text(x, y + h * 2 + yp, 100, h, "身長")
draw_text(x + xp, y + h * 2 + yp, 100, h, "3サイズ")
draw_text(x, y + h * 7, 100, h, "性経験")
draw_text(x + xp, y + h * 7, 100, h, FAKEREAL::SEX_POINT_NAME) if actor.main?
change_color(normal_color)
draw_text(x + 4, y + h * 3 + yp, 80, h, "#{actor.profile["t"]}cm", 2)
draw_text(x + 10 + xp, y + h * 3 + yp, 70, h, "B:")
draw_text(x + 14 + xp, y + h * 3 + yp, 70, h, "#{actor.profile["b"]}cm", 2)
draw_text(x + 84 + xp, y + h * 3 + yp, 70, h, "(#{actor.profile["c"]})")
draw_text(x + 10 + xp, y + h * 4 + yp, 70, h, "W:")
draw_text(x + 14 + xp, y + h * 4 + yp, 70, h, "#{actor.profile["w"]}cm", 2)
draw_text(x + 10 + xp, y + h * 5 + yp, 70, h, "H:")
draw_text(x + 14 + xp, y + h * 5 + yp, 70, h, "#{actor.profile["h"]}cm", 2)
#draw_horz_line(y + h * 7, 0.52)
if actor.id != 2 #main?
sex = (!actor.virgin || actor.sex_all_count > 0 ) ? "あり" : "なし"
if actor.main?
sp = $game_variables[FAKEREAL::SEX_POINT]
draw_text(x + 224, y + h * 7, 80, h, sp)
end
else
sex = actor.virgin ? "夫のみ" : "夫以外ともあり"
end
draw_text(x + 74, y + h * 7, 120, h, sex)
contents.font.size = 22
h = 22
xa = -24
xb = 168
ya = 0
draw_text(x + xa, y + ya + h * 9, 100, h, "キス:", 2)
draw_text(x + xa, y + ya + h * 10, 100, h, "手コキ:", 2)
draw_text(x + xa, y + ya + h * 11, 100, h, "フェラ:", 2)
draw_text(x + xa, y + ya + h * 12, 100, h, "精飲:", 2)
draw_text(x + xa + xb, y + ya + h * 9, 100, h, "セクハラ:", 2)
draw_text(x + xa + xb, y + ya + h * 10, 100, h, "パイズリ:", 2)
draw_text(x + xa + xb, y + ya + h * 11, 100, h, "セックス:", 2)
draw_text(x + xa + xb, y + ya + h * 12, 100, h, "アナル:", 2)
#draw_text(x + xa + xb * 2, y + ya + h * 9, 100, h, "オナニー:", 2)
draw_text(x + xa + xb * 2, y + ya + h * 10, 100, h, "絶頂回数:", 2)
draw_text(x + xa + xb * 2, y + ya + h * 11, 100, h, "膣内射精:", 2)
draw_text(x + xa + xb * 2, y + ya + h * 12, 100, h, "ぶっかけ:", 2)
sh = actor.harassment
k = actor.kiss
t = actor.tekoki
f = actor.fellatio
p = actor.paizuri
a = actor.anal
s = actor.sex
c = actor.creampie
b = actor.bukkake
d = actor.drink
e = actor.ecstasy
o = actor.onanie
xc = 100
if actor.id != 2 #main?
draw_text(x + xa + xc, y + ya + h * 9, 100, h, sex_count(k, "未経験", ""))
draw_text(x + xa + xc, y + ya + h * 10, 100, h, sex_count(t))
draw_text(x + xa + xc, y + ya + h * 11, 100, h, sex_count(f))
draw_text(x + xa + xc, y + ya + h * 12, 100, h, sex_count(d))
draw_text(x + xa + xb + xc, y + ya + h * 9, 100, h, sex_count(sh))
draw_text(x + xa + xb + xc, y + ya + h * 10, 100, h, sex_count(p))
draw_text(x + xa + xb + xc, y + ya + h * 11, 100, h, sex_count(s, "処女", ""))
draw_text(x + xa + xb + xc, y + ya + h * 12, 100, h, sex_count(a, "処女", ""))
#draw_text(x + xa + xb * 2 + xc, y + ya + h * 9, 100, h, sex_count(o))
draw_text(x + xa + xb * 2 + xc, y + ya + h * 10, 100, h, sex_count(e, "0回"))
draw_text(x + xa + xb * 2 + xc, y + ya + h * 11, 100, h, sex_count(c))
draw_text(x + xa + xb * 2 + xc, y + ya + h * 12, 100, h, sex_count(b))
else
draw_text(x + xa + xc, y + ya + h * 9, 100, h, wife_count(k, "夫のみ", ""))
draw_text(x + xa + xc, y + ya + h * 10, 100, h, wife_count(t))
draw_text(x + xa + xc, y + ya + h * 11, 100, h, wife_count(f))
draw_text(x + xa + xc, y + ya + h * 12, 100, h, wife_count(d))
draw_text(x + xa + xb + xc, y + ya + h * 9, 100, h, wife_count(sh, "未経験"))
draw_text(x + xa + xb + xc, y + ya + h * 10, 100, h, wife_count(p))
draw_text(x + xa + xb + xc, y + ya + h * 11, 100, h, wife_count(s, "夫のみ", ""))
draw_text(x + xa + xb + xc, y + ya + h * 12, 100, h, wife_count(a, "処女", ""))
#draw_text(x + xa + xb * 2 + xc, y + ya + h * 9, 100, h, wife_count(o))
draw_text(x + xa + xb * 2 + xc, y + ya + h * 10, 100, h, wife_count(e))
draw_text(x + xa + xb * 2 + xc, y + ya + h * 11, 100, h, wife_count(c))
draw_text(x + xa + xb * 2 + xc, y + ya + h * 12, 100, h, wife_count(b))
end
contents.font.size = font_size
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def sex_count(sex, virgin = "未経験", unit = "")
return sex == 0 ? virgin : "#{sex}#{unit}"
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def wife_count(sex, virgin = "夫のみ", unit = "")
return sex == 0 ? virgin : "#{sex}#{unit}"
end
#--------------------------------------------------------------------------
# ● 各種文字色の取得 ※オーバーライド
#--------------------------------------------------------------------------
def system_color; text_color(14); end; # システム
#--------------------------------------------------------------------------
# ● 制御文字つきテキストの描画 ※オーバーライド
#--------------------------------------------------------------------------
def draw_text_ex(x, y, text)
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
#--------------------------------------------------------------------------
# ● 最大ページ数の取得
#--------------------------------------------------------------------------
def page_max
3
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
update_page
end
#--------------------------------------------------------------------------
# ● ページの更新
#--------------------------------------------------------------------------
def update_page
if visible && (Input.trigger?(:Z) || Input.trigger?(:RIGHT)) && page_max > 1
Sound.play_cursor
@page_index = (@page_index + 1) % page_max
refresh
elsif visible && Input.trigger?(:LEFT) && page_max > 1
Sound.play_cursor
@page_index = (@page_index - 1) % page_max
refresh
end
end
end
#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
#  用語とメッセージを定義するモジュールです。定数でメッセージなどを直接定義す
# るほか、グローバル変数 $data_system から用語データを取得します。
#==============================================================================
module Vocab
# ステータス画面
ExpTotal = "EXP"
ExpNext = "NEXT"
end
#==============================================================================
# ■ Scene_Status
#------------------------------------------------------------------------------
#  ステータス画面の処理を行うクラスです。
#==============================================================================
class Scene_Status < Scene_MenuBase
include FRCS
#--------------------------------------------------------------------------
# ● 背景の作成
#--------------------------------------------------------------------------
def create_background
@background_sprite = Sprite.new
@background_sprite.bitmap = Cache.system("Status_bg")
end
#--------------------------------------------------------------------------
# ○ アクターグラフィックの作成
#--------------------------------------------------------------------------
def create_actor_graphic
return unless @actor
@actor_sprite = Sprite.new
@actor_sprite.bitmap = Cache.stand("#{@actor.graphic_name}_cos#{@actor.costume}")
@actor_sprite.ox = @actor_sprite.bitmap.width + @actor.graphic_status_ox
@actor_sprite.oy = @actor.graphic_status_oy
@actor_sprite.x = Graphics.width
#@actor_sprite.z = 200
end
#--------------------------------------------------------------------------
# ● 開始処理 ※エイリアス
#--------------------------------------------------------------------------
alias new_status_start start
def start
new_status_start
create_actor_graphic
end
#--------------------------------------------------------------------------
# ○ 終了処理 ※オーバーライド
#--------------------------------------------------------------------------
def terminate
super
dispose_actor_graphic
end
#--------------------------------------------------------------------------
# ○ アクターグラフィックの解放
#--------------------------------------------------------------------------
def dispose_actor_graphic
@actor_sprite.bitmap.dispose
@actor_sprite.dispose
end
#--------------------------------------------------------------------------
# ● アクターの切り替え ※エイリアス
#--------------------------------------------------------------------------
alias new_status_on_actor_change on_actor_change
def on_actor_change
dispose_actor_graphic
new_status_on_actor_change
create_actor_graphic
end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors
# の内部で使用され、Game_Party クラス($game_partyからも参照されます。
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :virgin # 処女かどうか
attr_accessor :sex # セックス人数
attr_accessor :creampie # 中出し回数
attr_accessor :fellatio # フェラ回数
attr_accessor :paizuri # パイズリ回数
attr_accessor :anal # アナルセックス人数
attr_accessor :harassment # セクハラの回数
attr_accessor :kiss # キスの人数
attr_accessor :tekoki # 手コキの回数
attr_accessor :bukkake # ぶっかけ回数
attr_accessor :ecstasy # 絶頂回数
attr_accessor :drink # 精飲回数
attr_accessor :onanie # 自慰回数(予定には無いが念の為)
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias profile_initialize initialize
def initialize(actor_id)
profile_initialize(actor_id)
#@profile = profile_set
sex_init
end
#--------------------------------------------------------------------------
# ○ グラフィックのベース名の取得
#--------------------------------------------------------------------------
def graphic_name
return $1 if actor.note =~ /\<グラフィック名:(\w+?)\>/
return ""
end
#--------------------------------------------------------------------------
# ○ グラフィックのステータス画面でのoxの取得
#  マイナス数値で右に移動
#--------------------------------------------------------------------------
def graphic_status_ox
return $1.to_i if actor.note =~ /\<ステータスox:(\-?\d+?)\>/
return 0
end
#--------------------------------------------------------------------------
# ○ グラフィックのステータス画面でのoyの取得 
#  マイナス数値で下に下がる
#--------------------------------------------------------------------------
def graphic_status_oy
return $1.to_i if actor.note =~ /\<ステータスoy:(\-?\d+?)\>/
return 0
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def profile
prof = {}
prof["t"] = Person::BWH["n#{actor.id}_t"]
prof["b"] = Person::BWH["n#{actor.id}_b"]
prof["w"] = Person::BWH["n#{actor.id}_w"]
prof["h"] = Person::BWH["n#{actor.id}_h"]
prof["c"] = Person::BWH["n#{actor.id}_c"]
return prof
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def virgin_set
actor.note.include?("<処女>") || actor.note.include?("<夫のみ>")
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def sex_init
@virgin = virgin_set
@sex = 0
@creampie = 0
@fellatio = 0
@paizuri = 0
@anal = 0
@harassment = 0
@kiss = 0
@tekoki = 0
@bukkake = 0
@ecstasy = 0
@drink = 0
@onanie = 0
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def sex_all_count
return @sex + @creampie + @fellatio + @paizuri + @anal + @harassment + @kiss + @tekoki + @bukkake + @ecstasy + @drink + @onanie
end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
def sex(play, count = 1, id = 1)
case play
when "f" ; $game_actors[id].fellatio += count
when "p" ; $game_actors[id].paizuri += count
when "s" ; $game_actors[id].sex += count
when "c" ; $game_actors[id].creampie += count
when "a" ; $game_actors[id].anal += count
when "h" ; $game_actors[id].harassment += count
when "k" ; $game_actors[id].kiss += count
when "t" ; $game_actors[id].tekoki += count
when "b" ; $game_actors[id].bukkake += count
when "e" ; $game_actors[id].ecstasy += count
when "d" ; $game_actors[id].drink += count
when "o" ; $game_actors[id].onanie += count
end
end
end