A silly little script... it lets you place icons within the traditional menu screens. Now, you will be able to determine if a companion is set to use only skills, if they are following close, or if they're a pet!
Script
Its a little thing right here
Code:
#==============================================================================
# ** Lycan Companion Icons
#------------------------------------------------------------------------------
# version 1.0
# by DerVVulfman
# 08-09-2023 (MM/DD/YYYY)
# RGSS / RPGMaker XP
#==============================================================================
#
# INTRODUCTION:
#
# A silly little script... it lets you place icons within the traditional
# menu screens. Now, you will be able to determine if a companion is set
# to use only skills, if they are following close, or if they're a pet!
#
# The system allows you to place icons within the modules:
# * Windows_Base - draw_actor_name
# * Windows_MenuStatus - refresh
# * Window_Status - refresh
#
#
#------------------------------------------------------------------------------
#
# INSTALLATION:
# =============
#
# Paste this script below The Lycan ABS and above Main to use. Add your
# custom icons that this script will use within the Graphics\Icons folder,
# and configure as needed. The comments should be easy to understand.
#
#------------------------------------------------------------------------------
#
# COMPATIBILITY:
#
# This script adds new statements to three default script methods by the use
# of the alias command. So it should be compatible with any menu system that
# has a structure similar enough to the default menus.
#
#==============================================================================
#
# TERMS AND CONDITIONS:
#
# Free for use, even in commercial games.
#
#==============================================================================
#==============================================================================#
# +--------------------------------------------------------------------------+ #
# | * * C O N F I G U R A T I O N P A G E * * | #
# | * * THE ICONS * * | #
# +--------------------------------------------------------------------------+ #
#==============================================================================#
module Lycan
# MAIN WINDOW POSITIONING
# =========================================================================
# Determines if icons appear in one of the three basic menu forms, and the
# general poacement of the icons themselves
# Draw Actor Name Connect Settings
# ======================== ========
COMPANION_NAME_ICONS = false
COMPANION_NAME_X = 0
COMPANION_NAME_Y = 0
# Menu Status Connect Settings
# ======================== ========
COMPANION_MENU_ICONS = true
COMPANION_MENU_X = 300
COMPANION_MENU_Y = 0
# INDIVIDUAL ICON DEFINITIONS
# =========================================================================
# Determines the icon graphics used for specific conditions and the general
# placement in relation to the window(s) applied. Nil or "" filenames will
# disable the icon itself.
#==============================================================================
# ** Game_ABS
#------------------------------------------------------------------------------
# This class deals with the Action Battle System and controls all Player,
# Enemy and Companion Actions on the map.
#==============================================================================
class Game_ABS
#--------------------------------------------------------------------------
# * Get Companion data from actor
# actor : actor
#--------------------------------------------------------------------------
def companion_from_actor(actor)
# Exit with nil if Companions system is off
return nil unless Lycan::COMPANIONS_ON
# Cycle through every companion in ABS memory
for companion in $game_companions.values
# Get the actor_ID (party member) of the companion
actor_id = companion.actor_id
# Get the comparative actor from the companion data
test = $game_party.actors[actor_id]
# return companion data if the compared actor is the actor requested
return companion if test == actor
end
# Return nil if no companion data found
return nil
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias comp_icons_base_draw_actor_name draw_actor_name
#--------------------------------------------------------------------------
# * Draw Name
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y)
# Perform the original method
comp_icons_base_draw_actor_name(actor, x, y)
# Exit unless enabled
return unless Lycan::COMPANION_NAME_ICONS == true
# Adjust position
x += Lycan::COMPANION_NAME_X
y += Lycan::COMPANION_NAME_Y
# Apply Icons
draw_companion_icons(actor, x, y)
end
#--------------------------------------------------------------------------
# * Draw Companion Icons
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_companion_icons(actor, x, y)
# Get the companion data based on the actor supplied
companion = $ABS.companion_from_actor(actor)
# Exit if no valid companion found
return if companion.nil?
# Draw icons
lycan_draw_follow(companion, x,y)
lycan_draw_close(companion, x,y)
lycan_draw_wait(companion, x,y)
lycan_draw_destroy(companion, x,y)
lycan_draw_norm_combat(companion, x,y)
lycan_draw_melee_only(companion, x,y)
lycan_draw_skill_only(companion, x,y)
lycan_draw_pet(companion, x,y)
end
#--------------------------------------------------------------------------
# * Draw Actor-Follow Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_follow(companion, x,y)
# Handle if proper flag settings
return if companion.destroy_flag == true
return if companion.close_follow == true
return if companion.wait_command == true
# Set location and push icon
x += Lycan::C_ICON_FOLLOW_X
y += Lycan::C_ICON_FOLLOW_Y
lycan_draw_icon(x, y, Lycan::C_ICON_FOLLOW_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Actor-Close-Follow Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_close(companion, x,y)
# Handle if proper flag settings
return unless companion.close_follow == true
# Set location and push icon
x += Lycan::C_ICON_CLOSE_X
y += Lycan::C_ICON_CLOSE_Y
lycan_draw_icon(x, y, Lycan::C_ICON_CLOSE_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Actor-Wait Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_wait(companion, x,y)
# Handle if proper flag settings
return unless companion.wait_command == true
# Set location and push icon
x += Lycan::C_ICON_WAIT_X
y += Lycan::C_ICON_WAIT_Y
lycan_draw_icon(x, y, Lycan::C_ICON_WAIT_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Actor-Hunt-n-Destroy Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_destroy(companion, x,y)
# Handle if proper flag settings
return unless companion.destroy_flag == true
# Set location and push icon
x += Lycan::C_ICON_DESTROY_X
y += Lycan::C_ICON_DESTROY_Y
lycan_draw_icon(x, y, Lycan::C_ICON_DESTROY_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Normal-Combat Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_norm_combat(companion, x,y)
# Handle if proper flag settings
return if companion.melee_only == true
return if companion.skill_only == true
# Set location and push icon
x += Lycan::C_ICON_NORMAL_X
y += Lycan::C_ICON_NORMAL_Y
lycan_draw_icon(x, y, Lycan::C_ICON_NORMAL_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Melee-Only Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_melee_only(companion, x,y)
# Handle if proper flag settings
return unless companion.melee_only == true
# Set location and push icon
x += Lycan::C_ICON_MELEE_X
y += Lycan::C_ICON_MELEE_Y
lycan_draw_icon(x, y, Lycan::C_ICON_MELEE_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Skill-Only Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_skill_only(companion, x,y)
# Handle if proper flag settings
return unless companion.skill_only == true
# Set location and push icon
x += Lycan::C_ICON_SKILL_X
y += Lycan::C_ICON_SKILL_Y
lycan_draw_icon(x, y, Lycan::C_ICON_SKILL_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Actor-Pet Icon
# companion : companion actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def lycan_draw_pet(companion, x,y)
# Handle if proper flag settings
return unless companion.pet_flag == true
# Set location and push icon
x += Lycan::C_ICON_PET_X
y += Lycan::C_ICON_PET_X
lycan_draw_icon(x, y, Lycan::C_ICON_PET_IMAGE)
end
#--------------------------------------------------------------------------
# * Draw Lycan Actor Item
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# filename : icon filename
#--------------------------------------------------------------------------
def lycan_draw_icon(x, y, filename)
return if filename.nil?
return if filename == ""
bitmap = RPG::Cache.icon(filename)
self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24))
end
end
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias comp_icons_menustatus_refresh refresh
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Perform the original method
comp_icons_menustatus_refresh
# Exit unless enabled
return unless Lycan::COMPANION_MENU_ICONS == true
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
# Y position in screen
y = i * 116
# Adjust position
x = Lycan::COMPANION_MENU_X
y += Lycan::COMPANION_MENU_Y
# Apply Icons
draw_companion_icons(actor, x, y)
end
end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
class Window_Status < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias comp_icons_status_refresh refresh
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Perform the original method
comp_icons_status_refresh
# Exit unless enabled
return unless Lycan::COMPANION_STAT_ICONS == true
# Adjust position
x = Lycan::COMPANION_STAT_X
y = Lycan::COMPANION_STAT_Y
draw_companion_icons(@actor, x, y)
end
end
Instructions
Paste this script below The Lycan ABS and above Main to use. Add your custom icons that this script will use within the Graphics\Icons folder, and configure as needed. The comments should be easy to understand.
Compatibility
Designed for RPGMaker XP and The Lycan ABS. This script adds new statements to three default script methods by the use of the alias command. So it should be compatible with any menu system that has a structure similar enough to the default menus.
Inspired by a forumer's support thread, I came up with a way to keep playing the current map's randomly chosen BGM while visiting what we could called here the child maps or dependent maps.
There is a way to prevent the game from playing the vehicle's BGM as well.
Instructions
For XP
Set the values of the MAP_BGMS Constant found in the RandomBGM module.
It will let you play a random BGM including the default one.
You will need to set the values of 2 Constants found in the RandomBGM module.
The first Constant will let you play a random BGM including the default one (see above) while the other one defines whether or not the boat or ship or airship will play their usual BGM.
For Boat, Ship and Airship:
Code:
PLAY_BGM = [nil, nil, true]
For VX ACE
Leave a Random BGM Note in the Main Map's Notebox like the following:
Code:
<switch SwitchID bgm Bgm1 Bgm2 Bgm3>
Leave a No Vehicle BGM Note in the Main Map's Notebox:
This script allows you to use a static picture or a series of pictures as a custom upper layer for the current map.
I am sure there gotta be other scripts that provide similar features and you know what?
I don't care about that!
Embedded Notes for XP & VX
First of all, both engines have no Map Note Boxes so you must use the Map's Name as a substitute.
Code:
# This script lets you add another layer where you can place images that can
# be either static or animated.
# Create a directory called Layers inside the Graphics folder.
# Thereafter you can add as many images as deemed necessary.
# Examples: fall_1.png, fall_2.png, fall_3.png
# The state of a specific Game Switch will determine whether or not a given
# layer is visible at that moment.
# - Set a Map's Total Number of Upper Layers
# - Pattern: <LUMn> - Example: <LUM2>
# - Predefine an Upper Layer
# - It must follow one of these patterns:
# The n's there stand for LayerID, No. Pictures, Frames and SwitchID (if any)
# <LUn filename n n>
# <LUn filename n n Sn>
# - Examples Using the fall_ image files:
# <LU1 fall 3 20>
# <LU2 fall 3 20 S10>
Embedded Notes for VX ACE
Code:
# Create a directory called Layers inside the Graphics folder.
# Thereafter you can add as many images as deemed necessary.
# Examples: fall_1.png, fall_2.png, fall_3.png
# The state of a specific Game Switch will determine whether or not a given
# layer is visible at that moment.
# - Set a Map's Total Number of Upper Layers - Pattern: <layers n>
# - Example: <layers 2>
# - Predefine an Upper Layer
# - It must follow one of these patterns:
# <layer up n filename pix n frames n>
# <layer up n filename pix n frames n switch n>
# - Examples Using the fall_ image files:
# <layer up 1 fall pix 3 frames 20>
# <layer up 2 fall pix 3 frames 20 switch 10>
If you ever need to change the map's default upper layer, you can use any of the following...
Optional Script Calls Available For ALL Engines
Code:
# - Change the Map's Upper Layer - It will replace any previous one!
upper_layer(Number).name = "BaseFileName"
# - Change the Upper Layer's Number of Pictures - if Animated
upper_layer(Number).total = TotalPictures
# - Change the Upper Layer's Timer (in Frames)
upper_layer(Number).timer = Frames
# - Change the Upper Layer's Switch ID
upper_layer(Number).switch_id = SwitchID
# - Change the Upper Layer's Data With a Single Call
upper_layer(Number).set_data(TotalPictures, Frames, SwitchID)
# - Freeze or Thaw the Upper Layer
# upper_layer(Number).freeze!
# upper_layer(Number).thaw!
# - Check whether or not the Upper Layer is Frozen
# upper_layer(Number).frozen?
There was a forumer that wanted to add some custom boxes that could replace the default, ugly, boring rectagle called the window cursor. Since I had already published the KToggleButtons scripts, it seemed to be a pretty easy request for a skillful guy like me. And here it is!
Snapshots
NOTE: The VX ACE port requires more work than the others to adapt it to any new situation due to its complex menu command inner workings.
Free for use in non commercial games.
Contact me if you are going commercial. Inexpensive.
Due credit is mandatory.
Do not repost it anywhere!
That's it!
Someone once asked for a script that could let some sort of airship or bird travel around the world freely.
Yet, there was one weird condition, it should only land on the player himself. This is where my script comes in to solve your issues!
Just press a predefined button, and it will take off!
Press the OK button when it has returned to its owner and you've finished your exploration session!
Actually, you can watch any bird-like character flap its wings while ascending or descending.
The Falcon can also trigger switches that are NOT above the character's priority type / level.
Free for use in non commercial games.
Contact me if you're going commercial. It's inexpensive.
Credit is mandatory.
You cannot repost it anywhere!
That's it!
In most traditional RPG games, the player may scavenge through castles and homes without any issue. This system doesn't (as yet) apply any penalties, but allows you to separate and classify these items as stolen goods.
You will find both items and stolen items separately within the item menu, a custom glyph atop the icons for the stolen goods. And unless the shopkeep is a fence, you will find it impossible to sell your ill-gotten goods.
Features
Use the same Change Gold, Change Weapons and like map events for stolen goods
Have shops that will and will not trade in stolen items
Stolen goods identifiable with glyphs in Item, Status, Equip and Shop menu windows
Simple script calling to allow or prevent stolen good handling
See both stolen and unstolen items in your item menus
Equip stolen goods and use them after pilfering
User special script calls to detect if the party has stolen goods
Erase stolen goods from the party with script calls
Convert items to stolen goods and visa versa
BONUS: Includes command_355 Interpreter script call fix
Designed for RPGMaker XP. The Game classes merely have the code attached. However, much of the Window and Scene Classes related have been rewritten in order to introduce the new theft storage arrays and custom glyph system to allow the identification of stolen goods.
Terms and Conditions
Free for use, even within commercial products. Only due credit is required.
No one likes to be bullied by spam or advertisement content without consent. However, many services attempt to find ways around preventative measures in order to ply their trade, seek to solicit services, or generally annoy what they see as potential customers. It is one of the reasons that a new account must actually introduce themselves within the Occasions board as that very first "Here I am" thread would finally grant them access to their Private Messaging and Control Panel services.
It is no secret that the forum performs intermittent checks upon new accounts. When signing up for an account, the registration page makes this clear. In fact, the registration notification was updated, not only to remind registrants that disposable eMail accounts are forbidden but that eMail addresses that are unable to receive notifications are disallowed. This additional condition was introduced months ago as advertisers would employ a service that would be send-only for solicitation services.
[/align]
Boldly presented in red, it will be relatively hard to accept claims from registrants that they were unaware that such eMail services are not permitted. However, advertisement services and those wishing to increase their customer lists care not. So while the forum does perform periodic checks to determine if a registrant attempted to slip past our anti-spam services, we also perform checks upon the validity of the registrant's eMail address.
Unfortunately, some fail drastically.
The eMail address presented here has been hidden, but clearly the registrant claimed to be using Hotmail as a service. But this is one of three tests we regularly perform, and had indicated above that the account was indeed not a real account. In some cases, we have had accounts that were designed not to receive eMails, and thus disallowed by our terms. However, the above screen indicated that Hotmail never had an account which this particular registrant provided.
Now it is true that this registrant would likewise not be able to send eMails like any solicitor bot, it does violate our terms of registration. And those terms are present to protect our members.
As always, protection of Save-Point and its members is our chief concern.
A forumer on another board was asking for a way to ensure that the heroes would level down if they had successfully escaped from the battlefield. Yeah, what a bunch of pussy cats!
The catch was that they shouldn't lose too many points.
Here's where my script comes in to solve that issue for you all, guys!
It will make the heroes level down once and temporarily permanently keeps track of all the lost EXP!
Since version 0.4.0 you can choose between losing a level and its experience or simply losing the excess experience points earned AFTER leveling up. Lost points can be displayed on message windows by using a predefined game variable!
And starting from version 0.5.0 your heroes will lose their skills after leveling down!
A forumer once asked for a script (or anything else) that could allow the heroes to lose a state ONLY if it had been predefined by game developer to do that. The default option of relying on the Damage Chance did not satisfy the game's particular needs.
For XP
To make sure that just a FEW states will be removed by physical damage, just add as many State ID's to the following Constant:
Code:
STATES_HIT_REMOVE = [2,3,4,7,9]
To keep a State even if it should be removed by walking until a certain level has been reached, go add it to this Constant. Level is Customizable!
Basic Format: { StateID1 => Level, etc. }
Code:
STATES_KEEP_WALKING = { 5 => 3, 14 => 9 }
Other States will be treated as usual.
For Both VX & VX ACE
Well, here's a solution that uses a very simple Note Tag to make it happen IF & ONLY IF the Note Tag is present in that State's Note Box.
To make sure that just a FEW states will be removed by physical damage, just leave the following Note in the State Note Box:
Code:
<damage deletes state>
For VX
To keep a Slip Damage State UNTIL the hero has reached a certain Level, go leave this other Note. Level is Customizable!
It won't remove the state...
For VX ACE
To keep a State even if it should be removed by walking until a certain Level has been reached, go leave this other Note. Level is Customizable!