Created
August 22, 2020 22:14
-
-
Save MasterMoes1/1e2021ee724e907bfcf0d1ad96cf414f to your computer and use it in GitHub Desktop.
Spawn Events with a Region ID
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#============================================================================== | |
# - 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