king-exit/Scripts/TES_.1.rb
2024-08-31 14:17:23 -05:00

3584 lines
No EOL
119 KiB
Ruby
Raw Permalink 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.

#******************************************************************************
#
# TES基本セットモジュール
#
# for RGSS3
#
# Ver 1.01 2013.09.28
#
# ◆機能説明
#  ツクールのイベントコマンドを網羅した基本モジュールです。
#
# ◆注意事項
#  ※このモジュールの動作には、TESの本体が必要です。
#
# 提供者睡工房 http://hime.be/
#
#******************************************************************************
if $TEST
class Tes_Validator
#----------------------------------------------------------------------------
# ◆ タグ検証の設定
# 各引数の検証方法を、@@validatesに設定します。
#----------------------------------------------------------------------------
@@validates["message_h"] = {
"index" => {
:isNumeric => [0, 7]
},
"back" => {
:isNumeric => [0, 2],
},
"pos" => {
:isNumeric => [0, 2]
}
}
@@validates["message"] = {
"value" => {
:notEmpty => []
}
}
@@validates["choice_h"] = {
"cancel" => {
:isNumeric => [0, 5]
}
}
@@validates["choice_if"] = {
"index" => {
:notEmpty => [],
:isNumeric => [1, 4]
}
}
@@validates["input_num"] = {
"var" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"num" => {
:notEmpty => [],
:isNumeric => [1, 8]
}
}
@@validates["choice_item"] = {
"var" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["scroll_h"] = {
"speed" => {
:notEmpty => [],
:isNumeric => [1, 8]
},
"noskip"=> {
:isBool => []
}
}
@@validates["scroll"] = {
"value" => {
:notEmpty => []
}
}
@@validates["sw"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"flag" => {
:notEmpty => [],
:list => ["on", "off"]
}
}
@@validates["var"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/]
}
}
@@validates["var_random"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"min" => {
:notEmpty => [],
:isNumeric => [nil, nil]
},
"max" => {
:notEmpty => [],
:isNumeric => [:min, nil]
}
}
@@validates["var_item"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"value" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["var_weapon"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"value" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["var_armor"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"value" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["var_actor"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"data" => {
:notEmpty => [],
:list => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "level", "exp", "hp", "mp", "maxhp", "maxmp", "atk",
"def", "matk", "mdef", "agi", "luk"]
}
}
@@validates["var_enemy"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"enemy" => {
:notEmpty => [],
:isNumeric => [0, nil]
},
"data" => {
:notEmpty => [],
:list => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"hp", "mp", "maxhp", "maxmp", "atk", "def", "matk", "mdef",
"agi", "luk"]
}
}
@@validates["var_character"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"character" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"data" => {
:notEmpty => [],
:list => ["0", "1", "2", "3", "4",
"mapx", "mapy", "direction", "screenx", "screeny"]
}
}
@@validates["var_party"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"member" => {
:notEmpty => [],
:isNumeric => [0, nil]
}
}
@@validates["var_other"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"data" => {
:notEmpty => [],
:list => ["0", "1", "2", "3", "4", "5", "6", "7",
"mapid", "members", "money", "steps", "playtime", "timer",
"save_num", "battle_num"]
}
}
@@validates["var_script"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"end" => {
:isNumeric => [:id, nil]
},
"op" => {
:notEmpty => [],
:list => ["eq", "+", "-", "*", "/", "%"]
},
"script" => {
:notEmpty => []
}
}
@@validates["self_sw"] = {
"id" => {
:notEmpty => [],
:list => ["A", "B", "C", "D"]
},
"flag" => {
:notEmpty => [],
:list => ["on", "off"]
}
}
@@validates["timer"] = {
"flag" => {
:notEmpty => [],
:list => ["on", "off"]
},
"time" => {
:isNumeric => [1, 5999]
}
}
@@validates["if_sw"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"flag" => {
:list => ["on", "off"]
}
}
@@validates["if_var"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"op" => {
:list => ["eq", "ge", "le", "gt", "lt", "ne"]
}
}
@@validates["if_self_sw"] = {
"id" => {
:notEmpty => [],
:list => ["A", "B", "C", "D"]
},
"flag" => {
:list => ["on", "off"]
}
}
@@validates["if_timer"] = {
"time" => {
:notEmpty => [],
:isNumeric => [0, 5999]
},
"op" => {
:list => ["ge", "le"]
}
}
@@validates["if_actor"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"type" => {
:list => ["party", "name", "class", "skill", "weapon",
"armor", "state"]
}
}
@@validates["if_enemy"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [0, nil]
},
"type" => {
:list => ["visible", "state"]
},
"value" => {
:isNumeric => [1, nil]
}
}
@@validates["if_character"] = {
"id" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"direction"=> {
:notEmpty => [],
:list => ["2", "4", "6", "8",
"left", "right", "up", "down"]
}
}
@@validates["if_vehicle"] = {
"vehicle" => {
:notEmpty => [],
:isNumeric => [0, 2]
}
}
@@validates["if_money"] = {
"money" => {
:notEmpty => [],
:isNumeric => [0, nil]
},
"op" => {
:list => ["ge", "le", "lt"]
}
}
@@validates["if_item"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["if_weapon"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"equip" => {
:isBool => []
}
}
@@validates["if_armor"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"equip" => {
:isBool => []
}
}
@@validates["if_button"] = {
"button" => {
:notEmpty => [],
:list => ["2", "4", "6", "8",
"11", "12", "13", "14", "15", "16", "17", "18",
"down", "left", "right",
"up", "A", "B", "C", "X", "Y", "Z", "L", "R"]
}
}
@@validates["if_script"] = {
"script" => {
:notEmpty => []
}
}
@@validates["common"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["label"] = {
"value" => {
:notEmpty => []
}
}
@@validates["label_jump"] = {
"value" => {
:notEmpty => []
}
}
@@validates["comment"] = {
"value" => {
:notEmpty => []
}
}
@@validates["comment2"] = {
"value" => {
:notEmpty => []
}
}
@@validates["money"] = {
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
}
}
@@validates["item"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
}
}
@@validates["weapon"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"equip" => {
:isBool => []
}
}
@@validates["armor"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"equip" => {
:isBool => []
}
}
@@validates["member"] = {
"id" => {
:notEmpty => [],
:isNumeric => [],
:varCheck => [/^[-+]{0,1}(\d+)$/, 0, 1]
},
"init" => {
:isBool => []
}
}
@@validates["hp"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"death" => {
:isBool => []
}
}
@@validates["mp"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
}
}
@@validates["state"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"value" => {
:notEmpty => [],
:isNumeric => [nil, nil],
:zeroCheck => []
}
}
@@validates["all_recovery"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
}
}
@@validates["exp"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"message" => {
:isBool => []
}
}
@@validates["level"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"message" => {
:isBool => []
}
}
@@validates["capability"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"capability" => {
:notEmpty => [],
:list => ["0", "1", "2", "3", "4", "5", "6", "7",
"maxhp", "maxmp", "atk", "def", "matk", "mdef", "agi",
"luk" ]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
}
}
@@validates["skill"] = {
"actor" => {
:notEmpty => [],
:regCheck => [/^[+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"value" => {
:notEmpty => [],
:isNumeric => [nil, nil],
:zeroCheck => []
}
}
@@validates["equip"] = {
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"part" => {
:notEmpty => [],
:isNumeric => [0, 4],
},
"id" => {
:notEmpty => [],
:isNumeric => [0, nil],
}
}
@@validates["name"] = {
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => []
}
}
@@validates["class"] = {
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["nickname"] = {
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"value" => {
:notEmpty => []
}
}
@@validates["map_move"] = {
"type" => {
:list => ["const", "var"]
},
"map" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"x" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["type"]
},
"y" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["type"]
},
"direction"=> {
:list => ["0", "2", "4", "6", "8",
"left", "right", "up", "down"]
},
"fade" => {
:list => ["0", "1", "2", "black", "white", "none"]
}
}
@@validates["vehicle_pos"] = {
"vehicle" => {
:notEmpty => [],
:isNumeric => [0, 2]
},
"type" => {
:list => ["const", "var"]
},
"map" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"x" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["type"]
},
"y" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["type"]
}
}
@@validates["event_pos"] = {
"id" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"type" => {
:list => ["const", "var", "target"]
},
"x" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["type"],
},
"y" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["type"]
},
"direction"=> {
:list => ["0", "2", "4", "6", "8",
"left", "right", "up", "down"]
}
}
@@validates["scroll_map"] = {
"direction"=> {
:notEmpty => [],
:list => ["2", "4", "6", "8",
"left", "right", "up", "down"]
},
"num" => {
:notEmpty => [],
:isNumeric => [0, 100]
},
"speed" => {
:isNumeric => [1, 6]
}
}
@@validates["route_h"] = {
"event" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"repeat" => {
:isBool => []
},
"skip" => {
:isBool => []
},
"wait" => {
:isBool => []
}
}
@@validates["transparent"] = {
"flag" => {
:notEmpty => [],
:list => ["on", "off"]
}
}
@@validates["followers"] = {
"flag" => {
:notEmpty => [],
:list => ["on", "off"]
}
}
@@validates["anime"] = {
"target" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"anime" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"wait" => {
:isBool => []
}
}
@@validates["balloon"] = {
"target" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"balloon" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"wait" => {
:isBool => []
}
}
@@validates["tone"] = {
"red" => {
:isNumeric => [-255, 255]
},
"green" => {
:isNumeric => [-255, 255]
},
"blue" => {
:isNumeric => [-255, 255]
},
"gray" => {
:isNumeric => [0, 255]
},
"time" => {
:isNumeric => [1, 600]
},
"wait" => {
:isBool => []
}
}
@@validates["flash"] = {
"red" => {
:isNumeric => [0, 255]
},
"green" => {
:isNumeric => [0, 255]
},
"blue" => {
:isNumeric => [0, 255]
},
"strength"=> {
:isNumeric => [0, 255]
},
"time" => {
:isNumeric => [1, 600]
},
"wait" => {
:isBool => []
}
}
@@validates["shake"] = {
"strength"=> {
:isNumeric => [1, 9]
},
"speed" => {
:isNumeric => [1, 9]
},
"time" => {
:isNumeric => [1, 600]
},
"wait" => {
:isBool => []
}
}
@@validates["wait"] = {
"time" => {
:isNumeric => [1, 999]
}
}
@@validates["picture"] = {
"layer" => {
:notEmpty => [],
:isNumeric => [1, 100]
},
"file" => {
:notEmpty => []
},
"origin" => {
:list => ["ul", "center"]
},
"type" => {
:list => ["const", "var"]
},
"x" => {
:notEmpty => [],
:isNumeric => [-9999, 9999],
:varCheck2 => ["type"]
},
"y" => {
:notEmpty => [],
:isNumeric => [-9999, 9999],
:varCheck2 => ["type"]
},
"zoom_x" => {
:isNumeric => [0, 2000]
},
"zoom_y" => {
:isNumeric => [0, 2000]
},
"transparent"=> {
:isNumeric => [0, 255]
},
"blend" => {
:isNumeric => [0, 2]
}
}
@@validates["picture_move"] = {
"layer" => {
:notEmpty => [],
:isNumeric => [1, 100]
},
"origin" => {
:list => ["ul", "center"]
},
"type" => {
:list => ["const", "var"]
},
"x" => {
:notEmpty => [],
:isNumeric => [-9999, 9999],
:varCheck2 => ["type"]
},
"y" => {
:notEmpty => [],
:isNumeric => [-9999, 9999],
:varCheck2 => ["type"]
},
"zoom_x" => {
:isNumeric => [0, 2000]
},
"zoom_y" => {
:isNumeric => [0, 2000]
},
"transparent"=> {
:isNumeric => [0, 255]
},
"blend" => {
:isNumeric => [0, 2]
},
"time" => {
:isNumeric => [1, 600]
},
"wait" => {
:isBool => []
}
}
@@validates["picture_rotation"] = {
"layer" => {
:notEmpty => [],
:isNumeric => [1, 100]
},
"speed" => {
:isNumeric => [-90, 90]
}
}
@@validates["picture_tone"] = {
"layer" => {
:notEmpty => [],
:isNumeric => [1, 100]
},
"red" => {
:isNumeric => [-255, 255]
},
"green" => {
:isNumeric => [-255, 255]
},
"blue" => {
:isNumeric => [-255, 255]
},
"gray" => {
:isNumeric => [0, 255]
},
"time" => {
:isNumeric => [0, 600]
},
"wait" => {
:isBool => []
}
}
@@validates["picture_erace"] = {
"layer" => {
:notEmpty => [],
:isNumeric => [1, 100]
}
}
@@validates["weather"] = {
"weather" => {
:list => ["none", "rain", "storm", "snow"]
},
"strength"=> {
:isNumeric => [1, 9]
},
"time" => {
:isNumeric => [0, 600]
},
"wait" => {
:isBool => []
}
}
@@validates["bgm"] = {
"volume" => {
:isNumeric => [0, 100]
},
"pitch" => {
:isNumeric => [50, 150]
}
}
@@validates["fadeout_bgm"] = {
"time" => {
:isNumeric => [1, 60]
}
}
@@validates["bgs"] = {
"volume" => {
:isNumeric => [0, 100]
},
"pitch" => {
:isNumeric => [50, 150]
}
}
@@validates["fadeout_bgs"] = {
"time" => {
:isNumeric => [1, 60]
}
}
@@validates["me"] = {
"volume" => {
:isNumeric => [0, 100]
},
"pitch" => {
:isNumeric => [50, 150]
}
}
@@validates["se"] = {
"volume" => {
:isNumeric => [0, 100]
},
"pitch" => {
:isNumeric => [50, 150]
}
}
@@validates["battle"] = {
"id" => {
:notEmpty => [],
:regCheck => [/^(var\.){0,1}\d+$/],
:varCheck => [/^(var\.){0,1}(\d+)$/, 1, 2]
},
"can_escape" => {
:isBool => []
},
"loss_continue"=> {
:isBool => []
}
}
@@validates["shop"] = {
"type" => {
:notEmpty => [],
:list => ["0", "1", "2", "item", "weapon", "armor"],
},
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"price" => {
:list => ["db", "value"]
},
"value" => {
:isNumeric => [0, 9999999]
},
"buy_only"=> {
:isBool => []
}
}
@@validates["input_name"] = {
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"number" => {
:isNumeric => [1, 16]
}
}
@@validates["battle_bgm"] = {
"volume" => {
:isNumeric => [0, 100]
},
"pitch" => {
:isNumeric => [50, 150]
}
}
@@validates["battle_end_me"] = {
"volume" => {
:isNumeric => [0, 100]
},
"pitch" => {
:isNumeric => [50, 150]
}
}
@@validates["save_disable"] = {
"flag" => {
:isBool => []
}
}
@@validates["menu_disable"] = {
"flag" => {
:isBool => []
}
}
@@validates["encount_disable"] = {
"flag" => {
:isBool => []
}
}
@@validates["formation_disable"] = {
"flag" => {
:isBool => []
}
}
@@validates["window_color"] = {
"red" => {
:isNumeric => [-255, 255]
},
"green" => {
:isNumeric => [-255, 255]
},
"blue" => {
:isNumeric => [-255, 255]
}
}
@@validates["actor_graphic"] = {
"actor" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"walk_index"=> {
:isNumeric => [0, 7]
},
"face_index"=> {
:isNumeric => [0, 7]
}
}
@@validates["vehicle_graphic"] = {
"vehicle" => {
:notEmpty => [],
:isNumeric => [0, 2]
},
"index" => {
:isNumeric => [0, 7]
}
}
@@validates["movie"] = {
"file" => {
:notEmpty => []
}
}
@@validates["map_name_disable"] = {
"flag" => {
:isBool => []
}
}
@@validates["tileset"] = {
"id" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["parallax"] = {
"loop_x" => {
:isBool => []
},
"scroll_x"=> {
:isNumeric => [-32, 32]
},
"loop_y" => {
:isBool => []
},
"scroll_y"=> {
:isNumeric => [-32, 32]
}
}
@@validates["pos_info"] = {
"var" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"type" => {
:isNumeric => [0, 5]
},
"pos" => {
:list => ["const", "var"]
},
"x" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["pos"]
},
"y" => {
:notEmpty => [],
:isNumeric => [0, nil],
:varCheck2 => ["pos"]
}
}
@@validates["enemy_hp"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
},
"death" => {
:isBool => []
}
}
@@validates["enemy_mp"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"value" => {
:notEmpty => [],
:regCheck => [/^[-+]{0,1}(var\.){0,1}\d+$/],
:varCheck => [/^[-+]{0,1}(var\.){0,1}(\d+)$/, 1, 2]
}
}
@@validates["enemy_state"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"value" => {
:notEmpty => [],
:isNumeric => [nil, nil],
:zeroCheck => []
}
}
@@validates["enemy_all_recovery"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
}
}
@@validates["enemy_appear"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
}
}
@@validates["enemy_trans"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"trans" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["battle_anime"] = {
"enemy" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"anime" => {
:notEmpty => [],
:isNumeric => [1, nil]
}
}
@@validates["force"] = {
"battler" => {
:notEmpty => [],
:list => ["actor", "enemy"],
},
"id" => {
:notEmpty => [],
:isNumeric => [-1, nil]
},
"skill" => {
:notEmpty => [],
:isNumeric => [1, nil]
},
"target" => {
:notEmpty => [],
:isNumeric => [-2, nil]
}
}
@@validates["script"] = {
"value" => {
:notEmpty => []
}
}
@@validates["script2"] = {
"value" => {
:notEmpty => []
}
}
end
class Tes_Splitter
#----------------------------------------------------------------------------
# ◆ コマンド分割用メソッド仕様
# メソッド名 split_タグ名
# 返り値 なし
#----------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ○ 分割処理 :選択肢の表示(ヘッダ)
#--------------------------------------------------------------------------
def split_choice_h
text = get_line
labels = []
temp = {}
if args = text["choice_h".size + 1, 9999].strip
args.gsub!(/\s*=\s*/) { "<=>" }
args.split(/\s+/).each do |arg|
key, param = arg.split("<=>", 2)
if key.downcase == "label"
labels << param
elsif key.downcase == "cancel"
temp["cancel"] = param
end
end
end
temp["labels"] = labels
@data << ["choice_h", temp, line_number]
end
#--------------------------------------------------------------------------
# ○ 分割処理 :選択肢の表示(分岐部)
#--------------------------------------------------------------------------
def split_choice_if
if @data.empty? or (@data[-1][0] != "choice_h" and @data[-1][0] != "end")
raise(TesSyntaxError,
"選択肢分岐前にヘッダまたは終端タグがありません。")
end
split_normal
end
#--------------------------------------------------------------------------
# ○ 分割処理 :選択肢の表示(キャンセル部)
#--------------------------------------------------------------------------
def split_choice_cancel
if @data.empty? or (@data[-1][0] != "choice_h" and @data[-1][0] != "end")
raise(TesSyntaxError,
"選択肢分岐前にヘッダまたは終端タグがありません。")
end
split_normal
end
#--------------------------------------------------------------------------
# ○ 分割処理 :文章スクロールの表示
#--------------------------------------------------------------------------
def split_scroll_h
split_normal # ヘッダを一般処理
# 文章本体格納
messages = []
until eoc?
break unless next_message? # メッセージ行以外が来るまで格納
@index += 1
messages << ["scroll", {"value" => get_line}, line_number]
end
if messages.size == 0
raise(TesSyntaxError, "文章スクロールの中身がありません。")
end
@data += messages
end
#--------------------------------------------------------------------------
# ○ 変数の操作(一般)
#--------------------------------------------------------------------------
def split_var
@lines[@index][0].gsub!(/=\s*=/) { "=eq" }
split_normal
end
#--------------------------------------------------------------------------
# ○ 変数の操作(ランダム)
#--------------------------------------------------------------------------
def split_var_random
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(アイテム)
#--------------------------------------------------------------------------
def split_var_item
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(武器)
#--------------------------------------------------------------------------
def split_var_weapon
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(防具)
#--------------------------------------------------------------------------
def split_var_armor
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(アクター)
#--------------------------------------------------------------------------
def split_var_actor
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(敵キャラ)
#--------------------------------------------------------------------------
def split_var_enemy
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(キャラクター)
#--------------------------------------------------------------------------
def split_var_character
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(パーティ)
#--------------------------------------------------------------------------
def split_var_party
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(スクリプト)
#--------------------------------------------------------------------------
def split_var_script
split_var
end
#--------------------------------------------------------------------------
# ○ 変数の操作(その他)
#--------------------------------------------------------------------------
def split_var_other
split_var
end
#--------------------------------------------------------------------------
# ○ 条件分岐(変数)
#--------------------------------------------------------------------------
def split_if_var
@lines[@index][0].gsub!(/=\s*<>|=\s*></) { "=ne" } # 不等号
@lines[@index][0].gsub!(/=\s*>=|=\s*=>/) { "=ge" } # 以上
@lines[@index][0].gsub!(/=\s*<=|=\s*=</) { "=le" } # 以下
@lines[@index][0].gsub!(/=\s*>/) { "=gt" } # 超
@lines[@index][0].gsub!(/=\s*</) { "=lt" } # 未満
@lines[@index][0].gsub!(/=\s*=/) { "=eq" } # 等号
split_normal
end
#--------------------------------------------------------------------------
# ○ 条件分岐(タイマー)
#--------------------------------------------------------------------------
def split_if_timer
split_if_var
end
#--------------------------------------------------------------------------
# ○ 条件分岐(お金)
#--------------------------------------------------------------------------
def split_if_money
split_if_var
end
#--------------------------------------------------------------------------
# ○ 分割処理 :注釈の開始
#--------------------------------------------------------------------------
def split_comment
comments = []
@index += 1
until eoc?
break if get_command_name(get_line) == "comment_end"
comments << ["comment2", {"value" => get_line}, line_number]
@index += 1
end
if eoc?
raise(TesSyntaxError, "コメントタグが閉じられていません。")
end
unless comments.empty?
comments[0][0] = "comment" # 先頭のタグ名修正
@data += comments
end
end
#--------------------------------------------------------------------------
# ○ 分割処理 :注釈の終了
#--------------------------------------------------------------------------
def split_comment_end
raise(TesSyntaxError, "コメントタグが開始されていません。")
end
#--------------------------------------------------------------------------
# ○ 分割処理 :移動ルーツの設定(ヘッダ)
#--------------------------------------------------------------------------
def split_route_h
split_normal # ヘッダはそのまま一般処理
# 移動ルート格納
route_number = 0
until eoc?
break if get_command_name(get_next_line) != "route"
@index += 1
route_number += 1
split_normal # 一般タグの分割処理
end
if route_number == 0
raise(TesSyntaxError, "移動ルートが設定されていません。")
end
end
#--------------------------------------------------------------------------
# ○ 分割処理 :移動ルート
#--------------------------------------------------------------------------
def split_route
raise(TesSyntaxError, "移動ルートのヘッダがありません。")
end
#--------------------------------------------------------------------------
# ○ 分割処理 :バトルの処理(勝った場合)
#--------------------------------------------------------------------------
def split_battle_win
if @data.empty? or (@data[-1][0] != "battle" and @data[-1][0] != "end")
raise(TesSyntaxError,
"戦闘分岐前にヘッダまたは終端タグがありません。")
end
split_normal
end
#--------------------------------------------------------------------------
# ○ 分割処理 :バトルの処理(逃げた場合)
#--------------------------------------------------------------------------
def split_battle_escape
split_battle_win
end
#--------------------------------------------------------------------------
# ○ 分割処理 :バトルの処理(負けた場合)
#--------------------------------------------------------------------------
def split_battle_loss
split_battle_win
end
#--------------------------------------------------------------------------
# ○ 分割処理 :スクリプトの開始
#--------------------------------------------------------------------------
def split_script
scripts = []
@index += 1
until eoc?
break if get_command_name(get_line) == "script_end"
scripts << ["script2", {"value" => get_line}, line_number]
@index += 1
end
if eoc?
raise(TesSyntaxError, "スクリプトタグが閉じられていません。")
end
unless scripts.empty?
scripts[0][0] = "script" # 先頭のタグ名修正
@data += scripts
end
end
#--------------------------------------------------------------------------
# ○ 分割処理 :スクリプトの終了
#--------------------------------------------------------------------------
def split_script_end
raise(TesSyntaxError, "スクリプトタグが開始されていません。")
end
end
class Tes_Validator
#----------------------------------------------------------------------------
# ◆ 検証用メソッド仕様
# 共通メソッド名 validate_検証名
# 共通引数 vargs 検証に必要な指示リスト
# param_name 検証中の引数名
# params TESコマンドの引数リスト
# 検証結果に異常がある場合は例外を投げてください。
#----------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ○ 必須要素
#--------------------------------------------------------------------------
def validate_notEmpty(vargs, param_name, params)
if !params[param_name] or params[param_name].empty?
raise(TesValidateError,
"[#{param_name}] : 必須引数が省略されています。")
end
end
#--------------------------------------------------------------------------
# ○ 真偽値チェック
#--------------------------------------------------------------------------
def validate_isBool(vargs, param_name, params)
return unless params[param_name]
unless params[param_name] =~ /^(true|false)$/i
raise(TesValidateError,
"[#{param_name}] : true/false 以外が代入されました。")
end
end
#--------------------------------------------------------------------------
# ○ 数値チェック
# vargs[0] : 最小値nilで無効
# vargs[1] : 最大値nilで無効
#--------------------------------------------------------------------------
def validate_isNumeric(vargs, param_name, params)
return unless params[param_name]
unless params[param_name] =~ /^[-+0-9]\d*$/
raise(TesValidateError,
"[#{param_name}] : 数値以外が代入されました。")
end
# 最小値判定
if min = vargs[0]
min = params[min.id2name] if min.is_a?(Symbol)
min = eval(min) if min.is_a?(String)
min = min.to_i
if params[param_name].to_i < min
raise(TesValidateError,
"[#{param_name}] : 最小値より小さい値が使われています。")
end
end
# 最大値判定
if max = vargs[1]
max = params[max.id2name] if max.is_a?(Symbol)
max = eval(max) if max.is_a?(String)
max = max.to_i
if params[param_name].to_i > max
raise(TesValidateError,
"[#{param_name}] : 最大値より大きい値が使われています。")
end
end
end
#--------------------------------------------------------------------------
# ○ リスト
# vargs : 許可された値のリスト(例:["A", "B", "C", "D"]
#--------------------------------------------------------------------------
def validate_list(vargs, param_name, params)
return unless params[param_name]
unless vargs.include?(params[param_name])
raise(TesValidateError,
"[#{param_name}] : 許可されていない値が使われました。")
end
end
#--------------------------------------------------------------------------
# ○ 0以外のチェック
#--------------------------------------------------------------------------
def validate_zeroCheck(vargs, param_name, params)
return unless params[param_name]
if params[param_name].to_i == 0
raise(TesValidateError,
"[#{param_name}] : 「0」が使われました。")
end
end
#--------------------------------------------------------------------------
# ○ 正規表現でチェック
# vargs[0] : 正規表現
#--------------------------------------------------------------------------
def validate_regCheck(vargs, param_name, params)
return unless params[param_name]
unless params[param_name] =~ vargs[0]
raise(TesValidateError,
"[#{param_name}] : 正規表現にマッチしませんでした。")
end
end
#--------------------------------------------------------------------------
# ○ 変数の値チェック
# vargs[0] : 正規表現
# vargs[1] : 変数判断位置
# vargs[2] : 変数IDの位置
#--------------------------------------------------------------------------
def validate_varCheck(vargs, param_name, params)
return unless params[param_name]
params[param_name] =~ vargs[0]
return unless Regexp.last_match(vargs[1]) # 変数指定ではない
if Regexp.last_match(vargs[2]).to_i == 0
raise(TesValidateError,
"[#{param_name}] : 「0」が使われました。")
end
end
#--------------------------------------------------------------------------
# ○ 変数の値チェック2
# 引数 0: 数値/変数を指定している引数名
#--------------------------------------------------------------------------
def validate_varCheck2(vargs, param_name, params)
return unless params[param_name]
return if params[vargs[0]] != "var" # 変数指定ではない
if params[param_name].to_i == 0
raise(TesValidateError,
"[#{param_name}] : 「0」が使われました。")
end
end
end
class Tes_Converter
#----------------------------------------------------------------------------
# ◆ 変換用メソッド仕様
# メソッド名 convert_タグ名
# 引数 args タグに渡された引数のリスト
# 返り値 PRG::EventCommandのオブジェクト
#----------------------------------------------------------------------------
#****************************************************************************
# メッセージ系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 文章の表示(ヘッダー部)
#--------------------------------------------------------------------------
def convert_message_h(args)
file = (args["actor"] || "")
index = (args["index"] || 0).to_i
back = (args["back"] || 0).to_i
pos = (args["pos"] || 2).to_i
return RPG::EventCommand.new(101, @indent, [file, index, back, pos])
end
#--------------------------------------------------------------------------
# ○ 文章の表示(文字部)
#--------------------------------------------------------------------------
def convert_message(args)
return RPG::EventCommand.new(401, @indent,
[args["value"].gsub(/^_/) { "" }])
end
#--------------------------------------------------------------------------
# ○ 選択肢の表示(ヘッダー部)
#--------------------------------------------------------------------------
def convert_choice_h(args)
texts = args["labels"]
if texts.size == 0
raise(TesConvertError, "ラベルが1つも指示されていません。")
end
flag = (args["cancel"] || texts.size).to_i
return RPG::EventCommand.new(102, @indent, [texts, flag])
end
#--------------------------------------------------------------------------
# ○ 選択肢の表示(分岐部)
#--------------------------------------------------------------------------
def convert_choice_if(args)
@indent += 1
return RPG::EventCommand.new(402, @indent - 1, [args["index"].to_i - 1])
end
#--------------------------------------------------------------------------
# ○ 選択肢の表示(キャンセル時)
#--------------------------------------------------------------------------
def convert_choice_cancel(args)
@indent += 1
return RPG::EventCommand.new(403, @indent - 1, [])
end
#--------------------------------------------------------------------------
# ○ 選択肢の表示(選択肢の終了)
#--------------------------------------------------------------------------
def convert_choice_end(args)
return RPG::EventCommand.new(404, @indent, [])
end
#--------------------------------------------------------------------------
# ○ 数値入力の処理
#--------------------------------------------------------------------------
def convert_input_num(args)
return RPG::EventCommand.new(103, @indent,
[args["var"].to_i, args["num"].to_i])
end
#--------------------------------------------------------------------------
# ○ アイテム選択の処理
#--------------------------------------------------------------------------
def convert_choice_item(args)
return RPG::EventCommand.new(104, @indent, [args["var"].to_i])
end
#--------------------------------------------------------------------------
# ○ 文章スクロール表示(ヘッダー部)
#--------------------------------------------------------------------------
def convert_scroll_h(args)
@scroll = true
flag = (args["noskip"] || "false") == "true" ? true : false
return RPG::EventCommand.new(105, @indent, [args["speed"].to_i, flag])
end
#--------------------------------------------------------------------------
# ○ 文章スクロール表示(文章部)
#--------------------------------------------------------------------------
def convert_scroll(args)
return RPG::EventCommand.new(405, @indent,
[args["value"].gsub(/^_/) { "" }])
end
#--------------------------------------------------------------------------
# ○ 文章スクロール表示(終了部)
#--------------------------------------------------------------------------
def convert_scroll_end(args)
@scroll = false
return nil
end
#****************************************************************************
# ゲーム進行系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ スイッチの操作
#--------------------------------------------------------------------------
def convert_sw(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
flag = args["flag"] == "on" ? 0 : 1
return RPG::EventCommand.new(121, @indent, [s_num, e_num, flag])
end
#--------------------------------------------------------------------------
# ○ 演算子の取得
#--------------------------------------------------------------------------
def get_operator(op)
case op
when "eq"
op = 0
when "+"
op = 1
when "-"
op = 2
when "*"
op = 3
when "/"
op = 4
when "%"
op = 5
else
op = 0
end
end
#--------------------------------------------------------------------------
# ○ 変数の操作(一般)
#--------------------------------------------------------------------------
def convert_var(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
if type == 1 and value.to_i <= 0
raise(TesConvertError, "変数指定時に「0」以下が使われました。")
end
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, type, value.to_i])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(ランダム)
#--------------------------------------------------------------------------
def convert_var_random(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
min = args["min"].to_i
max = args["max"].to_i
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 2, min, max])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(アイテム)
#--------------------------------------------------------------------------
def convert_var_item(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
value = args["value"].to_i
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 0, value, 0])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(武器)
#--------------------------------------------------------------------------
def convert_var_weapon(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
value = args["value"].to_i
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 1, value, 0])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(防具)
#--------------------------------------------------------------------------
def convert_var_armor(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
value = args["value"].to_i
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 2, value, 0])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(アクター)
#--------------------------------------------------------------------------
def convert_var_actor(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
actor = args["actor"].to_i
case args["data"]
when "0", "level"
data = 0
when "1", "exp"
data = 1
when "2", "hp"
data = 2
when "3", "mp"
data = 3
when "4", "maxhp"
data = 4
when "5", "maxmp"
data = 5
when "6", "atk"
data = 6
when "7", "def"
data = 7
when "8", "matk"
data = 8
when "9", "mdef"
data = 9
when "10", "agi"
data = 10
when "11", "luk"
data = 11
end
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 3, actor, data])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(敵キャラ)
#--------------------------------------------------------------------------
def convert_var_enemy(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
enemy = args["enemy"].to_i
case args["data"]
when "0", "hp"
data = 0
when "1", "mp"
data = 1
when "2", "maxhp"
data = 2
when "3", "maxmp"
data = 3
when "4", "atk"
data = 4
when "5", "def"
data = 5
when "6", "matk"
data = 6
when "7", "mdef"
data = 7
when "8", "agi"
data = 8
when "9", "luk"
data = 9
end
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 4, enemy, data])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(キャラクター)
#--------------------------------------------------------------------------
def convert_var_character(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
character = args["character"].to_i
case args["data"]
when "0", "mapx"
data = 0
when "1", "mapy"
data = 1
when "2", "direction"
data = 2
when "3", "screenx"
data = 3
when "4", "screeny"
data = 4
end
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 5, character, data])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(パーティ)
#--------------------------------------------------------------------------
def convert_var_party(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
member = args["member"].to_i
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 6, member, 0])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(その他)
#--------------------------------------------------------------------------
def convert_var_other(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
case args["data"]
when "0", "mapid"
data = 0
when "1", "members"
data = 1
when "2", "money"
data = 2
when "3", "steps"
data = 3
when "4", "playtime"
data = 4
when "5", "timer"
data = 5
when "6", "save_num"
data = 6
when "7", "battle_num"
data = 7
end
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 3, 7, data, 0])
end
#--------------------------------------------------------------------------
# ○ 変数の操作(スクリプト)
#--------------------------------------------------------------------------
def convert_var_script(args)
s_num = args["id"].to_i
e_num = (args["end"] || s_num).to_i
op = get_operator(args["op"])
return RPG::EventCommand.new(122, @indent,
[s_num, e_num, op, 4, args["script"]])
end
#--------------------------------------------------------------------------
# ○ セルフスイッチの操作
#--------------------------------------------------------------------------
def convert_self_sw(args)
id = args["id"]
flag = args["flag"] == "on" ? 0 : 1
return RPG::EventCommand.new(123, @indent, [id, flag])
end
#--------------------------------------------------------------------------
# ○ タイマーの操作
#--------------------------------------------------------------------------
def convert_timer(args)
flag = args["flag"] == "on" ? 0 : 1
if flag == 0
unless args["time"]
raise(TesConvertError, "[time] : 必須引数が省略されています。")
end
time = args["time"].to_i
end
return RPG::EventCommand.new(124, @indent, [flag, time])
end
#****************************************************************************
# フロー制御系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 条件分岐(スイッチ)
#--------------------------------------------------------------------------
def convert_if_sw(args)
@indent += 1
ifnum = 0
id = args["id"].to_i
flag = (args["flag"] || "on") == "on" ? 0 : 1
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id, flag])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(変数)
#--------------------------------------------------------------------------
def convert_if_var(args)
@indent += 1
ifnum = 1
id = args["id"].to_i
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
op = ["eq", "ge", "le", "gt", "lt", "ne"].index(args["op"]) || 0
op = 0 unless op
if type == 1 and value.to_i <= 0
raise(TesConvertError, "変数指定時に「0」以下が使われました。")
end
return RPG::EventCommand.new(111, @indent - 1,
[ifnum, id, type, value.to_i, op])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(セルフスイッチ)
#--------------------------------------------------------------------------
def convert_if_self_sw(args)
@indent += 1
ifnum = 2
id = args["id"]
flag = (args["flag"] || "on") == "on" ? 0 : 1
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id, flag])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(タイマー)
#--------------------------------------------------------------------------
def convert_if_timer(args)
@indent += 1
ifnum = 3
time = args["time"].to_i
op = ["ge", "le"].index(args["op"]) || 0
return RPG::EventCommand.new(111, @indent - 1, [ifnum, time, op])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(アクター)
#--------------------------------------------------------------------------
def convert_if_actor(args)
@indent += 1
ifnum = 4
id = args["id"].to_i
case args["type"]
when "party"
type = 0
value = 0
when "name"
type = 1
value = args["value"]
when "class"
type = 2
check_notEmpty(args, "value")
check_numeric(args, "value", 1, nil)
value = args["value"].to_i
when "skill"
type = 3
check_notEmpty(args, "value")
check_numeric(args, "value", 1, nil)
value = args["value"].to_i
when "weapon"
type = 4
check_notEmpty(args, "value")
check_numeric(args, "value", 1, nil)
value = args["value"].to_i
when "armor"
type = 5
check_notEmpty(args, "value")
check_numeric(args, "value", 1, nil)
value = args["value"].to_i
when "state"
type = 6
check_notEmpty(args, "value")
check_numeric(args, "value", 1, nil)
value = args["value"].to_i
else
type = 0
value = 0
end
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id, type, value])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(敵キャラ)
#--------------------------------------------------------------------------
def convert_if_enemy(args)
@indent += 1
ifnum = 5
enemy = args["enemy"].to_i
case args["type"]
when "visible"
type = 0
value = 0
when "state"
type = 1
check_notEmpty(args, "value")
check_numeric(args, "value", 1, nil)
value = args["value"].to_i
else
type = 0
value = 0
end
return RPG::EventCommand.new(111, @indent - 1, [ifnum, enemy, type, value])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(キャラクター)
#--------------------------------------------------------------------------
def convert_if_character(args)
@indent += 1
ifnum = 6
id = args["id"].to_i
case args["direction"]
when "2", "down"
direction = 2
when "4", "left"
direction = 4
when "6", "right"
direction = 6
when "8", "up"
direction = 8
end
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id, direction])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(乗り物)
#--------------------------------------------------------------------------
def convert_if_vehicle(args)
@indent += 1
ifnum = 13
vehicle = args["vehicle"].to_i
return RPG::EventCommand.new(111, @indent - 1, [ifnum, vehicle])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(お金)
#--------------------------------------------------------------------------
def convert_if_money(args)
@indent += 1
ifnum = 7
money = args["money"].to_i
op = ["ge", "le", "lt"].index(args["op"]) || 0
return RPG::EventCommand.new(111, @indent - 1, [ifnum, money, op])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(アイテム)
#--------------------------------------------------------------------------
def convert_if_item(args)
@indent += 1
ifnum = 8
id = args["id"].to_i
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(武器)
#--------------------------------------------------------------------------
def convert_if_weapon(args)
@indent += 1
ifnum = 9
id = args["id"].to_i
equip = (args["equip"] || "false") == "true" ? true : false
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id, equip])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(防具)
#--------------------------------------------------------------------------
def convert_if_armor(args)
@indent += 1
ifnum = 10
id = args["id"].to_i
equip = (args["equip"] || "false") == "true" ? true : false
return RPG::EventCommand.new(111, @indent - 1, [ifnum, id, equip])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(ボタン)
#--------------------------------------------------------------------------
def convert_if_button(args)
@indent += 1
ifnum = 11
case args["button"]
when "2", "down"
button = 2
when "4", "left"
button = 4
when "6", "right"
button = 6
when "8", "up"
button = 7
when "11", "A"
button = 11
when "12", "B"
button = 12
when "13", "C"
button = 13
when "14", "X"
button = 14
when "15", "Y"
button = 15
when "16", "Z"
button = 16
when "17", "L"
button = 17
when "17", "R"
button = 18
end
return RPG::EventCommand.new(111, @indent - 1, [ifnum, button])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(スクリプト)
#--------------------------------------------------------------------------
def convert_if_script(args)
@indent += 1
ifnum = 12
script = args["script"]
return RPG::EventCommand.new(111, @indent - 1, [ifnum, script])
end
#--------------------------------------------------------------------------
# ○ 条件分岐(それ以外)
#--------------------------------------------------------------------------
def convert_else(args)
@indent += 1
return RPG::EventCommand.new(411, @indent - 1, [])
end
#--------------------------------------------------------------------------
# ○ ループ
#--------------------------------------------------------------------------
def convert_loop(args)
@indent += 1
return RPG::EventCommand.new(112, @indent - 1, [])
end
#--------------------------------------------------------------------------
# ○ ループの終わり
#--------------------------------------------------------------------------
def convert_loop_end(args)
@indent -= 1
return RPG::EventCommand.new(413, @indent, [])
end
#--------------------------------------------------------------------------
# ○ ループの中断
#--------------------------------------------------------------------------
def convert_loop_break(args)
return RPG::EventCommand.new(113, @indent, [])
end
#--------------------------------------------------------------------------
# ○ イベントの中断
#--------------------------------------------------------------------------
def convert_event_break(args)
return RPG::EventCommand.new(115, @indent, [])
end
#--------------------------------------------------------------------------
# ○ イベントの中断returnタグにて
#--------------------------------------------------------------------------
def convert_return(args)
return RPG::EventCommand.new(115, @indent, [])
end
#--------------------------------------------------------------------------
# ○ コモンイベント
#--------------------------------------------------------------------------
def convert_common(args)
return RPG::EventCommand.new(117, @indent, [args["id"].to_i])
end
#--------------------------------------------------------------------------
# ○ ラベル
#--------------------------------------------------------------------------
def convert_label(args)
return RPG::EventCommand.new(118, @indent, [args["value"]])
end
#--------------------------------------------------------------------------
# ○ ラベルジャンプ
#--------------------------------------------------------------------------
def convert_label_jump(args)
return RPG::EventCommand.new(119, @indent, [args["value"]])
end
#--------------------------------------------------------------------------
# ○ 注釈
#--------------------------------------------------------------------------
def convert_comment(args)
return RPG::EventCommand.new(108, @indent, [args["value"]])
end
#--------------------------------------------------------------------------
# ○ 注釈(2行目以降)
#--------------------------------------------------------------------------
def convert_comment2(args)
return RPG::EventCommand.new(408, @indent, [args["value"]])
end
#****************************************************************************
# パーティ系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 所持金の増減
#--------------------------------------------------------------------------
def convert_money(args)
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(125, @indent, [operate, type, value.to_i])
end
#--------------------------------------------------------------------------
# ○ アイテムの増減
#--------------------------------------------------------------------------
def convert_item(args)
id = args["id"].to_i
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(126, @indent,
[id, operate, type, value.to_i])
end
#--------------------------------------------------------------------------
# ○ 武器の増減
#--------------------------------------------------------------------------
def convert_weapon(args)
id = args["id"].to_i
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
equip = (args["equip"] || "false") == "true" ? true : false
return RPG::EventCommand.new(127, @indent,
[id, operate, type, value.to_i, equip])
end
#--------------------------------------------------------------------------
# ○ 防具の増減
#--------------------------------------------------------------------------
def convert_armor(args)
id = args["id"].to_i
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
equip = (args["equip"] || "false") == "true" ? true : false
return RPG::EventCommand.new(128, @indent,
[id, operate, type, value.to_i, equip])
end
#--------------------------------------------------------------------------
# ○ メンバーの入れ替え
#--------------------------------------------------------------------------
def convert_member(args)
id = args["id"]
operate = id.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
init = (args["init"] || "false") == "true" ? 1 : 0
return RPG::EventCommand.new(129, @indent, [id.to_i, operate, init])
end
#****************************************************************************
# アクター系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ HPの増減
#--------------------------------------------------------------------------
def convert_hp(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
death = (args["death"] || "false") == "true" ? true : false
return RPG::EventCommand.new(311, @indent,
[is_var, actor.to_i, operate, type, value.to_i, death])
end
#--------------------------------------------------------------------------
# ○ MPの増減
#--------------------------------------------------------------------------
def convert_mp(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(312, @indent,
[is_var, actor.to_i, operate, type, value.to_i])
end
#--------------------------------------------------------------------------
# ○ ステートの変更
#--------------------------------------------------------------------------
def convert_state(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
value = args["value"]
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(313, @indent,
[is_var, actor.to_i, operate, value.to_i])
end
#--------------------------------------------------------------------------
# ○ 全回復
#--------------------------------------------------------------------------
def convert_all_recovery(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
return RPG::EventCommand.new(314, @indent, [is_var, actor.to_i])
end
#--------------------------------------------------------------------------
# ○ 経験値の増減
#--------------------------------------------------------------------------
def convert_exp(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
message = (args["message"] || "false") == "true" ? true : false
return RPG::EventCommand.new(315, @indent,
[is_var, actor.to_i, operate, type, value.to_i, message])
end
#--------------------------------------------------------------------------
# ○ レベルの増減
#--------------------------------------------------------------------------
def convert_level(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
message = (args["message"] || "false") == "true" ? true : false
return RPG::EventCommand.new(316, @indent,
[is_var, actor.to_i, operate, type, value.to_i, message])
end
#--------------------------------------------------------------------------
# ○ 能力値の増減
#--------------------------------------------------------------------------
def convert_capability(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
case args["capability"]
when "0", "maxhp"
capability = 0
when "1", "maxmp"
capability = 1
when "2", "atk"
capability = 2
when "3", "def"
capability = 3
when "4", "matk"
capability = 4
when "5", "mdef"
capability = 5
when "6", "agi"
capability = 6
when "7", "luk"
capability = 7
end
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(317, @indent,
[is_var, actor.to_i, capability, operate, type, value.to_i])
end
#--------------------------------------------------------------------------
# ○ スキルの増減
#--------------------------------------------------------------------------
def convert_skill(args)
actor = args["actor"]
is_var = actor.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
value = args["value"]
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(318, @indent,
[is_var, actor.to_i, operate, value.to_i])
end
#--------------------------------------------------------------------------
# ○ 装備の変更
#--------------------------------------------------------------------------
def convert_equip(args)
actor = args["actor"].to_i
part = args["part"].to_i
id = args["id"].to_i
return RPG::EventCommand.new(319, @indent, [actor, part, id])
end
#--------------------------------------------------------------------------
# ○ 名前の変更
#--------------------------------------------------------------------------
def convert_name(args)
actor = args["actor"].to_i
value = args["value"]
return RPG::EventCommand.new(320, @indent, [actor, value])
end
#--------------------------------------------------------------------------
# ○ 職業の変更
#--------------------------------------------------------------------------
def convert_class(args)
actor = args["actor"].to_i
value = args["value"].to_i
return RPG::EventCommand.new(321, @indent, [actor, value])
end
#--------------------------------------------------------------------------
# ○ 二つ名の変更
#--------------------------------------------------------------------------
def convert_nickname(args)
actor = args["actor"].to_i
value = args["value"]
return RPG::EventCommand.new(324, @indent, [actor, value])
end
#****************************************************************************
# 移動系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 場所移動
#--------------------------------------------------------------------------
def convert_map_move(args)
type = (args["type"] || "const") == "const" ? 0 : 1
map = args["map"].to_i
x = args["x"].to_i
y = args["y"].to_i
case args["direction"]
when "2", "down"
direction = 2
when "4", "left"
direction = 4
when "6", "right"
direction = 6
when "8", "up"
direction = 8
else
direction = 0
end
case args["fade"]
when "1", "white"
fade = 1
when "2", "none"
fade = 2
else
fade = 0
end
return RPG::EventCommand.new(201, @indent,
[type, map, x, y, direction, fade])
end
#--------------------------------------------------------------------------
# ○ 乗り物の位置設定
#--------------------------------------------------------------------------
def convert_vehicle_pos(args)
vehicle = args["vehicle"].to_i
type = (args["type"] || "const") == "const" ? 0 : 1
map = args["map"].to_i
x = args["x"].to_i
y = args["y"].to_i
return RPG::EventCommand.new(202, @indent, [vehicle, type, map, x, y])
end
#--------------------------------------------------------------------------
# ○ イベントの位置設定
#--------------------------------------------------------------------------
def convert_event_pos(args)
id = args["id"].to_i
type = 1 if args["type"] == "var"
type = 2 if args["type"] == "target"
type = 0 unless type
x = args["x"].to_i
y = args["y"].to_i
case args["direction"]
when "2", "down"
direction = 2
when "4", "left"
direction = 4
when "6", "right"
direction = 6
when "8", "up"
direction = 8
else
direction = 0
end
return RPG::EventCommand.new(203, @indent, [id, type, x, y, direction])
end
#--------------------------------------------------------------------------
# ○ マップのスクロール
#--------------------------------------------------------------------------
def convert_scroll_map(args)
case args["direction"]
when "2", "down"
direction = 2
when "4", "left"
direction = 4
when "6", "right"
direction = 6
when "8", "up"
direction = 8
end
num = args["num"].to_i
speed = (args["speed"] || 4).to_i
return RPG::EventCommand.new(204, @indent, [direction, num, speed])
end
#--------------------------------------------------------------------------
# ○ 移動ルートの設定(ヘッダー部)
#--------------------------------------------------------------------------
def convert_route_h(args)
event = args["event"].to_i
temp = RPG::MoveRoute.new
temp.repeat = (args["repeat"] || "false") == "true" ? true : false
temp.skippable = (args["skip"] || "false") == "true" ? true : false
temp.wait = (args["wait"] || "false") == "true" ? true : false
temp.repeat = false if temp.repeat and temp.wait # 同時true防止
return RPG::EventCommand.new(205, @indent, [event, temp])
end
#--------------------------------------------------------------------------
# ○ 移動ルートの設定(移動方法)
#--------------------------------------------------------------------------
def convert_route(args)
param = []
case args["type"]
when "1", "down"
type = 1
when "2", "left"
type = 2
when "3", "right"
type = 3
when "4", "up"
type = 4
when "5", "dl"
type = 5
when "6", "dr"
type = 6
when "7", "ul"
type = 7
when "8", "ur"
type = 8
when "9", "random"
type = 9
when "10", "toward"
type = 10
when "11", "away"
type = 11
when "12", "foward"
type = 12
when "13", "backward"
type = 13
when "14", "jump"
type = 14
check_numeric(args, "x", -100, 100)
check_numeric(args, "y", -100, 100)
param[0] = (args["x"] || 0).to_i
param[1] = (args["y"] || 0).to_i
when "15", "wait"
type = 15
check_numeric(args, "time", 1, 999)
param[0] = (args["time"] || 60).to_i
when "16", "turn_down"
type = 16
when "17", "turn_left"
type = 17
when "18", "turn_right"
type = 18
when "19", "turn_up"
type = 19
when "20", "turn_90_r"
type = 20
when "21", "turn_90_l"
type = 21
when "22", "turn_180"
type = 22
when "23", "turn_90_rl", "turn_90_lr"
type = 23
when "24", "turn_random"
type = 24
when "25", "turn_toward"
type = 25
when "26", "turn_away"
type = 26
when "27", "switch_on", "sw_on"
type = 27
check_notEmpty(args, "id")
check_numeric(args, "id", 1, nil)
param[0] = args["id"].to_i
when "28", "switch_off", "sw_off"
type = 28
check_notEmpty(args, "id")
check_numeric(args, "id", 1, nil)
param[0] = args["id"].to_i
when "29", "change_speed"
type = 29
check_numeric(args, "speed", 1, 6)
param[0] = (args["speed"] || 3).to_i
when "30", "change_freq"
type = 30
check_numeric(args, "freq", 1, 5)
param[0] = (args["freq"] || 3).to_i
when "31", "walk_anime_on"
type = 31
when "32", "walk_anime_off"
type = 32
when "33", "step_anime_on"
type = 33
when "34", "step_anime_off"
type = 34
when "35", "dir_fix_on"
type = 35
when "36", "dir_fix_off"
type = 36
when "37", "through_on"
type = 37
when "38", "through_off"
type = 38
when "39", "transparent_on"
type = 39
when "40", "transparent_off"
type = 40
when "41", "change_graphic"
type = 41
check_notEmpty(args, "file")
check_notEmpty(args, "index")
check_numeric(args, "index", 0, 7)
param[0] = args["file"]
param[1] = args["index"].to_i
when "42", "change_opacity"
type = 42
check_numeric(args, "opacity", 0, 255)
param[0] = (args["opacity"] || 255).to_i
when "43", "change_blend"
type = 43
check_numeric(args, "blend", 0, 2)
param[0] = (args["blend"] || 0).to_i
when "44", "play_se"
type = 44
check_numeric(args, "volume", 0, 100)
check_numeric(args, "pitch", 50, 150)
file = (args["file"] || "")
volume = (args["volume"] || 100).to_i
pitch = (args["pitch"] || 100).to_i
param = [RPG::SE.new(file, volume, pitch)]
when "45", "script"
type = 45
check_notEmpty(args, "script")
param[0] = args["script"]
else
raise(TesConvertError, "存在しない移動コマンドです。")
end
return RPG::EventCommand.new(505, @indent,
[RPG::MoveCommand.new(type, param)])
end
#--------------------------------------------------------------------------
# ○ 乗り物の乗降
#--------------------------------------------------------------------------
def convert_vehicle(args)
return RPG::EventCommand.new(206, @indent, [])
end
#****************************************************************************
# キャラクター系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 透明状態の変更
#--------------------------------------------------------------------------
def convert_transparent(args)
flag = args["flag"] == "on" ? 0 : 1
return RPG::EventCommand.new(211, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ 隊列歩行の変更
#--------------------------------------------------------------------------
def convert_followers(args)
flag = args["flag"] == "on" ? 0 : 1
return RPG::EventCommand.new(216, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ 隊列メンバーの集合
#--------------------------------------------------------------------------
def convert_gather(args)
return RPG::EventCommand.new(217, @indent, [])
end
#--------------------------------------------------------------------------
# ○ アニメーションの表示
#--------------------------------------------------------------------------
def convert_anime(args)
target = args["target"].to_i
anime = args["anime"].to_i
wait = (args["wait"] || "false") == "true" ? true : false
return RPG::EventCommand.new(212, @indent, [target, anime, wait])
end
#--------------------------------------------------------------------------
# ○ フキダシアイコンの表示
#--------------------------------------------------------------------------
def convert_balloon(args)
target = args["target"].to_i
balloon = args["balloon"].to_i
wait = (args["wait"] || "false") == "true" ? true : false
return RPG::EventCommand.new(213, @indent, [target, balloon, wait])
end
#--------------------------------------------------------------------------
# ○ イベントの一時消去
#--------------------------------------------------------------------------
def convert_erace(args)
return RPG::EventCommand.new(214, @indent, [])
end
#****************************************************************************
# 画面効果系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 画面のフェードアウト
#--------------------------------------------------------------------------
def convert_fadeout(args)
return RPG::EventCommand.new(221, @indent, [])
end
#--------------------------------------------------------------------------
# ○ 画面のフェードイン
#--------------------------------------------------------------------------
def convert_fadein(args)
return RPG::EventCommand.new(222, @indent, [])
end
#--------------------------------------------------------------------------
# ○ 画面の色調変更
#--------------------------------------------------------------------------
def convert_tone(args)
red = (args["red"] || 0.0).to_f
green = (args["green"] || 0.0).to_f
blue = (args["blue"] || 0.0).to_f
gray = (args["gray"] || 0.0).to_f
tone = Tone.new(red, green, blue, gray)
time = (args["time"] || 60).to_i
wait = (args["wait"] || "true") == "true" ? true : false
return RPG::EventCommand.new(223, @indent, [tone, time, wait])
end
#--------------------------------------------------------------------------
# ○ 画面のフラッシュ
#--------------------------------------------------------------------------
def convert_flash(args)
red = (args["red"] || 255.0).to_f
green = (args["green"] || 255.0).to_f
blue = (args["blue"] || 255.0).to_f
strength = (args["strength"] || 255.0).to_f
color = Color.new(red, green, blue, strength)
time = (args["time"] || 60).to_i
wait = (args["wait"] || "true") == "true" ? true : false
return RPG::EventCommand.new(224, @indent, [color, time, wait])
end
#--------------------------------------------------------------------------
# ○ 画面のシェイク
#--------------------------------------------------------------------------
def convert_shake(args)
strength = (args["strength"] || 5).to_i
speed = (args["speed"] || 5).to_i
time = (args["time"] || 60).to_i
wait = (args["wait"] || "true") == "true" ? true : false
return RPG::EventCommand.new(225, @indent, [strength, speed, time, wait])
end
#****************************************************************************
# 時間調整系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ ウェイト
#--------------------------------------------------------------------------
def convert_wait(args)
time = (args["time"] || 60).to_i
return RPG::EventCommand.new(230, @indent, [time])
end
#****************************************************************************
# ピクチャと天候系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ ピクチャの表示
#--------------------------------------------------------------------------
def convert_picture(args)
layer = args["layer"].to_i
file = args["file"]
origin = (args["origin"] || "ul") == "ul" ? 0 : 1
type = (args["type"] || "const") == "const" ? 0 : 1
x = args["x"].to_i
y = args["y"].to_i
zoom_x = (args["zoom_x"] || 100).to_i
zoom_y = (args["zoom_y"] || 100).to_i
transparent = (args["transparent"] || 255).to_i
blend = (args["blend"] || 0).to_i
return RPG::EventCommand.new(231, @indent,
[layer, file, origin, type, x, y, zoom_x, zoom_y, transparent, blend])
end
#--------------------------------------------------------------------------
# ○ ピクチャの移動
#--------------------------------------------------------------------------
def convert_picture_move(args)
layer = args["layer"].to_i
file = nil
origin = (args["origin"] || "ul") == "ul" ? 0 : 1
type = (args["type"] || "const") == "const" ? 0 : 1
x = args["x"].to_i
y = args["y"].to_i
zoom_x = (args["zoom_x"] || 100).to_i
zoom_y = (args["zoom_y"] || 100).to_i
transparent = (args["transparent"] || 255).to_i
blend = (args["blend"] || 0).to_i
time = (args["time"] || 60).to_i
wait = (args["wait"] || "true") == "true" ? true : false
return RPG::EventCommand.new(232, @indent, [layer, nil,
origin, type, x, y, zoom_x, zoom_y, transparent, blend, time, wait])
end
#--------------------------------------------------------------------------
# ○ ピクチャの回転
#--------------------------------------------------------------------------
def convert_picture_rotation(args)
layer = args["layer"].to_i
speed = (args["speed"] || 5).to_i
return RPG::EventCommand.new(233, @indent, [layer, speed])
end
#--------------------------------------------------------------------------
# ○ ピクチャの色調変更
#--------------------------------------------------------------------------
def convert_picture_tone(args)
layer = args["layer"].to_i
red = (args["red"] || 0.0).to_f
green = (args["green"] || 0.0).to_f
blue = (args["blue"] || 0.0).to_f
gray = (args["gray"] || 0.0).to_f
tone = Tone.new(red, green, blue, gray)
time = (args["time"] || 60).to_i
wait = (args["wait"] || "true") == "true" ? true : false
return RPG::EventCommand.new(234, @indent, [layer, tone, time, wait])
end
#--------------------------------------------------------------------------
# ○ ピクチャの消去
#--------------------------------------------------------------------------
def convert_picture_erace(args)
layer = args["layer"].to_i
return RPG::EventCommand.new(235, @indent, [layer])
end
#--------------------------------------------------------------------------
# ○ 天候の設定
#--------------------------------------------------------------------------
def convert_weather(args)
weather = (args["weather"] || "none").to_sym
strength = (args["strength"] || 5).to_i
time = (args["time"] || 60).to_i
wait = (args["wait"] || "true") == "true" ? true : false
return RPG::EventCommand.new(236, @indent,
[weather, strength, time, wait])
end
#****************************************************************************
# 音楽と効果音系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ BGMの演奏
#--------------------------------------------------------------------------
def convert_bgm(args)
file = (args["file"] || "")
volume = (args["volume"] || 100).to_i
pitch = (args["pitch"] || 100).to_i
temp = RPG::BGM.new(file, volume, pitch)
return RPG::EventCommand.new(241, @indent, [temp])
end
#--------------------------------------------------------------------------
# ○ BGMのフェードアウト
#--------------------------------------------------------------------------
def convert_fadeout_bgm(args)
time = (args["time"] || 10).to_i
return RPG::EventCommand.new(242, @indent, [time])
end
#--------------------------------------------------------------------------
# ○ BGMの保存
#--------------------------------------------------------------------------
def convert_save_bgm(args)
return RPG::EventCommand.new(243, @indent, [])
end
#--------------------------------------------------------------------------
# ○ BGMの再開
#--------------------------------------------------------------------------
def convert_resume_bgm(args)
return RPG::EventCommand.new(244, @indent, [])
end
#--------------------------------------------------------------------------
# ○ BGSの演奏
#--------------------------------------------------------------------------
def convert_bgs(args)
file = (args["file"] || "")
volume = (args["volume"] || 100).to_i
pitch = (args["pitch"] || 100).to_i
temp = RPG::BGS.new(file, volume, pitch)
return RPG::EventCommand.new(245, @indent, [temp])
end
#--------------------------------------------------------------------------
# ○ BGSのフェードアウト
#--------------------------------------------------------------------------
def convert_fadeout_bgs(args)
time = (args["time"] || 10).to_i
return RPG::EventCommand.new(246, @indent, [time])
end
#--------------------------------------------------------------------------
# ○ MEの演奏
#--------------------------------------------------------------------------
def convert_me(args)
file = (args["file"] || "")
volume = (args["volume"] || 100).to_i
pitch = (args["pitch"] || 100).to_i
temp = RPG::ME.new(file, volume, pitch)
return RPG::EventCommand.new(249, @indent, [temp])
end
#--------------------------------------------------------------------------
# ○ SEの演奏
#--------------------------------------------------------------------------
def convert_se(args)
file = (args["file"] || "")
volume = (args["volume"] || 80).to_i
pitch = (args["pitch"] || 100).to_i
temp = RPG::SE.new(file, volume, pitch)
return RPG::EventCommand.new(250, @indent, [temp])
end
#--------------------------------------------------------------------------
# ○ SEの停止
#--------------------------------------------------------------------------
def convert_stop_se(args)
return RPG::EventCommand.new(251, @indent, [])
end
#****************************************************************************
# シーン制御系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ バトルの処理(ヘッダー部)
#--------------------------------------------------------------------------
def convert_battle(args)
id = args["id"]
type = id.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
id = id.to_i
type = 2 if id == 0
escape = (args["can_escape"] || "false") == "true" ? true : false
continue = (args["loss_continue"] || "false") == "true" ? true : false
return RPG::EventCommand.new(301, @indent,
[type, id, escape, continue])
end
#--------------------------------------------------------------------------
# ○ バトルの処理(勝った場合)
#--------------------------------------------------------------------------
def convert_battle_win(args)
@indent += 1
return RPG::EventCommand.new(601, @indent - 1, [])
end
#--------------------------------------------------------------------------
# ○ バトルの処理(逃げた場合)
#--------------------------------------------------------------------------
def convert_battle_escape(args)
@indent += 1
return RPG::EventCommand.new(602, @indent - 1, [])
end
#--------------------------------------------------------------------------
# ○ バトルの処理(負けた場合)
#--------------------------------------------------------------------------
def convert_battle_loss(args)
@indent += 1
return RPG::EventCommand.new(603, @indent - 1, [])
end
#--------------------------------------------------------------------------
# ○ バトルの処理(分岐終了)
#--------------------------------------------------------------------------
def convert_battle_end(args)
return RPG::EventCommand.new(604, @indent, [])
end
#--------------------------------------------------------------------------
# ○ ショップの処理
#--------------------------------------------------------------------------
def convert_shop(args)
type = 0 if ["0", "item"].include?(args["type"])
type = 1 if ["1", "weapon"].include?(args["type"])
type = 2 if ["2", "armor"].include?(args["type"])
id = args["id"].to_i
price = (args["price"] || "db") == "db" ? 0 : 1
value = (args["value"] || 50).to_i
buy_only = (args["buy_only"] || "false") == "true" ? true : false
return RPG::EventCommand.new(605, @indent,
[type, id, price, value, buy_only])
end
#--------------------------------------------------------------------------
# ○ 名前入力の処理
#--------------------------------------------------------------------------
def convert_input_name(args)
actor = args["actor"].to_i
number = (args["number"] || 6).to_i
return RPG::EventCommand.new(303, @indent, [actor, number])
end
#--------------------------------------------------------------------------
# ○ メニュー画面を開く
#--------------------------------------------------------------------------
def convert_menu_open(args)
return RPG::EventCommand.new(351, @indent, [])
end
#--------------------------------------------------------------------------
# ○ セーブ画面を開く
#--------------------------------------------------------------------------
def convert_save_open(args)
return RPG::EventCommand.new(352, @indent, [])
end
#--------------------------------------------------------------------------
# ○ ゲームオーバー
#--------------------------------------------------------------------------
def convert_gameover(args)
return RPG::EventCommand.new(353, @indent, [])
end
#--------------------------------------------------------------------------
# ○ タイトル画面に戻す
#--------------------------------------------------------------------------
def convert_title_return(args)
return RPG::EventCommand.new(354, @indent, [])
end
#****************************************************************************
# システム設定系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 戦闘BGMの変更
#--------------------------------------------------------------------------
def convert_battle_bgm(args)
file = (args["file"] || "")
volume = (args["volume"] || 100).to_i
pitch = (args["pitch"] || 100).to_i
temp = RPG::BGM.new(file, volume, pitch)
return RPG::EventCommand.new(132, @indent, [temp])
end
#--------------------------------------------------------------------------
# ○ 戦闘終了MEの変更
#--------------------------------------------------------------------------
def convert_battle_end_me(args)
file = (args["file"] || "")
volume = (args["volume"] || 100).to_i
pitch = (args["pitch"] || 100).to_i
temp = RPG::ME.new(file, volume, pitch)
return RPG::EventCommand.new(133, @indent, [temp])
end
#--------------------------------------------------------------------------
# ○ セーブ禁止の変更
#--------------------------------------------------------------------------
def convert_save_disable(args)
flag = (args["flag"] || "true") == "true" ? 0 : 1
return RPG::EventCommand.new(134, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ メニュー禁止の変更
#--------------------------------------------------------------------------
def convert_menu_disable(args)
flag = (args["flag"] || "true") == "true" ? 0 : 1
return RPG::EventCommand.new(135, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ エンカウント禁止の変更
#--------------------------------------------------------------------------
def convert_encount_disable(args)
flag = (args["flag"] || "true") == "true" ? 0 : 1
return RPG::EventCommand.new(136, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ 並び替え禁止の変更
#--------------------------------------------------------------------------
def convert_formation_disable(args)
flag = (args["flag"] || "true") == "true" ? 0 : 1
return RPG::EventCommand.new(137, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ ウィンドウカラーの変更
#--------------------------------------------------------------------------
def convert_window_color(args)
red = (args["red"] || -34.0).to_i
green = (args["green"] || 0.0).to_i
blue = (args["blue"] || 68.0).to_i
color = Color.new(red, green, blue)
return RPG::EventCommand.new(138, @indent, [color])
end
#--------------------------------------------------------------------------
# ○ アクターのグラフィック変更
#--------------------------------------------------------------------------
def convert_actor_graphic(args)
actor = args["actor"].to_i
walk_file = (args["walk_file"] || "")
walk_index = (args["walk_index"] || 0).to_i
face_file = (args["face_file"] || "")
face_index = (args["face_index"] || 0).to_i
return RPG::EventCommand.new(322, @indent,
[actor, walk_file, walk_index, face_file, face_index])
end
#--------------------------------------------------------------------------
# ○ 乗り物のグラフィック変更
#--------------------------------------------------------------------------
def convert_vehicle_graphic(args)
type = args["vehicle"].to_i
file = (args["file"] || "")
index = (args["index"] || 0).to_i
return RPG::EventCommand.new(323, @indent, [type, file, index])
end
#****************************************************************************
# ムービー系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ ムービーの再生
#--------------------------------------------------------------------------
def convert_movie(args)
file = args["file"]
return RPG::EventCommand.new(261, @indent, [file])
end
#****************************************************************************
# マップ系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ マップ名表示の変更
#--------------------------------------------------------------------------
def convert_map_name_disable(args)
flag = (args["flag"] || "true") == "true" ? 0 : 1
return RPG::EventCommand.new(281, @indent, [flag])
end
#--------------------------------------------------------------------------
# ○ タイルセットの変更
#--------------------------------------------------------------------------
def convert_tileset(args)
id = args["id"].to_i
return RPG::EventCommand.new(282, @indent, [id])
end
#--------------------------------------------------------------------------
# ○ 戦闘背景の変更
#--------------------------------------------------------------------------
def convert_battle_background(args)
floor = (args["floor"] || "")
wall = (args["wall"] || "")
return RPG::EventCommand.new(283, @indent, [floor, wall])
end
#--------------------------------------------------------------------------
# ○ 遠景の変更
#--------------------------------------------------------------------------
def convert_parallax(args)
file = (args["file"] || "")
loop_x = (args["loop_x"] || "false") == "true" ? true : false
loop_y = (args["loop_y"] || "false") == "true" ? true : false
scroll_x = loop_x ? (args["scroll_x"] || 0).to_i : 0
scroll_y = loop_y ? (args["scroll_y"] || 0).to_i : 0
return RPG::EventCommand.new(284, @indent,
[file, loop_x, loop_y, scroll_x, scroll_y])
end
#--------------------------------------------------------------------------
# ○ 指定位置の情報取得
#--------------------------------------------------------------------------
def convert_pos_info(args)
var = args["var"].to_i
type = (args["type"] || 0).to_i
pos = (args["pos"] || "const") == "const" ? 0 : 1
x = args["x"].to_i
y = args["y"].to_i
return RPG::EventCommand.new(285, @indent, [var, type, pos, x, y])
end
#****************************************************************************
# バトル系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 敵キャラのHP増減
#--------------------------------------------------------------------------
def convert_enemy_hp(args)
enemy = args["enemy"].to_i
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
death = (args["death"] || "false") == "true" ? true : false
return RPG::EventCommand.new(331, @indent,
[enemy, operate, type, value.to_i, death])
end
#--------------------------------------------------------------------------
# ○ 敵キャラのMP増減
#--------------------------------------------------------------------------
def convert_enemy_mp(args)
enemy = args["enemy"].to_i
value = args["value"]
type = value.gsub!(/(var\.)/) { "" } ? 1 : 0 #0:数値 1:変数
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(332, @indent,
[enemy, operate, type, value.to_i])
end
#--------------------------------------------------------------------------
# ○ 敵キャラのステート変更
#--------------------------------------------------------------------------
def convert_enemy_state(args)
enemy = args["enemy"].to_i
value = args["value"]
operate = value.gsub!(/(^-)/) { "" } ? 1 : 0 #0:加算 1:減算
return RPG::EventCommand.new(333, @indent, [enemy, operate, value.to_i])
end
#--------------------------------------------------------------------------
# ○ 敵キャラの全回復
#--------------------------------------------------------------------------
def convert_enemy_all_recovery(args)
enemy = args["enemy"].to_i
return RPG::EventCommand.new(334, @indent, [enemy])
end
#--------------------------------------------------------------------------
# ○ 敵キャラの出現
#--------------------------------------------------------------------------
def convert_enemy_appear(args)
enemy = args["enemy"].to_i
return RPG::EventCommand.new(335, @indent, [enemy])
end
#--------------------------------------------------------------------------
# ○ 敵キャラの変身
#--------------------------------------------------------------------------
def convert_enemy_trans(args)
enemy = args["enemy"].to_i
trans = args["trans"].to_i
return RPG::EventCommand.new(336, @indent, [enemy, trans])
end
#--------------------------------------------------------------------------
# ○ 戦闘アニメーションの表示
#--------------------------------------------------------------------------
def convert_battle_anime(args)
enemy = args["enemy"].to_i
anime = args["anime"].to_i
return RPG::EventCommand.new(337, @indent, [enemy, anime])
end
#--------------------------------------------------------------------------
# ○ 戦闘行動の強制
#--------------------------------------------------------------------------
def convert_force(args)
battler = args["battler"] == "enemy" ? 0 : 1
id = args["id"].to_i
skill = args["skill"].to_i
target = args["target"].to_i
return RPG::EventCommand.new(339, @indent, [battler, id, skill, target])
end
#--------------------------------------------------------------------------
# ○ バトルの中断
#--------------------------------------------------------------------------
def convert_battle_abort(args)
return RPG::EventCommand.new(340, @indent, [])
end
#****************************************************************************
# 上級系
#****************************************************************************
#--------------------------------------------------------------------------
# ○ スクリプト
#--------------------------------------------------------------------------
def convert_script(args)
return RPG::EventCommand.new(355, @indent, [args["value"]])
end
#--------------------------------------------------------------------------
# ○ スクリプト(2行目以降)
#--------------------------------------------------------------------------
def convert_script2(args)
return RPG::EventCommand.new(655, @indent, [args["value"]])
end
#****************************************************************************
# その他
#****************************************************************************
#--------------------------------------------------------------------------
# ○ イベントの終了位置
#--------------------------------------------------------------------------
def convert_end(args)
@indent -= 1
return RPG::EventCommand.new(0, @indent + 1, [])
end
#****************************************************************************
# 後処理
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 後処理
#--------------------------------------------------------------------------
alias tes_basic_set_post_processing post_processing
def post_processing
tes_basic_set_post_processing
@route_h = 0
@index = 0
while @data.size > @index
post_processing_events
@index += 1
end
end
#--------------------------------------------------------------------------
# ○ 後処理(各インデックスに対して)
#--------------------------------------------------------------------------
def post_processing_events
# ルートタグのダミーをヘッダに収納
if @data[@index].code == 205
route_h = @index
route = []
while @data[@index + 1].code == 505
@index += 1
route << @data[@index].parameters[0]
end
route << RPG::MoveCommand.new
@data[route_h].parameters[1].list = route
end
# ショップタグの先頭をヘッダコードに変換
if @data[@index].code == 605
@data[@index].code = 302
while @data[@index + 1].code == 605
@index += 1
end
end
end
#****************************************************************************
# バリデータで出来ない値の確認
#****************************************************************************
#--------------------------------------------------------------------------
# ○ 数値確認
#--------------------------------------------------------------------------
def check_numeric(params, param_name, amin, amax)
return unless params[param_name]
unless params[param_name] =~ /^[-+0-9]\d*$/
raise(TesConvertError,
"[#{param_name}] : 数値以外が代入されました。")
end
# 最小値判定
if min = amin
min = params[min.id2name] if min.is_a?(Symbol)
min = eval(min) if min.is_a?(String)
min = min.to_i
if params[param_name].to_i < min
raise(TesConvertError,
"[#{param_name}] : 最小値より小さい値が使われています。")
end
end
# 最大値判定
if max = amax
max = params[max.id2name] if max.is_a?(Symbol)
max = eval(max) if max.is_a?(String)
max = max.to_i
if params[param_name].to_i > max
raise(TesConvertError,
"[#{param_name}] : 最大値より大きい値が使われています。")
end
end
end
#--------------------------------------------------------------------------
# ○ 必須要素
#--------------------------------------------------------------------------
def check_notEmpty(params, param_name)
if !params[param_name] or params[param_name].empty?
raise(TesConvertError,
"[#{param_name}] : 必須引数が省略されています。")
end
end
end
end