Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Satoh

1
Script Troubleshooting / Smithing Animation scene...
November 17, 2009, 02:29:42 pm
Ok, I'm trying to make a scene that uses the current map (including a number of events that I need to play the background animations) to play an animation of the character and his partner hammering the sword on an anvil...

But, as I've never messed with displaying a map scene or battle scene... or any scene other than basic menus... I'm a little unsure how to do this...

It will only last for a few seconds and I don't want any interactions to be possible during the demo.


Can anyone help me with stuff like displaying the map and events and all? I tried looking at the Game_Map Spriteset_Map, but I really am not sure what's doing what...
2
Script Troubleshooting / [RESOLVED]Bitmap Text
November 15, 2009, 03:41:23 pm
Spoiler: ShowHide
class Bitmap
 
 $bitfont = Bitmap.new("graphics/pictures/fontmap.png")
 
#def draw_fontmap_text(start_x, y, dummyx, dummyy, my_text, my_bitmap = self.contents)
def draw_text(start_x, y, dummyx = 0, dummyy = 0, my_text = '', a = 0)
 if start_x.is_a?(Rect)
     start_x, y, dummyx, dummyy, my_text, a = start_x.x, start_x.y, start_x.width, start_x.height, y, dummyx
     if dummyx.is_a?(Fixnum)
       a = 255
     end
     
   else
     start_x, y, dummyx, dummyy, my_text, a = start_x, y, dummyx, dummyy, my_text, a
     if a.is_a?(Fixnum)
       a = 255
     end
   end
 x2 = start_x
 #my_bitmap = Bitmap.new(640,480)
 while  ((@letter = my_text.slice!(/./m)) != nil)
   case @letter
   when "A"
     letteroffset = 14 * 0
     caseoffset = 26 * 0
   when "B"
     letteroffset = 14 * 1
     caseoffset = 26 * 0
   when "C"
     letteroffset = 14 * 2
     caseoffset = 26 * 0
   when "D"
     letteroffset = 14 * 3
     caseoffset = 26 * 0
   when "E"
     letteroffset = 14 * 4
     caseoffset = 26 * 0
   when "F"
     letteroffset = 14 * 5
     caseoffset = 26 * 0
   when "G"
     letteroffset = 14 * 6
     caseoffset = 26 * 0
   when "H"
     letteroffset = 14 * 7
     caseoffset = 26 * 0
   when "I"
     letteroffset = 14 * 8
     caseoffset = 26 * 0
   when "J"
     letteroffset = 14 * 9
     caseoffset = 26 * 0
   when "K"
     letteroffset = 14 * 10
     caseoffset = 26 * 0
   when "L"
     letteroffset = 14 * 11
     caseoffset = 26 * 0
   when "M"
     letteroffset = 14 * 12
     caseoffset = 26 * 0
   when "N"
     letteroffset = 14 * 13
     caseoffset = 26 * 0
   when "O"
     letteroffset = 14 * 14
     caseoffset = 26 * 0
   when "P"
     letteroffset = 14 * 15
     caseoffset = 26 * 0
   when "Q"
     letteroffset = 14 * 16
     caseoffset = 26 * 0
   when "R"
     letteroffset = 14 * 17
     caseoffset = 26 * 0
   when "S"
     letteroffset = 14 * 18
     caseoffset = 26 * 0
   when "T"
     letteroffset = 14 * 19
     caseoffset = 26 * 0
   when "U"
     letteroffset = 14 * 20
     caseoffset = 26 * 0
   when "V"
     letteroffset = 14 * 21
     caseoffset = 26 * 0
   when "W"
     letteroffset = 14 * 22
     caseoffset = 26 * 0
   when "X"
     letteroffset = 14 * 23
     caseoffset = 26 * 0
   when "Y"
     letteroffset = 14 * 24
     caseoffset = 26 * 0
   when "Z"
     letteroffset = 14 * 25
     caseoffset = 26 * 0
   when "a"
     letteroffset = 14 * 0
     caseoffset = 26 * 1
   when "b"
     letteroffset = 14 * 1
     caseoffset = 26 * 1
   when "c"
     letteroffset = 14 * 2
     caseoffset = 26 * 1
   when "d"
     letteroffset = 14 * 3
     caseoffset = 26 * 1
   when "e"
     letteroffset = 14 * 4
     caseoffset = 26 * 1
   when "f"
     letteroffset = 14 * 5
     caseoffset = 26 * 1
   when "g"
     letteroffset = 14 * 6
     caseoffset = 26 * 1
   when "h"
     letteroffset = 14 * 7
     caseoffset = 26 * 1
   when "i"
     letteroffset = 14 * 8
     caseoffset = 26 * 1
   when "j"
     letteroffset = 14 * 9
     caseoffset = 26 * 1
   when "k"
     letteroffset = 14 * 10
     caseoffset = 26 * 1
   when "l"
     letteroffset = 14 * 11
     caseoffset = 26 * 1
   when "m"
     letteroffset = 14 * 12
     caseoffset = 26 * 1
   when "n"
     letteroffset = 14 * 13
     caseoffset = 26 * 1
   when "o"
     letteroffset = 14 * 14
     caseoffset = 26 * 1
   when "p"
     letteroffset = 14 * 15
     caseoffset = 26 * 1
   when "q"
     letteroffset = 14 * 16
     caseoffset = 26 * 1
   when "r"
     letteroffset = 14 * 17
     caseoffset = 26 * 1
   when "s"
     letteroffset = 14 * 18
     caseoffset = 26 * 1
   when "t"
     letteroffset = 14 * 19
     caseoffset = 26 * 1
   when "u"
     letteroffset = 14 * 20
     caseoffset = 26 * 1
   when "v"
     letteroffset = 14 * 21
     caseoffset = 26 * 1
   when "w"
     letteroffset = 14 * 22
     caseoffset = 26 * 1
   when "x"
     letteroffset = 14 * 23
     caseoffset = 26 * 1
   when "y"
     letteroffset = 14 * 24
     caseoffset = 26 * 1
   when "z"
     letteroffset = 14 * 25
     caseoffset = 26 * 1
   when "1"
     letteroffset = 14 * 0
     caseoffset = 26 * 2
   when "2"
     letteroffset = 14 * 1
     caseoffset = 26 * 2
   when "3"
     letteroffset = 14 * 2
     caseoffset = 26 * 2
   when "4"
     letteroffset = 14 * 3
     caseoffset = 26 * 2
   when "5"
     letteroffset = 14 * 4
     caseoffset = 26 * 2
   when "6"
     letteroffset = 14 * 5
     caseoffset = 26 * 2
   when "7"
     letteroffset = 14 * 6
     caseoffset = 26 * 2
   when "8"
     letteroffset = 14 * 7
     caseoffset = 26 * 2
   when "9"
     letteroffset = 14 * 8
     caseoffset = 26 * 2
   when "0"
     letteroffset = 14 * 9
     caseoffset = 26 * 2
   when "."
     letteroffset = 14 * 10
     caseoffset = 26 * 2
   when "'"
     letteroffset = 14 * 11
     caseoffset = 26 * 2
   when "?"
     letteroffset = 14 * 12
     caseoffset = 26 * 2
   when "!"
     letteroffset = 14 * 13
     caseoffset = 26 * 2
   when ","
     letteroffset = 14 * 14
     caseoffset = 26 * 2
   when " "
     letteroffset = 14 * 26
     caseoffset = 26 * 0
   else
     letteroffset = 14 * 26
     caseoffset = 26 * 0
   end
       
   
   #my_bitmap.blt(x2, y, $bitfont, Rect.new(letteroffset,caseoffset, 14, 26))
   self.blt(x2, y, $bitfont, Rect.new(letteroffset,caseoffset, 14, 26))
   
   x2 += 14
   
 end
end
end


For some reason, the string values of most menu options get removed after seemingly any command menu is closed...
3
I'm attempting to create an alias to the message window that will remove \L(or R)[ (Some alphanumeric code representing a Character and facial expression) ] from the text of the message, and add/replace/remove the corresponding portrait to the message window on the corresponding side (Left or Right)

I also intend to use a similar method to display the characters' names to the message window (just below the portrait, or on one side if no portrait exists)


But first, I need to understand what I can and cannot do with text.gsub!.

(I'm using this process because I don't want to have to use a custom script call for all my message windows; so I can just add a tag like \n[1]. (Only it would be \L[1,1] for ["First Character","Angry"] or something.))


EDIT: this is what I have thusfar...
text.gsub!(/\\[Ll]\[([0-9]+)\]/) do
 <insert/change picture[#] on the left side of the message window>
 
text.gsub!(/\\[Rr]\[([0-9]+)\]/) do
 <insert/change picture[#] on the right side of the message window>


One thing that confuses me is whether or not \[([0-9]+)\] means any number from 0 to 9 or any number composed of digits 0 through 9...

Another thing I'm not sure about is whether I can even do a multi-dimensional array lookup using this...  (Remember I want it to work like \L[1,12] )

Also the slashes are a bit confusing...
4
First off, having poured over the original tile movement process, and attempting to modify it myself, I realize I don't understand what it's doing in the least.

Moreover, I REALLY don't understand how pixel movement works...


What I'd like to know, if anyone can help, is:

How can I create a partially passable area... By this I mean, an impassable space that is smaller than 32x32.
I'm assuming that pixel movement such as that in TONS reworks the passibility tests... (I'm assuming that's what "intelligent passibility" does)
So I need a bit of a breakdown on how the passibility check works, in order to attempt to make a 16x16 passibility check, or 8x8, and so on...

(I currently plan on using either a special set of tiles as barriers, or terrain flags to differentiate what areas will be of what passibility size.)


So, I would like to call out once more, to those more experienced with programming than I at the scripting arts.

Here is a list of sizes I hope to incorporate into my test:

32x32
32x16
16x32
16x16


The next two would be for smoothness of navigation around objects that are round or very small... (I imagine these will be the most complicated to test, by far)
16x16(with a 45o diagonal edge)
32x32(Diagonal edge)


So, could anyone please give their input? (I apologize if this type of script movement is too much to explain)
5
Spoiler: ShowHide
#==============================================================================
# ** Window_Command
#------------------------------------------------------------------------------
#  This window deals with general command choices.
#==============================================================================

class Window_Command < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     width    : window width
 #     commands : command text string array
 #--------------------------------------------------------------------------
 def initialize(width, commands)
   # Compute window height from command quantity
   super(4, 60, width, commands.size * 32 + 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(4, 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

#==============================================================================
# ** Window_PlayTime
#------------------------------------------------------------------------------
#  This window displays play time on the menu screen.
#==============================================================================

class Window_PlayTime < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 640, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.draw_text(4, 0, 64, 32, "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(64, 0, 120, 32, text, 2)
   cx = contents.text_size($data_system.words.gold).width
   self.contents.font.color = normal_color
   self.contents.draw_text(282, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
   self.contents.font.color = system_color
   self.contents.draw_text(256-cx, 0, cx, 32, $data_system.words.gold, 2)
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   super
   if Graphics.frame_count / Graphics.frame_rate != @total_sec
     refresh
   end
 end
end

#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================

class Window_MenuStat2 < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(chara)
   super(0, 0, 446, 116)
   @chara = chara
   self.contents = Bitmap.new(width - 16, height - 16)
   refresh
   self.active = false
   self.index = -1
   return chara
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   @item_max = 1 #$game_party.actors.size
   #for i in 0...$game_party.actors.size
     x = 0
     y = 0 #i * 116
     actor = @chara
   if actor != nil
     #actor = $game_party.actors[0]
     draw_actor_graphic(actor, x + 24, y + 80)
     draw_actor_name(actor, x, y - 8)
     #draw_actor_class(actor, x - 64, y)
     draw_actor_level(actor, x, y + 32)
     #draw_actor_state(actor, x + 90, y + 32)
     draw_actor_exp(actor, x, y + 56)
     draw_actor_hp(actor, x + 192, y + 32)
     draw_actor_sp(actor, x + 192, y + 56)
   else
     self.contents.draw_text(width / 2, height / 2, 32, 120, "Empty")
   end
   
 end
 #--------------------------------------------------------------------------
 # * Cursor Rectangle Update
 #--------------------------------------------------------------------------
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
   else
     self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
   end
 end
end

Spoiler: ShowHide
class Scene_Menu < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     menu_index : command cursor's initial position
 #--------------------------------------------------------------------------
 def initialize(menu_index = 0)
   @menu_index = menu_index
 end
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main
   # Make command window
   s1 = $data_system.words.skill
   s2 = COMBO_SETUP_NAME
   s3 = $data_system.words.item
   s4 = $data_system.words.equip
   s5 = "Status"
   s6 = "Config"
   s7 = "Tactics"
   s8 = "Dictionary"
   s9 = ""
   s10 = "File"
   @command_window = Window_Command.new(192, [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10])
   @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)
     @command_window.disable_item(4)
     @command_window.disable_item(6)
   end
   # If save is forbidden
   if $game_system.save_disabled
     # Disable save
     @command_window.disable_item(9)
   end
   # Make play time window
   @playtime_window = Window_PlayTime.new
   @playtime_window.x = 0
   @playtime_window.y = 416
   # Make steps window
   #@steps_window = Window_Steps.new
   #@steps_window.x = 0
   #@steps_window.y = 320
   # Make gold window
   #@gold_window = Window_Gold.new
   #@gold_window.x = 0
   #@gold_window.y = 416
   # Make status window
   #if $game_party.actors[0] != nil
     @status_window1 = Window_MenuStat2.new($game_party.actors[0])
     @status_window1.x = 192
     @status_window1.y = 62
     @status_window1.z = @command_window.z - 10
   #else
    # @nilchar_window1 = Window_Nilchar.new
     @status_window2 = Window_MenuStat2.new($game_party.actors[1])
     @status_window2.x = 192
     @status_window2.y = 62 + (118)
     @status_window2.z = @command_window.z - 10
     @status_window3 = Window_MenuStat2.new($game_party.actors[2])
     @status_window3.x = 192
     @status_window3.y = 62 + (236)
     @status_window3.z = @command_window.z - 10
   # Execute transition
   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
   @command_window.dispose
   @playtime_window.dispose
   #@steps_window.dispose
   #@gold_window.dispose
#    if @status_window1.exists?
     @status_window1.dispose
#    else
#     @nilchar_window1.dispose
#    end
#    if @status_window2.exists?
     @status_window2.dispose
#    else
#      @nilchar_window2.dispose
#    end
#    if @status_window3.exists?
     @status_window3.dispose
#    else
#      @nilchar_window3.dispose
#    end
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Update windows
   @command_window.update
   @playtime_window.update
   #@steps_window.update
   #@gold_window.update
   @status_window1.update
   @status_window2.update
   @status_window3.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_window1.active || @status_window2.active || @status_window2.active
     update_status
     return
   end
 end
 #--------------------------------------------------------------------------
 # * Frame Update (when command window is active)
 #--------------------------------------------------------------------------
 def update_command
   # If B button was pressed
   if Input.trigger?(Input::B)
     # Play cancel SE
     $game_system.se_play($data_system.cancel_se)
     # Switch to map screen
     $scene = Scene_Map.new
     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  # item
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Switch to item screen
       $scene = Scene_Item.new
     when 1  # skill
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Make status window active
       @command_window.active = false
       @status_window1.active = true
       @status_window1.index = 0
     when 2  # equipment
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Make status window active
       @command_window.active = false
       @status_window1.active = true
       @status_window1.index = 0
     when 3  # status
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Make status window active
       @command_window.active = false
       @status_window1.active = true
       @status_window1.index = 0
     when 4  # save
       # If saving is forbidden
       if $game_system.save_disabled
         # 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 save screen
       $scene = Scene_Save.new
     when 5  # end game
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Switch to end game screen
       $scene = Scene_End.new
     when 6
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Equimage.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_window1.active = false
     @status_window1.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

Here is the code I'm having issues with...

I tried changing the way in which the character's status is displayed on the main menu page, and finally got most stuff working... however I have a few issues:

1 Now that I have done this, all my menus are broken, probably due to how I rewrote the status method.

2 My message for non existing party member slots should read "Empty" in the center of the frame, but instead it is just blank.
6
I've seen a few Iso battle scripts... and I found a broken link to a supposed iso map script... but I've yet to actually see an actual script...

So here's what I want to know... it it possible to make an isometric map movement script? By that I mean, would it be possible to get a script that replaces standard Up down left right with Northwest Southeast Northeast Southwest respectively?

This being a movement of 2,1 X,Y.




For the Second part of my request, I'd like to know how to attach status effects to weapons and equipment. Specifically I want to add an invulnerability status to a sword...

I want to add an 'always max damage' status to another sword...

and I want to add a status that has a 50% chance to save the player from a killing blow, while at the same time giving a regeneration effect, on an accessory...

(I should note that I also need to know how to make such effects... It shouldn't be hard to do with a script, but I don't know how to attach a script to either a status effect or a weapon...)

EDIT: Before I get to hasty... Thanks for any help you can provide.


EDIT2: Ok Looks like Tons has two of the status effects I need... all I really need now is 50% chance of keeping 1HP on fatal attacks, and 'always max damage'....

(Speaking of maximums.... is there a way to break damage/level limits?)
7
I'm in need of a script that mimics RM2K3's sprite battle system... (one that can support RM2k3 battle sprites)

It must be RMXP compatible...

Preferably compatible with Tons of Add-ons.

I started looking, but I couldn't find much, and I've lost all my old resource links... Not to mention I have no idea how to tell if the script I might find is a good one... or incredibly bad one... aside from wasting large amount of time and frustration...

So I put this forth to you all... I'm sure you know more about this than I(especially since I haven't messed with RM for a long time...)

Can anyone give me some suggestions?

Thanks.
8
Welcome! / Will be absent for a while...
December 15, 2008, 01:17:56 pm
I'm currently burned out on RMXP and I really need to learn some Python/C/etc so I can get some of my oh so longed for 3D games started...

I may or may not dash in and out of the forum here or there... I also have big and unnecessarily complicated things going on... so... busy busy...

Later all, Blizz, Aqua, Ulta...

*Bows and becomes hidden by shadows*
9
Ok... so, currently I have plans for 4 Xelda games, (short though they may be) and possibly a fifth.... depending on my mood/success I suppose...

Basic Concept:
LinkLinc is the Hero of Time Hero of Destiny Some guy who gets thrown into a bunch of epic CRAPFESTS... and puzzles!

Features:
Random useless items that take up vital inventory space...
Lots of comedy...
Navi as a playable character!!! (it will be much more awesome than it sounds, trust me...)
Fairy eating...
Gender confusion (LOL @ OOT...)
BlizzABS... (mildly customized for better Zelda-like-ness-itude)
Pie...
Robert DeNiro Lucy Liu That guy from ALF A can of beans
That annoying 'trading minigame to get that overpowered weapon' thing.

The games will each be in a different style, quite possibly using several authentic Zelda sprites and tilesets...

The plots will be confusing and hilariously unimaginable... (Just as most Zelda games aren't!)

There will be a Dungeon of Inconceivably Unfathomable Aggravation.

Current Working Titles:
The Legend of Xelda

The Legend of Navi: Linc's Insanity (Xelda II)

The Legend of Xelda: The Rings, The Arrow, and The Cross (Xelda III)

The Legend of Linc: Because, Let's Face It, Xelda Isn't Even Important (Xelda IV)

and a tentative name for Xelda V : The Legend of Xelda: The Bathmat of Incredible Moistness



Expect random images to pop up randomly in random places... likely with a vaguely funny comment underneath.
10
Ok, I'm interested in TWO THINGS.

I want a script that can
A. Use a font that is in the graphics folder but not installed into Windows

OR

B. Check if a font is installed and use that font, else defaulting to Times New Roman or something...

(So that players can see the custom fonts I put in my games without having to install them)

Does this make sense?
Can it be done? I would prefer the former option to the latter, but I think the latter is more feasible.

Thanks.
11
Its a basic datesim system

I want every character to have affection ratings for every other character.

Quotehow do I initialize an array to have all Actor_IDs in the first slot and zero in the second?  [actor_id(1, 2, 3, 4, etc), 0]

Quotebasically I want array[1] to = [actor_id[1],0] and array[2] = [actor_id[2],0]... but I want it to work for all IDs and any new ones I make later...


Spoiler: ShowHide
class Game_Actor
  alias satoh_date_init setup
  def setup(actor_id)
    satoh_date_init(actor_id)
    @love_pts = []
    @love_scene = 0
  end
  def play_scene #(love_scene)
    case @love_scene
    when 1
      #execute scene 1
    when 2
      #execute scene 2
    when 3
      #execute scene 3
    when 4
      #execute scene 4
    when 5
      #execute scene 5
    when 6
      #execute scene 6
    when 7
      #execute scene 7
    end
  end
end
12
Script Troubleshooting / Battle Script help required...
November 17, 2008, 06:56:13 am
Okay, so, as per Blizz's suggestion I hunted down a Tales ABS to help my own script further its development...
However... The only one I could find an actual DL link for doesn't seem to run properly... here is what I have...

I hope someone can help...

First off I get errors anywhere XRXS_SB1 is mentioned, so I deleted that from it, then I got errors from
alias some_thing refresh
def refresh

saying refresh is undefined....

the script is too long to post
13
Script Requests / 2D Fighter Combo Battle system
November 12, 2008, 12:28:44 am
This is a request, but I'm not assuming the role of a silent observer, I will try to help out.


Here we go, what I'm after is a CBS that uses sideview battle design (actively updated) with a sprite sheet of my own specifications (IE not just 4 frames of animation, but probably closer to 6 or 10 frames)

Preferably variable (each row constitutes one animation in the sheet and each cell in that is one frame, and each animation has these parameters defined in code, like MAIN-DUDE has 10 skills(10 rows) row 1 has 10 cells(frames) row 2 has 6 cells etc.)

it needs to have a combo system. Buttons can be pressed and depending on how long it takes to press a series of buttons, that set of presses may execute a combo, (Punch, punch, punch, punch = P...P...P...P vs. Punch-punch-sweep kick-uppercut = PPPP)

It needs a special move system. same as above but more like the classic Hadoken  (Down--Forward-Punch)
these skills take parameters from the SKILL tab in RMXP, such as ATK strength and SP consumtion, while standard combos are simply predefined script routines for each character.

Players need to be able to switch between their (up to)four current party members mid battle, and the HP/SP needs to be saved so the characters don't heal after being switched.

There needs to be team skills between certain characters, (these must also be directly scripted, or at least the script must contain the characters necessary in the party.)

Characters and enemies will need their damage, HP/SP, defense, and movement speed based on parameters in the Database(DB)

Enemies will need some sort of random attack AI based on Enemy Action setups in the ENEMY DB...

Troops need to be understood as Characters the CPU has to switch between, and not as enemies that all appear on the screen at once.

The battles WILL take place in a separate battle screen. Characters need to be moved by either arrow keys or WASD and attacks need to be configurable to other keys on the keyboard. (Default probably H,J,K,L for WASD and Z,X,C,V for arrow key arrangements)

Movement will be confined to left and right walking (with dash forward and backstep) Jumping (and landing on the same level as jumped from)
and crouching (with Forward, Backward, Air, and Crouch attack possibilities)

Battles end after ONE character or ONE enemy is defeated (HP <= 0)  Enemies will give EXP for the entire troop.

Characters still level up, (though the stat gain should be slow to avoid overpowering the characters after one level)

Battles need to be capable of being paused (possibly with a menu)

Attacks need to be varied in power (Light, Medium, and Heavy) Each character's attack set will be different...

States need to be possible to be inflicted via special attacks, last for a set time period, and return to [Normal].

Slip Damage will need to work.



I seriously hope I can get some real help with this... It has the capability of being as epic as BlizzABS, if it works. (In my opinion... but that's biased...)

EDIT: Also an intro and ending phase (Characters and enemies say something or do some pose during this time.)
14
Resource Database / Satoh's Resources(11-26-08)
November 10, 2008, 02:01:18 pm
Current Resources: 37

Quote
For a limited time I will be accepting windowskin requests.

1 spot open for now.

SLOT1:Shadonking [Completed]
SLOT2:


Well... I suppose, since I'm messing with it at the moment, I should make a topic to show off my resources...

First off, I suppose I'll show my complete set of Tsukihime characters...
Tohno Shiki: ShowHide

Tohno Shiki: ShowHide

Nanaya Shiki: ShowHide

Tohno Akiha: ShowHide

Tohno Akiha: ShowHide

Tohno Akiha: ShowHide

Arcueid Brunestud: ShowHide

Ciel: ShowHide

Ciel: ShowHide

Yumizuka Satsuki: ShowHide

Inui Arihiko: ShowHide

Kohaku: ShowHide

Kohaku: ShowHide

Hisui: ShowHide

Nrvnqsr Chaos: ShowHide

Tohno SHIKI (Roa): ShowHide



Other characters and the like...
Characters for Xelda...
Linc: ShowHide

Linc Jump: ShowHide

Linc Attack: ShowHide

Linc's Dagger: ShowHide

Linc's Sword: ShowHide

Sara: ShowHide

Linc... not my best work...: ShowHide

Credit for the original sheet goes to Blizzard.
BlizzABS Gunner: ShowHide

BlizzABS Gun: ShowHide

Credit for the original sheet goes to Blizzard.
BlizzABS Spearman: ShowHide

BlizzABS Spear: ShowHide

Random Character: ShowHide

Male Kimono: ShowHide

Nobuo Uematsu: ShowHide

Walter: ShowHide

Alucard: ShowHide

Alucard: ShowHide


Okay now a few map bits...
This map is larger, but photobucket tried to resize it s I cut it short.

Futuristic Lab A: ShowHide

Futuristic Lab B(shadows): ShowHide

Catwalk: ShowHide

Catwalk (Transparent): ShowHide


Windowskins
Brushed Steel Gray: ShowHide

War Green: ShowHide

Should be used as a TILED Skin
Sci-Fi Black: ShowHide

Obsolete, use the one below it, this is what it will look like however.
『The World』 Teal: ShowHide

『The World』 Teal(Optimum): ShowHide

Sleek Violet: ShowHide

Parchment Beige: ShowHide

Should be used as a TILED Skin
Notebook White: ShowHide


My CG's...
Arcueid x Ciel: ShowHide


NOT MY WORKS, BUT STILL USEFUL!!
Female Template: ShowHide

Male Template: ShowHide
15
Resources / Tileset preview...
October 30, 2008, 08:15:05 am
Here's a set I started, not sure how to finish it though...

Spoiler: ShowHide
16
Resource Requests / few things, sprites/concept art/etc
October 26, 2008, 02:44:58 am
Ok, so here's what I need...

I need some sprites and/or concept art for various types of Mecha

Primarily they should be boxy and bulky, but some of them can be sleek, smooth, and thin... There will be both giant and human sized ones.

Some of them will have a special outer casing that is made of a very flexible metal fabric( it's actually not a fabric, its solid, but it bends without losing structural integrity... but that's more of a plot point than anything else...)

Some will be worn as armor and some will be driven like tanks...



I also would like to request (actually I hate asking people to do things for me...) someone to apply some features to a template image I made... The image is an attack animation for my BlizzABS characters. The animation for all the characters will be the same, and the separate attack styles will be differentiated via the weapon sprites...

I have made the main character's punch animation, but there are several characters that need to have their heads and various features applied over the same poses...
Example: ShowHide
NOTE** they don't even really need to be animated, just posed.
The most important one is this one...
Spoiler: ShowHide

This is an alternate character design for the main character, and as such, I need her above all other characters... (though it would be nice to have a few more, for the party members...)

Let me know something if you are willing to help...


Anyone who can help will get their name in Big Important Looking LettersTM in the credits of my game, and have my thanks.


Also, if someone happens to be able to make decent Sideview battlers, I have a few characters I need made... I can provide more details(sketches, fighting styles etc.) when needed

Current helpers worthy of the  B.I.L.L.:
Aqua
Musicmuse
17
Level-up/ EXP gain notifier for BlizzABS

#=============================================================================
# * EXP Notifier for BlizzABS
#=============================================================================
# ** Display EXP
#-----------------------------------------------------------------------------
class Game_System
  def b_abs_exp_display #this script should use damage_pop to display gained EXP
    BlizzABS.player.actors.each {|actor|
      if @level != actor.final_level
        actor.battler.damage = exp_result(enemy).to_i #unless actor.cant_get_exp?
        # display text
        actor.battler.damage_pop = true #unless actor.cant_get_exp?
      end}
  end

#-----------------------------------------------------------------------------
# ** Removal of enemy call addition
#-----------------------------------------------------------------------------
  alias satoh_remove_enemy_mod remove_enemy
  def remove_enemy(enemy)
    satoh_remove_enemy_mod(enemy)
    b_abs_exp_display
  end
end


It screams random errors at me as soon as I kill and enemy...

Things I have been told are not defined:

actor
enemy
cant_get_exp?
implicitly convert nil to integer
final_level
18
Fluctuating Experience
Authors: Satoh, Blizzard
Version: 1.01
Type: Experience and Level-up system modification
Key Term: Misc Add-on



Introduction

This script mimics the .hack//Infection-Quarantine leveling system.



Features


  • Level up every 1000 EXP
  • EXP gain is determined by the difference in your level versus that of your enemy



Screenshots

I can't imagine a way to take a screenshot of EXP gaining... O.o


Demo

Basic Demo of a .hack game I'm making which utilizes my script
http://www.megaupload.com/?d=VS42HB7G



Script

Spoiler: ShowHide
  #==========================================================================
  #--------------------------------------------------------------------------
  # * Fluctuating Experience
  #--------------------------------------------------------------------------
  #   BlizzABS Compatible!!
  #==========================================================================

=begin

Author: Satoh
with massive support from Blizzard
Fixed: J & G_G

So the manner of which this script works, is that Experience-to-next-level
is fixed at 1000. Similer to the Dot.Hack games if you've ever played them.
The experience gained is factored against the difference in level between
you and the foe.

What?
You can't set the level of the enemies?
Well now you can!
All ya gotta do is put the desired level of the foe into the enemies' EXP field.
Seeing as XP-to-next is fixed, XP gained is also somewhat fixed. Therefor, the
EXP field of foes is now used for levels instead.

So fixed XP gain goes as one might guess:
The higher level of a monster you fight over yourself, the greater the XP you
gain. If you really like, you can edit these exact numbers a bit below, but I
suggest you don't bother unless you really know what your doing.


It seems this script was originally written by Mr. Satoh~san, however, when
Blizz-ABS took several steps further, this script did not.

So with G_G as my reference, I took it upon myself to repair its functionality.
Now, it seems to work.
Hurray!


--J


=end
  #--------------------------------------------------------------------------
  # * Start After Battle Phase
  #--------------------------------------------------------------------------
class Scene_Battle
  def start_phase5
    if !$BlizzABS
    # Shift to phase 5
    @phase = 5
    # Play battle end ME
    $game_system.me_play($game_system.battle_end_me)
    # Return to BGM before battle started
    $game_system.bgm_play($game_temp.map_bgm)
    # Initialize EXP, amount of gold, and treasure
    exp = 0
    gold = 0
    treasures = []
    # Loop
    for enemy in $game_troop.enemies
      # If enemy is not hidden
      unless enemy.hidden
        # Add EXP and amount of gold obtained
        exp += enemy.exp
        gold += enemy.gold
        # Determine if treasure appears
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end
    # Treasure is limited to a maximum of 6 items
    treasures = treasures[0..5]
    # Obtaining EXP
        for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level
        for enemy in $game_troop.enemies
          actor.exp += $BlizzABS.Processor.exp_factor(actor, enemy.exp)
        end
      end
    end
    # Obtaining gold
    $game_party.gain_gold(gold)
    # Obtaining treasure
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    # Make battle result window
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    # Set wait count
    @phase5_wait_count = 100
    end
  end
end
  #--------------------------------------------------------------------------
  # * Determine the EXP gained from foes.
  #     renamed method to "exp_factor"
  #     This entire method is merely the difference in level between you
  #     and the foe. The greater the difference, the greater the xp mod.
  #--------------------------------------------------------------------------
if $BlizzABS
class BlizzABS::Processor
  def exp_factor(actor, exp)
    lvl = exp - actor.level #compare the Enemy Level(EXP field)
                              #with the actor's current level
    sexp = 0
        case lvl
    when 10..100000 # The instance where enemies are 10+ levels higher than you.
      sexp = 520
    when 9
      sexp = 430
    when 8
      sexp = 350
    when 7
      sexp = 280
    when 6
      sexp = 220
    when 5
      sexp = 170
    when 4
      sexp = 130  # enemy levels are higher than yours.
    when 3
      sexp = 100  #^
    when 2        #|
      sexp = 80   #|
    when 1        #|
      sexp = 70
    when 0         # The instance where enemeis and yourself are the same level.
      sexp = 60
    when -1       #|
      sexp = 50   #|
    when -2       #|
      sexp = 40   #V
    when -3
      sexp = 28   #enemy levels are lower than yours.
    when -4
      sexp = 13
    when -5
      sexp = 8
    when -6
      sexp = 6
    when -7
      sexp = 4
    when -8
      sexp = 3
    when -9
      sexp = 2
    when -100000..-10 # The instance where you are 10+ levels higher than the foe.
      sexp = 1
    end
  return sexp
end
  #----------------------------------------------------------------------------
  # exp_result
  #  enemy - the killed enemy event
  #  Processes EXP gain after the death of an enemy.
  #----------------------------------------------------------------------------
  def exp_result(enemy)
      # get EXP
      exp = enemy.exp if enemy.exp != nil
        # All the stuff dealing with Tons
        if $tons_version != nil
          # if version is correct and using Different Difficulties
          if $tons_version >= 6.4 && TONS_OF_ADDONS::DIFFICULTY
            # multiply gained gold
            exp = exp * $game_system.exp_rate / 100
          end
          # if version is correct and using Passive Skills
          if $tons_version >= 6.5 && $game_system.PASSIVE_SKILLS
            # multiply gained gold with each actor's rate
            $game_party.actors.each {|actor| exp *= actor.exp_rate}
            exp = exp.to_i
          end
        end

      # iterate through all party members
      $game_party.actors.each {|actor|
          # increase EXP except if actor can't get EXP
          actor.exp += exp_factor(actor, exp) unless actor.cant_get_exp?}
    # return exp value for further processing
    return exp
  end#def
end#class
$BlizzABS = BlizzABS::Processor.new
end#if
  #--------------------------------------------------------------------------
  # * Calculate EXP
  #--------------------------------------------------------------------------
=begin

This is to prevent character not starting at Lvl 1 from having an EXP boost.

=end
class Game_Actor < Game_Battler
  def make_exp_list
    @exp_list[1] = 0
    for i in 2..100
      @exp_list[i] = 1000
    end
  end
 
  alias setup_satoh_expmod_aliased setup
  def setup(actor_id)
    setup_satoh_expmod_aliased(actor_id)
    @exp = 0
  end
  #--------------------------------------------------------------------------
  # * Change EXP
  #     exp : new EXP
  #--------------------------------------------------------------------------
=begin

Ok, this portion of the script rewrites the Level-up process. Now, anytime you
gain 1000 or more exp you gain a level. Then 1000 exp is subtracted from that
and any leftover exp is saved for your next level.
EXAMPLE:
Markus gains 1040 exp.
Markus levels up once and 1000 is subtracted.
Markus has 40 saved, and only needs 960 for his next level.

=end
  def exp=(exp)
    @exp = [[exp, 9999999].min, 0].max
    # Level up
    if @level <= ($data_actors[@actor_id].final_level - 1)
      while @exp >= 1000
        @level += 1 #unless @level >= $data_actors[@actor_id].final_level
        @exp -= 1000
        # Learn skill
        for j in $data_classes[@class_id].learnings
          if j.level == @level
          learn_skill(j.skill_id)
          end
        end
      end
    else
    @exp = 0
    end
  end
  #--------------------------------------------------------------------------
  # * Get EXP String
  #--------------------------------------------------------------------------
  def exp_s
    if @level != $data_actors[@actor_id].final_level
    return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
    else
    return "0"
    end
  end
  #--------------------------------------------------------------------------
  # * Get Next Level EXP String
  #--------------------------------------------------------------------------
  def next_exp_s
    if @level != $data_actors[@actor_id].final_level
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
    else
    return "1000"
    end
  end
  #--------------------------------------------------------------------------
  # * Get Until Next Level EXP String
  #--------------------------------------------------------------------------
  def next_rest_exp_s
    if @level != $data_actors[@actor_id].final_level
    return @exp_list[@level+1] > 0 ?
      (@exp_list[@level+1] - @exp).to_s : "-------"
    else
    return "1000"
    end
  end
end



Instructions

Instructions are in the script


Compatibility

Put it Between BlizzABS and Main somewhere.

Might not work with CBS's but is compatible with BlizzABS and Standard Battle System.


Credits and Thanks


  • Satoh
  • Boris "Blizzard" Mikić



Author's Notes

At this time, I have not found any current errors, and it should be fine...
If you find any errors, please document them here, and I will attempt to get them fixed.
19
New Projects / [RECRUITING][XP]Behold! a .hack//CLONE
October 23, 2008, 05:39:19 pm
Ok, so, my .hack game is now a working demo, it doesn't emulate the .hack games perfectly, but it isn't nearly finished.

In order to show the game off, I am allowing a download of the project file now.

Much help from and kudos to Blizzard.

The ABS system is Blizzard's as well as several of the other scripts...

As for the sprites they are from various authors unknown...

Anyway, I am looking for some help scripting and modifying sprites and finishing maps...
(While I would like recruits for this, I am also doing all of these as well...)
The plot is open for the most part, only a few details are Absolute, any recruits familiar with .hack can contribute to the plot
those not familiar can look up pertinent information on the .hack//Wiki. (I don't want to break the .hack continuity)

Current features include:
A special EXP system that mimics the one used in the original games...
Weapon based skill usage, as is in the original games...
Several of the BlizzABS features to further increase the likeness...
A completely custom windowskin that is a near carbon copy of the games' skin.

Planned features:
A CMS that looks and acts closer to the original games
A dynamic map builder that creates randomized maps based on player input parameters(long term goal)
A Custom Title menu.
Simulated email and computer desktop...again, like in the games. (mid goal)
LOTS and lots and lots of miniquests! Afterall what is an MMO(Simulated MMO) without quests!?


More info later...


Link: http://www.megaupload.com/?d=VS42HB7G

Current members:
Satoh
Shadonking
Diokatsu
scoace13
Aqua

Environment:
RPG Maker XP

Game controls:
Arrow keys + WASD for movement
Z for attack
X for menu/ Cancel
C + Enter for Accept

Screenshots: ShowHide

Title Screen: ShowHide
20
OK, so as is in my request thread, I'm trying to get a custom EXP distribution system... but rather than wait indefinitely for someone to simply say they don't have time...(as I assume would be my best case reply... being a pessimist) I decided to at least attempt it...

Here's what I have so far...

  #--------------------------------------------------------------------------
  # * Start After Battle Phase
  #--------------------------------------------------------------------------
class Scene_Battle
  def start_phase5
    # Shift to phase 5
    @phase = 5
    # Play battle end ME
    $game_system.me_play($game_system.battle_end_me)
    # Return to BGM before battle started
    $game_system.bgm_play($game_temp.map_bgm)
    # Initialize EXP, amount of gold, and treasure
    exp = 0
    gold = 0
    treasures = []
    # Loop
    for enemy in $game_troop.enemies
      # If enemy is not hidden
      unless enemy.hidden
        # Add EXP and amount of gold obtained
        exp += enemy.exp
        gold += enemy.gold
        # Determine if treasure appears
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end
    # Treasure is limited to a maximum of 6 items
    treasures = treasures[0..5]
    # Obtaining EXP
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level
        actor.exp += exp
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end
    # Obtaining gold
    $game_party.gain_gold(gold)
    # Obtaining treasure
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    # Make battle result window
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    # Set wait count
    @phase5_wait_count = 100
  end
  #--------------------------------------------------------------------------
  # * Determine the EXP to use in the exp variable above
  #--------------------------------------------------------------------------
  def satoh_level_exp(result)
    s_lvl = enemy.exp - actor.level #compare the Enemy Level(EXP field)
          #with the actor's current level
    s_exp = 0 #initialize
#    for enemy in $game_troop.enemies #not sure if I need this...
    case s_lvl #is this correct syntax?
    when s_lvl >= 10 #when the player lvl is 10+ less than the enemy level...
      s_exp = 520
    when s_lvl = 9
      s_exp = 430
    when s_lvl = 8
      s_exp = 350
    when s_lvl = 7
      s_exp = 280
    when s_lvl = 6
      s_exp = 220
    when s_lvl = 5
      s_exp = 170
    when s_lvl = 4
      s_exp = 130
    when s_lvl = 3
      s_exp = 100
    when s_lvl = 2
      s_exp = 80
    when s_lvl = 1
      s_exp = 70
    when s_lvl = 0
      s_exp = 60
    when s_lvl = -1 #Can RGSS deal with negatives?
      s_exp = 50
    when s_lvl = -2
      s_exp = 40
    when s_lvl = -3
      s_exp = 28
    when s_lvl = -4
      s_exp = 13
    when s_lvl = -5
      s_exp = 8
    when s_lvl = -6
      s_exp = 6
    when s_lvl = -7
      s_exp = 4
    when s_lvl = -8
      s_exp = 3
    when s_lvl = -9
      s_exp = 2
    when s_lvl <= -10
      s_exp = 1
    end


I intend to replace the Phase 5 script of Scene_Battle
21
Script Requests / [NEW request]Question/Request
October 15, 2008, 01:40:42 pm
NEW
Quote from: Satoh on October 16, 2008, 11:16:27 am
NEW INFO:
OK, is there a way to change the EXP rewarded to a specific number based on the level of each party member in comparison to the level of the enemy...? (using a field in the Enemy DB to define the level, like the EXP field for instance.)

and is there a way to raise the level cap to something higher than 99? (Lvl150, Lvl9999, etc...?)

AND finally, stop the characters' "To next level"  EXP from increasing with each level, (such as always needing exactly 2000 exp to level up no matter what level)


EXAMPLE:

Markus is lvl 10
Jesse is lvl 12

Enemy is lvl 12

After the battle Jesse gains 500 exp because she is equal lvl with the enemy.
Markus gains 750 exp because he is a lower level than the enemy.



RESOLVED

I'd like to know where the initial setup for all 'window' processes is, so I can make the window_back 2 pixels smaller in every direction (the background is clipping with the rounded corners of my window-skin edges)

and I'd like to know where/ would like a script for: displaying all text with a 1 pixel black outline. (Much like the HP counter in Blizz-ABS' HUD)

Also, is there a way to use separate fonts for menu, battle menu, and generic window texts? (I want my HP/ battle text to be one font, the speaking text to be another and the pause menu text to be a third font.)

If anyone could answer my questions or better yet script them up first, It'd be much appreciated.

Thank you for your time.