Jump to content
Rpg²S Forum

*Module Craft


ProGM
 Share

Recommended Posts

Module Craft

Descrizione


permette di fondere tra loro più oggetti


Autore


Prexus



Allegati


Demo


Istruzioni per l'uso

 

 per impostare gli oggetti da unire

 

 

#===============================================================================
# Module Craft by Prexus
# - Version 2.0 (12.31.06)
#-------------------------------------------------------------------------------
# This is the primary module of the PrexCraft script. Be sure to read the
# instructions to learn how to create new recipes. Do not change any of the
# constants in the DO NOT TOUCH section.
#===============================================================================

module Craft
	#=============================================================================
	# CONSTANTS :: DO NOT TOUCH
	#=============================================================================
	ITEM = 0; ARMOR = 1; WEAPON = 2
	NOT_CONSUMED = false; CONSUMED = true;
	
	#=============================================================================
	# CONSTANTS :: PLEASE TOUCH THESE.. BABY!
	#=============================================================================
	USE_LEVELS = true # Use Levels for skills.
	SHOW_COLORS = true # Use colorcoding (only for Levels)
	SHOW_LEVELS = true # Show recipe level display
	SHOW_LEVEL_UP = true # Show level up window
	SHOW_LIST_ICONS = true # Show icons in recipe list
	SHOW_RESULT_ICON = true # Show icons in result window
	SHOW_COMPONENT_ICONS = true # Show icons in component window
	
	#=============================================================================
	# TRADE :: OFFSET LEVEL RANGE (edit with caution) (For use with levels only)
	#=============================================================================
	TRADE_LEVEL_OFFSET = 10
	
	#=============================================================================
	# COLORS :: EDIT WITH CAUTION (For use with Levels only)
	#=============================================================================
	TRIVIAL = Color.new( 64, 64, 64, 255)
	LOW = Color.new( 0, 255, 0, 255)
	MID = Color.new(255, 255, 0, 255)
	HIGH = Color.new(255, 128, 0, 255)
	IMPOSSIBLE = Color.new(255, 0, 0, 255)
	
	#=============================================================================
	# RECIPES :: Follow Instructions
	#-----------------------------------------------------------------------------
	# FORMAT :
	# {'NAME' => 'RECIPE NAME AS STRING',
	# 'TYPE' => 'RECIPE TYPE AS STRING',
	# 'LEVEL' => LEVEL_AS_INTEGER, << Not Necessary with USE_LEVELS set to False
	# 'RESULT' => [TYPE, ID, VALUE],
	# 'COMPONENTS' => [
	# [TYPE, ID, VALUE, CONSUMED?],
	# [TYPE, ID, VALUE, CONSUMED?],
	# ...
	# ]
	# }
	#-----------------------------------------------------------------------------
	# To setup a recipe, follow the example below:
	#-----------------------------------------------------------------------------
	# {'NAME' => 'Cold Iron Sword',
	# 'TYPE' => 'Blacksmith',
	# 'LEVEL' => 10,
	# 'RESULT' => [WEAPON, 1, 1],
	# 'COMPONENTS' => [
	# [ITEM, 1, 1, CONSUMED],
	# [ITEM, 2, 1, CONSUMED],
	# [WEAPON, 3, 1, NOT_CONSUMED]
	# ]
	# } # End Recipe [WEAPON, 1, 1]
	#=============================================================================
	RECIPES = [
	{'NAME' => 'Cold Sword',
	'TYPE' => 'Blacksmith',
	'LEVEL' => 1,
	'RESULT' => [WEAPON, 33, 1],
	'COMPONENTS' => [
	[ITEM, 33, 1, CONSUMED],
	[WEAPON, 1, 1, CONSUMED]
	]
	},
	{'NAME' => 'Tempered Sword',
	'TYPE' => 'Blacksmith',
	'LEVEL' => 20,
	'RESULT' => [WEAPON, 34, 1],
	'COMPONENTS' => [
	[ITEM, 38, 1, NOT_CONSUMED],
	[WEAPON, 1, 1, CONSUMED]
	]
	},
	{'NAME' => 'Apple Pie',
	'TYPE' => 'Cook',
	'LEVEL' => 1,
	'RESULT' => [ITEM, 36, 1],
	'COMPONENTS' => [
	[ITEM, 34, 1, NOT_CONSUMED],
	[ITEM, 35, 3, CONSUMED]
	]
	}
	]
	
	#=============================================================================
	# Craft Methods
	#-----------------------------------------------------------------------------
	# valid_recipe? : name
	# Checks if the recipe name given exists in the recipe data store.
	#=============================================================================
	def self.valid_recipe?(name)
		for recipe in RECIPES
			return true if name == recipe['NAME']
		end
		return false
	end
	
	#=============================================================================
	# Craft Methods
	#-----------------------------------------------------------------------------
	# can_make? : name
	# Checks if the recipe is possible to make. First finds if the recipe given is
	# valid, then checks if there are enough components in your inventory.
	#=============================================================================
	def self.can_make?(name)
		return false unless self.valid_recipe?(name)
		for r in RECIPES
			next unless name == r['NAME']
			recipe = r
		end
		return false unless recipe
		for component in recipe['COMPONENTS']
			case component[0]
			when 0 # ITEM
				return false unless $game_party.item_number(component[1]) >= component[2]
			when 1 # ARMOR
				return false unless $game_party.armor_number(component[1]) >= component[2]
			when 2 # WEAPON
				return false unless $game_party.weapon_number(component[1]) >= component[2]
			end
		end
		return true
	end
	
	#=============================================================================
	# Craft Methods
	#-----------------------------------------------------------------------------
	# get_recipe : name
	# Returns the hash object containing the data information for the recipe if
	# the recipe is valid. Else returns nil.
	#=============================================================================
	def self.get_recipe(name)
		return nil unless self.valid_recipe?(name)
		for recipe in RECIPES
			return recipe if recipe['NAME'] == name
		end
		return nil
	end
	
	#=============================================================================
	# Craft Methods for LEVELS
	#-----------------------------------------------------------------------------
	# color_chart : diff
	# Returns the color suited for the recipe based on the difference between the
	# recipe level and your party's skill level
	#=============================================================================
	def self.color_chart(diff)
		if diff < 0
			return IMPOSSIBLE
		elsif (0...TRADE_LEVEL_OFFSET).to_a.include?(diff)
			return HIGH
		elsif (TRADE_LEVEL_OFFSET...TRADE_LEVEL_OFFSET * 2).to_a.include?(diff)
			return MID
		elsif (TRADE_LEVEL_OFFSET * 2...TRADE_LEVEL_OFFSET * 3).to_a.include?(diff)
			return LOW
		else
			return TRIVIAL
		end
	end
	
	#=============================================================================
	# Craft Methods for LEVELS
	#-----------------------------------------------------------------------------
	# level_skill : skill, diff
	# Raises the level of the skill based on the difference between the recipe
	# level and the party's skill level.
	#=============================================================================
	def self.level_skill(skill, diff)
		if (0...TRADE_LEVEL_OFFSET).to_a.include?(diff)
			if rand(10) >= 1
				$game_party.trade_level_up(skill, 1)
				return true
			else
				return false
			end
		elsif (TRADE_LEVEL_OFFSET...TRADE_LEVEL_OFFSET * 2).to_a.include?(diff)
			if rand(10) >= 3
				$game_party.trade_level_up(skill, 1)
				return true
			else
				return false
			end
		elsif (TRADE_LEVEL_OFFSET * 2...TRADE_LEVEL_OFFSET * 3).to_a.include?(diff)
			if rand(10) >= 6
				$game_party.trade_level_up(skill, 1)
				return true
			else
				return false
			end
		else
			return false
		end
	end
end

#===============================================================================
# Scene Craft
#-------------------------------------------------------------------------------
# This is the main interface for the crafting system. You can run it by using
# the callscript command '$scene = Scene_Craft.new' or by adding it to your own
# code in the same manner.
#===============================================================================

class Scene_Craft
	def initialize(type = nil)
		@type = type
	end
	def main
		@recipe_list = Window_RecipeList.new(@type)
		@result_info = Window_ResultInfo.new(@recipe_list.data)
		@result_comp = Window_ResultComponents.new(@recipe_list.data)
		Graphics.transition
		loop do
			Graphics.update
			Input.update
			update
			break if $scene != self
		end
		Graphics.freeze
		@recipe_list.dispose
		@result_info.dispose
		@result_comp.dispose
		@level_window.dispose if @level_window
	end
	#-----------------------------------------------------------------------------
	def update
		@recipe_list.update
		@result_info.update(@recipe_list.data)
		@result_comp.update(@recipe_list.data)
		if @level_window
			@level_window.update
			@level_window.opacity -= 2
			@level_window.contents_opacity -= 2
			if @level_window.opacity == 0
				@level_window.dispose
				@level_window = nil
			end
		end
		if Input.trigger?(Input::B)
			$game_system.se_play($data_system.cancel_se)
			$scene = Scene_Map.new
			return
		end
		if Input.trigger?(Input::C)
			if craft(@recipe_list.data)
				$game_system.se_play($data_system.decision_se)
			else
				$game_system.se_play($data_system.buzzer_se)
			end
			@recipe_list.refresh
			@result_info.refresh
			@result_comp.refresh
			return
		end
	end
	#-----------------------------------------------------------------------------
	def craft(recipe)
		return false unless Craft.can_make?(recipe)
		recipe = Craft.get_recipe(@recipe_list.data)
		if Craft::USE_LEVELS
			skill = (recipe['TYPE'] ? recipe['TYPE'] : nil)
			level = (recipe['LEVEL'] ? recipe['LEVEL'] : 1)
			if skill
				return unless $game_party.trade_check?(skill, level)
				diff = ($game_party.trade_skills[skill] - level).abs
				old_level = $game_party.trade_skills[skill]
				if Craft.level_skill(skill, diff)
					if Craft::SHOW_LEVEL_UP
						if @level_window
							@level_window.dispose
							@level_window = nil
						end
						@level_window = Window_Base.new(0, 0, 256, 64)
						@level_window.contents = Bitmap.new(224, 32)
						@level_window.x = 320 - @level_window.width / 2
						@level_window.y = 240 - @level_window.height / 2
						@level_window.z = 9998
						@level_window.contents.draw_text(4, 0, 224, 32,
						"#{skill} +#{($game_party.trade_skills[skill] - old_level).abs}", 1)
					end
				end
			end
		end
		for component in recipe['COMPONENTS']
			case component[0]
			when 0 # Item
				$game_party.lose_item(component[1], component[2]) if component[3]
			when 1 # Armor
				$game_party.lose_armor(component[1], component[2]) if component[3]
			when 2 # Weapon
				$game_party.lose_weapon(component[1], component[2]) if component[3]
			end
		end
		case recipe['RESULT'][0]
		when 0 # Item
			$game_party.gain_item(recipe['RESULT'][1], recipe['RESULT'][2])
		when 1 # Armor
			$game_party.gain_armor(recipe['RESULT'][1], recipe['RESULT'][2])
		when 2 # Weapon
			$game_party.gain_weapon(recipe['RESULT'][1], recipe['RESULT'][2])
		end
		return true
	end
end

#===============================================================================
# Window RecipeList
#-------------------------------------------------------------------------------
# This is a standard command window which shows all the recipes known by the
# party. They will appear in White if you have the proper reagents to combine
# or grey otherwise.
#===============================================================================

class Window_RecipeList < Window_Selectable
	def initialize(type)
		super(0, 0, 224, 480)
		self.contents = Bitmap.new(width - 32, height - 32)
		@data = []
		@type = type
		refresh
	end
	#-----------------------------------------------------------------------------
	def data
		return @data[self.index]
	end
	#-----------------------------------------------------------------------------
	def refresh
		self.contents.clear
		@data = []
		for recipe in $game_party.recipes
			if @type
				next unless Craft.get_recipe(recipe)['TYPE'] == @type
			end
			@data.push(recipe) if Craft.valid_recipe?(recipe)
		end
		@item_max = @data.size
		self.index = [[self.index, 0].max, @item_max].min
		for i in 0..@data.size
			data = @data[i]
			next unless data
			x = (Craft::SHOW_LIST_ICONS ? 32 : 4)
			recipe = Craft.get_recipe(data)
			if Craft::SHOW_LIST_ICONS
				case recipe['RESULT'][0]
				when 0 # ITEM
					bitmap = RPG::Cache.icon($data_items[recipe['RESULT'][1]].icon_name)
					self.contents.blt(4, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
				when 1 # ARMOR
					bitmap = RPG::Cache.icon($data_armors[recipe['RESULT'][1]].icon_name)
					self.contents.blt(4, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
				when 2 # WEAPON
					bitmap = RPG::Cache.icon($data_weapons[recipe['RESULT'][1]].icon_name)
					self.contents.blt(4, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
				end
			end
			if Craft::USE_LEVELS
				level = (recipe['LEVEL'] ? recipe['LEVEL'] : 1)
				diff = $game_party.trade_skills[recipe['TYPE']] - level
				if Craft::SHOW_COLORS
					self.contents.font.color = Craft.color_chart(diff)
				else
					self.contents.font.color = (Craft.can_make?(data) ? normal_color : disabled_color)
				end
				if Craft::SHOW_LEVELS
					self.contents.draw_text(x, i * 32, self.contents.width - x, 32,
					"(#{recipe['LEVEL']}) #{data}")
				else
					self.contents.draw_text(x, i * 32, self.contents.width - x, 32, data.to_s)
				end
			else
				self.contents.font.color = (Craft.can_make?(data) ? normal_color : disabled_color)
				self.contents.draw_text(x, i * 32, self.contents.width - x, 32, data.to_s)
			end
		end
	end
end

#===============================================================================
# Window ResultInfo
#-------------------------------------------------------------------------------
# This window displays all the information regarding the resulting item.
#===============================================================================

class Window_ResultInfo < Window_Base
	def initialize(recipe)
		super(224, 0, 640-224, 272)
		self.contents = Bitmap.new(width - 32, height - 32)
		@recipe = recipe
		refresh
	end
	#-----------------------------------------------------------------------------
	def refresh
		self.contents.clear
		recipe = Craft.get_recipe(@recipe)
		return unless recipe
		case recipe['RESULT'][0]
		when 0 # ITEM
			item = $data_items[recipe['RESULT'][1]]
			return unless item
			if Craft::SHOW_RESULT_ICON
				bitmap = RPG::Cache.icon(item.icon_name)
				self.contents.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
				self.contents.draw_text(32, 0, self.contents.width - 36, 32, item.name.to_s)
			else
				self.contents.draw_text(4, 0, self.contents.width - 8, 32, item.name.to_s)
			end
			self.contents.draw_text(4, 0, self.contents.width - 8, 32, "#{item.price} #{$data_system.words.gold}", 2)
			if item.recover_hp_rate != 0
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "HP: #{item.recover_hp_rate}%")
			elsif item.recover_hp != 0
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "HP: #{item.recover_hp}")
			end
			if item.recover_sp_rate != 0
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "SP: #{item.recover_sp_rate}%", 1)
			elsif item.recover_sp != 0
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "SP: #{item.recover_sp}", 1)
			end
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "Hit%: #{item.hit}")
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "Variance: #{item.variance}", 2)
			case item.parameter_type
			when 1
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "Max HP: +#{item.parameter_points}", 2)
			when 2
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "Max SP: +#{item.parameter_points}", 2)
			when 3
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "STR: +#{item.parameter_points}", 2)
			when 4
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "DEX: +#{item.parameter_points}", 2)
			when 5
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "AGI: +#{item.parameter_points}", 2)
			when 6
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, "INT: +#{item.parameter_points}", 2)
			end
			state_text = 'State + '
			for state in item.plus_state_set
				state_text += ', ' unless state == item.plus_state_set.first
				state_text += $data_states[state].name
			end
			self.contents.draw_text(4, 112, self.contents.width - 8, 32, "#{state_text}")
			state_text = 'State - '
			for state in item.minus_state_set
				state_text += ', ' unless state == item.minus_state_set.first
				state_text += $data_states[state].name
			end
			self.contents.draw_text(4, 144, self.contents.width - 8, 32, "#{state_text}")
		when 1 # ARMOR
			item = $data_armors[recipe['RESULT'][1]]
			return unless item
			if Craft::SHOW_RESULT_ICON
				bitmap = RPG::Cache.icon(item.icon_name)
				self.contents.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
				self.contents.draw_text(32, 0, self.contents.width - 36, 32, item.name.to_s)
			else
				self.contents.draw_text(4, 0, self.contents.width - 8, 32, item.name.to_s)
			end
			self.contents.draw_text(4, 0, self.contents.width - 8, 32, "#{item.price} #{$data_system.words.gold}", 2)
			case item.kind
			when 0 # Shield
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, 'Shield')
			when 1 # Helmet
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, 'Helmet')
			when 2 # Body Armor
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, 'Body Armor')
			when 3 # Accessory
				self.contents.draw_text(4, 48, self.contents.width - 8, 32, 'Accessory')
			end
			self.contents.draw_text(4, 48, self.contents.width - 8, 32, "EVA: #{item.eva}", 2)
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "PDEF: #{item.pdef}")
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "STR: #{item.str_plus}", 1)
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "DEX: #{item.dex_plus}", 2)
			self.contents.draw_text(4, 112, self.contents.width - 8, 32, "MDEF: #{item.mdef}")
			self.contents.draw_text(4, 112, self.contents.width - 8, 32, "AGI: #{item.agi_plus}", 1)
			self.contents.draw_text(4, 112, self.contents.width - 8, 32, "INT: #{item.int_plus}", 2)
			state_text = 'State Guard: '
			for state in item.guard_state_set
				state_text += ', ' unless state == item.guard_state_set.first
				state_text += $data_states[state].name
			end
			self.contents.draw_text(4, 144, self.contents.width - 8, 32, "#{state_text}")
			state_text = 'Element Guard: '
			for state in item.guard_element_set
				state_text += ', ' unless state == item.guard_element_set.first
				state_text += $data_system.elements[state]
			end
			self.contents.draw_text(4, 176, self.contents.width - 8, 32, "#{state_text}")
			if item.auto_state_id != 0
				self.contents.draw_text(4, 208, self.contents.width - 8, 32, "Auto State: #{$data_states[item.auto_state_id].name}")
			end
		when 2 # WEAPON
			item = $data_weapons[recipe['RESULT'][1]]
			return unless item
			if Craft::SHOW_RESULT_ICON
				bitmap = RPG::Cache.icon(item.icon_name)
				self.contents.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
				self.contents.draw_text(32, 0, self.contents.width - 36, 32, item.name.to_s)
			else
				self.contents.draw_text(4, 0, self.contents.width - 8, 32, item.name.to_s)
			end
			self.contents.draw_text(4, 0, self.contents.width - 8, 32, "#{item.price} #{$data_system.words.gold}", 2)
			self.contents.draw_text(4, 48, self.contents.width - 8, 32, "ATK: #{item.atk}")
			self.contents.draw_text(4, 48, self.contents.width - 8, 32, "PDEF: #{item.pdef}", 1)
			self.contents.draw_text(4, 48, self.contents.width - 8, 32, "MDEF: #{item.mdef}", 2)
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "STR: #{item.str_plus}")
			self.contents.draw_text(4, 80, self.contents.width - 8, 32, "DEX: #{item.dex_plus}", 2)
			self.contents.draw_text(4, 112, self.contents.width - 8, 32, "AGI: #{item.agi_plus}")
			self.contents.draw_text(4, 112, self.contents.width - 8, 32, "INT: #{item.int_plus}", 2)
			state_text = 'State + '
			for state in item.plus_state_set
				state_text += ', ' unless state == item.plus_state_set.first
				state_text += $data_states[state].name
			end
			self.contents.draw_text(4, 144, self.contents.width - 8, 32, "#{state_text}")
			state_text = 'State - '
			for state in item.minus_state_set
				state_text += ', ' unless state == item.minus_state_set.first
				state_text += $data_states[state].name
			end
			self.contents.draw_text(4, 176, self.contents.width - 8, 32, "#{state_text}")
			state_text = 'Element: '
			for state in item.element_set
				state_text += ', ' unless state == item.element_set.first
				state_text += $data_system.elements[state]
			end
			self.contents.draw_text(4, 208, self.contents.width - 8, 32, "#{state_text}")
		end
	end
	#-----------------------------------------------------------------------------
	def update(recipe)
		super()
		return unless recipe != @recipe
		@recipe = recipe
		refresh
	end
end

#===============================================================================
# Window ResultComponents
#-------------------------------------------------------------------------------
# This window displays all the components required for the combination, as well
# as the amount you have and the amount required of each. If an item has a *
# after the name, it will not be consumed in the combination.
#===============================================================================

class Window_ResultComponents < Window_Base
	def initialize(recipe)
		super(224, 272, 640-224, 208)
		self.contents = Bitmap.new(width - 32, height - 32)
		@recipe = recipe
		refresh
	end
	#-----------------------------------------------------------------------------
	def refresh
		self.contents.clear
		recipe = Craft.get_recipe(@recipe)
		return unless recipe
		i = 0
		for component in recipe['COMPONENTS']
			case component[0]
			when 0 # ITEM
				item = $data_items[component[1]]
				number = $game_party.item_number(component[1])
			when 1 # ARMOR
				item = $data_armors[component[1]]
				number = $game_party.armor_number(component[1])
			when 2 # WEAPON
				item = $data_weapons[component[1]]
				number = $game_party.weapon_number(component[1])
			end
			next unless item
			text = "#{item.name}"
			text += ' (*)' unless component[3]
			x = (Craft::SHOW_COMPONENT_ICONS ? 32 : 4)
			if Craft::SHOW_COMPONENT_ICONS
				bitmap = RPG::Cache.icon(item.icon_name)
				self.contents.blt(4, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
			end
			self.contents.draw_text(x, i * 32, self.contents.width - x - 4, 32, "#{text}")
			self.contents.draw_text(x, i * 32, self.contents.width - x - 4, 32, "#{number}/#{component[2]}", 2)
			i += 1
		end
	end
	#-----------------------------------------------------------------------------
	def update(recipe)
		super()
		return unless recipe != @recipe
		@recipe = recipe
		refresh
	end
end

#===============================================================================
# Game_Party
#-------------------------------------------------------------------------------
# This is a small edit of the original Game_Party class to add recognition for
# recipes. It also adds the methods below:
# add_recipe() : name
# - this will teach the party the recipe, if it's valid. name is the name
# of the recipe.
# remove_recipe() : name
# - this will force the party to forget the recipe, if it's known. name is
# the name of the recipe.
# have_recipe() : name
# - this will return true or false, depending on if the party knows the
# recipe. Primary used in the can_make? method of the Craft module.
# -- FOR LEVELS --
# learn_trade() : name
# - this will set the level of the 'trade skill' to 1, enabling it for use
# with recipes.
# forget_trade() : name
# - this will reset the level of the 'trade skill' to 0.
# trade_check() : name, level
# - this will return true or false, depending on if the arguement 'level' is
# less than or equal to the 'trade skill'.
# trade_level_up() : name, value = 1
# - this will add the value to the existing trade level. Used primary by
# the Craft module.
#===============================================================================

class Game_Party
	attr_reader :recipes
	attr_reader :trade_skills
	#-----------------------------------------------------------------------------
	alias prexcraft_g_party_initialize initialize
	#-----------------------------------------------------------------------------
	def initialize
		prexcraft_g_party_initialize
		@recipes = []
		@trade_skills = Hash.new(0)
	end
	#-----------------------------------------------------------------------------
	def add_recipe(name)
		@recipes.push(name) if Craft.valid_recipe?(name) and !have_recipe(name)
	end
	#-----------------------------------------------------------------------------
	def remove_recipe(name)
		@recipes.delete(name)
	end
	#-----------------------------------------------------------------------------
	def have_recipe(name)
		return @recipes.include?(name)
	end
	#-----------------------------------------------------------------------------
	def learn_trade(name)
		@trade_skills[name] = 1
	end
	#-----------------------------------------------------------------------------
	def forget_trade(name)
		@trade_skills[name] = 0
	end
	#-----------------------------------------------------------------------------
	def trade_check?(name, level)
		return (@trade_skills[name] >= level)
	end
	#-----------------------------------------------------------------------------
	def trade_level_up(name, value = 1)
		@trade_skills[name] += value
	end
end

 

 

Edited by Flame

Progetti:

 http://i.imgur.com/jmLkIqi.png

http://i54.tinypic.com/2rh4ojq.png

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!
http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/img/fablecontest1st.pnghttp://i43.tinypic.com/1zokd2s.png


http://i.imgur.com/BEu6G.gif

http://i.imgur.com/H1ARhq7.gif

http://i.imgur.com/Af6ijZN.gif

AOT: Associazione Odiamo la Telecom:

http://i.imgur.com/aYJs89E.png

"4 gattini... 4 stelline... E le 4 paperelle non ci stavano :3"

Flame


http://i30.tinypic.com/i27ypj.png

Link to comment
Share on other sites

  • 5 months later...
bello scrip...complimenti Edited by redXIII

LAST LEGEND tempo di programmazione rimasto in percentuale è:

Storia del gioco: 98%

Storia dei personaggi: 75%

Storia politica mondiale: 80%

Applicazione e sviluppo dell'avventura, tempo rimasto in percentuale è:

Titleset:40%

Charaset:20%

Animation:90%

Idem,Skill,Armi:50%

Scene Animate:10%

http://img518.imageshack.us/img518/5919/logoufficialecopiawr2.png

Link to comment
Share on other sites

  • 4 months later...

molto bello questo, semplice ed efficace ma io sono affezionato al sistema di crafting che tradussi anni fà,

 

qualcuno lo ha già postato qui? sennò lo posto. ricordo di averlo presentato quando frequentavo shrine e lo utilizzavo per il mio gioco con la maghetta ^^

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

si, era un gioco che ho portato avanti parecchio poi causa format persi tutto e la voglia di rifare...a detta di parecchi era carino, la protagonista era una ragazza, più che maga alchimista, la quale aveva ricevuto la lettera di ammissione all'accademia magica e così via....aveva un sistema di crafting avanzato con un sacco di oggetti reperibili nelle mappe...quanto mi manca ^^ sigh...

 

 

tornando ONTopic: visto così è mooolto simile al mio, però non è chiarissimo come si fà, bisogna spegare come impostare la finestra degli oggetto e i vari numeri (1 armi,2armature ecc...)

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...