# ruby_classic_wrap.rb
# Author: WaywardHeart (2023)

# Creative Commons CC0: To the extent possible under law, WaywardHeart has
# dedicated all copyright and related and neighboring rights to this script
# to the public domain worldwide.
# https://creativecommons.org/publicdomain/zero/1.0/

# This preload script provides functions that existed in RPG Maker's versions of Ruby,
# but were renamed or changed in the current Ruby version used in mkxp-z, so that games
# (or other preload scripts) that expect the older Ruby behavior can function.

class Hash
	alias_method :index, :key unless method_defined?(:index)
end

class Object
	TRUE = true unless const_defined?("TRUE")
	FALSE = false unless const_defined?("FALSE")
	NIL = nil unless const_defined?("NIL")
	
	alias_method :id, :object_id unless method_defined?(:id)
	alias_method :type, :class unless method_defined?(:type)
end

class NilClass
	def id
		4 # Starting with Ruby2, 64-bit builds of ruby make this 8
	end
end

class TrueClass
	def id
		2 # Starting with Ruby2, 64-bit builds of ruby make this 20
	end
end

if defined?(BasicObject) && BasicObject.instance_method(:initialize).arity == 0
	# In ruby 1.9.2, and only ruby 1.9.2, BasicObject.initialize accepted any number of arguments
	class BasicObject
		def initialize(*args)
		end
	end
end