Map Safety Level XP - kyonides - 12-30-2022
Map Safety Level XP
by Kyonides
Introduction
I have come up with a very simple scriptlet that will allow the game developers to show a simple map name window plus a brand new label telling the player how safe that map actually is. This window will be shown on the menu screen only.
Screenshots
XP Script
Code: # * Map Safety Level XP * #
# Scripter : Kyonides Arkanthes
# 2022-12-30
# This scriptlet lets you set some texts as Safety Level Labels, and then you
# can call a method to set a new level at any given time.
# Valid Levels: 0 up to your safety maximum level.
# * Get or Set Current Map's Safety Level * #
# $game_map.safety_level
# $game_map.safety_level = NewLevel
# * Preset a given Map's Safety Level * #
# SAFETY_LEVELS = { MapIDa => Level, MapIDb => Level, etc. }
# * Define a given Map's Safety Level Color * #
# - Alpha is optional. Valid Values: 0 through 255
# SAFETY_LEVELS[0] = [Red, Green, Blue, Alpha]
module MapData
DEFAULT_SAFETY_LEVEL = 0
SAFETY_LEVELS = { 1 => 3 }
SAFETY_LABELS = [] # Just leave it alone.
SAFETY_COLORS = [] # Just leave it alone.
SAFETY_LABELS[0] = "A Nightmare"
SAFETY_LABELS[1] = "Dangerous"
SAFETY_LABELS[2] = "Unsafe"
SAFETY_LABELS[3] = "Normal Place"
SAFETY_LABELS[4] = "Great Place"
SAFETY_LABELS[5] = "The Utopia"
SAFETY_COLORS[0] = [255, 0, 0]
SAFETY_COLORS[1] = [255, 165, 0]
SAFETY_COLORS[2] = [255, 255, 0]
SAFETY_COLORS[3] = [255, 255, 255]
SAFETY_COLORS[4] = [90, 205, 90]
SAFETY_COLORS[5] = [0, 255, 0]
end
class Game_Map
alias :kyon_map_safety_lvl_gm_map_init :initialize
alias :kyon_map_safety_lvl_gm_map_setup :setup
def initialize
kyon_map_safety_lvl_gm_map_init
@safety_levels = MapData::SAFETY_LEVELS.dup
@safety_levels.default = MapData::DEFAULT_SAFETY_LEVEL
end
def get_mapinfos_name
load_data("Data/MapInfos.rxdata")[@map_id].name
end
def display_name
@display_name ||= get_mapinfos_name
end
def safety_level
@safety_levels[@map_id]
end
def safety_level=(new_level)
@safety_levels[@map_id] = new_level
end
def safety_level_text
MapData::SAFETY_LABELS[@safety_levels[@map_id]]
end
attr_reader :safety_levels
attr_writer :display_name
end
class MapNameSafeWindow < Window_Base
def initialize(wx, wy, w)
super(wx, wy, w, 96)
self.contents = Bitmap.new(w - 32, 64)
map = $game_map
contents.draw_text(0, 0, 128, 28, map.display_name, 1)
safety_color = MapData::SAFETY_COLORS[map.safety_level]
contents.font.color.set(*safety_color)
contents.draw_text(0, 32, 128, 28, map.safety_level_text, 1)
end
end
class Scene_Menu
alias :kyon_map_safety_lvl_scn_menu_main :main
alias :kyon_map_safety_lvl_scn_menu_up :update
def main
@show_map_name = true
@map_name_safe = MapNameSafeWindow.new(0, 320, 160)
@map_name_safe.z += 100
kyon_map_safety_lvl_scn_menu_main
@map_name_safe.dispose
end
def update
if Input.trigger?(Input::L) or Input.trigger?(Input::R)
if @command_window.active
@show_map_name = !@show_map_name
@map_name_safe.z = @show_map_name ? 100 : 0
@steps_window.z = @show_map_name ? 0 : 100
end
return
end
kyon_map_safety_lvl_scn_menu_up
end
end
Terms & Conditions
Free for use in commercial and non commercial games unless you have pissed me off.
Please include my nickname in your game credits.
I seriously hope this will not be the only script of mine that you will include in your games.
RE: Map Safety Level - Kain Nobel - 12-30-2022
Reminds me of the Homeland Security Advisory System from the George W Bush days after 9/11.
RE: Map Safety Level - kyonides - 12-31-2022
Well, now that you mention it, I gotta admit I felt in need of improving the script to change the color of the second label according to the current safety level. This is valid for all versions available here!
RE: Map Safety Level - kyonides - 01-01-2023
MV Got Included As Well!
From now on, MV users can also display the current map's safety level.
Please pay attention to this comments:
Code: * Map Note: <safety N>
* where N is a number. Valid Options: 0 through Maximum.
RE: Map Safety Level - Kain Nobel - 01-01-2023
The color system is a nice addition, great job!
RE: Map Safety Level - kyonides - 01-02-2023
Even Kiwi Menu XP Has Its Own Safety Level Now!
Code: # * Map Safety Level XP - Kiwi Menu Version * #
# Scripter : Kyonides Arkanthes
# 2023-01-01
# This scriptlet lets you set some texts as Safety Level Labels, and then you
# can call a method to set a new level at any given time.
# Valid Levels: 0 up to your safety maximum level.
# * Get or Set Current Map's Safety Level * #
# $game_map.safety_level
# $game_map.safety_level = NewLevel
# * Preset a given Map's Safety Level * #
# SAFETY_LEVELS = { MapIDa => Level, MapIDb => Level, etc. }
# * Define a given Map's Safety Level Color * #
# - Alpha is optional. Valid Values: 0 through 255
# SAFETY_LEVELS[0] = [Red, Green, Blue, Alpha]
module MapData
DEFAULT_SAFETY_LEVEL = 0
SAFETY_LEVELS = { 1 => 3 }
SAFETY_LABELS = [] # Just leave it alone.
SAFETY_COLORS = [] # Just leave it alone.
SAFETY_LABELS[0] = "A Nightmare"
SAFETY_LABELS[1] = "Dangerous"
SAFETY_LABELS[2] = "Unsafe"
SAFETY_LABELS[3] = "Normal Place"
SAFETY_LABELS[4] = "Great Place"
SAFETY_LABELS[5] = "The Utopia"
SAFETY_COLORS[0] = [255, 0, 0]
SAFETY_COLORS[1] = [255, 165, 0]
SAFETY_COLORS[2] = [255, 255, 0]
SAFETY_COLORS[3] = [255, 255, 255]
SAFETY_COLORS[4] = [90, 205, 90]
SAFETY_COLORS[5] = [0, 255, 0]
end
module KiwiMenu
MAP_SAFETY_TAB_X = 320
MAP_SAFETY_TAB_Y = 448
end
class Game_Map
alias :kyon_map_safety_lvl_gm_map_init :initialize
alias :kyon_map_safety_lvl_gm_map_setup :setup
def initialize
kyon_map_safety_lvl_gm_map_init
@safety_levels = MapData::SAFETY_LEVELS.dup
@safety_levels.default = MapData::DEFAULT_SAFETY_LEVEL
end
def get_mapinfos_name
load_data("Data/MapInfos.rxdata")[@map_id].name
end
def display_name
@display_name ||= get_mapinfos_name
end
def safety_level
@safety_levels[@map_id]
end
def safety_level=(new_level)
@safety_levels[@map_id] = new_level
end
def safety_level_text
MapData::SAFETY_LABELS[@safety_levels[@map_id]]
end
attr_reader :safety_levels
attr_writer :display_name
end
class KiwiMenuSpriteset
alias :kyon_map_safety_kwmn_set_init :initialize
alias :kyon_map_safety_kwmn_set_disp :dispose
def initialize(pos, options_max)
kyon_map_safety_kwmn_set_init(pos, options_max)
create_map_safety_sprites
end
def create_map_safety_sprites
@map_safety = [Sprite.new, Sprite.new]
@map_safety[0].x = MAP_SAFETY_TAB_X
@map_safety[0].y = MAP_SAFETY_TAB_Y
@map_safety[1].x = MAP_SAFETY_TAB_X
@map_safety[1].y = MAP_SAFETY_TAB_Y
@map_safety[0].bitmap = b = RPG::Cache.picture(GOLD_TAB)
@map_safety[1].bitmap = bm = Bitmap.new(b.width, b.height)
safety_color = MapData::SAFETY_COLORS[$game_map.safety_level]
bm.font.color.set(*safety_color)
text = $game_map.safety_level_text
bm.draw_text(4, 4, b.width - 8, 24, text, 1)
end
def dispose
@map_safety.each{|sprite| sprite.dispose }
@map_safety.clear
kyon_map_safety_kwmn_set_disp
end
end
So you can now include it in any of your game projects that are already using my Kiwi Menu script, guys.
RE: Map Safety Level - kyonides - 01-06-2023
Minor Update for MV
In the latest version of MapSafetyLevelMV.js file, I've fixed a bug that prevented the game from updating the MapID properly even if you could still be transferred to another map. What a mystery!
It also allows you know to keep track of the different map safety levels.
So people, should the Map Safety Levels get their own Menu Scripts?
|