IceDragon200

EASM - 0.0.1

Feb 16th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 40.62 KB | None | 0 0
  1. #
  2. # EDOS/lib/module/easm.rb
  3. # by IceDragon
  4. #   EASM is a module for writing events using either the EASM language
  5. #   or the ruby DSL, EASM is converted to the proper RMVX/RMVXA event commands
  6. #   as needed.
  7. #   EASM seeks to ease the creation of event lists through its functions.
  8. module EASM
  9.  
  10.   VERSION = "0.0.1".freeze
  11.  
  12.   extend self
  13.  
  14.   def tokenize(ary)
  15.     result = []
  16.     ary.each_with_index do |line, i|
  17.       (warn "nulls found in ary" && next) unless line
  18.       str = line.delete("\n")
  19.       # is a label line
  20.       tokendata = if data = str.match(/\A\s*(?<name>\S+):/)
  21.         [:label, data[:name]]
  22.       # is a instruction line
  23.       elsif data = str.match(/\A\s*(?<name>\S+)(?:\s+(?<params>.+))?/)
  24.         [:inst, data[:name], data[:params]]
  25.       else
  26.         [:null]
  27.       end
  28.       result.push({ line: i, raw: line, token: tokendata})
  29.     end
  30.     result
  31.   end
  32.  
  33.   def read_easm_stream(stream)
  34.     @variable_table = {}
  35.     stream_nc_ary = stream.each_line.map do |l|
  36.       l.gsub!(/;(.*)/, '');
  37.       l.delete!("\n")
  38.       l.delete!("\r")
  39.       l
  40.     end
  41.     # preprocess
  42.     stream_pp_ary = stream_nc_ary.map do |line|
  43.       if data = line.match(/\#undef\s+(?<name>\S+)/)
  44.         @variable_table.delete(data[:name])
  45.         nil
  46.       elsif data = line.match(/\#define\s+(?<name>\S+)(?:\s+(?<value>.+))?/)
  47.         v = data[:value].to_s
  48.         v.gsub!(@variable_table)
  49.         @variable_table[data[:name]] = v
  50.         nil
  51.       else
  52.         v = line.to_s
  53.         v.gsub!(@variable_table)
  54.         v.gsub!(/\A\s+/, '') # remove preceding whitespace
  55.         v.gsub!(/\s+\z/, '') # remove trailing whitespace
  56.         v
  57.       end
  58.     end
  59.     # convert to Token hashes
  60.     return tokenize(stream_pp_ary)
  61.   end
  62.  
  63.   def load_easm_file(filename)
  64.     tokenlist = read_easm_stream(File.open(filename, "r"))
  65.     tokenlist
  66.   end
  67.  
  68.   module TokenToEventCommands
  69.  
  70.     EventCommmand = Struct.new(:name, :code, :param_types, :cb)
  71.  
  72.     extend self
  73.  
  74.     @evcmds = {}
  75.  
  76.     class << self
  77.       attr_reader :evcmds
  78.     end
  79.  
  80.     ## TODO
  81.     #
  82.     def tokenlist_to_eventcommands!(tokenlist)
  83.  
  84.     end
  85.  
  86.     def evcmd(token_name, evcmd_id, *param_types, &block)
  87.       @evcmds[token_name] = EventCommmand.new(token_name, evcmd_id, param_types, block)
  88.     end
  89.  
  90.     def evcmd_alias(newname, oldname)
  91.       @evcmds[newname] = oldname
  92.     end
  93.  
  94.     ### RMVXA Event Commands
  95.     ##    name                     code  Types
  96.     #
  97.     evcmd :null,                      0
  98.     # show_text face_name, face_index, background, position
  99.     evcmd :show_text,               101, :String, :Integer, :String, :Integer
  100.     evcmd :text,                    401, :String
  101.     ##
  102.     # show_choice ["String", "String", ...], cancel_choice_type
  103.     evcmd :show_choice,             102, [:String], :Integer
  104.     evcmd :choice_branch,           402, :Integer, :String   # When [**]
  105.     evcmd :choice_cancel,           403                      # When Cancel
  106.     evcmd :branch_end,              404                      # Choice End
  107.     ##
  108.     # show_num_input var_id, digits_max
  109.     evcmd :show_num_input,          103, :Integer, :Integer
  110.     ##
  111.     # show_item_choice trg_var_id
  112.     evcmd :show_item_choice,        104, :Integer # ???
  113.     ##
  114.     # show_text_scrolling scroll_speed, scroll_no_fast
  115.     evcmd :show_text_scrolling,     105, :Integer, :Boolean
  116.     evcmd :text_scrolling,          405, :String
  117.     ##
  118.     # comment Comment String
  119.     evcmd :comment,                 108, :String
  120.     evcmd :comment_text,            408, :String
  121.     ## TODO
  122.     # conditional_branch
  123.     evcmd :conditional_branch,      111 do |str|
  124.       # TODO convert str to a param list (and compensate for String parameters)
  125.       case param[0] # opcode
  126.       when 0  # Switch
  127.       when 1  # Variable
  128.       when 2  # Self Switch
  129.       when 3  # Timer
  130.       when 4  # Actor
  131.       when 5  # Enemy
  132.       when 6  # Character
  133.       when 7  # Gold
  134.       when 8  # Item
  135.       when 9  # Weapon
  136.       when 10 # Armor
  137.       when 11 # Button
  138.       when 12 # Script
  139.       when 13 # Vehicle
  140.       end
  141.     end
  142.     evcmd :conditional_branch_else, 411
  143.     evcmd :conditional_branch_end,  412
  144.     # loop
  145.     evcmd :loop,                    112
  146.     evcmd :repeat,                  413
  147.     evcmd :break,                   113
  148.     evcmd :terminate,               115
  149.     ##
  150.     # call_common_event common_event_id
  151.     evcmd :call_common_event,       117, :Integer
  152.     ##
  153.     # label_name:
  154.     # label label_name
  155.     evcmd :label,                   118, :String
  156.     ##
  157.     # jump_to_label label_name
  158.     evcmd :jump_to_label,           119, :String
  159.     ##
  160.     # control_switch range_start, range_end, state
  161.     evcmd :control_switch,          121, :Integer, :Integer, :Integer
  162.     ## TODO
  163.     # control_variable range_start, range_end, opcode, operation, *
  164.     evcmd :control_variable,        122 do |str|
  165.       # TODO convert str to a param list (and compensate for String parameters)
  166.       case param[3]
  167.       when 0 # Constant Integer
  168.       when 1 # Variable Integer
  169.       when 2 # Random Integer, Integer
  170.       when 3 # GameData Integer, Integer, Integer
  171.       when 4 # Script String
  172.       end
  173.     end
  174.     ##
  175.     # control_self_switch self_switch_id, state
  176.     evcmd :control_self_switch,     123, :String, :Integer
  177.     ##
  178.     # control_timer 0, time_in_secs
  179.     # control_timer 1 # turn off
  180.     evcmd :control_timer,           124, :Integer, :Integer
  181.     ##
  182.     # change_gold operation, operand_type, operand
  183.     # change_gold 0, operand_type, operand # increase
  184.     # change_gold 0, 0, integer            #   constant
  185.     # change_gold 0, 1, var_id             #   variable
  186.     # change_gold 1, operand_type, operand # decrease
  187.     # change_gold 1, 0, integer            #   constant
  188.     # change_gold 1, 1, var_id             #   variable
  189.     evcmd :change_gold,             125, :Integer, :Integer, :Integer
  190.     ##
  191.     # change_item item_id, operation, operand_type, operand
  192.     # change_item item_id, 0, operand_type, operand # increase
  193.     # change_item item_id, 0, 0, integer            #   constant
  194.     # change_item item_id, 0, 1, var_id             #   variable
  195.     # change_item item_id, 1, operand_type, operand # descrease
  196.     # change_item item_id, 1, 0, integer            #   constant
  197.     # change_item item_id, 1, 1, var_id             #   variable
  198.     evcmd :change_item,             126, :Integer, :Integer, :Integer, :Integer
  199.     ##
  200.     # change_weapon weapon_id, operation, operand_type, operand, check_equipped
  201.     # change_weapon weapon_id, 0, operand_type, operand, check_equipped # increase
  202.     # change_weapon weapon_id, 0, 0, integer, check_equipped            #   constant
  203.     # change_weapon weapon_id, 0, 1, var_id, check_equipped             #   variable
  204.     # change_weapon weapon_id, 1, operand_type, operand, check_equipped # decrease
  205.     # change_weapon weapon_id, 1, 0, integer, check_equipped            #   constant
  206.     # change_weapon weapon_id, 1, 1, var_id, check_equipped             #   variable
  207.     evcmd :change_weapon,           127, :Integer, :Integer, :Integer, :Integer, :Integer
  208.     ##
  209.     # change_armor armor_id, operation, operand_type, operand, check_equipped
  210.     # change_armor armor_id, 0, operand_type, operand, check_equipped # increase
  211.     # change_armor armor_id, 0, 0, integer, check_equipped            #   constant
  212.     # change_armor armor_id, 0, 1, var_id, check_equipped             #   variable
  213.     # change_armor armor_id, 1, operand_type, operand, check_equipped # decrease
  214.     # change_armor armor_id, 1, 0, integer, check_equipped            #   constant
  215.     # change_armor armor_id, 1, 1, var_id, check_equipped             #   variable
  216.     evcmd :change_armor,            128, :Integer, :Integer, :Integer, :Integer, :Integer
  217.     ##
  218.     # change_party_member 0, actor_id # add actor
  219.     # change_party_member 1, actor_id # remove actor
  220.     evcmd :change_party_member,     129, :Integer, :Integer
  221.     ## TODO
  222.     # change_battle_bgm bgm
  223.     evcmd :change_battle_bgm,       132, "RPG::BGM"
  224.     ## TODO
  225.     # change_battle_end_me me
  226.     evcmd :change_battle_end_me,    133, "RPG::ME"
  227.     ##
  228.     # change_save_access state
  229.     evcmd :change_save_access,      134, :Integer
  230.     ##
  231.     # change_menu_access state
  232.     evcmd :change_menu_access,      135, :Integer
  233.     ##
  234.     # change_encounter state
  235.     evcmd :change_encounter,        136, :Integer
  236.     ##
  237.     # change_formation_access state
  238.     evcmd :change_formation_access, 137, :Integer
  239.     ##
  240.     # change_window_tone state
  241.     evcmd :change_window_tone,      138, :Tone
  242.     ##
  243.     # transfer_player opcode, map_id, p1, p2, keep_dir, fade_type
  244.     # transfer_player 0, map_id, x, y, keep_dir, fade_type
  245.     # transfer_player 1, map_id, var1, var2, keep_dir, fade_type
  246.     evcmd :set_player_position,     201, :Integer, :Integer, :Integer, :Integer, :Integer
  247.     ##
  248.     # set_vehicle_position vehicle_id, opcode, map_id, p1, p2, keep_dir, fade_type
  249.     # set_vehicle_position vehicle_id, 0, map_id, x, y, keep_dir, fade_type
  250.     # set_vehicle_position vehicle_id, 1, map_id, var1, var2, keep_dir, fade_type
  251.     evcmd :set_vehicle_position,    202, :Integer, :Integer, :Integer, :Integer, :Integer
  252.     ##
  253.     # set_event_position event_id, opcode, map_id, p1, p2, keep_dir, fade_type
  254.     # set_event_position event_id, 0, map_id, x, y, keep_dir, fade_type
  255.     # set_event_position event_id, 1, map_id, var1, var2, keep_dir, fade_type
  256.     # set_event_position event_id, 2, map_id, char_id, _, keep_dir, fade_type
  257.     evcmd :set_event_position,      203, :Integer, :Integer, :Integer, :Integer, :Integer
  258.     ## TODO
  259.     # scroll_map ***
  260.     evcmd :scroll_map,              204, :Integer, :Integer, :Integer
  261.     ## TODO
  262.     # set_move_route char_id, move_route
  263.     evcmd :set_move_route,          205, :Integer, "RPG::Event::MoveRoute"
  264.     ##
  265.     # get_on_off_vehicle
  266.     evcmd :get_on_off_vehicle,      206
  267.     ##
  268.     # change_transperency state
  269.     evcmd :change_transperency,     211, :Integer
  270.     ##
  271.     # show_animation char_id, animation_id, wait_for_animation
  272.     evcmd :show_animation,          212, :Integer, :Integer, :Integer
  273.     ##
  274.     # show_balloon char_id, balloon_id, wait_for_balloon
  275.     evcmd :show_balloon,            213, :Integer, :Integer, :Integer
  276.     ##
  277.     # erase_event
  278.     evcmd :erase_event,             214
  279.     ##
  280.     # set_followers_visiblity state
  281.     evcmd :set_followers_visiblity, 216, :Integer
  282.     ##
  283.     # gather_followers
  284.     evcmd :gather_followers,        217
  285.     ##
  286.     # screen_fadeout
  287.     evcmd :screen_fadeout,          221
  288.     ##
  289.     # screen_fadein
  290.     evcmd :screen_fadein,           222
  291.     ##
  292.     # screen_tint tone, time, wait
  293.     evcmd :screen_tint,             223, :Tone, :Integer, :Integer
  294.     ##
  295.     # screen_flash color, time, wait
  296.     evcmd :screen_flash,            224, :Color, :Integer, :Integer
  297.     ##
  298.     # screen_shake force, time, wait
  299.     evcmd :screen_shake,            225, :Integer, :Integer, :Integer
  300.     ##
  301.     # wait time
  302.     evcmd :wait,                    230, :Integer
  303.     ## TODO
  304.     # show_picture
  305.     evcmd :show_picture,            231, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer
  306.     ## TODO
  307.     # move_picture
  308.     evcmd :move_picture,            232, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer, :Integer
  309.     ##
  310.     # rotate_picture picture_id, angle
  311.     evcmd :rotate_picture,          233, :Integer, :Integer
  312.     ##
  313.     # tint_picture picture_id, tone, time, wait
  314.     evcmd :tint_picture,            234, :Integer, :Integer, :Integer, :Integer
  315.     ##
  316.     # erase_picture picture_id
  317.     evcmd :erase_picture,           235, :Integer
  318.     ## TODO
  319.     # set_weather **
  320.     evcmd :set_weather,             236, :Integer, :Integer, :Integer, :Integer, :Integer
  321.     ## TODO
  322.     # set_weather **
  323.     evcmd :set_weather,             236, :Integer, :Integer, :Integer, :Integer, :Integer
  324.  
  325.     ## TODO
  326.     # bgm_play bgm
  327.     evcmd :bgm_play,                241, "RPG::BGM"
  328.     ##
  329.     # bgm_fadeout time_in_seconds
  330.     evcmd :bgm_fadeout,             242, :Integer
  331.     ##
  332.     # bgm_save
  333.     evcmd :bgm_save,                243
  334.     ##
  335.     # bgm_resume
  336.     evcmd :bgm_resume,              244
  337.     ## TODO
  338.     # bgs_play bgs
  339.     evcmd :bgs_play,                245, "RPG::BGS"
  340.     ##
  341.     # bgs_fadeout time_in_seconds
  342.     evcmd :bgs_fadeout,             246, :Integer
  343.     ## TODO
  344.     # me_play me
  345.     evcmd :me_play,                 249, "RPG::ME"
  346.     ## TODO
  347.     # se_play se
  348.     evcmd :se_play,                 250, "RPG::SE"
  349.     ##
  350.     # se_stop
  351.     evcmd :se_stop,                 251
  352.  
  353.     ##
  354.     # movie_play filename
  355.     evcmd :movie_play,              261, :String
  356.  
  357.     ##
  358.     # set_map_name_display state
  359.     evcmd :set_map_name_display,    281, :Integer
  360.  
  361.     ##
  362.     # change_tileset tileset
  363.     evcmd :change_tileset,          282, "RPG::Tileset"
  364.  
  365.     ## TODO
  366.     # change_battle_background
  367.     evcmd :change_battle_background,283, :String, :String
  368.  
  369.     ## TODO
  370.     # change_parallax_background
  371.     evcmd :change_parallax_background,284, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown
  372.  
  373.     ## TODO
  374.     # get_location_info variable_id, info_id, is_direct, x, y
  375.     evcmd :get_location_info,       285, :Integer, :Integer, :Integer, :Integer, :Integer
  376.  
  377.     ## TODO
  378.     # process_battle
  379.     evcmd :process_battle,          301
  380.     evcmd :result_branch_win,       601
  381.     evcmd :result_branch_escape,    602
  382.     evcmd :result_branch_lose,      603
  383.     ## TODO
  384.     # process_shop
  385.     evcmd :process_shop,            302
  386.     ## TODO
  387.     # process_name_input
  388.     evcmd :process_name_input,      303
  389.     ##
  390.     # process_menu
  391.     evcmd :process_menu,            351
  392.     ##
  393.     # process_save
  394.     evcmd :process_save,            352
  395.     ##
  396.     # process_gameover
  397.     evcmd :process_gameover,        353
  398.     ##
  399.     # process_title
  400.     evcmd :process_title,           354
  401.  
  402.     ## TODO
  403.     # change_actor_hp
  404.     evcmd :change_actor_hp,         311, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown
  405.     ## TODO
  406.     # change_actor_mp
  407.     evcmd :change_actor_mp,         312, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown
  408.     ## TODO
  409.     # change_actor_state
  410.     evcmd :change_actor_state,      313, :Unknown, :Unknown, :Unknown, :Unknown
  411.     ## TODO
  412.     # actor_recover_all
  413.     evcmd :actor_recover_all,       314, :Unknown, :Unknown
  414.     ## TODO
  415.     # change_actor_exp
  416.     evcmd :change_actor_exp,        315, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown
  417.     ## TODO
  418.     # change_actor_level
  419.     evcmd :change_actor_level,      316, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown
  420.     ## TODO
  421.     # change_actor_parameters
  422.     evcmd :change_actor_parameters, 317, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown, :Unknown
  423.     ## TODO
  424.     # change_actor_skill
  425.     evcmd :change_actor_skill,      318, :Unknown, :Unknown, :Unknown, :Unknown
  426.     ## TODO
  427.     # change_actor_equip
  428.     evcmd :change_actor_equip,      319, :Unknown, :Unknown, :Unknown
  429.     ##
  430.     # change_actor_name actor_id, new_name
  431.     evcmd :change_actor_name,       320, :Integer, :String
  432.     ##
  433.     # change_actor_class actor_id, class_id
  434.     evcmd :change_actor_class,      321, :Integer, :Integer
  435.     ##
  436.     # change_actor_graphic actor_id, character_name, character_index, face_name, face_index
  437.     evcmd :change_actor_graphic,    322, :Integer, :String, :Integer, :String, :Integer
  438.     ##
  439.     # change_graphic actor_id, character_name, character_index, face_name, face_index
  440.     evcmd :change_vehicle_graphic,  323, :Integer, :String, :Integer
  441.     ##
  442.     # change_actor_nickname actor_id, new_name
  443.     evcmd :change_actor_nickname,   324, :Integer, :String
  444.  
  445.     ## TODO
  446.     # change_enemy_hp
  447.     evcmd :change_enemy_hp,         331
  448.     ## TODO
  449.     # change_enemy_mp
  450.     evcmd :change_enemy_mp,         332
  451.     ## TODO
  452.     # change_enemy_state
  453.     evcmd :change_enemy_state,      333
  454.     ##
  455.     # enemy_recover_all
  456.     evcmd :enemy_recover_all,       334
  457.     ##
  458.     # enemy_appear enemy_index
  459.     evcmd :enemy_appear,            335, :Integer
  460.     ##
  461.     # enemy_transform enemy_index, new_enemy_id
  462.     evcmd :enemy_transform,         336, :Integer, :Integer
  463.     ##
  464.     # show_battle_animation enemy_index, animation_id
  465.     evcmd :show_battle_animation,   337, :Integer, :Integer
  466.     ## TODO
  467.     # battle_force_action
  468.     evcmd :battle_force_action,     339, :Unknown, :Unknown, :Unknown, :Unknown
  469.     ##
  470.     # battle_abort
  471.     evcmd :battle_abort,            340
  472.  
  473.     ##
  474.     # script ruby_string
  475.     evcmd :script,                  355, :String
  476.     evcmd :script_text,             655. :String
  477.  
  478.     ### aliases
  479.     evcmd_alias :if, :conditional_branch
  480.     evcmd_alias :transfer_player, :set_player_position
  481.     evcmd_alias :eval, :script
  482.  
  483.     evcmds.each_value do |ec|
  484.       puts "#{ec.code} => \"#{ec.name}\"" if ec.is_a?(EventCommmand)
  485.     end
  486.   end
  487.  
  488.   class EventCommandBuilder
  489.  
  490.     attr_reader :list
  491.     attr_accessor :indent
  492.  
  493.     def initialize
  494.       @list = []
  495.     end
  496.  
  497.     def clear
  498.       @list.clear
  499.     end
  500.  
  501.     def partial
  502.       old_list = @list
  503.       @list = []
  504.       yield
  505.       new_list = @list
  506.       @list = old_list
  507.       return new_list
  508.     end
  509.  
  510.     def concat(evcmds)
  511.       @list.concat(evcmds)
  512.     end
  513.  
  514.     def push(*evcmds)
  515.       concat(evcmds)
  516.     end
  517.  
  518.     def _inc_indent
  519.       @indent += 1
  520.       if block_given?
  521.         yield
  522.         _dec_indent
  523.       end
  524.     end
  525.  
  526.     def _dec_indent
  527.       @indent -= 1
  528.     end
  529.  
  530.     append = "_evcmd_"
  531.     TokenToEventCommands.evcmds.each do |key, command|
  532.       case command
  533.       ##
  534.       when String, Symbol
  535.         define_method(append+key.to_s) { |*args, &block| send(append+command.to_s, *args, &block) }
  536.       ## EventCommmand<:name, :id, :param_types, :cb>
  537.       when TokenToEventCommands::EventCommmand
  538.         define_method(append+key.to_s) do |*args, &block|
  539.           result = args
  540.           result = command.cb.call(*args, &block) if command.cb
  541.           __push(RPG::EventCommand.new(command.code, indent, result))
  542.         end
  543.       else
  544.         warn "Unknown command type #{command.class}"
  545.       end
  546.     end
  547.  
  548.     # puts instance_methods.select { |str| str.to_s.start_with?(append) }
  549.  
  550.     # _evcmd_null
  551.     def null
  552.       _evcmd_null
  553.     end
  554.  
  555.     # _evcmd_show_text
  556.     # _evcmd_text
  557.     def show_text(opts)
  558.       face_name  = ""
  559.       face_index = 0
  560.       background = ""
  561.       position   = 2
  562.       texts = []
  563.       case opts
  564.       when Array
  565.         texts = opts
  566.       when String
  567.         texts = [opts]
  568.       when Hash
  569.         face_name  = opts[:face_name]  || face_name
  570.         face_index = opts[:face_index] || face_index
  571.         background = opts[:background] || background
  572.         position   = opts[:position]   || position
  573.         texts      = opts.fetch(:texts)
  574.       else
  575.         raise TypeError,
  576.               "wrong argument type #{ops.class} (expected Array, Hash, or String)"
  577.       end
  578.       _evcmd_show_text(face_name, face_index, background, position)
  579.       texts.each { |str| _evcmd_text str }
  580.     end
  581.     alias :text :show_text
  582.  
  583.     # _evcmd_show_choice
  584.     # _evcmd_choice_branch
  585.     # _evcmd_choice_cancel
  586.     # _evcmd_choice_end
  587.     def show_choice(opts)
  588.       choices = opts.fetch(:choices).map(&:to_s)
  589.       cancel_type = opts[:cancel_type] || 0
  590.       _evcmd_show_choice(choices, cancel_type)
  591.       choices.each_with_index do |str, index|
  592.         _evcmd_choice_branch index, str
  593.         _inc_indent do
  594.           yield str, index
  595.           _evcmd_null
  596.         end
  597.       end
  598.       #if cancel_type > 0
  599.       #  _evcmd_choice_cancel
  600.       #  _evcmd_null
  601.       #end
  602.       _evcmd_choice_end
  603.     end
  604.     alias :choice :show_choice
  605.  
  606.     # _evcmd_show_num_input
  607.     def show_number_input(variable_id, digits_max)
  608.       _evcmd_show_num_input variable_id, digits_max
  609.     end
  610.     alias :show_num_input :show_number_input
  611.     alias :num_input :show_number_input
  612.  
  613.     # _evcmd_show_item_choice
  614.     def show_item_choice(variable_id)
  615.       _evcmd_show_item_choice variable_id
  616.     end
  617.     alias :item_choice :show_item_choice
  618.  
  619.     # _evcmd_show_text_scrolling
  620.     # _evcmd_text_scrolling
  621.     def show_text_scrolling(opts)
  622.       speed = opts[:speed] || 5
  623.       fast_scroll = opts[:fast_scroll]
  624.       texts = opts.fetch(texts)
  625.       _evcmd_show_text_scrolling speed, !fast_scroll
  626.       texts.each { |str| _evcmd_text_scrolling str }
  627.     end
  628.     alias :scrolling_text :show_text_scrolling
  629.  
  630.     # _evcmd_comment
  631.     # _evcmd_comment_text
  632.     def comment(*comments)
  633.       first = comments.pop
  634.       _evcmd_comment first
  635.       comments.each { |str| _evcmd_comment_text str }
  636.     end
  637.  
  638.     # _evcmd_conditional_branch
  639.     def conditional_branch(*args)
  640.  
  641.     end
  642.  
  643.     # _evcmd_branch_else
  644.     # _evcmd_loop
  645.     # _evcmd_repeat
  646.     # _evcmd_break
  647.     # _evcmd_terminate
  648.     # _evcmd_call_common_event
  649.     # _evcmd_label
  650.     # _evcmd_jump_to_label
  651.     # _evcmd_control_switch
  652.     # _evcmd_control_variable
  653.     # _evcmd_control_self_switch
  654.     # _evcmd_control_timer
  655.     # _evcmd_change_gold
  656.     # change_gold operation, operand_type, operand
  657.     def change_gold(operation, operand_type, operand)
  658.       _evcmd_change_gold(operation.to_i, operand_type.to_i, operand.to_i)
  659.     end
  660.  
  661.     def change_gold_i(operation, value)
  662.       change_gold(operation, 0, value)
  663.     end
  664.  
  665.     def change_gold_var(operation, variable_id)
  666.       change_gold(operation, 1, variable_id)
  667.     end
  668.  
  669.     def increase_gold(operand_type, value)
  670.       change_gold(0, operand_type, value)
  671.     end
  672.  
  673.     def decrease_gold(operand_type, value)
  674.       change_gold(1, operand_type, value)
  675.     end
  676.  
  677.     def increase_gold_i(value)
  678.       change_gold_i(0, value)
  679.     end
  680.  
  681.     def decrease_gold_i(value)
  682.       change_gold_i(1, value)
  683.     end
  684.  
  685.     def increase_gold_var(variable_id)
  686.       change_gold_var(0, variable_id)
  687.     end
  688.  
  689.     def decrease_gold_var(variable_id)
  690.       change_gold_var(1, variable_id)
  691.     end
  692.  
  693.     # _evcmd_change_item
  694.     def change_item(operation, operand_type, operand)
  695.       _evcmd_change_item(operation.to_i, operand_type.to_i, operand.to_i)
  696.     end
  697.  
  698.     def change_item_i(operation, value)
  699.       change_item(operation, 0, value)
  700.     end
  701.  
  702.     def change_item_var(operation, variable_id)
  703.       change_item(operation, 1, variable_id)
  704.     end
  705.  
  706.     def increase_item(operand_type, value)
  707.       change_item(0, operand_type, value)
  708.     end
  709.  
  710.     def decrease_item(operand_type, value)
  711.       change_item(1, operand_type, value)
  712.     end
  713.  
  714.     def increase_item_i(value)
  715.       change_item_i(0, value)
  716.     end
  717.  
  718.     def decrease_item_i(value)
  719.       change_item_i(1, value)
  720.     end
  721.  
  722.     def increase_item_var(variable_id)
  723.       change_item_var(0, variable_id)
  724.     end
  725.  
  726.     def decrease_item_var(variable_id)
  727.       change_item_var(1, variable_id)
  728.     end
  729.  
  730.     # _evcmd_change_weapon
  731.     def change_weapon(operation, operand_type, operand, check_equipped=false)
  732.       _evcmd_change_weapon(operation.to_i, operand_type.to_i, operand.to_i, check_equipped)
  733.     end
  734.  
  735.     def change_weapon_i(operation, value, check_equipped=false)
  736.       change_weapon(operation, 0, value, check_equipped)
  737.     end
  738.  
  739.     def change_weapon_var(operation, variable_id, check_equipped=false)
  740.       change_weapon(operation, 1, variable_id, check_equipped)
  741.     end
  742.  
  743.     def increase_weapon(operand_type, value, check_equipped=false)
  744.       change_weapon(0, operand_type, value, check_equipped)
  745.     end
  746.  
  747.     def decrease_weapon(operand_type, value, check_equipped=false)
  748.       change_weapon(1, operand_type, value, check_equipped)
  749.     end
  750.  
  751.     def increase_weapon_i(value, check_equipped=false)
  752.       change_weapon_i(0, value, check_equipped)
  753.     end
  754.  
  755.     def decrease_weapon_i(value, check_equipped=false)
  756.       change_weapon_i(1, value, check_equipped)
  757.     end
  758.  
  759.     def increase_weapon_var(variable_id, check_equipped=false)
  760.       change_weapon_var(0, variable_id, check_equipped)
  761.     end
  762.  
  763.     def decrease_weapon_var(variable_id, check_equipped=false)
  764.       change_weapon_var(1, variable_id, check_equipped)
  765.     end
  766.  
  767.     # _evcmd_change_armor
  768.     def change_armor(operation, operand_type, operand, check_equipped=false)
  769.       _evcmd_change_armor(operation.to_i, operand_type.to_i, operand.to_i, check_equipped)
  770.     end
  771.  
  772.     def change_armor_i(operation, value, check_equipped=false)
  773.       change_armor(operation, 0, value, check_equipped)
  774.     end
  775.  
  776.     def change_armor_var(operation, variable_id, check_equipped=false)
  777.       change_armor(operation, 1, variable_id, check_equipped)
  778.     end
  779.  
  780.     def increase_armor(operand_type, value, check_equipped=false)
  781.       change_armor(0, operand_type, value, check_equipped)
  782.     end
  783.  
  784.     def decrease_armor(operand_type, value, check_equipped=false)
  785.       change_armor(1, operand_type, value, check_equipped)
  786.     end
  787.  
  788.     def increase_armor_i(value, check_equipped=false)
  789.       change_armor_i(0, value, check_equipped)
  790.     end
  791.  
  792.     def decrease_armor_i(value, check_equipped=false)
  793.       change_armor_i(1, value, check_equipped)
  794.     end
  795.  
  796.     def increase_armor_var(variable_id, check_equipped=false)
  797.       change_armor_var(0, variable_id, check_equipped)
  798.     end
  799.  
  800.     def decrease_armor_var(variable_id, check_equipped=false)
  801.       change_armor_var(1, variable_id, check_equipped)
  802.     end
  803.  
  804.     # _evcmd_change_party_member
  805.     def change_party_member(operation, actor_id)
  806.       _evcmd_change_party_member(operation.to_i, actor_id.to_i)
  807.     end
  808.  
  809.     def add_party_member(actor_id)
  810.       change_party_member(0, actor_id)
  811.     end
  812.  
  813.     def remove_party_member(actor_id)
  814.       change_party_member(1, actor_id)
  815.     end
  816.  
  817.     # _evcmd_change_battle_bgm
  818.     # _evcmd_change_battle_end_me
  819.     # _evcmd_change_save_access
  820.     # _evcmd_change_menu_access
  821.     # _evcmd_change_encounter
  822.     # _evcmd_change_formation_access
  823.     # _evcmd_change_window_tone
  824.     # _evcmd_set_player_position
  825.     # _evcmd_set_vehicle_position
  826.     # _evcmd_set_event_position
  827.     # _evcmd_scroll_map
  828.     # _evcmd_set_move_route
  829.     # _evcmd_get_on_off_vehicle
  830.     def get_on_off_vehicle
  831.       _evcmd_get_on_off_vehicle
  832.     end
  833.  
  834.     # _evcmd_change_transperency
  835.     def change_transperency(bool)
  836.       _evcmd_change_transperency(bool ? 0 : 1)
  837.     end
  838.  
  839.     # _evcmd_show_animation
  840.     def show_animation(character_id, animation_id, should_wait=false)
  841.       _evcmd_show_animation(character_id.to_i, animation_id.to_i, !!should_wait)
  842.     end
  843.  
  844.     # _evcmd_show_balloon
  845.     def show_balloon(character_id, balloon_id, should_wait=false)
  846.       _evcmd_show_balloon(character_id.to_i, balloon_id.to_i, !!should_wait)
  847.     end
  848.  
  849.     # _evcmd_erase_event
  850.     def erase_event
  851.       _evcmd_erase_event
  852.     end
  853.  
  854.     # _evcmd_set_followers_visiblity
  855.     def set_followers_visiblity(bool)
  856.       _evcmd_set_followers_visiblity(!!bool)
  857.     end
  858.  
  859.     # _evcmd_gather_followers
  860.     # _evcmd_screen_fadeout
  861.     # _evcmd_screen_fadein
  862.     # _evcmd_screen_tint
  863.     # _evcmd_screen_flash
  864.     # _evcmd_screen_shake
  865.     # _evcmd_wait
  866.     def wait(n)
  867.       _evcmd_wait(n.to_i)
  868.     end
  869.  
  870.     # _evcmd_show_picture
  871.     # _evcmd_move_picture
  872.     # _evcmd_rotate_picture
  873.     # _evcmd_tint_picture
  874.     # _evcmd_erase_picture
  875.     # _evcmd_set_weather
  876.     # _evcmd_bgm_play
  877.     def bgm_play(filename, volume=100, pitch=100)
  878.       _evcmd_bgm_play(RPG::BGM.new(filename, volume, pitch))
  879.     end
  880.     alias :play_bgm :bgm_play
  881.  
  882.     # _evcmd_bgm_fadeout
  883.     def bgm_fadeout(seconds)
  884.       _evcmd_bgm_fadeout(seconds)
  885.     end
  886.  
  887.     # _evcmd_bgm_save
  888.     def bgm_save
  889.       _evcmd_bgm_save
  890.     end
  891.     alias :save_bgm :bgm_save
  892.  
  893.     # _evcmd_bgm_resume
  894.     def bgm_resume
  895.       _evcmd_bgm_resume
  896.     end
  897.     alias :resume_bgm :bgm_resume
  898.  
  899.     # _evcmd_bgs_play
  900.     def bgs_play(filename, volume=100, pitch=100)
  901.         _evcmd_bgs_play(RPG::BGS.new(filename, volume, pitch))
  902.     end
  903.     alias :play_bgs :bgs_play
  904.  
  905.     # _evcmd_bgs_fadeout
  906.     # _evcmd_me_play
  907.     def me_play(filename, volume=100, pitch=100)
  908.         _evcmd_me_play(RPG::ME.new(filename, volume, pitch))
  909.     end
  910.     alias :play_me :me_play
  911.  
  912.     # _evcmd_se_play
  913.     def se_play(filename, volume=100, pitch=100)
  914.       _evcmd_se_play(RPG::SE.new(filename, volume, pitch))
  915.     end
  916.     alias :play_se :se_play
  917.  
  918.     # _evcmd_se_stop
  919.     def se_stop
  920.       _evcmd_se_stop
  921.     end
  922.     alias :stop_se :se_stop
  923.  
  924.     # _evcmd_movie_play
  925.     def movie_play(filename)
  926.       _evcmd_movie_play(filename)
  927.     end
  928.     alias :play_movie :movie_play
  929.  
  930.     # _evcmd_set_map_name_display
  931.     def set_map_name_display
  932.       _evcmd_set_map_name_display(bool ? 0 : 1)
  933.     end
  934.     alias :toggle_map_name_display :set_map_name_display
  935.  
  936.     # _evcmd_change_tileset
  937.     def change_tileset(tileset_id)
  938.       _evcmd_change_tileset(tileset_id.to_i)
  939.     end
  940.  
  941.     # _evcmd_change_battle_background
  942.     def change_battle_background(top_filename, bottom_filename)
  943.       _evcmd_change_battle_background(String(top_filename),
  944.                                       String(bottom_filename))
  945.     end
  946.  
  947.     # _evcmd_change_parallax_background
  948.     # _evcmd_get_location_info
  949.     # _evcmd_process_battle
  950.     # _evcmd_result_if_win
  951.     # _evcmd_result_if_escape
  952.     # _evcmd_result_if_lose
  953.     # _evcmd_process_shop
  954.     # _evcmd_process_name_input
  955.     # _evcmd_process_menu
  956.     # _evcmd_process_save
  957.     # _evcmd_process_gameover
  958.     # _evcmd_process_title
  959.     # _evcmd_change_actor_hp
  960.     # _evcmd_change_actor_mp
  961.     # _evcmd_change_actor_state
  962.     # _evcmd_actor_recover_all
  963.     # _evcmd_change_actor_exp
  964.     # _evcmd_change_actor_level
  965.     # _evcmd_change_actor_parameters
  966.     # _evcmd_change_actor_skill
  967.     # _evcmd_change_actor_equip
  968.     # _evcmd_change_actor_name
  969.     # _evcmd_change_actor_class
  970.     # _evcmd_change_actor_graphic
  971.     # _evcmd_change_vehicle_graphic
  972.     # _evcmd_change_actor_nickname
  973.     # _evcmd_change_enemy_hp
  974.     # _evcmd_change_enemy_mp
  975.     # _evcmd_change_enemy_state
  976.     # _evcmd_enemy_recover_all
  977.     # _evcmd_enemy_appear
  978.     # _evcmd_enemy_transform
  979.     # _evcmd_show_battle_animation
  980.     # _evcmd_battle_force_action
  981.     # _evcmd_battle_abort
  982.     def battle_abort
  983.       _evcmd_battle_abort
  984.     end
  985.     alias :abort_battle :battle_abort
  986.  
  987.     # _evcmd_script
  988.     # _evcmd_script_text
  989.     def script(str)
  990.       lines = str.each_line.to_a
  991.       first = lines.pop
  992.       _evcmd_script(first)
  993.       lines.each { |line| _evcmd_script_text line }
  994.     end
  995.  
  996.     # _evcmd_if
  997.     alias :eif :conditional_branch
  998.     # _evcmd_transfer_player
  999.     alias :transfer_player :set_player_position
  1000.     # _evcmd_eval
  1001.     alias :eeval :script
  1002.  
  1003.   end
  1004.  
  1005. end
  1006.  
  1007. __END__ #
  1008. # ####### MESSAGE #######
  1009. # Show Text, displays text (speech)
  1010. show_text                                101 ["", 0, 0, 2]
  1011. text                                     401 ["text goes here"]
  1012. # Show choices, displays choices (yes, no)
  1013. show_choice                              102 [["Yes", "No"], 2]
  1014. branch_choice                            402 [0, "Yes"]
  1015.   null                                     000 []
  1016. branch_choice                            402 [1, "No"]
  1017.   null                                     000 []
  1018. branch_end                               404 []
  1019. # Input a number (ties into variables)
  1020. show_num_input                           103 [1, 1]
  1021. # Select a key item
  1022. show_item_choice                         104 [1]
  1023. # scrolling text, easy enough
  1024. show_text_scrolling                      105 [2, false]
  1025. text_scrolling                           405 ["yoloswag"]
  1026. text_scrolling                           405 ["420mlg"]
  1027. # ####### GAME PROGRESSION ######
  1028. # control switches through this event by turning them on/off
  1029. control_switch                           121 [1, 1, 0]
  1030. # same as above but with variables
  1031. control_variable                         122 [1, 1, 0, 0, 0]
  1032. # self switches!
  1033. control_self_switch                      123 ["A", 0]
  1034. # this is the timer
  1035. control_timer                            124 [0, 60]
  1036. # ####### FLOW CONTROL #######
  1037. # Conditional Brances, basically if "x" or "y" (any variable you want)
  1038. # is fulilled (or not) it would branch off
  1039. conditional_branch                       111 [0, 1, 0]
  1040.   null                                     000 []
  1041. branch_else                              411 []
  1042.   null                                     000 []
  1043.                                          412 []
  1044. # loop (start)
  1045. loop                                     112 []
  1046.   null                                     000 []
  1047. repeat                                   413 []
  1048. # break loop
  1049. break                                    113 []
  1050. # exit event processing
  1051. terminate                                115 []
  1052. # Call common event
  1053. call_common_event                        117 [1]
  1054. # Label
  1055. label                                    118 ["hjg"]
  1056. # jump to the specific label
  1057. jump_to_label                            119 ["hjg"]
  1058. # ####### CHANGE PARTY (ITEMS) #######
  1059. # change gold in inventory
  1060. change_gold                              125 [0, 0, 1]
  1061. # change items
  1062. change_item                              126 [2, 0, 0, 1]
  1063. # change weapons
  1064. change_weapon                            127 [1, 0, 0, 1, false]
  1065. # change armor
  1066. change_armor                             128 [1, 0, 0, 1, false]
  1067. # change party member
  1068. change_party_member                      129 [1, 0, 0]
  1069. # ####### CHANGE ACTOR STATS #######
  1070. # change actor HP
  1071. change_actor_hp                          311 [0, 0, 0, 0, 1, false]
  1072. # change MP
  1073. change_actor_mp                          312 [0, 0, 0, 0, 1]
  1074. # change state
  1075. change_actor_state                       313 [0, 0, 0, 8]
  1076. # recover all; heals your health
  1077. actor_recover_all                        314 [0, 0]
  1078. # change EXP
  1079. change_actor_exp                         315 [0, 0, 0, 0, 1, false]
  1080. # change level
  1081. change_actor_level                       316 [0, 0, 0, 0, 1, false]
  1082. # change parameters (edit stats)
  1083. change_actor_parameters                  317 [0, 1, 0, 0, 0, 1]
  1084. # add/remove skills
  1085. change_actor_skill                       318 [0, 1, 0, 23]
  1086. # change equipment for a party member
  1087. change_actor_equip                       319 [1, 0, 0]
  1088. # change a characters name
  1089. change_actor_name                        320 [1, "Poopman"]
  1090. # change a characters class
  1091. change_actor_class                       321 [1, 1]
  1092. # change nickname
  1093. change_actor_nickname                    324 [1, "EROCK"]
  1094. null                                     000 []
  1095. # ###### MOVEMENT COMMANDS ######
  1096. # Transfer player to map id/coordinates
  1097. set_player_position                      201 [0, 1, 6, 10, 0, 0]
  1098. # set vehicle location
  1099. set_vehicle_position                     202 [0, 0, 1, 5, 6]
  1100. # set event location
  1101. set_event_position                       203 [0, 0, 5, 6, 0]
  1102. # scroll/move around your map
  1103. scroll_map                               204 [2, 1, 4]
  1104. # set move route for an event
  1105. set_move_route                           205 [-1, {"repeat"=>false, "skippable"=>false, "wait"=>true, "list"=>[{"code"=>4, "parameters"=>[]}, {"code"=>0, "parameters"=>[]}]}]
  1106.                                          505 [{"code"=>4, "parameters"=>[]}]
  1107. # get on/off vehicle
  1108. get_on_off_vehicle                       206 []
  1109. # ####### CHARACTER #######
  1110. # change character transparency on/off
  1111. change_transperency                      211 [0]
  1112. # disable/enable player followers
  1113. set_followers_visiblity                  216 [0]
  1114. # gather followers
  1115. gather_followers                         217 []
  1116. # show animation (by id)
  1117. show_animation                           212 [-1, 1, false]
  1118. # show balloon icon
  1119. show_balloon                             213 [-1, 1, false]
  1120. # erase event
  1121. erase_event                              214 []
  1122. # ####### SCREEN EFFECTS #######
  1123. # fadeout screen
  1124. screen_fadeout                           221 []
  1125. # fade in screen
  1126. screen_fadein                            222 []
  1127. # tint screen
  1128. screen_tint                              223 [{}, 60, true]
  1129. # flash screen
  1130. screen_flash                             224 [{}, 60, true]
  1131. # shake screen
  1132. screen_shake                             225 [5, 5, 60, true]
  1133. # ####### WAIT #######
  1134. # wait for a set amount of frames
  1135. wait                                     230 [60]
  1136. # ####### PICTURE AND WEATHER #######
  1137. # show picture
  1138. show_picture                             231 [1, "", 0, 0, 0, 0, 100, 100, 255, 0]
  1139. # move picture
  1140. move_picture                             232 [1, nil, 0, 0, 0, 0, 100, 100, 255, 0, 60, true]
  1141. # rotate picture
  1142. rotate_picture                           233 [1, 5]
  1143. # tint picture
  1144. tint_picture                             234 [1, {}, 60, true]
  1145. # erase picture
  1146. erase_picture                            235 [1]
  1147. # set weather effects
  1148. set_weather                              236 [":none", 9, 0, true]
  1149. # ####### MUSIC AND SOUNDS #######
  1150. # PLAY BGM
  1151. bgm_play                                 241 [{"name"=>"Airship", "volume"=>100, "pitch"=>100}]
  1152. # fadeout bgm
  1153. bgm_fadeout                              242 [10]
  1154. # save bgm location
  1155. bgm_save                                 243 []
  1156. # replay bgm
  1157. bgm_resume                               244 []
  1158. # play background sound
  1159. bgs_play                                 245 [{"name"=>"Drips", "volume"=>80, "pitch"=>100}]
  1160. # fadeout bgs
  1161. bgs_fadeout                              246 [10]
  1162. # play ME
  1163. me_play                                  249 [{"name"=>"Gameover1", "pitch"=>100, "volume"=>100}]
  1164. # play sound effect
  1165. se_play                                  250 [{"name"=>"Bite", "pitch"=>100, "volume"=>80}]
  1166. # stop sound effect
  1167. se_stop                                  251 []
  1168. null                                     000 []
  1169. # ####### SCENE CONTROL #######
  1170. # battle processing
  1171. process_battle                           301 [0, 1, false, false]
  1172. # Shop processing
  1173. process_shop                             302 [0, 1, 0, 0, false]
  1174. # name input processing, allows the player to choose a name
  1175. process_name_input                       303 [1, 6]
  1176. # force open menu screen
  1177. process_menu                             351 []
  1178. # force open save screen
  1179. process_save                             352 []
  1180. # game over
  1181. process_gameover                         353 []
  1182. # return to title screen
  1183. process_title                            354 []
  1184. # ####### SYSTEM SETTINGS #######
  1185. # change battle music
  1186. change_battle_bgm                        132 [{"name"=>"Dungeon2", "volume"=>100, "pitch"=>100}]
  1187. # change battle end jingle
  1188. change_battle_end_me                     133 [{"name"=>"Victory1", "pitch"=>100, "volume"=>100}]
  1189. # enable/disable save ability
  1190. change_save_access                       134 [0]
  1191. # enable/disable menu access
  1192. change_menu_access                       135 [0]
  1193. # enable/disable random encounters
  1194. change_encounter                         136 [0]
  1195. # change access to formation
  1196. change_formation_access                  137 [0]
  1197. # change window color
  1198. change_window_tone                       138 [{}]
  1199. # change actor graphic (sprite and face)
  1200. change_actor_graphic                     322 [1, "Actor4", 0, "Actor4", 0]
  1201. # change vehicle graphic
  1202. change_vehicle_graphic                   323 [1, "Vehicle", 1]
  1203. # play movie
  1204. movie_play                               261 [""]
  1205. # ####### MAP ######
  1206. # toggle map name display
  1207. set_map_name_display                     281 [0]
  1208. # change tileset
  1209. change_tileset                           282 [1]
  1210. # change battleback
  1211. change_battle_background                 283 ["DecorativeTile", "DemonCastle2"]
  1212. # change parallax background
  1213. change_parallax_background               284 ["SeaofClouds", false, false, 0, 0]
  1214. # get location info (id tags, coordinates) from a specific coordinate
  1215. get_location_info                        285 [1, 0, 0, 5, 8]
  1216. # ####### BATTLE STUFF ######
  1217. # increase/decrease enemy HP
  1218. change_enemy_hp                          331 [-1, 0, 0, 1, false]
  1219. # increase/decrease enemy MP
  1220. change_enemy_mp                          332 [-1, 0, 0, 1]
  1221. # change enemy state
  1222. change_enemy_state                       333 [-1, 0, 7]
  1223. # recover all enemies HP
  1224. enemy_recover_all                        334 [-1]
  1225. # enemy appears
  1226. enemy_appear                             335 [0]
  1227. # enemy transforms
  1228. enemy_transform                          336 [0, 1]
  1229. # show battle animation
  1230. show_battle_animation                    337 [-1, 1]
  1231. # force an action
  1232. battle_force_action                      339 [0, 0, 1, -1]
  1233. # abort battle
  1234. battle_abort                             340 []
  1235. # ############## SCRIPT cALL
  1236. script                                   355 [""]
  1237. null                                     000 []
  1238.  
  1239. __END__
  1240.  
  1241. test_easm = <<-__EOF__
  1242. #define CONSTANT "delta"
  1243. #define XINST inst2
  1244.  
  1245. main:
  1246.   inst1
  1247.   XINST CONSTANT ; something
  1248.   if (x == y)
  1249.     inst3
  1250.   endif
  1251.   ; comment
  1252. __EOF__
  1253.  
  1254. puts EASM.read_easm_stream(test_easm).map(&:inspect).join("\n")
Advertisement
Add Comment
Please, Sign In to add comment