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 - PhoenixFire

1
Game Jams / Game Jam - April Showers, 2024
March 22, 2024, 05:49:38 am
Hello residents of Chaos; welcome to the thread for April Showers, one of the (hopefully) annual game jams I will be hosting starting this year.

Below you will find the details, rules, theme, etc for this game jam, some parts of which will be hidden until just before the game jam start date, to give everyone a chance to see the event, but get the details at the same time, so as to be on equal footing with each other.

RULES:
The rules are simple and straightforward.
  • This is an old-school "session"; games should be made with RPG Maker XP, VX/VXAce, or XPAce.
  • You may use custom tilesets, scripts, etc. This will not detract from the theme, nor give anyone an advantage over others.
  • You may work as a team, or solo; projects will be judged the same regardless.
  • As in past Game Jams, you are responsible for providing your own copy of the editor you choose. If you do not have any of the editors we'll be using this time, XP is currently on sale on Steam for $2.49 USD until March 28th, and VX Ace is on sale for $6.99 USD, also until March 28th. XPAce is a custom engine made by us at Chaos-Project, and requires you to have a license for both XP and VXAce, and can be found here: RMXPAce Thread
  • Completed projects may be submitted at any time before the end date/time but MUST be submitted before then. Late submissions will be accepted on a case-by-case basis, if there are extenuating circumstances.

THEME:
The theme will be announced closer to the start date/time.

TIMELINE:
Start: Monday, April 1st, 2024 @ 00:00. Local Timezone is fine.
End: Sunday, April 31st, 2024 @ 23:59. Local Timezone is fine.
Judging: Judging will be held the week of May 7th - 13th. The submitted games will be posted up the 6th, with a download link to each, and a poll added for everyone to vote on. Poll votes will be tallied at 00:00 (midnight / 12am) on the 14th.

PARTICIPANTS:
The list of participants will be listed below, as they sign up.

OTHER:
Want to discuss the game jam, chat with others, or just participate in our Discord community? You can join us here: Discord Link
2
Resources and Suggestions / The Credits List
October 04, 2015, 03:18:58 pm
Credit given where it is due. This is the current list of credits we will be using within the game. If you see your username on this list, and wish to be known in another manner, please let me know, and it will be updated and noted to use your preferred pseudonym.

Current List of Credits:
3
Features and Requests / Game Features
October 04, 2015, 03:12:29 pm
The current, planned, and suggested features for this game can be discussed here!
4
Resources and Suggestions / Demos and Trials
October 04, 2015, 03:08:09 pm
I have re-started making games, and as this game is al about the player, and being in an open world, shaping their own path, I have decided to start asking questions from the people I want to actually play this. What do you guys think when it comes to demos/trials/beta versions of a game?
5
Welcome! / -creeps back in at (almost) midnight-
July 30, 2015, 11:50:01 pm
yep, I'm back.. I'm reserving this and will fill in my activities from the past few months at some point, but I've been lurking here the last couple nights and wanted to say I'm back.. Again.. haha.

Glad to see you all. =)
6
I just keep finding all kinds of articles to post here; this is yet another one, discussing the way people use language on the internet, and how it has changed the way we say things. More of an interesting topic than a debate, but cool either way: http://the-toast.net/2013/11/20/yes-you-can-even/
9
Details here: http://store.steampowered.com/app/220700/

TL;DR VXAce is on sale for 80% off right now, coming down to 13.99, or 41.99 for a 4 pack if you're feeling generous :D

Thought you should all know :)
10
Chat / Other Artistry
July 29, 2014, 07:03:31 am
KK20 brought up an interesting point in a post, that there seems to be more programmers/scripters than any other type of artists in these forums. I'm curious to know, just how many people there are that dabble in other forms of media creation. You don't necessarily have to be good at it, or plan to release anything. For example, with games, I do alot more in the way of planning, storylines, and eventing, and I'm also learning scripting; however, I also mess around with audio, though I have never released a single track, and I like to edit graphics too. Lastly, and I know there must be something wrong with me for it, I also like writing technical and legal papers for things (like the readme file or the EULA for XPAce). I may or may not ever share some of my works in those fields, though I lean more towards the 'sure, why not' side at the moment.

Andyone else care to share? Any links for us to check out?
11
Resources / Large Icon Pack
July 24, 2014, 07:38:35 am
Over 10k icons, of every type. This should cover any of your common, and less than common item icons. You can download the the pack right here.
12
Sea of Code / Some JS web code for fun
July 16, 2014, 03:56:14 pm
Okay, so, who has not heard of the Harlem Shake song/dance? Well, there was one point where youtube had implemented a small JS code snippet that made the results page do the harlem shake when you searched for the song. This little snippet will make ANY page do the same thing, complete with a short sound clip of it. Simply open your page inspector (sorry IE people, won't work for you) paste it into the console and press enter. Then sit back and watch the page start to go crazy. Results WILL vary depending on the way the site was coded, but it should prove to be entertaining regardless.


Spoiler: ShowHide
Code: javascript
javascript:(function(){function c(){var e=document.createElement("link");e.setAttribute("type","text/css");e.setAttribute("rel","stylesheet");e.setAttribute("href",f);e.setAttribute("class",l);document.body.appendChild(e)}function h(){var e=document.getElementsByClassName(l);for(var t=0;t<e.length;t++){document.body.removeChild(e[t])}}function p(){var e=document.createElement("div");e.setAttribute("class",a);document.body.appendChild(e);setTimeout(function(){document.body.removeChild(e)},100)}function d(e){return{height:e.offsetHeight,width:e.offsetWidth}}function v(i){var s=d(i);return s.height>e&&s.height<n&&s.width>t&&s.width<r}function m(e){var t=e;var n=0;while(!!t){n+=t.offsetTop;t=t.offsetParent
}return n}function g(){var e=document.documentElement;if(!!window.innerWidth){return window.innerHeight}else if(e&&!isNaN(e.clientHeight)){return e.clientHeight}return 0}function y(){if(window.pageYOffset){return window.pageYOffset}return Math.max(document.documentElement.scrollTop,document.body.scrollTop)}function E(e){var t=m(e);return t>=w&&t<=b+w}function S(){var e=document.createElement("audio");e.setAttribute("class",l);e.src=i;e.loop=false;e.addEventListener("canplay",function(){setTimeout(function(){x(k)},500);setTimeout(function(){N();p();for(var e=0;e<O.length;e++){T(O[e])}},15500)},true);e.addEventListener("ended",function(){N();h()},true);e.innerHTML=" <p>If you are reading this, it is because your browser does not support the audio element. We recommend that you get a new browser.</p> <p>";document.body.appendChild(e);e.play()}function x(e){e.className+=" "+s+" "+o}function T(e){e.className+=" "+s+" "+u[Math.floor(Math.random()*u.length)]}function N(){var e=document.getElementsByClassName(s);var t=new RegExp("\\b"+s+"\\b");for(var n=0;n<e.length;){e[n].className=e[n].className.replace(t,"")}}var e=30;var t=30;var n=350;var r=350;var i="//s3.amazonaws.com/moovweb-marketing/playground/harlem-shake.mp3";var s="mw-harlem_shake_me";var o="im_first";var u=["im_drunk","im_baked","im_trippin","im_blown"];var a="mw-strobe_light";var f="//s3.amazonaws.com/moovweb-marketing/playground/harlem-shake-style.css";var l="mw_added_css";var b=g();var w=y();var C=document.getElementsByTagName("*");var k=null;for(var L=0;L<C.length;L++){var A=C[L];if(v(A)){if(E(A)){k=A;break}}}if(A===null){console.warn("Could not find a node of the right size. Please try a different page.");return}c();S();var O=[];for(var L=0;L<C.length;L++){var A=C[L];if(v(A)){O.push(A)}}})()
13
Advertising / RPG Maker XP Ace support site
July 03, 2014, 03:12:38 pm
RPG Maker XP-Ace
Support Site





As many of you already know, a support website is in the works for the RMXP-Ace project. The site is "live" at the moment, though still under construction. You are able to register and post though, which allows you to report problems through the forums. We will eventually have a ticket system in place that allows more elaborate reporting, but at the moment, that's in the works. If you are interested in scripting for the project, let me know as well!

So, what's the point of the site? Good question! The site has been born out of a necessity for a support site, after the inevitable collapse of the original site; it died an unfortunate digital death due to lack of funds it appears, and the original creator has not been heard from in quite some time. However, like all good products, it has survived and been given interest by the XP community. The site will feature a bug tracker/ticket system that allows for you to report scripts. There will also be a knowledge-base/wiki that is created around these script fixes. In addition to fixing scripts, my goal is to also take common/popular scripts that add value to the game, and, are not specific to just one design of a game, and add them to this project as an officially supported module.

The site's secondary purpose is to provide tutorials and documentation for putting the kit together yourself, if for some reason you choose to do so. This will only guide you through setting up and troubleshooting a basic copy of XP Ace however, and will not provide any of the other scripts that the development package has in it.

You can get to the site here: RPG Maker XP Ace website




This thread will also serve the purpose of letting you all know when the site is down, when it'll be up, etc.; quite an improvement over trying to notify everyone via the shoutbox here
14
New Projects / Project 57
June 10, 2014, 07:27:33 am


Project 57

A player driven game




Yes, I'm purposefully poking fun at Generic RPG names with the title of mine. I may or may not change the name somewhere down the road. This particular game is something I'm doing for the game making competition this month (yes, same one that legacyblade is in too). We'll see what happens with it! I don't expect to win the grand prize or anything, but I feel like I learned enough over the years to be able to at least attempt to compete. Plus, if I don't at least try, i have a 100% chance to fail at it :p



The Storyline




Ah yes, the storyline.. Well, let's see.. Oh! Yes, I almost forgot to tell you. This doesn't really have a storyline. At least, not in the traditional sense. You see, you make your own choices, and decide what happens. So I suppose the storyline is somewhat what I would call a reactionary one; The NPC's will react to you, and depending on choices you have made in the past, how long you have been playing, etc. they will have different reactions, and sometimes, entirely different requests for you. Many "main" quests, and most side quests, will only be activated on a conditional basis, so you might get different ones depending on your progress.

Your start-off is rather simple; also, very generic. This game attempts to add humor and comic relief to a game type that is rapidly becoming the next over-saturated game genre on the market. It does this by combining instances of pure stereotypical RPG themes with comedic dialog that makes fun of the stereotypical nature it is portraying.



Screenshots




Spoiler: ShowHide


One of the levels towards the beginning of the game; An attempt at improved mapping skills  :P





Demo and Downloads




DOWNLOAD: Yeah, I'll add one of these eventually EDIT: Download Available.



Other Links and Information




Hmm.. Nothing I can think of right this second. I'll be hosting this game on my site though, so you'll be able to download the demo from Gamers Archive when I get a demo created and all..
15
Advertising / Gamers Archive
June 05, 2014, 09:33:58 pm
So, I have come across a TON of dead links, broken downloads, and other such disappointing situations over the past several years whilst traversing this site, RMRK, HomeBrew, etc. and I've decided to start up a small, not too over-advertised (at least not for a bit) file-server / archive style site. My offer is free file hosting for projects, files, etc for just about anyone that's wants it. This is kind pf similar to the idea that GG had a while back with Cybele, but not nearly as elaborate or attractive looking.

Would anyone be interested in using this as well? If not, that's okay, I still plan to use it myself, but I figure why not share the wealth! This place has been a huge help to me over the years, so I'm trying to pay it forward in a way :)

The URL (when it becomes active) is gamers-archive.com

EDIT: If you think you would make use of this, and already know things that you would like to see on it, place a link to them somewhere on this thread :) Please be kind though.. If you're listing something that's not yours, make sure it's either a "dead profile" (member is definitely inactive) or it says that the script is completely free to use and distribute, etc. I'll obviously be checking them all too, but it helps me a little if I don't have to yell at you for not following the rules :3
16
General Discussion / RPG Maker Contest
May 31, 2014, 11:19:36 pm
So I know some of you are members elsewhere, and have probably already seen this link, but just wanted to post this here too... There's a contest going on for game-making, and I know some of you just need a reason to make a game, so, the possible prize of $10,000 should be a good motivator.. I'll just leave this link here =p


http://contest.rpgmakerweb.com/
17
Troubleshooting / Help / Small linux issue...
May 16, 2014, 06:25:35 pm
So, here I am, with a real, legal copy of XP (it was on sale so I figured why not), and I've been able to install and run the program fine. Heck, I've even been able to edit my current game, including all events, maps, music, etc with no problem at all. However, when I go to activate it, or use the offline unlock feature, it seems to just hang. Anyone have any ideas?


EDIT: I just tried the normal activate function, it it looks like it half works. It spins a little while, and then goes to a blank page with a button that says 'click here if not otherwise forwarded'. I guess we'll see what happens if I let it sit for a while (pressed button, no visual response from it, other than the button press action lolz)


MOAR EDIT: Yeah, so it just sits there and does nothing. Open to ideas again...
18
Chat / Interesting Stuff
May 12, 2014, 12:13:36 am
Just took that personality types test, and found out I have the INTP type - The Engineer. There's some pretty cool info about it, one such tidbit is famous people of the same type, and interestingly enough, I'm the same type as Albert Einstein, Socrates, Darwin, Pascal, and a bunch of others that I have actually "looked up to" in a sense, for a while... Pretty cool stuff, needed to share. That is all hehe
19
Script Requests / [XP]Request - Font Help
April 27, 2014, 01:33:00 am
I have found that I am in need of a quick script that will allow you to load a font and make it overwrite the default font being used. Similar to how F0's Memory Font Loader works, where it reads the font from a specified folder, but I need it to actually replace the font in use, with the new font loaded from the font folder. Basically, this is a compatibility feature, as it will force the game to use a font being shipped along with the game, which will be useful for a system such as mine where the game runs perfectly fine, except that I can not see the text (I'm running Linux Mint, with RMXP running through WINE. Game works fine when I run from .exe file, but none of the text is diplayed. I assume this type of script would fix the problem? )

Also, if this script really works the way I need it to (that is, to make the text work within Linux systems as well), then this may become a paid project for someone.
20
Script Troubleshooting / Blizz's Heal on level up
March 27, 2014, 08:22:19 am
   Alright, so here I am, using the script blizz made, for heal on level up, in the Tons of Addons collection. Playing through, I noticed that they're not healing on level up, which kind of defeats the purpose of setting it to true =/ so in my tinkering, I somehow came up with the conclusion of, why not just hardcode it right into the class Window_BattleStatus since that's where it goes. I cannot for the life of me, figure out how to get that to work though. I tried it in different, logical, spots, but it produces a syntax error each time, on the last line in the script, which is always an 'end' command. Thoughts, comments, ridicule? Help?

For those that need it, the code is right here:

Spoiler: ShowHide


#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Heal at LvlUp by Blizzard
# Version: 1.0b
# Type: Game Alteration
# Date: 4.12.2006
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
#   90% compatible with SDK v1.x. 40% compatible with SDK v2.x. Might not work
#   with exotic CBS-es or exotic Status displays during battle.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#==============================================================================
# Window_BattleStatus
#==============================================================================

class Window_BattleStatus
 
  alias refesh_heal_at_lvlup_later refresh
  def refresh(number = nil)
    if $game_system.HEAL_AT_LVLUP
      $game_party.actors.each_index {|i|
          if @level_up_flags[i]
            $game_party.actors[i].hp = $game_party.actors[i].maxhp
            $game_party.actors[i].sp = $game_party.actors[i].maxsp
          end}
    end
    if number == nil
      refesh_heal_at_lvlup_later
    else
      refesh_heal_at_lvlup_later(number)
    end
  end
end

21
Phoenix Engine ~ Alternate Attack Calculations
Authors: PhoenixFire/DigitalSoul and Xelias
Version: 1.0
Type: Custom Battle System / Default Script Edit
Key Term: Custom Battle System



Introduction

So part 1 of many.. I went ahead and re-wrote Game_Battler_3 with an included re-write of the Alternate Attack Algorithms originally made by Xelias. Note: You ABSOLUTELY MUST configure the script if you use it. The configuration bit is located at the top of the re-written script, along with an explanation of what each alternate algorithm does. This SHOULD be compatible with EVERYTHING, since it doesn't overwrite anything, but rather completely replaces the atk values that would be overwritten by other scripts..


Features


  • Re-write of the Game_Battler_3 standard script, changing the attack calculations.

  • Provides several alternate attack algorithms, which can be assigned to several weapons.

  • Fully configurable script re-write (you can always use the regular attack methods as well)




Screenshots

N/A ~ Not sure how you would screenshot something like that anyways..


Demo

N/A ~ Demo not needed.


Script


Spoiler: ShowHide

#==============================================================================
# ** Game_Battler (part 3)
#------------------------------------------------------------------------------
#  This class deals with battlers. It's used as a superclass for the Game_Actor
#  and Game_Enemy classes.
#==============================================================================

class Game_Battler

##:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#    ALTERNATE ATTACK ALGORITHMS CONFIGURATION
#
##:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# How to use this script :
#
# This allows your weapons to follow different damage algorithms. If your weapon
# uses a normal attack algorithm, you MUST place its ID in the
# NORMAL_WEAPONS_IDS, or else it wouldn't be good for your game. Also place all
# weapons ID except SP damaging and absorbing ones, into the
# "ALL_WEAPONS_IDS", because if you don't, a nasty bug will prevent you from
# dealing damage with normal attack.
#
# ATMA_WEAPON_IDS = [X,X...] : A weapon with an ID equal to X will inflict
# more damage depending on the user's HP. If HP are full, attack power is doubled.
# If HP are at minimum, attack power is normal. If HP are equal to half, attack
# power is equal to 1.5 of the normal Attack power, and so on...
#
# VALIANT_IDS = [X, X...] : The opposite effect of Atma Weapon.
# If HP are at minimum, attack power is doubled, and so on...
#
# WHITE_MOON_IDS = [X, X...] : Follows the same formula than Atma Weapon
# but works with SP
#
# CONFORMER_IDS = [X, X...] : Deals damage based on user's Level.
#
# INTEL_WEAPON_IDS = [X, X...] : Inflicts damage based on user's Intelligence
# instead of Strength
#
# NINJA_IDS = [X, X...] : Inflicts damage based on user's Agility
# instead of Strength
#
# MIND_BLASTER_IDS = [X, X...] : Damage is inflicted to SP. Damage
# relies also on the opponent's Magic Defense and your Intelligence
#
# BLOOD_SWORD_IDS = [X, X...] & PERCENT_DRAINED = X : 
# some damage is absorbed from the attack. How many? PERCENT_DRAINED %
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= 

  OTHER_WEAPONS_IDS = [0]
  ALL_WEAPONS_IDS = []

  ATMA_WEAPON_IDS = []
  VALIANT_IDS = []
  WHITE_MOON_IDS = []
  CONFORMER_IDS = []
  INTEL_WEAPON_IDS = []
  NINJA_IDS = []
  MIND_BLASTER_IDS = []
  BLOOD_SWORD_IDS = []
  PERCENT_DRAINED = 50

  #--------------------------------------------------------------------------
  # * Determine Usable Skills
  #     skill_id : skill ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    # If there's not enough SP, the skill cannot be used.
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
    # Unusable if incapacitated
    if dead?
      return false
    end
    # If silent, only physical skills can be used
    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
      return false
    end
    # Get usable time
    occasion = $data_skills[skill_id].occasion
    # If in battle
    if $game_temp.in_battle
      # Usable with [Normal] and [Only Battle]
      return (occasion == 0 or occasion == 1)
    # If not in battle
    else
      # Usable with [Normal] and [Only Menu]
      return (occasion == 0 or occasion == 2)
    end
  end
#--------------------------------------------------------------------------
# * Applying Normal Attack Effects
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Alternative Attack Algorithms
# Authors: Xelias and PhoenixFire
# Version: 1.00
# Type: Battle Add-ON
# Date v1.00:   7.11.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

def attack_effect(attacker)
    # Clear critical flag
    self.critical = false
    # First hit detection
    hit_result = (rand(100) < attacker.hit)
    # If hit occurs
    if hit_result == true
      # Calculate basic damage
          if attacker.is_a?(Game_Actor)
    if OTHER_WEAPONS_IDS.include?(attacker.weapon_id)
    atk = [attacker.atk - self.pdef / 2, 0].max
     self.damage = atk * (20 + attacker.str) / 20
   end
   if ATMA_WEAPON_IDS.include?(attacker.weapon_id)
     atk = [attacker.atk - self.pdef / 2,0].max
     atk2 = atk * (20 + attacker.str) / 20
    self.damage = atk2 + ((atk2*((attacker.hp*100)/attacker.maxhp))/100)
    end
       if VALIANT_IDS.include?(attacker.weapon_id)
     atk = [attacker.atk - self.pdef / 2,0].max
     atk2 = atk * (20 + attacker.str) / 20
     minushp = attacker.maxhp - attacker.hp
    self.damage = atk2 + ((atk2*((minushp*100)/attacker.maxhp))/100)
    end
     if WHITE_MOON_IDS.include?(attacker.weapon_id)
     atk = [attacker.atk - self.pdef / 2,0].max
     atk2 = atk * (20 + attacker.str) / 20
    self.damage = atk2 + ((atk2*((attacker.sp*100)/attacker.maxsp))/100)
  end
       if CONFORMER_IDS.include?(attacker.weapon_id)
     atk = [attacker.atk - self.pdef / 2,0].max
     atk2 = atk * (20 + attacker.str) / 20
    self.damage = atk2 + (atk2*(((attacker.level*100) / 99)/100))
  end
      if INTEL_WEAPON_IDS.include?(attacker.weapon_id)
    atk = [attacker.atk - self.pdef / 2, 0].max
     self.damage = atk * (20 + attacker.int) / 20
   end
      if NINJA_IDS.include?(attacker.weapon_id)
    atk = [attacker.atk - self.pdef / 2, 0].max
     self.damage = atk * (20 + attacker.agi) / 20
   end
      if BLOOD_SWORD_IDS.include?(attacker.weapon_id)
    atk = [attacker.atk - self.pdef / 2, 0].max
     self.damage = atk * (20 + attacker.str) / 20
   end
   end
   if attacker.is_a?(Game_Enemy)
      atk = [attacker.atk - self.pdef / 2, 0].max
     self.damage = atk * (20 + attacker.str) / 20
   end
      # Element correction
    self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Critical correction
        if attacker.is_a?(Game_Actor)
    if GENJI_WEAPON_IDS.include?(attacker.weapon_id)
        if rand(100) < 8 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        end
      if KIKU_ICHIMONJI_IDS.include?(attacker.weapon_id)
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 4
          self.critical = true
        end
      end
    elsif rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # Guard correction
        if self.guarding?
        if GUARD_BREAKER_IDS.include?(attacker.weapon_id)
       self.damage /=1
          end
     else
       self.damage /=2
     end
      # Dispersion
   if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
     # If hit occurs
    if hit_result == true
      # State Removed by Shock
      remove_states_shock
      # Substract damage from HP
       if attacker.is_a?(Game_Actor)
      if MIND_BLASTER_IDS.include?(attacker.weapon_id)
        self.sp -= self.damage
        self.damage = sprintf('%+d %s', -self.damage, $data_system.words.sp)
        end
      if BLOOD_SWORD_IDS.include?(attacker.weapon_id)
       healing = (self.damage*PERCENT_DRAINED)/100
        self.hp -= self.damage
        attacker.hp += healing
      end
      if ALL_WEAPONS_IDS.include?(attacker.weapon_id)
        self.hp -= self.damage
    end
    else self.hp -= self.damage
  end
  end
      # State change
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # When missing
    else
      # Set damage to "Miss"
      self.damage = "Miss"
      # Clear critical flag
      self.critical = false
    end
    # End Method
    return true
  end
end
  #--------------------------------------------------------------------------
  # * Apply Skill Effects
  #     user  : the one using skills (battler)
  #     skill : skill
  #--------------------------------------------------------------------------
  def skill_effect(user, skill)
    # Clear critical flag
    self.critical = false
    # If skill scope is for ally with 1 or more HP, and your own HP = 0,
    # or skill scope is for ally with 0, and your own HP = 1 or more
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # End Method
      return false
    end
    # Clear effective flag
    effective = false
    # Set effective flag if common ID is effective
    effective |= skill.common_event_id > 0
    # First hit detection
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    # Set effective flag if skill is uncertain
    effective |= hit < 100
    # If hit occurs
    if hit_result == true
      # Calculate power
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # Calculate rate
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      # Calculate basic damage
      self.damage = power * rate / 20
      # Element correction
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end
      # Dispersion
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # Set effective flag if skill is uncertain
      effective |= hit < 100
    end
    # If hit occurs
    if hit_result == true
      # If physical attack has power other than 0
      if skill.power != 0 and skill.atk_f > 0
        # State Removed by Shock
        remove_states_shock
        # Set to effective flag
        effective = true
      end
      # Substract damage from HP
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # State change
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # If power is 0
      if skill.power == 0
        # Set damage to an empty string
        self.damage = ""
        # If state is unchanged
        unless @state_changed
          # Set damage to "Miss"
          self.damage = "Miss"
        end
      end
    # If miss occurs
    else
      # Set damage to "Miss"
      self.damage = "Miss"
    end
    # If not in battle
    unless $game_temp.in_battle
      # Set damage to nil
      self.damage = nil
    end
    # End Method
    return effective
  end
  #--------------------------------------------------------------------------
  # * Application of Item Effects
  #     item : item
  #--------------------------------------------------------------------------
  def item_effect(item)
    # Clear critical flag
    self.critical = false
    # If item scope is for ally with 1 or more HP, and your own HP = 0,
    # or item scope is for ally with 0 HP, and your own HP = 1 or more
    if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
      # End Method
      return false
    end
    # Clear effective flag
    effective = false
    # Set effective flag if common ID is effective
    effective |= item.common_event_id > 0
    # Determine hit
    hit_result = (rand(100) < item.hit)
    # Set effective flag is skill is uncertain
    effective |= item.hit < 100
    # If hit occurs
    if hit_result == true
      # Calculate amount of recovery
      recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
      recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
      if recover_hp < 0
        recover_hp += self.pdef * item.pdef_f / 20
        recover_hp += self.mdef * item.mdef_f / 20
        recover_hp = [recover_hp, 0].min
      end
      # Element correction
      recover_hp *= elements_correct(item.element_set)
      recover_hp /= 100
      recover_sp *= elements_correct(item.element_set)
      recover_sp /= 100
      # Dispersion
      if item.variance > 0 and recover_hp.abs > 0
        amp = [recover_hp.abs * item.variance / 100, 1].max
        recover_hp += rand(amp+1) + rand(amp+1) - amp
      end
      if item.variance > 0 and recover_sp.abs > 0
        amp = [recover_sp.abs * item.variance / 100, 1].max
        recover_sp += rand(amp+1) + rand(amp+1) - amp
      end
      # If recovery code is negative
      if recover_hp < 0
        # Guard correction
        if self.guarding?
          recover_hp /= 2
        end
      end
      # Set damage value and reverse HP recovery amount
      self.damage = -recover_hp
      # HP and SP recovery
      last_hp = self.hp
      last_sp = self.sp
      self.hp += recover_hp
      self.sp += recover_sp
      effective |= self.hp != last_hp
      effective |= self.sp != last_sp
      # State change
      @state_changed = false
      effective |= states_plus(item.plus_state_set)
      effective |= states_minus(item.minus_state_set)
      # If parameter value increase is effective
      if item.parameter_type > 0 and item.parameter_points != 0
        # Branch by parameter
        case item.parameter_type
        when 1  # Max HP
          @maxhp_plus += item.parameter_points
        when 2  # Max SP
          @maxsp_plus += item.parameter_points
        when 3  # Strength
          @str_plus += item.parameter_points
        when 4  # Dexterity
          @dex_plus += item.parameter_points
        when 5  # Agility
          @agi_plus += item.parameter_points
        when 6  # Intelligence
          @int_plus += item.parameter_points
        end
        # Set to effective flag
        effective = true
      end
      # If HP recovery rate and recovery amount are 0
      if item.recover_hp_rate == 0 and item.recover_hp == 0
        # Set damage to empty string
        self.damage = ""
        # If SP recovery rate / recovery amount are 0, and parameter increase
        # value is ineffective.
        if item.recover_sp_rate == 0 and item.recover_sp == 0 and
           (item.parameter_type == 0 or item.parameter_points == 0)
          # If state is unchanged
          unless @state_changed
            # Set damage to "Miss"
            self.damage = "Miss"
          end
        end
      end
    # If miss occurs
    else
      # Set damage to "Miss"
      self.damage = "Miss"
    end
    # If not in battle
    unless $game_temp.in_battle
      # Set damage to nil
      self.damage = nil
    end
    # End Method
    return effective
  end
  #--------------------------------------------------------------------------
  # * Application of Slip Damage Effects
  #--------------------------------------------------------------------------
  def slip_damage_effect
    # Set damage
    self.damage = self.maxhp / 10
    # Dispersion
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # Subtract damage from HP
    self.hp -= self.damage
    # End Method
    return true
  end
  #--------------------------------------------------------------------------
  # * Calculating Element Correction
  #     element_set : element
  #--------------------------------------------------------------------------
  def elements_correct(element_set)
    # If not an element
    if element_set == []
      # Return 100
      return 100
    end
    # Return the weakest object among the elements given
    # * "element_rate" method is defined by Game_Actor and Game_Enemy classes,
    #    which inherit from this class.
    weakest = -100
    for i in element_set
      weakest = [weakest, self.element_rate(i)].max
    end
    return weakest
  end
end



Instructions

To install, simply copy and paste over the default Game_Battler_3 script. IF YOU THINK YOU MAY WANT TO SWITCH BACK~ Always make a backup of scripts before major changes, but, even if you don't, you can "create a new project" and simply copy the default script from the new project, and paste it over the modified one. You absolutely MUST configure the script for it to work properly. Config instructions are within the script, above the configuration variables, at the top of the script.


Compatibility

Does not work with rpgmaker XP version 1.05 ~ Causes the following error:

NoMethodError
Undefined method "*" for nil:NilClass


Unfortunately, I have no idea how to fix this at the moment, but if I find a solution, I will certainly fix it.


Credits and Thanks


  • PhoenixFire/DigitalSoul ~ The re-write and editing.

  • Xelias ~ The original Alternate Algorithms script. Parts of it were used in this re-write.




Author's Notes

Enjoy the script! Really, I'm trying to better my scripting abilities, and this is just a simple start. I know that it's not much of an edit, but in time, I plan to re-write most, if not all, of the default scripts to have added functionality.

Restrictions: None - You may use this in your game, whether commercial or non-commercial, as long as proper credit is given.
22
Event Systems / Digitals Event Shop! [XP, VX Coming Soon]
February 12, 2014, 03:20:53 pm
   Okay, so I seem to have run across more requests for scripts lately that could be done with an event system. Now I'm not going to say that I can do EVERYTHING, because that would be ridiculous, but since there's so many talented scripters on here, and even some of them are responding to requests with "that can be done with events", I decided to finally post up this topic. I consider both scripts and event systems to be equal in terms of usefulness, and this shop is not meant to compete with the scripters out there at all, however, as I've stated in many other places, there's one thing to keep in mind with events and scripts. Event systems generally are easy to figure out what they're doing, what they affect, and usually very easy to change around a bit. Scripts require a bit of knowledge to use and modify them, and if you are not a scripter, and do not plan to learn, I HIGHLY suggest looking into an event system instead. Otherwise, you may have an even lower chance of successfully changing things for your own game, and will have to rely on scripters for mods. Sometimes the original creator of the script is no longer available, and, I have seen some of those types of scripts abandoned completely by other scripters too, as it is either too hard to modify, too old to support, or would take too long to re-make it all.



   So, what's my shop exactly? Well, as you can figure out, I do eventing "stuff". Usually I do this for free, but if you have a large project that's going to take many, many, many hours, I usually charge a small fee for it (note, if I talk to you on here on a normal-ish basis, the preceding does not apply to you at all).It usually boils down to; if it takes me more than two hours, I charge $10/hour, and I round off hours... So if it takes three hours and 29 minutes, you get charged for three hours only =p It may seem odd that I ask for money, but, well, I'm poor and need money, and I have skills that I can use, but the only people that will make use of me doing this for them will be other people that use RMXP (and soon enough, I'll work with VX and VXA possibly). So how does it work? Well, I will need to know exactly what you want done, with as many details as you can provide. Usually I will need a copy of your current game build as well, since that is what I will be working in. Once I have a copy of the game working on my device, I can go ahead and put in the system, make sure it works as it is supposed to, and then send back the new game file.


  Questions, comments, ridicule, etc can all be directed to me either here, pm, e-mail, Skype, etc. and I will respond when I can.


P.S. If someone can sticky this, and make sure it's in the right area, that would be appreciated...   :D
23
News / Suggestions / Feedback / Tapatalk integration
January 31, 2014, 12:41:06 pm
I don't know if many people here use it, but it would be pretty cool to integrate tapatalk into this site. I just did it for my site, and it works great. Its probably most useful for those of us that just check for unread messages quick in the middle of the workday, since it offers no admin or moderator options, but it's very useful. Compared to opening the page in a full browser, or even a mobile browser, it also uses a hell of a lot less data on phones.. Just a suggestion..
24
Electronic and Computer Section / Kali Linux
January 12, 2014, 09:23:33 pm
Has anybody used this? If so, any thoughts, comments, critique on it? Should/Should not use?



Their site is here: http://www.kali.org/
25
   So I'm trying to use this barebones script to get and play music. I modified it to read from a different folder (Radio), and that seems to work fine. I get an error though when trying to load the damn thing =p

Thoughts on what it might be?


Script:
Spoiler: ShowHide


class Jukebox
    attr_reader :list
    def initialize
        @songs = Dir.entries("Audio/BGM/")
        temp = @songs.clone
        @list = []
        for i in 0..(temp.size)
            next if temp[i] == "." or temp[i] == ".." or temp[i] == nil
            @list.push(temp[i])
        end
        for i in 0..(@list.size)
            @list[i].gsub!(/\.[^\.]*\Z/) {|s| "" }
        end
    end
    def find(song)
@list.each.do{|i| return i.index if i == song}
    end
    def play(song)
        index = find(song)
        Audio.bgm_play(@songs[index + 2], 100, 100)
    end
    def stop
        Audio.bgm_stop
    end
end



Screenshot of error:
http://www.tiikoni.com/tis/view/?id=1164d7f
26
Electronic and Computer Section / Hosting
January 06, 2014, 03:59:50 pm
Alright, so it's been a while since this was posted up, and my question is, does anyone have any current recommendations for a good, cheaper web host? I saw host gator having a special deal where it comes up to being under $4 per month, though I do need reliability AND lower cost, so if there's another site that's reliable, and still somewhere under $5 per month or so, I'll take it. If I can have multiple sites per account, that would be great as well, though not 100% necessary. I do need php, ruby and sql access on it though, which I know might drive up the price a tiny bit..


Any help and thoughts would be great! =)
27
RPG Maker Scripts / CMS Re-Write
December 27, 2013, 02:07:26 am
3 Character CMS
Authors: Shinami, Red Eye Dragoon, DigitalSoul
Version: 0.1
Type: Custom Menu System
Key Term: Custom Menu System



Introduction

  The original version of this is NOT written by me, and I am simply re-writing the CMS made by Shinami over on RMRK.net, and in doing so, hoping to learn more about scripting. So what did I do? Well, I've been messing around with the colors of it, and, adapting it away from how it was originally 'installed'. In the first version, you had to copy and paste over all of the scripts it rewrites, and add about three or four scripts separately. This script combines it all into one big re-write, which means you don't lose the original scripts if you decide to get rid of the CMS script. I have also started working on the way it displays certain stats, and where they are displayed. The original version was VERY cluttered, and displayed WAY too much information. I have dropped that down to some of the essentials, and will continue to modify this until it looks even better.


Features


  • Gives you more information about your character, with a quick glance at the pause menu.

  • Visually more attractive than the standard pause menu.

  • Customizable colors and menu items.

  • Incorporates all edits and class re-writes into one script, allowing you to easily install or uninstall the CMS from your game.




Screenshots

Coming soon.



Demo

None at the moment; I have been working on other things, and the link on this seems to be broken. If you reeealllly need a demo, pm me and I'll see what I can do.




Script

Spoiler: ShowHide


#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# 3-Character CMS
# Authors: Shinami, Red Eye Dragoon, DigitalSoul
# Version: 1.01
# Type: Custom Menu System
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#  
#  This work is protected by the following license:
# #----------------------------------------------------------------------------
# #  
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# #  
# #  You are free:
# #  
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# #  
# #  Under the following conditions:
# #  
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# #  
# #  Noncommercial. You may not use this work for commercial purposes.
# #  
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# #  
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# #  
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# #  
# #  - Nothing in this license impairs or restricts the author's moral rights.
# #  
# #----------------------------------------------------------------------------
#   How to use this script :
#  
#   Place above Main and below any other scripts that re-write Window_Base,
#   Window_Command, Window_MenuStatus, Scene_Title, Scene_Menu. The script
#   re-writes these itself, and as such, it may cause issues.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
class Window_Base < Window

   def initialize(x, y, width, height)
   super()
   @windowskin_name = $game_system.windowskin_name
   self.windowskin = RPG::Cache.windowskin(@windowskin_name)
   self.x = x
   self.y = y
   self.width = width
   self.height = height
   self.z = 100
 end
 
 def draw_actor_face(actor, x, y)
   face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
   fw = face.width
   fh = face.height
   src_rect = Rect.new(0, 0, fw, fh)
   self.contents.blt(x - fw / 23, y - fh, face, src_rect)
 end
 
def draw_actor_battler_graphic(actor, x, y)
  bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  cw = bitmap.width
  ch = bitmap.height
  src_rect = Rect.new(0, 0, cw, ch)
  self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
 #--------------------------------------------------------------------------
 # * Dispose
 #--------------------------------------------------------------------------
 def dispose
   # Dispose if window contents bit map is set
   if self.contents != nil
     self.contents.dispose
   end
   super
 end
 #--------------------------------------------------------------------------
 # * Get Text Color
 #     n : text color number (0-7)
 #--------------------------------------------------------------------------
 def text_color(n)
   case n
   when 0
     return Color.new(255, 255, 255, 255)
   when 1
     return Color.new(128, 128, 255, 255)
   when 2
     return Color.new(255, 128, 128, 255)
   when 3
     return Color.new(128, 255, 128, 255)
   when 4
     return Color.new(128, 255, 255, 255)
   when 5
     return Color.new(255, 128, 255, 255)
   when 6
     return Color.new(255, 255, 128, 255)
   when 7
     return Color.new(192, 192, 192, 255)
   else
     normal_color
   end
 end
 #--------------------------------------------------------------------------
 # * Get Text Color Definitions
 #--------------------------------------------------------------------------
 def normal_color
   return Color.new(51, 255, 0, 255)
 end
 def disabled_color
   return Color.new(255, 255, 255, 195)
 end
 def system_color
   return Color.new(51, 255, 0, 255)
 end
 def crisis_color
   return Color.new(255, 255, 64, 255)
 end
 def knockout_color
   return Color.new(255, 64, 0)
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   super
   # Reset if windowskin was changed
   if $game_system.windowskin_name != @windowskin_name
     @windowskin_name = $game_system.windowskin_name
     self.windowskin = RPG::Cache.windowskin(@windowskin_name)
   end
 end
 #--------------------------------------------------------------------------
 # * Draw Graphic
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #--------------------------------------------------------------------------
 def draw_actor_graphic(actor, x, y)
   bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
   cw = bitmap.width / 4
   ch = bitmap.height / 4
   src_rect = Rect.new(0, 0, cw, ch)
   self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect) #self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
 end
 #--------------------------------------------------------------------------
 # * Draw Name
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #--------------------------------------------------------------------------
 def draw_actor_name(actor, x, y)
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, 120, 32, actor.name)
 end
 
 #--------------------------------------------------------------------------
 # * Draw Class
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #--------------------------------------------------------------------------
 def draw_actor_class(actor, x, y)
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, 236, 32, actor.class_name)
 end
 #--------------------------------------------------------------------------
 # * Draw Level
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #--------------------------------------------------------------------------
 def draw_actor_level(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 32, 32, "Lv")
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
 end
 
 def draw_actor_nlevel(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 55, 32, "Next Level")
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 60, y, 60, 32, @actor.next_rest_exp_s, 2)
 end  
 
 #--------------------------------------------------------------------------
 # * Make State Text String for Drawing
 #     actor       : actor
 #     width       : draw spot width
 #     need_normal : Whether or not [normal] is needed (true / false)
 #--------------------------------------------------------------------------
 def make_battler_state_text(battler, width, need_normal)
   # Get width of brackets
   brackets_width = self.contents.text_size("[]").width
   # Make text string for state names
   text = ""
   for i in battler.states
     if $data_states[i].rating >= 1
       if text == ""
         text = $data_states[i].name
       else
         new_text = text + "/" + $data_states[i].name
         text_width = self.contents.text_size(new_text).width
         if text_width > width - brackets_width
           break
         end
         text = new_text
       end
     end
   end
   # If text string for state names is empty, make it [normal]
   if text == ""
     if need_normal
       text = "[Normal]"
     end
   else
     # Attach brackets
     text = "[" + text + "]"
   end
   # Return completed text string
   return text
 end
 #--------------------------------------------------------------------------
 # * Draw State
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #     width : draw spot width
 #--------------------------------------------------------------------------
 def draw_actor_state(actor, x, y, width = 120)
   text = make_battler_state_text(actor, width, true)
   self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
   self.contents.draw_text(x, y, width, 32, text)
 end
 #--------------------------------------------------------------------------
 # * Draw EXP
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #--------------------------------------------------------------------------  
 def draw_actor_exp(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 24, 32, "Exp")
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 25, y, 84, 32, actor.exp_s, 2)
 end  
 #--------------------------------------------------------------------------
 # * Draw HP
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #     width : draw spot width
 #--------------------------------------------------------------------------
 def draw_actor_hp(actor, x, y, width = 144)
   # Draw "HP" text string
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
   # Calculate if there is draw space for MaxHP
   if width - 32 >= 108
     hp_x = x + width - 108
     flag = true
   elsif width - 32 >= 48
     hp_x = x + width - 48
     flag = false
   end
   # Draw HP
   self.contents.font.color = actor.hp == 0 ? knockout_color :
     actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
   self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
   # Draw MaxHP
   if flag
     self.contents.font.color = normal_color
     self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
     self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
   end
 end
 #--------------------------------------------------------------------------
 # * Draw SP
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #     width : draw spot width
 #--------------------------------------------------------------------------
 def draw_actor_sp(actor, x, y, width = 144)
   # Draw "SP" text string
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
   # Calculate if there is draw space for MaxHP
   if width - 32 >= 108
     sp_x = x + width - 108
     flag = true
   elsif width - 32 >= 48
     sp_x = x + width - 48
     flag = false
   end
   # Draw SP
   self.contents.font.color = actor.sp == 0 ? knockout_color :
     actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
   self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
   # Draw MaxSP
   if flag
     self.contents.font.color = normal_color
     self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
     self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
   end
 end
 #--------------------------------------------------------------------------
 # * Draw Parameter
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #     type  : parameter type (0-6)
 #--------------------------------------------------------------------------
 def draw_actor_parameter(actor, x, y, type)
   case type
   when 0
     parameter_name = $data_system.words.atk
     parameter_value = actor.atk
   when 1
     parameter_name = $data_system.words.pdef
     parameter_value = actor.pdef
   when 2
     parameter_name = $data_system.words.mdef
     parameter_value = actor.mdef
   when 3
     parameter_name = $data_system.words.str
     parameter_value = actor.str
   when 4
     parameter_name = $data_system.words.dex
     parameter_value = actor.dex
   when 5
     parameter_name = $data_system.words.agi
     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 + 120, y, 36, 32, parameter_value.to_s, 2)
 end
 #--------------------------------------------------------------------------
 # * Draw Item Name
 #     item : item
 #     x    : draw spot x-coordinate
 #     y    : draw spot y-coordinate
 #--------------------------------------------------------------------------
 def draw_item_name(item, x, y)
   if item == nil
     return
   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)
 end
end


#==============================================================================
# ** 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(480, 0, 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



class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Set up the window
#--------------------------------------------------------------------------
def initialize
  super(0, 0, 480, 420)  
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.name = "Tahoma"
  self.contents.font.size = 24
  refresh
  self.active = false
  self.index = -1
end
#--------------------------------------------------------------------------
# Draws info on the screen
#--------------------------------------------------------------------------
def refresh
   self.contents.clear
  @item_max = $game_party.actors.size
 
  for i in 0...$game_party.actors.size
    x = i * 150
    y = 0
    actor = $game_party.actors[i]
    @actor = $game_party.actors[i]
    #draw_actor_face(actor, x, y) this is for drawing actor faces
    #draw_actor_graphic(actor, x, y)  this is for drawing the actor graphics
    draw_actor_battler_graphic(actor, x + 70, y + 220)
    draw_actor_name(actor, x, y - 8)
    draw_actor_level(actor, x, y + 210)
    draw_actor_hp(actor, x, y + 240)
    draw_actor_sp(actor, x, y + 260)
    draw_actor_exp(actor, x, y + 290)
    draw_actor_nlevel(actor, x, y + 320)
    draw_item_name($data_weapons[@actor.weapon_id], x - 2, 350)
 end
end


#--------------------------------------------------------------------------
# Update of Cursor
#--------------------------------------------------------------------------
def update_cursor_rect
  if @index < 0
    self.cursor_rect.empty
  else
    self.cursor_rect.set(@index * 148, 0, self.width - 334, 280)
  end
end
end



#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs title screen processing.
#==============================================================================

class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main
   # If battle test
   if $BTEST
     battle_test
     return
   end
   # Load database
   $data_actors        = load_data("Data/Actors.rxdata")
   $data_classes       = load_data("Data/Classes.rxdata")
   $data_skills        = load_data("Data/Skills.rxdata")
   $data_items         = load_data("Data/Items.rxdata")
   $data_weapons       = load_data("Data/Weapons.rxdata")
   $data_armors        = load_data("Data/Armors.rxdata")
   $data_enemies       = load_data("Data/Enemies.rxdata")
   $data_troops        = load_data("Data/Troops.rxdata")
   $data_states        = load_data("Data/States.rxdata")
   $data_animations    = load_data("Data/Animations.rxdata")
   $data_tilesets      = load_data("Data/Tilesets.rxdata")
   $data_common_events = load_data("Data/CommonEvents.rxdata")
   $data_system        = load_data("Data/System.rxdata")
   # Make system object
   $game_system = Game_System.new
   # Make title graphic
   @sprite = Sprite.new
   @sprite.bitmap = RPG::Cache.title($data_system.title_name)
   # Make command window
   s1 = "New Game"
   s2 = "Load Game"
   s3 = "Exit Game"
   @command_window = Window_Command.new(192, [s1, s2, s3])
   @command_window.back_opacity = 160
   @command_window.x = 320 - @command_window.width / 2
   @command_window.y = 288
   # Continue enabled determinant
   # Check if at least one save file exists
   # If enabled, make @continue_enabled true; if disabled, make it false
   @continue_enabled = false
   for i in 0..3
     if FileTest.exist?("Save#{i+1}.rxdata")
       @continue_enabled = true
     end
   end
   # If continue is enabled, move cursor to "Continue"
   # If disabled, display "Continue" text in gray
   if @continue_enabled
     @command_window.index = 1
   else
     @command_window.disable_item(1)
   end
   # Play title BGM
   $game_system.bgm_play($data_system.title_bgm)
   # Stop playing ME and BGS
   Audio.me_stop
   Audio.bgs_stop
   # 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 command window
   @command_window.dispose
   # Dispose of title graphic
   @sprite.bitmap.dispose
   @sprite.dispose
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Update command window
   @command_window.update
   # If C button was pressed
   if Input.trigger?(Input::C)
     # Branch by command window cursor position
     case @command_window.index
     when 0  # New game
       command_new_game
     when 1  # Continue
       command_continue
     when 2  # Shutdown
       command_shutdown
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Command: New Game
 #--------------------------------------------------------------------------
 def command_new_game
   # Play decision SE
   $game_system.se_play($data_system.decision_se)
   # Stop BGM
   Audio.bgm_stop
   # Reset frame count for measuring play time
   Graphics.frame_count = 0
   # Make each type of game object
   $game_temp          = Game_Temp.new
   $game_system        = Game_System.new
   $game_switches      = Game_Switches.new
   $game_variables     = Game_Variables.new
   $game_self_switches = Game_SelfSwitches.new
   $game_screen        = Game_Screen.new
   $game_actors        = Game_Actors.new
   $game_party         = Game_Party.new
   $game_troop         = Game_Troop.new
   $game_map           = Game_Map.new
   $game_player        = Game_Player.new
   # Set up initial party
   $game_party.setup_starting_members
   # Set up initial map position
   $game_map.setup($data_system.start_map_id)
   # Move player to initial position
   $game_player.moveto($data_system.start_x, $data_system.start_y)
   # Refresh player
   $game_player.refresh
   # Run automatic change for BGM and BGS set with map
   $game_map.autoplay
   # Update map (run parallel process event)
   $game_map.update
   # Switch to map screen
   $scene = Scene_Map.new
 end
 #--------------------------------------------------------------------------
 # * Command: Continue
 #--------------------------------------------------------------------------
 def command_continue
   # If continue is disabled
   unless @continue_enabled
     # 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 load screen
   $scene = Scene_Load.new
 end
 #--------------------------------------------------------------------------
 # * Command: Shutdown
 #--------------------------------------------------------------------------
 def command_shutdown
   # Play decision SE
   $game_system.se_play($data_system.decision_se)
   # Fade out BGM, BGS, and ME
   Audio.bgm_fade(800)
   Audio.bgs_fade(800)
   Audio.me_fade(800)
   # Shutdown
   $scene = nil
 end
 #--------------------------------------------------------------------------
 # * Battle Test
 #--------------------------------------------------------------------------
 def battle_test
   # Load database (for battle test)
   $data_actors        = load_data("Data/BT_Actors.rxdata")
   $data_classes       = load_data("Data/BT_Classes.rxdata")
   $data_skills        = load_data("Data/BT_Skills.rxdata")
   $data_items         = load_data("Data/BT_Items.rxdata")
   $data_weapons       = load_data("Data/BT_Weapons.rxdata")
   $data_armors        = load_data("Data/BT_Armors.rxdata")
   $data_enemies       = load_data("Data/BT_Enemies.rxdata")
   $data_troops        = load_data("Data/BT_Troops.rxdata")
   $data_states        = load_data("Data/BT_States.rxdata")
   $data_animations    = load_data("Data/BT_Animations.rxdata")
   $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
   $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
   $data_system        = load_data("Data/BT_System.rxdata")
   # Reset frame count for measuring play time
   Graphics.frame_count = 0
   # Make each game object
   $game_temp          = Game_Temp.new
   $game_system        = Game_System.new
   $game_switches      = Game_Switches.new
   $game_variables     = Game_Variables.new
   $game_self_switches = Game_SelfSwitches.new
   $game_screen        = Game_Screen.new
   $game_actors        = Game_Actors.new
   $game_party         = Game_Party.new
   $game_troop         = Game_Troop.new
   $game_map           = Game_Map.new
   $game_player        = Game_Player.new
   # Set up party for battle test
   $game_party.setup_battle_test_members
   # Set troop ID, can escape flag, and battleback
   $game_temp.battle_troop_id = $data_system.test_troop_id
   $game_temp.battle_can_escape = true
   $game_map.battleback_name = $data_system.battleback_name
   # Play battle start SE
   $game_system.se_play($data_system.battle_start_se)
   # Play battle BGM
   $game_system.bgm_play($game_system.battle_bgm)
   # Switch to battle screen
   $scene = Scene_Battle.new
 end
end



#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs menu screen processing.
#==============================================================================

class Scene_Menu
 #--------------------------------------------------------------------------
 # * 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.item
   s2 = $data_system.words.skill
   s3 = $data_system.words.equip
   s4 = "Status"
   s5 = "Save"
   s6 = "Load"
   s7 = "End Game"
   @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
   @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 save is forbidden
   if $game_system.save_disabled
     # Disable save
     @command_window.disable_item(4)
   end
   # Make play time window
   @playtime_window = Window_PlayTime.new
   @playtime_window.x = 480
   @playtime_window.y = 255
   # Make steps window
   @steps_window = Window_Steps.new
   @steps_window.x = 480
   @steps_window.y = 340
   # Make status window
   @status_window = Window_MenuStatus.new
   @status_window.x = 0
   @status_window.y = 0
   #makes dummy window with icons
   @dummy_window = Window_Dummy.new
   @dummy_window.x = 480
   @dummy_window.y = 0
   #makes location window
   @map = Window_Mapname.new
   @map.x = 0
   @map.y = 420
   # 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
   @status_window.dispose
   @map.dispose
   @dummy_window.dispose
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Update windows
   @command_window.update
   @playtime_window.update
   @steps_window.update
   @status_window.update
   @map.update
   @dummy_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
 #--------------------------------------------------------------------------
 # * 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_window.active = true
       @status_window.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_window.active = true
       @status_window.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_window.active = true
       @status_window.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)
       $scene =  Dummy_Load.new
     when 6  # end game
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Switch to end game screen
       $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
#------------------------------------------------------------------------------
#  This class performs load screen processing.
#==============================================================================

class Dummy_Load < 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 title screen
   $scene = Scene_Menu.new(5)
 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



class Window_Dummy < Window_Base
 def initialize
  super(480, 0, 160, 255)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.name = "Tahoma"
  self.contents.font.size = 24
  refresh
end
#--------------------------------------------------------------------------
# Draws info on the screen
#--------------------------------------------------------------------------
def refresh
   self.contents.clear
   bitmap = RPG::Cache.icon("034-Item03")
self.contents.blt(100, 4, bitmap, Rect.new(0, 0, 24, 24))

bitmap = RPG::Cache.icon("050-Skill07")
self.contents.blt(100, 35, bitmap, Rect.new(0, 0, 24, 24))

bitmap = RPG::Cache.icon("013-Body01")
self.contents.blt(100, 70, bitmap, Rect.new(0, 0, 24, 24))

bitmap = RPG::Cache.icon("033-Item02")
self.contents.blt(100, 100, bitmap, Rect.new(0, 0, 24, 24))

bitmap = RPG::Cache.icon("037-Item06")
self.contents.blt(100, 133, bitmap, Rect.new(0, 0, 24, 24))

bitmap = RPG::Cache.icon("039-Item08")
self.contents.blt(100, 164, bitmap, Rect.new(0, 0, 24, 24))

bitmap = RPG::Cache.icon("046-Skill03")
self.contents.blt(100, 195, bitmap, Rect.new(0, 0, 24, 24))

 end
end



#3 Person Custom Menu Script v1.1 written by Shinami
#Written using references from scripts written
#by Constance(his forum is ---> http://www.invisionplus.net/forums/index.php?mforum=rmxp&act=idx)
#and from the FF7 script(for face sets) on the Crankeye forums(http://www.crankeye.com/forums)
#Latest changes:
#1-Added icons to the command window.
#2-Added the choice of using a battler graphic instead of facesets or character graphic.
#3-Added a "Load" option to the main menu
#
#Possible Changes:
#1-A new status screen.
#2-Being able to set the background to look like what you want.*PICTURE WILL BE REQUIRED*
class Window_Mapname < Window_Base

def initialize
super(0, 0, 640, 60)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = "Arial"
self.contents.font.size = 24
refresh
end

def refresh
self.contents.clear

# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 220, 32, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(100, 0, 80, 32, $game_map.name)
#this is gold window
   cx = contents.text_size($data_system.words.gold).width
   self.contents.font.color = normal_color
   self.contents.draw_text(460, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
   self.contents.font.color = system_color
   self.contents.draw_text(580-cx, 0, cx, 32, $data_system.words.gold, 2)
end
end




class Game_Map

def name
$map_infos[@map_id]
end
end



Font.default_name = "Tahoma"





Instructions


Place above Main and any other scripts that re-write Window_Base, Window_Command, Window_MenuStatus, Scene_Title, Scene_Menu. The script re-writes these, so any script that needs to further modify ANY of those, should be placed after this script.



Compatibility

Should work with just about everything, except for other menu systems, and anything that relies on the default classes that it overwrites. I know for sure this works with Tons of Addons, and Kings Tilemap Enhance.



Credits and Thanks


  • Shinami, for the original script, and Red Eye Dragoon for posting it.

  • DigitalSoul - For the edits and improvements.





Author's Notes

Please bear in mind that this is my first script edit of this size. I know it is not 100% optimized yet, nor is it 100% condensed yet. It is definitely a work in progress, and as I learn more about scripting, I will come back and edit this more. I also plan to use this script in the future in a compilation starter kit, along with other class re-writes, so any feedback and suggestions are welcome on this  8)
28
Inspired by a comment made by Shek, I think this topic deserves a good discussion about it. We have members here from all over the world, many different personalities, different walks of life, and a large variance of culture among us. My question for you all is as follows; With the way that the current world economy is, it screws over a vast majority of us all, and really does need to be changed somehow. What do you all think would happen if the world were to go back to a primarily bartering style system? (for those unaware, basically that means trading goods and services for other goods and services) Any thoughts on it? Or what about some other system? Keep in mind this is not a debate about politics, because no one singular government controls world economy, nor should it be governed by such a political system.
29
Hello everyone, I have a simple question, and although I searched, I didn't find the answer. The question is about audio playback in RMXP; Is there a maximum length that RMXP won't accept .ogg files to be over, in order to play them? I ask because I have several songs that I downloaded that I was able to import into the resources, but it won't play? I tried in both .mp3 and .ogg formats, and even went as far as to re-install the k-lite codec back on my computer.. Game plays the default RTP music and sounds fine, but not my custom ones.. Thoughts?
30
Script Requests / [XP] Health Reset (resolved)
September 20, 2013, 09:16:33 am
Alright, so I remember seeing a script like this somewhere already, and I searched the database but nothing looked like what I was looking for. I just need a script to reset the characters health to max after they level up, however, I also use Blizzards stat distribution system, so it would need to be a script that either 1) works with that system, since you can change your maxhp when you level up, so it would have to refill your health AFTER you accept all changes to your stats, OR 2) if someone could modify the script Blizz made, and simply have it as part of the script when you select 'accept changes'. Thank you in advance for the help!