Skip to content

Instantly share code, notes, and snippets.

@MasterMoes1
Created August 22, 2020 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MasterMoes1/1e2021ee724e907bfcf0d1ad96cf414f to your computer and use it in GitHub Desktop.
Save MasterMoes1/1e2021ee724e907bfcf0d1ad96cf414f to your computer and use it in GitHub Desktop.
Spawn Events with a Region ID
#==============================================================================
# - Region Events
#------------------------------------------------------------------------------
# Creates evens that copy themselves to every tile of a region.
# To use name an event with a "#" folowed by a number,
# For example: "#10" for region 10
#
# You can either put the events in the map you want to use them in
# or define a map hold events which will appear in the regions of all maps!
# The current map's region events override the global map's.
#==============================================================================
# Config stuff
module Kayzee
module Region_Events_Config
# The map id where globaly loaded events are. Set to nil or 0 not to use.
GLOBAL_EVENT_MAP = nil
# Starting ID for region events.
EVENT_ID_START = 10000
end
end
class Game_Map
attr_accessor :new_characters
alias_method :setup_region_events_base, :setup
def setup(map_id)
setup_region_events_base(map_id)
create_region_events
end
def create_region_events
@next_region_event_id = Kayzee::Region_Events_Config::EVENT_ID_START
loaded_events = []
if (gmap = Kayzee::Region_Events_Config::GLOBAL_EVENT_MAP) && gmap > 0
map = load_data(sprintf("Data/Map%03d.rvdata2", gmap))
if map
map.events.values.each do |event|
next unless event.name =~ /.*#([0-9]+)/
next unless (num = $1.to_i) > 0 && num < 64
loaded_events[num] = event
end
else
puts "Global event map not found!"
end
end
@events.values do |event|
next unless event.name =~ /.*#([0-9]+)/
next unless (num = $1.to_i) > 0 && num < 64
loaded_events[num] = event.event
event.erase
end
puts loaded_events
for i in 0...width
for j in 0...height
r = $game_map.region_id(i, j)
if event = loaded_events[r]
make_clone_event(event).moveto(i, j)
end
end
end
end
def make_clone_event(event)
new_event = Game_Event.new(@map_id, event)
return nil unless new_event
@events[@next_region_event_id] = new_event
new_event.id = (@next_region_event_id)
@next_region_event_id += 1
(@new_characters ||= []).push(new_event)
return new_event
end
end
class Spriteset_Map
alias_method :update_region_events_base, :update
def update
if $game_map.new_characters
$game_map.new_characters.each do |char|
@character_sprites.push(Sprite_Character.new(@viewport1, char))
end
$game_map.new_characters = nil
end
update_region_events_base
end
end
class Game_Event
attr_reader :event
attr_accessor :id
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment