Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.34 KB | None | 0 0
  1.  
  2. #------------------------------------------------------------------------------#
  3. # Galv's Character Effects
  4. #------------------------------------------------------------------------------#
  5. # Автор:Galv's
  6. # Для: RPGMAKER VX ACE
  7. # Версия:1.9
  8. # Прервёл:Yros 98 специально для rpg-maker.info
  9. #------------------------------------------------------------------------------#
  10. # 2013-02-24 - Версия 1.9 - Добавлена поддержка определения слоя теней по глубине Z
  11. # 2013-02-23 - Версия 1.8 - Добавлены несколько источников света для теней
  12. # 2013-02-22 - Версия 1.7 - Исправляет ошибку
  13. # 2013-02-22 - Версия 1.6 - Добавлиет значок эфекта над персонажами
  14. # 2013-02-22 - Версия 1.5 - Исправлена ​​ошибка зеркала на больших картах
  15. # 2013-02-22 - Версия 1.4 - Добавлены эффекты для автомобилей
  16. # 2013-02-21 - Версия 1.3 - Фиксированно отражение прыжка и другие мелкие недочеты
  17. # 2013-02-21 - Версия 1.2 - Ошибка с менее 4 персонажами
  18. # 2013-02-21 - Версия 1.1 - Обновленный эффект мерцания
  19. # 2013-02-21 - Версия 1.0 - Первая версия
  20. #------------------------------------------------------------------------------#
  21. # Этот скрипт добавляет в игру реалистичные эфекты отражения и теней.В
  22. # настоящее время он включает в себя:
  23. #
  24. # Тени
  25. # Тени, которые появляются под игроком и события в направлениях в зависимости
  26. # от источника света, который вы выберете.
  27. #
  28. # Параллакс отражения
  29. # Размышления, которые появляются на параллакс слой для событий и действующих лиц, чтобы быть
  30. # использовать такие вещи, как отражение в воде и т.д. этаже или стекла Чтобы получить
  31. # эффекты, такие как демо, вам нужно отредактировать кодировку графического, чтобы сделать воду
  32. # частично прозрачными.
  33. #
  34. # Параллакс зеркала
  35. # Многое, как отражать, но вместо актеров и события отражаются в зеркале
  36. # на стене назначенных региона. Оба зеркала и отражающие эффекты могут быть
  37. # изменились так актеры и события можно использовать несколько кодировок для их отражения
  38. #
  39. #------------------------------------------------------------------------------#
  40.  
  41. #------------------------------------------------------------------------------#
  42. # Команды скрипта:
  43. #------------------------------------------------------------------------------#
  44. #
  45. # char_effects(x,x,x,status)
  46. #
  47. #------------------------------------------------------------------------------#
  48. # # каждый эффект может быть истинным или ложным, чтобы включить / отключить их во время игры.
  49. # # вы можете изменить кратным эффекты сразу, X является номер эффекта
  50. # # 0 = отражать 1 = тень 2 = зеркало 3 = значки
  51. #------------------------------------------------------------------------------#
  52. # Примеры:
  53. # char_effects(0,true) # превратить размышления вкл.
  54. # char_effects(0,2,true) # включить отражения и зеркала
  55. # char_effects(1,3,false) # включить тени и иконки
  56. #------------------------------------------------------------------------------#
  57. #
  58. # reflect_sprite(actor_id,filename,pos) # Изменение кодировки актеров отражаються
  59. #
  60. # reflect_esprite(event_id,filename,pos) # Изменение события отражают кодировку
  61. #
  62. # reflect_vsprite(vehicle_id,filename,pos) # Изменить автомобиля отражают кодировку
  63. #
  64. #------------------------------------------------------------------------------#
  65. # Примеры:
  66. # reflect_sprite(1,"Actor2",2) # изменить актер 1 в кодировке использовать спрайт
  67. # # в положении 2 "Actor2" кодировку.
  68. # reflect_esprite(3,"Actor4",5) # Событие 3 будет использовать спрайт, в положении 5
  69. # # "Actor4" кодировку.
  70. # reflect_vsprite(1,"Vehicle",5) # Корабль будет использовать спрайт, в положении 5
  71. # # "Транспортное средство" кодировку.
  72. #------------------------------------------------------------------------------#
  73.  
  74. #------------------------------------------------------------------------------#
  75. # Сценарий вызывает эффекты, чтобы включить или выключить для выбранной СОБЫТИЯ
  76. #------------------------------------------------------------------------------#
  77. #
  78. # reflect(x,x,x,status) # Состояние может быть истинным или ложным, чтобы включить или выключить
  79. # # использовать это, чтобы указать на зеркало и задуматься.
  80. # shadow(x,x,x,status) # где х, коды событий вы хотите изменить
  81. # # изменить все события использования: все
  82. # icon(x,x,x,icon_id) # установить, какой значок ID должна возвышаться над характером.делает
  83. # # 0 для этого нет иконки.
  84. #
  85. #------------------------------------------------------------------------------#
  86. # Примеры:
  87. # reflect(14,17,3,1,true) # Включите события 14, 17, 3 и 1 отражений ON
  88. # shadow(1,false) # Поверните событие 1 тенью OFF
  89. # reflect(:all,true) # Включите все события отражений ON
  90. # icon(1,2,3,4,38) # События 1,2,3 и 4 будет иметь значок появится 38
  91. #
  92. # ПРИМЕЧАНИЕ: Все события по умолчанию будет никаких теней и отражений NO при входе
  93. # карте. Это дизайнерское решение, чтобы попытаться сохранить отставание до минимума. вы
  94. # должны использовать эти эффекты редко и только активировать их на события
  95. # которые требуют от них.
  96. #------------------------------------------------------------------------------#
  97.  
  98. #------------------------------------------------------------------------------#
  99. # Сценарий вызывает эффекты, чтобы включить или выключить для актеров и транспортные средства
  100. #------------------------------------------------------------------------------#
  101. #
  102. # actor_reflect(actor_id,status) # отражения и тени включены по умолчанию
  103. # actor_shadow(actor_id,status) # для актеров и транспортных средств. Выключив их
  104. # actor_icon(actor_id,icon_id) # или навсегда изменить их.
  105. #
  106. # v_reflect(x,x,x,status) # V_ использовать эти призывы к изменению транспортного средства эффекты
  107. # v_shadow(x,x,x,status) # и выключается для транспортных средств.
  108. # v_icon(x,x,x,icon_id)
  109. #
  110. #------------------------------------------------------------------------------#
  111.  
  112. #------------------------------------------------------------------------------#
  113. # Вызов теней
  114. #------------------------------------------------------------------------------#
  115. #
  116. # shadow_source(x,y,id) # установите х, у места для света. ID является свет
  117. # # номер источника, который хотите изменить
  118. # #(больше одного).Эти сбрасываются при смене карты.
  119. # shadow_source(event_id,id) # использовать X события, у места для света.
  120. # # Это должны быть в параллельном процессе, если вы
  121. # # хотите, чтобы он движущегося света.
  122. #
  123. # shadow_options(intensity,fade,flicker) # описания ниже
  124. #
  125. # # Интенсивность = непрозрачность, когда стоял рядом с источником света (255 черный)
  126. # # исчезать = количество теней становится более прозрачной дальше вы находитесь.
  127. # # мерцают = истинными или ложными. Тени будет мерцать, как будто быть брошенным огнем.
  128. #
  129. #------------------------------------------------------------------------------#
  130. # Примеры:
  131. # shadow_options(80,10,false) # Это настройка по умолчанию.
  132. #------------------------------------------------------------------------------#
  133.  
  134. #------------------------------------------------------------------------------#
  135. # Вызов отражения
  136. #------------------------------------------------------------------------------#
  137. #
  138. # reflect_options(wave_pwr)
  139. #
  140. # # wave_pwr = насколько сильна волна движения. 0 выключено
  141. #
  142. #------------------------------------------------------------------------------#
  143. # Примеры:
  144. # reflect_options(1) # Включите мощность волны до 1
  145. #------------------------------------------------------------------------------#
  146.  
  147.  
  148. #------------------------------------------------------------------------------#
  149. # NOTETAG для актеров
  150. #------------------------------------------------------------------------------#
  151. #
  152. # <no_reflect> # Актер не будет иметь отражения (для вампиров, конечно!)
  153. #
  154. # <reflect_sprite: FileName,pos> # Актер будет использовать эту кодировку для размышлений
  155. # # и использовать символ в позиции «POS»
  156. #
  157. #------------------------------------------------------------------------------#
  158. # Примеры:
  159. # <reflect_sprite: Actor2,0> # Первый символ из набора символов Actor2
  160. # <reflect_sprite: Actor3,7> # Последний символ из набора символов Actor2
  161. #------------------------------------------------------------------------------#
  162.  
  163.  
  164. ($imported ||= {})["Galv_Character_Effects"] = true
  165. module Galv_CEffects
  166.  
  167. #------------------------------------------------------------------------------#
  168. # ОПЦИИ УСТАНОВКИ
  169. #------------------------------------------------------------------------------#
  170.  
  171. MIRROR_REGION = 1 # Регион ID используется для определения зеркальными стенами.
  172. # Краска
  173. # региона на стене вы хотите сделать отражающей (и
  174. # затем использовать плитку / отображения, которые делают параллакса видно)
  175.  
  176. ICON_OFFSET = -60 # Y смещение для значков, которые отображаются над символами
  177.  
  178. REFLECT_Z = -10 # Z уровень отражений
  179. SHADOW_Z = 0 # Z уровень тени
  180.  
  181. #------------------------------------------------------------------------------#
  182. # END SETUP OPTIONS
  183. #------------------------------------------------------------------------------#
  184. end
  185.  
  186.  
  187.  
  188. class Game_Interpreter
  189.  
  190. #-----------------------------------#
  191. # REFLECTIONS
  192. #-----------------------------------#
  193.  
  194. # Add/Remove Reflections from selected events
  195. def reflect(*args,status)
  196. char_ids = [*args]
  197. if char_ids == [:all]
  198. $game_map.events.values.each { |e| e.reflect = status }
  199. else
  200. char_ids.each {|c| $game_map.events[c].reflect = status }
  201. end
  202. SceneManager.scene.spriteset.refresh_effects
  203. end
  204.  
  205. # Change forever actor's reflect status
  206. def actor_reflect(actor_id,status)
  207. $game_actors[actor_id].reflect = status
  208. $game_player.refresh
  209. end
  210.  
  211. # Change forever vehicle's reflect status
  212. def v_reflect(*args,status)
  213. char_ids = [*args]
  214. if char_ids == [:all]
  215. $game_map.vehicles.each { |v| v.reflect = status }
  216. else
  217. char_ids.each { |v| $game_map.vehicles[v].reflect = status }
  218. end
  219. SceneManager.scene.spriteset.refresh_effects
  220. end
  221.  
  222. def reflect_options(*args)
  223. $game_map.reflect_options = [*args]
  224. SceneManager.scene.spriteset.refresh_effects
  225. end
  226.  
  227. # Actor reflect sprite change
  228. def reflect_sprite(actor_id,filename,pos)
  229. $game_actors[actor_id].reflect_sprite = [filename,pos]
  230. $game_player.refresh
  231. end
  232.  
  233. # Event reflect sprite change
  234. def reflect_esprite(event_id,filename,pos)
  235. $game_map.events[event_id].reflect_sprite = [filename,pos]
  236. SceneManager.scene.spriteset.refresh_characters
  237. end
  238.  
  239. # Vehicle reflect sprite change
  240. def reflect_vsprite(v_id,filename,pos)
  241. $game_map.vehicles[v_id].reflect_sprite = [filename,pos]
  242. SceneManager.scene.spriteset.refresh_characters
  243. end
  244.  
  245. #-----------------------------------#
  246. # SHADOWS
  247. #-----------------------------------#
  248.  
  249. # Add/Remove Shadows from selected characters
  250. def shadow(*args,status)
  251. char_ids = [*args]
  252. if char_ids == [:all]
  253. $game_map.events.values.each { |e| e.shadow = status }
  254. else
  255. char_ids.each {|c| $game_map.events[c].shadow = status }
  256. end
  257. SceneManager.scene.spriteset.refresh_effects
  258. end
  259.  
  260. # Change player and follower shadows
  261. def actor_shadows(status)
  262. $game_player.shadow = status
  263. $game_player.followers.each { |f| f.shadow = status }
  264. SceneManager.scene.spriteset.refresh_effects
  265. end
  266.  
  267. # Change vehicle's shadow status
  268. def v_shadow(*args,status)
  269. char_ids = [*args]
  270. if char_ids == [:all]
  271. $game_map.vehicles.each { |v| v.shadow = status }
  272. else
  273. char_ids.each { |v| $game_map.vehicles[v].shadow = status }
  274. end
  275. SceneManager.scene.spriteset.refresh_effects
  276. end
  277.  
  278. def shadow_options(*args)
  279. $game_map.shadow_options = [*args]
  280. SceneManager.scene.spriteset.refresh_effects
  281. end
  282.  
  283. def shadow_source(*args,shad_id)
  284. source = [*args]
  285.  
  286. if source.count == 1
  287. $game_map.light_source[shad_id] = [$game_map.events[source[0]].real_x,
  288. $game_map.events[source[0]].real_y]
  289. elsif source.count > 1
  290. $game_map.light_source[shad_id] = source
  291. else
  292. $game_map.light_source = []
  293. end
  294. end
  295.  
  296.  
  297. #-----------------------------------#
  298. # ICONS
  299. #-----------------------------------#
  300.  
  301. # Add/Remove Icons from selected events
  302. def icon(*args,icon_id)
  303. char_ids = [*args]
  304. if char_ids == [:all]
  305. $game_map.events.values.each { |e|
  306. if e.icon <= 0
  307. e.icon = nil
  308. else
  309. e.icon = icon_id
  310. end
  311. }
  312. else
  313. char_ids.each {|c| $game_map.events[c].icon = icon_id }
  314. end
  315. SceneManager.scene.spriteset.refresh_effects
  316. end
  317.  
  318. # Change forever actor's icon
  319. def actor_icon(actor_id,icon_id)
  320. $game_actors[actor_id].icon = icon_id
  321. $game_player.refresh
  322. end
  323.  
  324. # Change forever vehicle's icon
  325. def v_icon(*args,icon_id)
  326. char_ids = [*args]
  327. if char_ids == [:all]
  328. $game_map.vehicles.each { |v| v.icon = icon_id }
  329. else
  330. char_ids.each { |v| $game_map.vehicles[v].icon = icon_id }
  331. end
  332. SceneManager.scene.spriteset.refresh_effects
  333. end
  334.  
  335. #-----------------------------------#
  336. # GENERAL
  337. #-----------------------------------#
  338.  
  339. # Turn on/off effects
  340. # 0 = reflect
  341. # 1 = shadow
  342. # 2 = mirror
  343. # 3 = icon
  344.  
  345. def char_effects(*args,status)
  346. [*args].each { |e| $game_map.char_effects[e] = status }
  347. SceneManager.scene.spriteset.refresh_effects
  348. end
  349.  
  350.  
  351. end # Game_Interpreter
  352.  
  353.  
  354. #-------------------------------------------------------------------------------
  355. # Spriteset_Map
  356. #-------------------------------------------------------------------------------
  357.  
  358. class Spriteset_Map
  359. alias galv_reflect_sm_initialize initialize
  360. def initialize
  361. create_effects
  362. galv_reflect_sm_initialize
  363. refresh_characters
  364. end
  365.  
  366. alias galv_reflect_sm_refresh_characters refresh_characters
  367. def refresh_characters
  368. galv_reflect_sm_refresh_characters
  369. create_effects
  370. end
  371.  
  372. def refresh_effects
  373. dispose_effects
  374. create_effects
  375. end
  376.  
  377. def create_effects
  378. @shadow_sprites = []
  379. @reflect_sprites = []
  380. @mirror_sprites = []
  381. @icon_sprites = []
  382.  
  383. # Do reflections
  384. if $game_map.char_effects[0]
  385. $game_map.events.values.each { |e|
  386. @reflect_sprites.push(Sprite_Reflect.new(@viewport1, e)) if e.reflect
  387. }
  388. $game_player.followers.each { |f|
  389. @reflect_sprites.push(Sprite_Reflect.new(@viewport1, f)) if f.reflect
  390. }
  391. if $game_player.reflect
  392. @reflect_sprites.push(Sprite_Reflect.new(@viewport1, $game_player))
  393. end
  394. $game_map.vehicles.each { |v|
  395. @reflect_sprites.push(Sprite_Reflect.new(@viewport1, v)) if v.reflect
  396. }
  397. end
  398.  
  399. # Do mirrors
  400. if $game_map.char_effects[2]
  401. $game_map.events.values.each { |e|
  402. @mirror_sprites.push(Sprite_Mirror.new(@viewport1, e)) if e.reflect
  403. }
  404. $game_player.followers.each { |f|
  405. @mirror_sprites.push(Sprite_Mirror.new(@viewport1, f)) if f.reflect
  406. }
  407. if $game_player.reflect
  408. @mirror_sprites.push(Sprite_Mirror.new(@viewport1, $game_player))
  409. end
  410. $game_map.vehicles.each { |v|
  411. @mirror_sprites.push(Sprite_Mirror.new(@viewport1, v)) if v.reflect
  412. }
  413. end
  414.  
  415. # Do Shadows
  416. if $game_map.char_effects[1]
  417. return if $game_map.light_source.empty?
  418. $game_map.light_source.count.times { |s|
  419. $game_map.events.values.each { |e|
  420. @shadow_sprites.push(Sprite_Shadow.new(@viewport1, e, s)) if e.shadow
  421. }
  422. $game_player.followers.each { |f|
  423. @shadow_sprites.push(Sprite_Shadow.new(@viewport1, f, s)) if f.shadow
  424. }
  425. if $game_player.shadow
  426. @shadow_sprites.push(Sprite_Shadow.new(@viewport1, $game_player, s))
  427. end
  428. $game_map.vehicles.each { |v|
  429. @shadow_sprites.push(Sprite_Shadow.new(@viewport1, v, s)) if v.shadow
  430. }
  431. }
  432. end
  433.  
  434. # Do icons
  435. if $game_map.char_effects[3]
  436. $game_map.events.values.each { |e|
  437. @icon_sprites.push(Sprite_Icon.new(@viewport1, e)) if e.icon
  438. }
  439. $game_player.followers.each { |f|
  440. @icon_sprites.push(Sprite_Icon.new(@viewport1, f)) if f.icon
  441. }
  442. if $game_player.icon
  443. @icon_sprites.push(Sprite_Icon.new(@viewport1, $game_player))
  444. end
  445. $game_map.vehicles.each { |v|
  446. @icon_sprites.push(Sprite_Icon.new(@viewport1, v)) if v.icon
  447. }
  448. end
  449. end
  450.  
  451. alias galv_reflect_sm_update update
  452. def update
  453. galv_reflect_sm_update
  454. @reflect_sprites.each {|s| s.update} if $game_map.char_effects[0]
  455. @mirror_sprites.each {|s| s.update} if $game_map.char_effects[2]
  456. @shadow_sprites.each {|s| s.update} if $game_map.char_effects[1]
  457. @icon_sprites.each {|s| s.update} if $game_map.char_effects[3]
  458. end
  459.  
  460. alias galv_reflect_sm_dispose_characters dispose_characters
  461. def dispose_characters
  462. galv_reflect_sm_dispose_characters
  463. dispose_effects
  464. end
  465.  
  466. def dispose_effects
  467. @reflect_sprites.each {|s| s.dispose}
  468. @shadow_sprites.each {|s| s.dispose}
  469. @mirror_sprites.each {|s| s.dispose}
  470. @icon_sprites.each {|s| s.dispose}
  471. end
  472. end # Spriteset_Map
  473.  
  474.  
  475. #-------------------------------------------------------------------------------
  476. # Sprite_Reflect
  477. #-------------------------------------------------------------------------------
  478.  
  479. class Sprite_Reflect < Sprite_Character
  480. def initialize(viewport, character = nil)
  481. super(viewport, character)
  482. end
  483.  
  484. def update
  485. super
  486. end
  487.  
  488. def update_balloon; end
  489. def setup_new_effect; end
  490.  
  491. def set_character_bitmap
  492. if @character.reflect_sprite
  493. self.bitmap = Cache.character(@character.reflect_sprite[0])
  494. else
  495. self.bitmap = Cache.character(@character_name)
  496. end
  497. self.mirror = true
  498. self.angle = 180
  499. self.opacity = 220
  500. self.z = Galv_CEffects::REFLECT_Z
  501. self.wave_amp = $game_map.reflect_options[0]
  502.  
  503. sign = @character_name[/^[\!\$]./]
  504. if sign && sign.include?('$')
  505. @cw = bitmap.width / 3
  506. @ch = bitmap.height / 4
  507. else
  508. @cw = bitmap.width / 12
  509. @ch = bitmap.height / 8
  510. end
  511. self.ox = @cw / 2
  512. self.oy = @ch
  513. end
  514.  
  515. def update_position
  516. self.x = @character.screen_x
  517. jump = @character.jumping? ? @character.jump_height * 2 : 0
  518. alt = @character.altitude ? @character.altitude * 2 : 0
  519. self.y = @character.screen_y - 3 + jump + alt
  520. end
  521.  
  522. def update_other
  523. self.blend_type = @character.blend_type
  524. self.visible = !@character.transparent
  525. end
  526.  
  527. def update_src_rect
  528. if @character.reflect_sprite
  529. index = @character.reflect_sprite[1]
  530. else
  531. index = @character.character_index
  532. end
  533. pattern = @character.pattern < 3 ? @character.pattern : 1
  534. sx = (index % 4 * 3 + pattern) * @cw
  535. sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
  536. self.src_rect.set(sx, sy, @cw, @ch)
  537. end
  538. end # Sprite_Reflect < Sprite_Character
  539.  
  540.  
  541. #-------------------------------------------------------------------------------
  542. # Sprite_Mirror
  543. #-------------------------------------------------------------------------------
  544.  
  545. class Sprite_Mirror < Sprite_Character
  546. def initialize(viewport, character = nil)
  547. @distance = 0
  548. super(viewport, character)
  549. end
  550.  
  551. def update
  552. super
  553. end
  554.  
  555. def update_balloon; end
  556. def setup_new_effect; end
  557.  
  558. def set_character_bitmap
  559. if @character.reflect_sprite
  560. self.bitmap = Cache.character(@character.reflect_sprite[0])
  561. else
  562. self.bitmap = Cache.character(@character_name)
  563. end
  564. self.mirror = true
  565. self.opacity = 255
  566. self.z = Galv_CEffects::REFLECT_Z
  567.  
  568. sign = @character_name[/^[\!\$]./]
  569. if sign && sign.include?('$')
  570. @cw = bitmap.width / 3
  571. @ch = bitmap.height / 4
  572. else
  573. @cw = bitmap.width / 12
  574. @ch = bitmap.height / 8
  575. end
  576. self.ox = @cw / 2
  577. self.oy = @ch
  578. end
  579.  
  580. def update_src_rect
  581. if @character.reflect_sprite
  582. index = @character.reflect_sprite[1]
  583. else
  584. index = @character.character_index
  585. end
  586. pattern = @character.pattern < 3 ? @character.pattern : 1
  587. sx = (index % 4 * 3 + pattern) * @cw
  588. sy = (index / 4 * 4 + (10 - @character.direction - 2) / 2) * @ch
  589. self.src_rect.set(sx, sy, @cw, @ch)
  590. end
  591.  
  592. def get_mirror_y
  593. 20.times {|i|
  594. if $game_map.region_id(@character.x, @character.y - i) == Galv_CEffects::MIRROR_REGION
  595. @distance = (i - 1) * 0.05
  596. @display = @character.y - i - $game_map.display_y + $game_map.height
  597. self.opacity = 255
  598. return (@character.y - i + 1 - $game_map.display_y) * 32 - i * 4
  599. end
  600. }
  601. self.opacity = 0
  602. return @ch
  603. end
  604.  
  605. def update_position
  606. self.x = @character.screen_x
  607. self.y = get_mirror_y - 6
  608. self.zoom_x = 1 - @distance
  609. self.zoom_y = 1 - @distance
  610. end
  611.  
  612. def update_other
  613. self.blend_type = @character.blend_type
  614. self.visible = !@character.transparent
  615. end
  616. end # Sprite_Mirror < Sprite_Character
  617.  
  618.  
  619. #-------------------------------------------------------------------------------
  620. # Sprite_Shadow
  621. #-------------------------------------------------------------------------------
  622.  
  623. class Sprite_Shadow < Sprite_Character
  624. def initialize(viewport, character = nil, source)
  625. @flicker = 0
  626. @famount = 0
  627. @aamount = 0
  628. @source = source
  629. super(viewport, character)
  630. end
  631.  
  632. def update
  633. super
  634. update_bitmap
  635. update_src_rect
  636. update_position
  637. update_other
  638. end
  639.  
  640. def set_character_bitmap
  641. self.bitmap = Cache.character(@character_name)
  642. self.mirror = true
  643. self.color = Color.new(0, 0, 0, 255)
  644. self.z = Galv_CEffects::SHADOW_Z
  645. self.wave_amp = 1 if $game_map.shadow_options[2]
  646. self.wave_speed = 1000
  647.  
  648. sign = @character_name[/^[\!\$]./]
  649. if sign && sign.include?('$')
  650. @cw = bitmap.width / 3
  651. @ch = bitmap.height / 4
  652. else
  653. @cw = bitmap.width / 12
  654. @ch = bitmap.height / 8
  655. end
  656. self.ox = @cw / 2
  657. self.oy = @ch
  658. end
  659.  
  660. def update_position
  661. self.x = @character.screen_x
  662. self.y = @character.screen_y - 10
  663. get_angle
  664. end
  665.  
  666. def get_angle
  667. x = $game_map.light_source[@source][0] - @character.real_x
  668. y = $game_map.light_source[@source][1] - @character.real_y
  669. self.opacity = $game_map.shadow_options[0] -
  670. Math::sqrt(x * x + y * y) * $game_map.shadow_options[1]
  671.  
  672. if x == 0 && y == 0 || self.opacity <= 0
  673. self.opacity = 0
  674. else
  675. self.angle = Math::atan2(x, y) * 180 / Math::PI + @aamount
  676. end
  677. end
  678.  
  679. def update_other
  680. self.blend_type = @character.blend_type
  681. self.visible = !@character.transparent
  682. end
  683. end # Sprite_Shadow < Sprite_Character
  684.  
  685.  
  686. #-------------------------------------------------------------------------------
  687. # Sprite_Icon
  688. #-------------------------------------------------------------------------------
  689.  
  690. class Sprite_Icon < Sprite_Character
  691. def initialize(viewport, character = nil)
  692. @icon_sprite ||= Sprite.new
  693. @icon_sprite.bitmap ||= Cache.system("Iconset")
  694. @icon = nil
  695. super(viewport, character)
  696. end
  697.  
  698. def dispose
  699. super
  700. if @icon_sprite
  701. @icon_sprite.dispose
  702. @icon_sprite = nil
  703. end
  704. end
  705.  
  706. def update
  707. super
  708. update_icon
  709. end
  710.  
  711. def update_icon
  712. return if !@character.icon
  713. draw_icon(@character.icon)
  714. end
  715.  
  716. def draw_icon(icon_index)
  717. return if !@icon.nil?
  718. rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  719. @icon_sprite.src_rect = rect
  720. @icon = icon_index
  721. end
  722.  
  723. def update_position
  724. @icon_sprite.x = @character.screen_x - 12
  725. @icon_sprite.y = @character.screen_y + Galv_CEffects::ICON_OFFSET
  726. end
  727.  
  728. def update_other
  729. self.blend_type = @character.blend_type
  730. @icon_sprite.visible = !@character.transparent
  731. end
  732. end # Sprite_Icon < Sprite_Character
  733.  
  734.  
  735. #-------------------------------------------------------------------------------
  736. # Other Stuff
  737. #-------------------------------------------------------------------------------
  738.  
  739.  
  740. class Game_Character < Game_CharacterBase
  741. attr_reader :altitude
  742. attr_accessor :reflect
  743. attr_accessor :reflect_sprite
  744. attr_accessor :shadow
  745. attr_accessor :icon
  746. end
  747.  
  748.  
  749. class Game_Event < Game_Character
  750. alias galv_reflect_ge_initialize initialize
  751. def initialize(map_id, event)
  752. @reflect = false
  753. @shadow = false
  754. galv_reflect_ge_initialize(map_id, event)
  755. end
  756. end # Game_Event < Game_Character
  757.  
  758.  
  759. class Game_Vehicle < Game_Character
  760. attr_reader :map_id
  761.  
  762. alias galv_reflect_gv_initialize initialize
  763. def initialize(type)
  764. @reflect = true
  765. @shadow = true
  766. galv_reflect_gv_initialize(type)
  767. end
  768. end # Game_Vehicle < Game_Character
  769.  
  770.  
  771. class Game_Follower < Game_Character
  772. alias galv_reflect_gf_initialize initialize
  773. def initialize(member_index, preceding_character)
  774. galv_reflect_gf_initialize(member_index, preceding_character)
  775. @reflect = true
  776. @shadow = true
  777. end
  778.  
  779. alias galv_reflect_gf_refresh refresh
  780. def refresh
  781. galv_reflect_gf_refresh
  782. return if actor.nil?
  783. @reflect = actor.reflect
  784. @reflect_sprite = actor.reflect_sprite
  785. @icon = actor.icon
  786. if SceneManager.scene_is?(Scene_Map)
  787. SceneManager.scene.spriteset.refresh_effects
  788. end
  789. end
  790. end # Game_Follower < Game_Character
  791.  
  792.  
  793. class Game_Player < Game_Character
  794. alias galv_reflect_gp_initialize initialize
  795. def initialize
  796. galv_reflect_gp_initialize
  797. @reflect = true
  798. @shadow = true
  799. end
  800.  
  801. alias galv_reflect_gp_refresh refresh
  802. def refresh
  803. galv_reflect_gp_refresh
  804. @reflect = actor.reflect
  805. @reflect_sprite = actor.reflect_sprite
  806. @icon = actor.icon
  807. if SceneManager.scene_is?(Scene_Map)
  808. SceneManager.scene.spriteset.refresh_effects
  809. end
  810. end
  811. end # Game_Player < Game_Character
  812.  
  813.  
  814. class Scene_Map < Scene_Base
  815. attr_accessor :spriteset
  816. end # Scene_Map
  817.  
  818.  
  819. class Game_Map
  820. attr_accessor :char_effects
  821. attr_accessor :light_source
  822. attr_accessor :shadow_options
  823. attr_accessor :reflect_options
  824.  
  825. alias galv_reflect_game_map_initialize initialize
  826. def initialize
  827. @light_source = []
  828. @shadow_options = [80,10,false]
  829. @reflect_options = [0]
  830. @char_effects = [false,false,false,false]
  831. #[reflect,shadow,mirror,icon]
  832. galv_reflect_game_map_initialize
  833. end
  834.  
  835. alias galv_reflect_game_map_setup setup
  836. def setup(map_id)
  837. galv_reflect_game_map_setup(map_id)
  838. reset_char_effects
  839. end
  840.  
  841. def reset_char_effects
  842. @light_source = []
  843. @events.values.each { |e| e.reflect = false }
  844. @events.values.each { |e| e.icon = nil }
  845. end
  846. end # Game_Map
  847.  
  848.  
  849. class Game_Actor < Game_Battler
  850. attr_accessor :reflect
  851. attr_accessor :reflect_sprite
  852. attr_accessor :icon
  853.  
  854. alias galv_reflect_game_actor_initialize initialize
  855. def initialize(actor_id)
  856. galv_reflect_game_actor_initialize(actor_id)
  857. @reflect = $data_actors[actor_id].reflect
  858. @reflect_sprite = $data_actors[actor_id].reflect_sprite
  859. end
  860. end # Game_Actor < Game_Battler
  861.  
  862.  
  863. class RPG::Actor
  864. def reflect_sprite
  865. if @reflect_sprite.nil?
  866. if @note =~ /<reflect_sprite:[ ](.*),(.*)>/i
  867. @reflect_sprite = [$1.to_s,$2.to_i]
  868. else
  869. @reflect_sprite = nil
  870. end
  871. end
  872. @reflect_sprite
  873. end
  874. def reflect
  875. if @reflect.nil?
  876. if @note =~ /<no_reflect>/i
  877. @reflect = false
  878. else
  879. @reflect = true
  880. end
  881. end
  882. @reflect
  883. end
  884. end # RPG::Actor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement