- 0
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
By Bob423
Title screen by Kevin.ds
(you've been replaced shiny :P)
Story
2000 Years ago a huge city covered nearly all of the world. It was a thriving city where everyone was happy. Scientists discovered something that could make life so much easier. Not that it wasn't easy already. The energy gave the people the ability to summon water, or fire out of thin air, control earth, and wind, as well as heal the injured instantly. This power was in limited supply, however. People began to get greedy, and keep this energy to themselves. It was stored in glass containers, and released for a brief moment when used. The greed was slowly weakening the energy, and the people eventually ran out. They blamed each other for this.
Then one day, the sky turned black. The city began to sink into the ground, taking most of the people with it. Some people made it out alive. The people began to restart their society. For hundreds of years, everything was fine. There wasn't even any trace of the city.
One day an unlimited supply of that energy was found. The energy, which the people began to call magic, had been passed down; from generation to generation, through the peoples' souls, but lay dormant until then. Children now had the ability to use magic whenever they wanted. As the children aged, they learned to control their magic, and built schools to teach their children. Schools where the student were able to learn about the kind of magic they wanted to study.
The 3 types of magic are: Attack Magic, Healing Magic, and
Status Magic.
One particular 16 year old boy named *Bob starts his first day at a school in his hometown of Silverwood Village. His best friend, *Joe happens to be in his first class. Over the course of their first year at the school, they meet a girl named *Cathy, who becomes their friend eventually. Finally, at the end of the year, they take the Final Exam together, and pass. Not long after being informed of their achievement, the wooden training dummies, brought to life by magic, get out of control, and attempt to burn the school down. They all make it out alright, and the teachers use water spells to douse the flames. When they reach the village, they find that their entire home town is on fire! They find a way to escape the flames by jumping over a broken part of a fence. While escaping the flames, they get separated, and Bob falls unconscious. Bob wakes up in a house south of Silverwood Village, and meets an old man, who only says to call him Brian, and that he found Bob unconscious, but not the others. He directs Bob toward the village, and hands him a sword and shield as he sets off to find his friends.
after finding his friends, Bob, with the help of his friends, must save the world from an ancient, corrupted power formerly sleeping under the earth's crust.
*Player can name this character
contents
places
features
characters
screenshots
videos
credits
download
[/anchor]
Places
Features
Characters
Screenshots
here's an album of them http://imgur.com/a/6TGnQ
First 19 minutes of the demo
[media]http://www.youtube.com/watch?v=TSO1x_sagtQ[/media]
Credits
Here's a banner made by Kevin.ds
[anchor=download]
UPDATE: Added difficulty levels and made it so the player is forced to chose one of each class.
this prevents the player from getting stuck on certain parts and forced to restart the game.
Expert mode is how the game was before i added the difficulty levels.
Hopefully the game is easier now :D
DOWNLOAD
(About 120mb)
If the above link doesn't work, I'm probably fixing something.
Known Bugs
(That I can't fix, or not without making parts of the game too easy.)
Tips for stuck people:
If something seems weird and isn't explained in game,
(e.g. Caeli Temple being really high in the air when you're inside, but on a mountain when outside, or the Mana Temple seeming less old, and some rooms being different from the rest of the temple)
it can usually be explained by saying "It's magic"
sorry if the game is broken. Alternatively, you can watch this:
http://www.youtube.com/playlist?list=PLmZjr8BajltKjHOZWMbmTdl7mpNDzMDyI&feature=mh_lolz
The Hidden City of Arcatis is more of a prequel then an actual beginning...if that makes sense. I've written out what happens in the game as another alternative to playing it. http://pastebin.com/07Ns42cG
-
By theneonheart
I'm looking for help figuring out how to change Ryex's custom menu script to use custom background images for each of the menus. I think this is built into the script, but I am not the greatest at figuring out what to change to get scripts to do what I want them to do.
If you know this script and can help me out I'd appreciate it.
-
By Bob423
On wednesday, we had 4-6 inches of snow O.o
and on thursday, I got into chat, and the power went out, thanks to the snow turning to ice, so my internet was cut off. the power is still out at my house, but the power is coming back on slowly around the state. the ice storm is ending, but a bunch of trees and power lines went down. i'm at my friend's grandpa's house, who didnt lose power, luckily. but his computer is dying.
anywho, its warming up, and i should have power this weekend. also, my game, the hidden city of arcatis will have a sequel eventually. I know sort of what it will be about, but i havent thought of a title. but thats ok, because my current game is no where near done yet. i cant download anything, or the computer will freak out
I imagine Kiriashi is also having problems with electricity, since he lives like 5 miles away from me lol
anywho, just telling you whats going on.
also, i seem to only be getting email notifications (via my phone) from posts marked has made, no one else
the snow and ice is melting, and its really warming up fast. i'll be in chat within 30min of the power coming back on, unless im asleep lol. cya guys then
-
By Bob423
So here's what i need. a compass that appears in the lower left, or upper right hand corner of the screen, and points toward the place the player is supposed to go next, regardless of what map the player is on.
-

so here are my problems.
1. the offset of "lvl. 2" or whatever level you are, is messed up. changing the offset in the main menu screws it up a whole lot more everywhere else.
2. in the items and skills menus, i want the part where you chose what character to use stuff on, to be always visible at the bottom, and for the menu to scroll when i press the left and right arrow keys, instead of the up and down like it is now.
3. the status screen is messy, i need each character to have their own window, and for everything to be moved around so it all fits correctly. also, the name of the character shouldn't be under the character's face.
4. the equipment screen isn't updated until you exit. e.i if you have a wooden sword equipped, but change to an iron sword, it will still say wooden sword until you exit the menu. i also want the part that says what is equipped to say "weapon: sword" or something instead of just "sword"
how do you change a screen to show the map as a background instead of the annoying black background? i want to do that for the shop
here are the scripts
put them in this order
#============================================================================== # ** Nortos # Nortos Beyond CMS Version # Version 1.0b #============================================================================== BG_item = 'items' BG_skill = 'skills' BG_equip = 'equipment' BG_status = 'stats' BG_save = 'save' BG_load = 'load' BG_exit = 'exit' BG_location = 'location' BG_playtime = 'playtime' BG_gold = 'MC' #============================================================================== # ** Window_Selectable #------------------------------------------------------------------------------ # This window class contains cursor movement and scroll functions. #============================================================================== class Window_Selectable1 < Window_Base #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :index # cursor position attr_reader :help_window # help window #-------------------------------------------------------------------------- # * Object Initialization # x : window x-coordinate # y : window y-coordinate # width : window width # height : window height #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) @item_max = 1 @column_max = 1 @index = -1 end #-------------------------------------------------------------------------- # * Set Cursor Position # index : new cursor position #-------------------------------------------------------------------------- def index=(index) @index = index # Update Help Text (update_help is defined by the subclasses) if self.active and @help_window != nil update_help end # Update cursor rectangle update_cursor_rect end #-------------------------------------------------------------------------- # * Get Row Count #-------------------------------------------------------------------------- def row_max # Compute rows from number of items and columns return (@item_max + @column_max - 1) / @column_max end #-------------------------------------------------------------------------- # * Get Top Row #-------------------------------------------------------------------------- def top_row # Divide y-coordinate of window contents transfer origin by 1 row # height of 32 return self.oy / 32 end #-------------------------------------------------------------------------- # * Set Top Row # row : row shown on top #-------------------------------------------------------------------------- def top_row=(row) # If row is less than 0, change it to 0 if row < 0 row = 0 end # If row exceeds row_max - 1, change it to row_max - 1 if row > row_max - 1 row = row_max - 1 end # Multiply 1 row height by 32 for y-coordinate of window contents # transfer origin self.oy = row * 32 end #-------------------------------------------------------------------------- # * Get Number of Rows Displayable on 1 Page #-------------------------------------------------------------------------- def page_row_max # Subtract a frame height of 32 from the window height, and divide it by # 1 row height of 32 return (self.height - 32) / 32 end #-------------------------------------------------------------------------- # * Get Number of Items Displayable on 1 Page #-------------------------------------------------------------------------- def page_item_max # Multiply row count (page_row_max) times column count (@column_max) return page_row_max * @column_max end #-------------------------------------------------------------------------- # * Set Help Window # help_window : new help window #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window # Update help text (update_help is defined by the subclasses) if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # * Update Cursor Rectangle #-------------------------------------------------------------------------- def update_cursor_rect # If cursor position is less than 0 if @index < 0 self.cursor_rect.empty return end # Get current row row = @index / @column_max # If current row is before top row if row < self.top_row # Scroll so that current row becomes top row self.top_row = row end # If current row is more to back than back row if row > self.top_row + (self.page_row_max - 1) # Scroll so that current row becomes back row self.top_row = row - (self.page_row_max - 1) end # Calculate cursor width cursor_width = self.width / @column_max - 32 # Calculate cursor coordinates x = @index % @column_max * (cursor_width + 32) y = @index / @column_max * 32 - self.oy # Update cursor rectangle self.cursor_rect.set(x, y, cursor_width, 32) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super # If cursor is movable if self.active and @item_max > 0 and @index >= 0 # If the right directional button was pressed if Input.repeat?(Input::LEFT) # If column count is 2 or more, and cursor position is closer to front # than (item count -1) if (@column_max == 1 and Input.trigger?(Input::RIGHT)) or @index >= @column_max # Move cursor up $game_system.se_play($data_system.cursor_se) @index = (@index - @column_max + @item_max) % @item_max end end # If the left directional button was pressed if Input.repeat?(Input::RIGHT) # If column count is 2 or more, and cursor position is more back than 0 if (@column_max == 1 and Input.trigger?(Input::LEFT)) or @index < @item_max - @column_max # Move cursor down $game_system.se_play($data_system.cursor_se) @index = (@index + @column_max) % @item_max end end end # Update help text (update_help is defined by the subclasses) if self.active and @help_window != nil update_help end # Update cursor rectangle update_cursor_rect end end class Window_Base < Window def fc face = RPG::Cache.picture("") end def draw_fc(actor,x,y) face = RPG::Cache.picture(actor.name + "_fc") rescue fc fw = face.width fh = face.height src_rect = Rect.new(0, 0, fw, fh) self.contents.blt(x , y - fh, face, src_rect) end end class Window_PlayTime < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.name = "Tahoma" self.contents.font.size = 14 self.contents.font.color = system_color self.contents.draw_text(0, 0, 122, 32, "Play Time:") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 0, 122, 32, text, 2) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end #-------------------------------------------------------------------------- # * Window Location #-------------------------------------------------------------------------- class Window_Location < Window_Base def initialize super(0, 0, 300, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Tahoma" self.contents.font.size = 18 refresh end def refresh self.contents.clear data = load_data("Data/MapInfos.rxdata") self.contents.font.color = system_color self.contents.draw_text(0, 0, 248, 32, "Location:") self.contents.font.color = normal_color self.contents.draw_text(0, 0, 200, 32, data[$game_map.map_id].name, 2) end end #-------------------------------------------------------------------------- # * Window Gold #-------------------------------------------------------------------------- class Window_Gold < Window_Base def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) refresh end def refresh self.contents.clear self.contents.font.name = "Tahoma" cx = contents.text_size($data_system.words.gold).width self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2) end end #-------------------------------------------------------------------------- # * Menu_Status #-------------------------------------------------------------------------- class Window_MenuStatus < Window_Selectable1 def initialize super(0, 0, 700, 120) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.index = -1 end def refresh self.contents.font.name = "Tahoma" self.contents.font.size = 14 self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = i * 220 y = 0 actor = $game_party.actors[i] draw_fc(actor,x + 25,y + 46) draw_actor_name(actor, x+25, y - 12) draw_actor_level(actor, x + 70, y + 36) draw_actor_state(actor, x+20, y + 36) draw_actor_exp(actor, x + 30, y + 55) draw_actor_hp(actor, x + 65, y-9) draw_actor_sp(actor, x + 65, y+11) end end def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(@index * 220, 0, self.width - 480, 64) end end end #-------------------------------------------------------------------------- # * Menu Scene #-------------------------------------------------------------------------- class Scene_Menu def initialize(menu_index = 0) @menu_index = menu_index end def main @sprite = Spriteset_Map.new viewport = Viewport.new(0, 0, 600, 480) s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Stats" s5 = "Save" s6 = "Load" s7 = "Exit" @command_window = Window_Command1.new(175, [s1, s2, s3, s4, s5, s6, s7]) @command_window.x = 450 + 175 @command_window.y = 40 @command_window.height = 257 @command_window.back_opacity = 170 @command_window.index = @menu_index # If number of party members is 0 if $game_party.actors.size == 0 # Disable items, skills, equipment, and status @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end if $game_system.save_disabled # Disable save @command_window.disable_item(4) end @window_PlayTime = Window_PlayTime.new @window_PlayTime.x = -170 @window_PlayTime.y = 300 @window_PlayTime.back_opacity = 170 @window_Gold = Window_Gold.new @window_Gold.x = -170 @window_Gold.y = 230 @window_Gold.back_opacity = 170 @window_Location = Window_Location.new @window_Location.y = 300 @window_Location.x = 344 + 300 @window_Location.back_opacity = 170 @status_window = Window_MenuStatus.new @status_window.x = -30 @status_window.y = 370 + 110 @status_window.back_opacity = 170 @item = Sprite.new @item.bitmap = RPG::Cache.icon(BG_item) @item.x = 600 + 160 @item.y = 60 @item.z = @item.z + 255 @skill = Sprite.new @skill.bitmap = RPG::Cache.icon(BG_skill) @skill.x = 600 + 160 @skill.y = 92 @skill.z = @skill.z + 255 @equip = Sprite.new @equip.bitmap = RPG::Cache.icon(BG_equip) @equip.x = 600 + 160 @equip.y = 124 @equip.z = @equip.z + 255 @status = Sprite.new @status.bitmap = RPG::Cache.icon(BG_status) @status.x = 600 + 160 @status.y = 156 @status.z = @status.z + 255 @save = Sprite.new @save.bitmap = RPG::Cache.icon(BG_save) @save.x = 600 + 160 @save.y = 188 @save.z = @save.z + 255 @load = Sprite.new @load.bitmap = RPG::Cache.icon(BG_load) @load.x = 600 + 160 @load.y = 220 @load.z = @load.z + 255 @quit = Sprite.new @quit.bitmap = RPG::Cache.icon(BG_exit) @quit.x = 600 + 160 @quit.y = 252 @quit.z = @quit.z + 255 @location = Sprite.new @location.bitmap = RPG::Cache.icon(BG_location) @location.x = 600 + 160 @location.y = 320 @location.z = @location.z + 255 @playtime = Sprite.new @playtime.bitmap = RPG::Cache.icon(BG_playtime) @playtime.x = -160 @playtime.y = 320 @playtime.z = @playtime.z + 255 @gold = Sprite.new @gold.bitmap = RPG::Cache.icon(BG_gold) @gold.x = -250 @gold.y = 250 @gold.z = @gold.z + 255 Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of windows viewport.dispose @command_window.dispose @window_PlayTime.dispose @window_Gold.dispose @window_Location.dispose @status_window.dispose @item.dispose @skill.dispose @equip.dispose @status.dispose @save.dispose @load.dispose @quit.dispose @gold.dispose @playtime.dispose @location.dispose @sprite.dispose end def entrance @command_window.x -= 25 if @command_window.x > 530 @window_PlayTime.x += 25 if @window_PlayTime.x < 0 @window_Location.x -= 25 if @window_Location.x > 344 @window_Gold.x += 25 if @window_Gold.x < 0 @status_window.y -= 10 if @status_window.y > 370 @item.x -= 20 if @item.x > 550 @skill.x -= 20 if @skill.x > 550 @equip.x -= 20 if @equip.x > 550 @status.x -= 20 if @status.x > 550 @save.x -= 20 if @save.x > 550 @load.x -= 20 if @load.x > 550 @quit.x -= 20 if @quit.x > 550 @playtime.x += 13 if @playtime.x < 70 @gold.x += 20 if @gold.x < 10 @location.x -= 30 if @location.x > 600 end def exit @command_window.x += 10 if @command_window.x < 655 @window_PlayTime.x -= 10 if @window_PlayTime.x > -160 @window_Location.x += 15 if @window_Location.x < 640 @window_Gold.x -= 10 if @window_Gold.x > -160 @status_window.y += 10 if @status_window.y < 480 @item.x += 10 if @item.x < 760 @skill.x += 10 if @skill.x < 760 @quit.x += 10 if @quit.x < 760 @equip.x += 10 if @equip.x < 760 @status.x += 10 if @status.x < 760 @save.x += 10 if @save.x < 760 @load.x += 10 if @load.x < 760 @playtime.x -= 10 if @playtime.x > -160 @gold.x -= 10 if @gold.x > -160 @location.x += 10 if @location.x < 760 if @status_window.y >= 480 $scene = Scene_Map.new $game_map.autoplay return end end def update if @intro == nil entrance end if @exit == true exit @intro = false end @status_window.update @window_Gold.update @window_PlayTime.update @window_Location.update @command_window.update # If command window is active: call update_command if @command_window.active update_command return end # If status window is active: call update_status if @status_window.active update_status return end end def update_command # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) @exit = true return end # If C button was pressed if Input.trigger?(Input::C) # If command other than save or end game, and party members = 0 if $game_party.actors.size == 0 and @command_window.index < 4 # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Branch by command window cursor position case @command_window.index when 0 $game_system.se_play($data_system.decision_se) $scene = Scene_Item.new when 1 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Save.new when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_Load_New.new when 6 $game_system.se_play($data_system.decision_se) $scene = Scene_End.new end return end end #-------------------------------------------------------------------------- # * Frame Update (when status window is active) #-------------------------------------------------------------------------- def update_status # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # Make command window active @command_window.active = true @status_window.active = false @status_window.index = -1 return end # If C button was pressed if Input.trigger?(Input::C) # Branch by command window cursor position case @command_window.index when 1 # skill # If this actor's action limit is 2 or more if $game_party.actors[@status_window.index].restriction >= 2 # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to skill screen $scene = Scene_Skill.new(@status_window.index) when 2 # equipment # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to equipment screen $scene = Scene_Equip.new(@status_window.index) when 3 # status # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to status screen $scene = Scene_Status.new(@status_window.index) end return end end end #============================================================================== # ** Scene_Load_New #------------------------------------------------------------------------------ # New Load Screen #============================================================================== class Scene_Load_New < Scene_File #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize # Remake temporary object $game_temp = Game_Temp.new # Timestamp selects new file $game_temp.last_file_index = 0 latest_time = Time.at(0) for i in 0..3 filename = make_filename(i) if FileTest.exist?(filename) file = File.open(filename, "r") if file.mtime > latest_time latest_time = file.mtime $game_temp.last_file_index = i end file.close end end super("Which file would you like to load?") end #-------------------------------------------------------------------------- # * Decision Processing #-------------------------------------------------------------------------- def on_decision(filename) # If file doesn't exist unless FileTest.exist?(filename) # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play load SE $game_system.se_play($data_system.load_se) # Read save data file = File.open(filename, "rb") read_save_data(file) file.close # Restore BGM and BGS $game_system.bgm_play($game_system.playing_bgm) $game_system.bgs_play($game_system.playing_bgs) # Update map (run parallel process event) $game_map.update # Switch to map screen $scene = Scene_Map.new end #-------------------------------------------------------------------------- # * Cancel Processing #-------------------------------------------------------------------------- def on_cancel # Play cancel SE $game_system.se_play($data_system.cancel_se) # Switch to menu screen $scene = Scene_Menu.new(0) end #-------------------------------------------------------------------------- # * Read Save Data # file : file object for reading (opened) #-------------------------------------------------------------------------- def read_save_data(file) # Read character data for drawing save file characters = Marshal.load(file) # Read frame count for measuring play time Graphics.frame_count = Marshal.load(file) # Read each type of game object $game_system = Marshal.load(file) $game_switches = Marshal.load(file) $game_variables = Marshal.load(file) $game_self_switches = Marshal.load(file) $game_screen = Marshal.load(file) $game_actors = Marshal.load(file) $game_party = Marshal.load(file) $game_troop = Marshal.load(file) $game_map = Marshal.load(file) $game_player = Marshal.load(file) # If magic number is different from when saving # (if editing was added with editor) if $game_system.magic_number != $data_system.magic_number # Load map $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end # Refresh party members $game_party.refresh end end #============================================================================== # ** Window_Command #------------------------------------------------------------------------------ # This window deals with general command choices. #============================================================================== class Window_Command1 < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization # width : window width # commands : command text string array #-------------------------------------------------------------------------- def initialize(width, commands) # Compute window height from command quantity super(0, 0, width, commands.size * 40 + 32) @item_max = commands.size @commands = commands self.contents = Bitmap.new(width - 32, @item_max * 32) refresh self.index = 0 end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max draw_item(i, normal_color) end end #-------------------------------------------------------------------------- # * Draw Item # index : item number # color : text color #-------------------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(26, 32 * index, self.contents.width - 8, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index]) end #-------------------------------------------------------------------------- # * Disable Item # index : item number #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) end end#============================================================================== # ** RPG::Cache #============================================================================== module RPG::Cache def self.faces(filename, hue = 0) self.load_bitmap('Graphics/Faces/', filename, hue) end end#============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- def draw_text_outline(x, y, width, height, string, alignment = 0) self.contents.font.color = Color.new(0,0,0) self.contents.draw_text(x - 1, y - 1, width, height, string, alignment) self.contents.draw_text(x + 1, y - 1, width, height, string, alignment) self.contents.draw_text(x + 1, y + 1, width, height, string, alignment) self.contents.draw_text(x - 1, y + 1, width, height, string, alignment) end #-------------------------------------------------------------------------- def draw_actor_battle_face(actor, x, y) begin face = RPG::Cache.faces(actor.character_name) fw, fh = face.width, face.height src_rect = Rect.new(0, 0, fw, fh) self.contents.blt(x - fw / 23, y - fh, face, src_rect) rescue end end #-------------------------------------------------------------------------- def draw_actor_name_menu(actor, x, y) draw_text_outline(x, y, 120, 32, actor.name) self.contents.font.color = normal_color self.contents.draw_text(x, y, 120, 32, actor.name) end def draw_actor_class_menu(actor, x, y) draw_text_outline(x + 42, y, 236, 32, actor.class_name) self.contents.font.color = normal_color self.contents.draw_text(x + 42, y, 236, 32, actor.class_name) end #-------------------------------------------------------------------------- def draw_actor_exp_menu(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 24, 32, "Exp") draw_text_outline(x + 10, y, 120, 32, actor.exp_s + " / " + actor.next_exp_s, 2) self.contents.font.color = normal_color self.contents.draw_text(x + 10, y, 120, 32, actor.exp_s + " / " + actor.next_exp_s, 2) end #-------------------------------------------------------------------------- def draw_actor_hp_menu(actor, x, y, width = 144) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.hp) if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 flag = false end x2 = 15 draw_text_outline(hp_x - x2, y, 48, 32, actor.hp.to_s, 2) self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color self.contents.draw_text(hp_x - x2, y, 48, 32, actor.hp.to_s, 2) if flag draw_text_outline(hp_x + 48 - x2, y, 12, 32, "/", 1) draw_text_outline(hp_x + 60 - x2, y, 48, 32, actor.maxhp.to_s) self.contents.font.color = normal_color self.contents.draw_text(hp_x + 48 - x2, y, 12, 32, "/", 1) self.contents.draw_text(hp_x + 60 - x2, y, 48, 32, actor.maxhp.to_s) end end #-------------------------------------------------------------------------- def draw_actor_sp_menu(actor, x, y, width = 144) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.sp) if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 flag = false end x2 = 15 draw_text_outline(sp_x - x2, y, 48, 32, actor.sp.to_s, 2) self.contents.font.color = actor.sp == 0 ? knockout_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color self.contents.draw_text(sp_x - x2, y, 48, 32, actor.sp.to_s, 2) if flag draw_text_outline(sp_x + 48 - x2, y, 12, 32, "/", 1) draw_text_outline(sp_x + 60 - x2, y, 48, 32, actor.maxsp.to_s) self.contents.font.color = normal_color self.contents.draw_text(sp_x + 48 - x2, y, 12, 32, "/", 1) self.contents.draw_text(sp_x + 60 - x2, y, 48, 32, actor.maxsp.to_s) end end #-------------------------------------------------------------------------- def draw_actor_parameter_menu(actor, x, y, type) case type when 0 parameter_name = "WPN STR" parameter_value = actor.atk when 1 parameter_name = "DEF" parameter_value = actor.pdef when 2 parameter_name = "RES" parameter_value = actor.mdef when 3 parameter_name = "ATK" parameter_value = actor.str when 4 parameter_name = "ACC" parameter_value = actor.dex when 5 parameter_name = "SPD" parameter_value = actor.agi when 6 parameter_name = $data_system.words.int parameter_value = actor.int end self.contents.font.color = system_color self.contents.draw_text(x, y, 120, 32, parameter_name) self.contents.font.color = normal_color self.contents.draw_text(x + 80, y, 36, 32, parameter_value.to_s, 2) end #-------------------------------------------------------------------------- end #============================================================================== # ** Window_Target_Item #============================================================================== class Window_Target_Item < Window_Selectable def initialize super(0, 64, 640, 250) self.contents = Bitmap.new(width - 32, height - 32) self.z += 10 @item_max = 3 self.contents.font.size = 18 self.contents.font.bold = true refresh @pattern = @anime_count = 0 end def refresh_actor_graphic for i in 0...$game_party.actors.size x = i * 203 + 20 y = 184 actor = $game_party.actors[i] bitmap = RPG::Cache.character(actor.character_name, actor.character_hue) cw = bitmap.width / 4 ch = bitmap.height / 4 x -= cw / 2 y -= ch self.contents.fill_rect( x, y, cw, ch, Color.new( 0,0,0,0 ) ) src_rect = Rect.new( @pattern * cw , 0, cw, ch ) self.contents.blt( x, y, bitmap, src_rect ) end end def refresh self.contents.clear for i in 0...$game_party.actors.size x = i * 203 y = 4 actor = $game_party.actors[i] draw_actor_name_menu(actor, x, y) draw_actor_class_menu(actor, x + 80, y) draw_actor_battle_face(actor, x + 5, y + 105) draw_actor_graphic(actor, x + 20, y + 180) draw_actor_state(actor, x + 15, y + 187) draw_actor_hp_menu(actor, x + 82, y + 28) draw_actor_sp_menu(actor, x + 82, y + 53) draw_actor_exp_menu(actor, x + 52, y + 100) draw_actor_level(actor, x + 82, y + 80) draw_actor_parameter_menu(actor, x + 50, y + 123, 3) draw_actor_parameter_menu(actor, x + 50, y + 138, 6) draw_actor_parameter_menu(actor, x + 50, y + 153, 5) draw_actor_parameter_menu(actor, x + 50, y + 168, 4) end end def update super @anime_count += 1 if @anime_count > 10 @pattern = ( @pattern + 1 ) % 4 @anime_count = 0 refresh_actor_graphic end end def update_cursor_rect self.cursor_rect.set(index*203, 5, 200, 215) end end #============================================================================== # ** Window_EquipStatus #============================================================================== class Window_EquipStatus < Window_Base #-------------------------------------------------------------------------- def initialize(actor) super(272, 64, 368, 192) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.size = 20 self.contents.font.bold = true @actor = actor refresh end #-------------------------------------------------------------------------- def refresh self.contents.clear draw_item_name($data_weapons[@actor.weapon_id], 0, 0) draw_item_name($data_armors[@actor.armor1_id], 0, 50) draw_item_name($data_armors[@actor.armor2_id], 0, 100) end #-------------------------------------------------------------------------- def draw_atk(x,y) self.contents.font.color = system_color self.contents.draw_text(x, y, 22, 22, "Atk:") self.contents.font.color = normal_color w = @item.atk.to_s.size * 6 self.contents.draw_text(x + 22, y, w, 22, @item.atk.to_s, 2) return 22 + w + 4 end def draw_pdef(x,y) self.contents.font.color = system_color self.contents.draw_text(x, y, 33, 22, "P. Def:") self.contents.font.color = normal_color w = @item.pdef.to_s.size * 6 self.contents.draw_text(x + 33, y, w, 22, @item.pdef.to_s, 2) return 33 + w + 4 end def draw_mdef(x,y) self.contents.font.color = system_color self.contents.draw_text(x, y, 35, 22, "M. Def:") self.contents.font.color = normal_color w = @item.mdef.to_s.size * 6 self.contents.draw_text(x + 35, y, w, 22, @item.mdef.to_s, 2) return 35 + w + 4 end def draw_for(x,y) self.contents.font.color = system_color self.contents.draw_text(x, y, 24, 22, "Str:") self.contents.font.color = normal_color w = @item.str_plus.to_s.size * 6 self.contents.draw_text(x + 21, y, w, 22, @item.str_plus.to_s, 2) return 25 + w end end #============================================================================== # ** Window_EquipLeft #============================================================================== class Window_EquipLeft < Window_Base Weakest_Color = Color.new(255, 0, 0) Weak_Color = Color.new(255, 128, 64) Neutral_Color = Color.new(255, 255, 255) Resist_Color = Color.new( 0, 128, 255) Imune_Color = Color.new( 0, 255, 255) Absorb_Color = Color.new( 0, 255, 0) Element_Resists_Exhibition = 0 Max_Elements_Shown = 8 #-------------------------------------------------------------------------- def initialize(actor) super(0, 64, 272, 416) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor self.contents.font.size = 18 self.contents.font.bold = true refresh end #-------------------------------------------------------------------------- def refresh self.contents.clear y = -8 draw_actor_name_menu(@actor, 0, y) draw_actor_class_menu(@actor, 80, y) draw_actor_battle_face(@actor, 5, y + 105) draw_actor_graphic(@actor, 20, y + 180) draw_actor_hp_menu(@actor, 82, y + 28) draw_actor_sp_menu(@actor, 82, y + 53) draw_actor_exp_menu(@actor, x + 52, y + 100) draw_actor_level(@actor, x + 82, y + 80) self.contents.font.size = 20 draw_actor_parameter_menu(@actor, x, y + 185, 0) draw_actor_parameter_menu(@actor, x, y + 200, 1) draw_actor_parameter_menu(@actor, x, y + 215, 2) draw_actor_parameter_menu(@actor, x + 50, y + 123, 3) draw_actor_parameter_menu(@actor, x + 50, y + 138, 6) draw_actor_parameter_menu(@actor, x + 50, y + 153, 5) draw_actor_parameter_menu(@actor, x + 50, y + 168, 4) draw_element_resist(@actor, 0, 230) if @new_atk != nil self.contents.font.color = system_color self.contents.draw_text(160, 175, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 175, 36, 32, @new_atk.to_s, 2) end if @new_pdef != nil self.contents.font.color = system_color self.contents.draw_text(160, 190, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 190, 36, 32, @new_pdef.to_s, 2) end if @new_mdef != nil self.contents.font.color = system_color self.contents.draw_text(160, 205, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 205, 36, 32, @new_mdef.to_s, 2) end if @new_str != nil self.contents.font.color = system_color self.contents.draw_text(160, 123, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 123, 36, 32, @new_str.to_s, 2) end if @new_dex != nil self.contents.font.color = system_color self.contents.draw_text(160, 138, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 138, 36, 32, @new_dex.to_s, 2) end if @new_agi != nil self.contents.font.color = system_color self.contents.draw_text(160, 153, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 153, 36, 32, @new_agi.to_s, 2) end if @new_int != nil self.contents.font.color = system_color self.contents.draw_text(160, 168, 40, 32, "->", 1) self.contents.font.color = normal_color self.contents.draw_text(200, 168, 36, 32, @new_int.to_s, 2) end end #-------------------------------------------------------------------------- def draw_element_resist(actor, x, y) max_elment = [Max_Elements_Shown, 8].min elements = $data_classes[@actor.class_id].element_ranks base = value = 0 case Element_Resists_Exhibition when 0 table = [0] + ['Weakest','Weak','Normal','Resist','Imune','Absorb'] when 1 table = [0] + ['-100%','-50%','0%','50%','100%','200%'] else table = [0] + ['200%','150%','100%','50%','0%','-100%'] end for i in 0...7#$data_system.elements.size begin bitmap = RPG::Cache.icon($data_system.elements[i] + '_elm') self.contents.blt(x + (base * 112), y + (value * 25), bitmap, Rect.new(0, 0, 24, 24)) result = table[elements[i]] case elements[i] when 1 ; self.contents.font.color = Weakest_Color when 2 ; self.contents.font.color = Weak_Color when 3 ; self.contents.font.color = Neutral_Color when 4 ; self.contents.font.color = Resist_Color when 5 ; self.contents.font.color = Imune_Color when 6 ; self.contents.font.color = Absorb_Color end case Element_Resists_Exhibition when 0 self.contents.draw_text(x + 28 + (base * 112), y - 4 + (value * 25), 180, 32, result.to_s, 0) else self.contents.draw_text(x + (base * 112), y - 4 + (value * 25), 72, 32, result.to_s, 2) end value += 1 base += 1 if value == max_elment value = value % max_elment rescue end end for i in 8...$data_system.elements.size begin bitmap = RPG::Cache.icon($data_system.elements[i] + '_elm') self.contents.blt(x + (base * 112) + 100, y + (value) , bitmap, Rect.new(0, 0, 24, 24)) result = table[elements[i]] case elements[i] when 1 ; self.contents.font.color = Weakest_Color when 2 ; self.contents.font.color = Weak_Color when 3 ; self.contents.font.color = Neutral_Color when 4 ; self.contents.font.color = Resist_Color when 5 ; self.contents.font.color = Imune_Color when 6 ; self.contents.font.color = Absorb_Color end case Element_Resists_Exhibition when 0 self.contents.draw_text(x + 28 + (base * 112) + 100, y - 4 + (value), 180, 32, result.to_s, 0) else self.contents.draw_text(x + (base * 112), y - 4 + (value * 25), 72, 32, result.to_s, 2) end value += 1 base += 1 if value == max_elment value = value % max_elment rescue end end end #-------------------------------------------------------------------------- def set_new_parameters(new_atk = nil, new_pdef = nil, new_mdef = nil, new_str = nil, new_dex = nil, new_agi = nil, new_int = nil) if @new_atk != new_atk || @new_pdef != new_pdef || @new_mdef != new_mdef || @new_str != new_str || @new_dex != new_dex || @new_agi != new_agi || @new_int != new_int @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef @new_str = new_str @new_dex = new_dex @new_agi = new_agi @new_int = new_int refresh end end end #============================================================================== # ** Window_EquipRight #============================================================================== class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- def initialize(actor) super(272, 256, 368, 224) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor refresh self.index = 0 end #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- def refresh self.contents.clear @data = [] @data.push($data_weapons[@actor.weapon_id]) @data.push($data_armors[@actor.armor1_id]) @data.push($data_armors[@actor.armor2_id]) @item_max = @data.size self.contents.font.color = system_color self.contents.draw_text(4, 0, 92, 32, $data_system.words.weapon) self.contents.draw_text(4, 32, 92, 32, $data_system.words.armor1) self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2) draw_item_name(@data[0], 92, 0) draw_item_name(@data[1], 92, 32) draw_item_name(@data[2], 92, 32 * 2) end #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end #============================================================================== # ** Window_EquipItem #============================================================================== class Window_EquipItem < Window_Selectable #-------------------------------------------------------------------------- def initialize(actor, equip_type) super(272, 256, 368, 224) @actor = actor @equip_type, @column_max, self.contents_opacity = equip_type, 1, 0 self.opacity, self.back_opacity = 255, 100 refresh self.active, self.index = false, -1 end #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- def refresh if self.contents != nil; self.contents.dispose; self.contents = nil; end @data = [] if @equip_type == 0 weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) @data.push($data_weapons[i]) end end end if @equip_type != 0 armor_set = $data_classes[@actor.class_id].armor_set for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 and armor_set.include?(i) @data.push($data_armors[i]) if $data_armors[i].kind == @equip_type-1 end end end @data.push(nil) @item_max = @data.size self.contents = Bitmap.new(width - 32, @item_max * 32) (0...@item_max-1).each {|i| draw_item(i)} self.contents.font.color = system_color self.contents.draw_text(4, (@item_max-1)*32, 100, 32, '[unequip]') end #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] x = 4 + index % 1 * (288 + 32) y = index / 1 * 32 case item when RPG::Weapon ; number = $game_party.weapon_number(item.id) when RPG::Armor ; number = $game_party.armor_number(item.id) end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end #============================================================================== # ** Window_Status #============================================================================== class Window_Status_new < Window_Base #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 480) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.size = 18 self.contents.font.bold = true refresh end #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...$game_party.actors.size x = i * 203 y = -8 actor = $game_party.actors[i] draw_actor_name_menu(actor, x, y) draw_actor_class_menu(actor, x + 80, y) draw_actor_battle_face(actor, x + 3, y + 130) draw_actor_graphic(actor, x + 20, y + 180) draw_actor_state(actor, x + 15, y + 187) draw_actor_hp_menu(actor, x + 100, y + 28) draw_actor_sp_menu(actor, x + 82, y + 53) draw_actor_exp_menu(actor, x + 52, y + 100) draw_actor_level(actor, x + 82, y + 80) draw_actor_parameter_menu(actor, x + 50, y + 123, 3) draw_actor_parameter_menu(actor, x + 50, y + 138, 6) draw_actor_parameter_menu(actor, x + 50, y + 153, 5) draw_actor_parameter_menu(actor, x + 50, y + 168, 4) self.contents.font.color = system_color x2 = 0 self.contents.draw_text(x + x2, y + 215, 96, 32, $data_system.words.weapon) self.contents.draw_text(x + x2, y + 260, 96, 32, $data_system.words.armor1) self.contents.draw_text(x + x2, y + 310, 96, 32, $data_system.words.armor2) draw_item_name($data_weapons[actor.weapon_id], x + x2 + 16 , y + 240) draw_item_name($data_armors[actor.armor1_id], x + x2 + 16, y + 285) draw_item_name($data_armors[actor.armor2_id], x + x2 + 16, y + 335) draw_actor_parameter_menu(actor, x, y + 355, 0) draw_actor_parameter_menu(actor, x, y + 370, 1) draw_actor_parameter_menu(actor, x, y + 385, 2) end end end#============================================================================== # ** Scene_Equip #============================================================================== class Scene_Equip #-------------------------------------------------------------------------- def main @actor = $game_party.actors[@actor_index] @help_window = Window_Help.new @left_window = Window_EquipLeft.new(@actor) @right_window = Window_EquipRight.new(@actor) @right_window.opacity = @left_window.opacity = @help_window.opacity = 255 @right_window.back_opacity = @left_window.back_opacity = 100 @help_window.back_opacity = 100 @item_window1 = Window_EquipItem.new(@actor, 0) @item_window2 = Window_EquipItem.new(@actor, 1) @item_window3 = Window_EquipItem.new(@actor, 2) @status_window = Window_EquipStatus.new(@actor) @status_window.opacity, @status_window.back_opacity = 255, 100 for i in 0...2 eval("@item_window#{1 + i}.visible = false") end @right_window.help_window = @help_window @item_window1.help_window = @help_window @item_window2.help_window = @help_window @item_window3.help_window = @help_window @right_window.index = @equip_index @spriteset = Spriteset_Map.new refresh Graphics.transition loop do Graphics.update Input.update update break if $scene != self end Graphics.freeze @help_window.dispose @left_window.dispose @right_window.dispose @item_window1.dispose @item_window2.dispose @item_window3.dispose @status_window.dispose @spriteset.dispose end #-------------------------------------------------------------------------- def refresh @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) item1 = @right_window.item eval("@item_window = @item_window#{@right_window.index + 1}") @left_window.set_new_parameters if @right_window.active if @item_window.active item2 = @item_window.item last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef new_str = @new_str new_dex = @new_dex new_agi = @new_agi new_int = @new_int @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,new_agi,new_int) end end #-------------------------------------------------------------------------- def update @left_window.update @right_window.update @item_window.update refresh if @right_window.active @item_window1.visible = false @item_window2.visible = false @item_window3.visible = false @right_window.visible = true update_right return end if @item_window.active @right_window.visible = false @item_window.contents_opacity = 255 update_item return end end #-------------------------------------------------------------------------- alias cms_update_right update_right def update_right cms_update_right end #-------------------------------------------------------------------------- alias cms_update_item update_item def update_item cms_update_item end endso yea, that's it.
Edited by Bob423Share this post
Link to post
Share on other sites