Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Untuk gunain skill summon, tag skillnya pake <summon>
- # nanti eventnya bakal jadi in-map event bukan action event
- #===============================================================================
- class RPG::UsableItem
- def summon?
- @summon ||= !note[/<summon>/i].nil?
- end
- end
- def spriteset
- SceneManager.scene.instance_variable_get("@spriteset")
- end
- class Game_Map
- alias asr_summon_init initialize
- def initialize
- @summoned_events = []
- asr_summon_init
- end
- def create_action_events(object, item, user, character)
- case item.action_type
- when 2 then list = [0, 4]
- when 3 then list = [0, 1, 7]
- when 4 then list = [0, 2, 4, 6]
- when 5 then list = [0, 1, 2, 7, 6]
- when 8 then list = [0, 1, 2, 3, 4, 5, 6, 7]
- else list = [0]
- end
- summon = item.summon?
- if summon
- @map_fiber = Fiber.new do
- list.each do |i|
- insert_new_event(item.action_events[0], character, i)
- Fiber.yield
- end
- @map_fiber = nil
- end
- return
- end
- list.collect do |i|
- event = Game_Action_Event.new(@map_id, object, item, user, character, i)
- @action_objects.push(event)
- end
- end
- def insert_new_event(id, char, i)
- evid = @events.keys.max + 1
- base_event = Marshal.load(Marshal.dump(@action_events[id]))
- #~ base_event = @action_events[id].clone
- base_event.id = evid
- event = Game_Event.new(@map_id, base_event)
- @summoned_events.push(event)
- d = (char.direction + i) % 10
- offset = event.note =~ /<OFFSET: (\d+)>/i ? $1.to_i : 1
- off = offset * 1.875
- x = char.fix_position(char.x + (d == 6 ? off : d == 4 ? -off : 0))
- y = char.fix_position(char.y + (d == 2 ? off : d == 8 ? -off : 0))
- event.moveto(x,y)
- event.set_direction(d)
- event.update
- spriteset.add_char(event)
- end
- alias asr_summon_update update
- def update(main = false)
- asr_summon_update(main)
- @map_fiber.resume if @map_fiber
- @summoned_events.each do |event|
- @events[event.id] = event
- end
- @summoned_events.clear
- end
- end
- class Game_Event
- attr_accessor :id
- end
- class Spriteset_Map
- def add_char(char)
- @character_sprites.push(Sprite_Character.new(@viewport1, char))
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement