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! 
 
![[Image: safetylevelxp02.jpg]](https://i.postimg.cc/kg3P8kMm/safetylevelxp02.jpg)  
![[Image: safetylevelvx02.jpg]](https://i.postimg.cc/QxWrFX3m/safetylevelvx02.jpg)  
 
 
 
 
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! 
 
![[Image: mapsafetymaplevelxpkiwi01.jpg]](https://i.postimg.cc/nzTChg54/mapsafetymaplevelxpkiwi01.jpg)  
 
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?    
 
 
 
 |