czeak6464

Pokemon Essentials Streamer Mode v16.2->18.2

Dec 20th, 2020 (edited)
946
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 15.01 KB | None | 0 0
  1. #===============================================================================
  2. # * Simple HUD Optimized - by FL (Credits will be apreciated)
  3. #===============================================================================
  4. #
  5. # This script is for Pokémon Essentials. It displays a simple HUD with the
  6. # party icons, HP Bars and some small text.
  7. #
  8. #===============================================================================
  9. #
  10. # Zeak6464 - Modded for Streamer Mode
  11. #
  12. #===============================================================================
  13. # in Settings change
  14. # BORDERWIDTH          = 200
  15. # BORDERHEIGHT         = 0
  16. #
  17. # Add the new graphics "Graphics/Pictures/Hud1" & "Graphics/Pictures/Hud2"
  18. #===============================================================================
  19.  
  20. DEFAULTSCREENWIDTH   = 512
  21. POKEMONICONZOOM = 1
  22.  
  23. class HUD  
  24.    
  25.     # If you wish to use a background picture, put the image path below, like
  26.     # BGPATH="Graphics/Pictures/battleMessage". I recommend a 512x64 picture
  27.     BGPATH="Graphics/Pictures/Hud1"
  28.     BG2PATH="Graphics/Pictures/Hud2"
  29.  
  30.     # Make as 'false' to don't show the blue bar
  31.     USEBAR=true
  32.  
  33.     # Make as 'false' to don't show the hp bars
  34.     SHOWHPBARS=true
  35.  
  36.     # Lower this number = more lag.
  37.     FRAMESPERUPDATE=2
  38.  
  39.  
  40.     def initialize
  41.       @sprites = {}
  42.     end
  43.  
  44.     def showHUD?
  45.       return (
  46.         $Trainer && $PokemonSystem.border==1
  47.       )
  48.     end
  49.  
  50.     def create
  51.       @sprites.clear
  52.  
  53.       @partySpecies = Array.new(6, 0)
  54.       @partyForm = Array.new(6, 0)
  55.       @partyIsEgg = Array.new(6, false)
  56.       @partyHP = Array.new(6, 0)
  57.       @partyTotalHP = Array.new(6, 0)
  58.  
  59.       drawBarFromPath = BGPATH != ""
  60.       drawBarFromPath = BG2PATH != ""
  61.      
  62.       if USEBAR
  63.         #left background
  64.           @sprites["bar"]=IconSprite.new(-208,0)
  65.           @sprites["bar"].setBitmap(BGPATH)
  66.         #right background
  67.           @sprites["bar2"]=IconSprite.new(512,0)
  68.           @sprites["bar2"].setBitmap(BG2PATH)
  69.         end
  70.        
  71.  
  72.    
  73.       @sprites["player"]=IconSprite.new(550,75)
  74.       @sprites["player"].setBitmap(pbTrainerSpriteFile($Trainer.trainertype))
  75.       @currentTexts = textsDefined
  76.       drawText
  77.     # zeak6464  
  78.     # removed @viewport1 , +16+64*i
  79.       for i in 0...6
  80.         x = -208
  81.         y = 64*i
  82.         y-=8 if SHOWHPBARS
  83.         @sprites["pokeicon#{i}"]=IconSprite.new(x,y)
  84.       end
  85.       refreshPartyIcons
  86.  
  87.       if SHOWHPBARS
  88.         borderWidth = 36
  89.         borderHeight = 10
  90.         fillWidth = 32
  91.         fillHeight = 6
  92.         for i in 0...6
  93.           x=-170
  94.           y=(64-8)+(64)*i
  95.  
  96.           @sprites["hpbarborder#{i}"] = BitmapSprite.new(
  97.             borderWidth,borderHeight
  98.           )
  99.           @sprites["hpbarborder#{i}"].x = x-borderWidth/2
  100.           @sprites["hpbarborder#{i}"].y = y-borderHeight/2
  101.           @sprites["hpbarborder#{i}"].bitmap.fill_rect(
  102.             Rect.new(0,0,borderWidth,borderHeight),
  103.             Color.new(32,32,32)
  104.           )
  105.           @sprites["hpbarborder#{i}"].bitmap.fill_rect(
  106.             (borderWidth-fillWidth)/2,
  107.             (borderHeight-fillHeight)/2,
  108.             fillWidth,
  109.             fillHeight,
  110.             Color.new(96,96,96)
  111.           )
  112.           @sprites["hpbarborder#{i}"].visible = false
  113.  
  114.           @sprites["hpbarfill#{i}"] = BitmapSprite.new(
  115.             fillWidth,fillHeight
  116.           )
  117.           @sprites["hpbarfill#{i}"].x = x-fillWidth/2
  118.           @sprites["hpbarfill#{i}"].y = y-fillHeight/2
  119.         end
  120.         refreshHPBars
  121.       end
  122.  
  123.       for sprite in @sprites.values
  124.         sprite.z+=600
  125.       end
  126.     end
  127.    
  128.  
  129.   #removed viewport1
  130.     def drawText
  131.       baseColor=Color.new(80,80,80)
  132.       shadowColor=Color.new(255,255,255)
  133.  
  134.       if @sprites.include?("overlay")
  135.         @sprites["overlay"].bitmap.clear
  136.       else
  137.         @sprites["overlay"] = BitmapSprite.new(DEFAULTSCREENWIDTH+400,384)
  138.       end
  139.       @sprites["overlay"].z=999999
  140.  
  141.     if $Trainer.party.size == 0  
  142.       textPositions=[
  143.         [@currentTexts[12],812,23,2,baseColor,shadowColor],
  144.         [@currentTexts[13],812,218,2,baseColor,shadowColor],
  145.         [@currentTexts[14],812,258,2,baseColor,shadowColor],
  146.         [@currentTexts[15],812,298,2,baseColor,shadowColor],
  147.         [@currentTexts[16],812,338,2,baseColor,shadowColor]
  148.         ]
  149.       else
  150.         textPositions=[
  151.       #left side
  152.       #pokemon 1
  153.         [@currentTexts[0],120,0+5,2,baseColor,shadowColor],
  154.         [@currentTexts[1],120,30+5,2,baseColor,shadowColor],
  155.       #pokemon 2  
  156.         [@currentTexts[2],120,64+5,2,baseColor,shadowColor],
  157.         [@currentTexts[3],120,96+5,2,baseColor,shadowColor],
  158.       #pokemon 3
  159.         [@currentTexts[4],120,128+5,2,baseColor,shadowColor],
  160.         [@currentTexts[5],120,160+5,2,baseColor,shadowColor],
  161.       #pokemon 4  
  162.         [@currentTexts[6],120,192+5,2,baseColor,shadowColor],
  163.         [@currentTexts[7],120,224+5,2,baseColor,shadowColor],
  164.       #pokemon 5  
  165.         [@currentTexts[8],120,256+5,2,baseColor,shadowColor],
  166.         [@currentTexts[9],120,288+5,2,baseColor,shadowColor],
  167.       #pokemon 6  
  168.         [@currentTexts[10],120,320+5,2,baseColor,shadowColor],
  169.         [@currentTexts[11],120,353+5,2,baseColor,shadowColor],
  170.       #right side
  171.         [@currentTexts[12],812,23,2,baseColor,shadowColor],
  172.         [@currentTexts[13],812,218,2,baseColor,shadowColor],
  173.         [@currentTexts[14],812,258,2,baseColor,shadowColor],
  174.         [@currentTexts[15],812,298,2,baseColor,shadowColor],
  175.         [@currentTexts[16],812,338,2,baseColor,shadowColor]
  176.         ]
  177.       end
  178.    
  179.     if $Trainer.party.size == 0
  180.      else
  181.       pbSetSystemFont(@sprites["overlay"].bitmap)
  182.       pbDrawTextPositions(@sprites["overlay"].bitmap,textPositions)
  183.     end
  184.   end
  185.    
  186.  
  187.  
  188.     # Note that this method is called on each refresh, but the texts
  189.     # only will be redrawed if any character change.
  190.     def textsDefined
  191.       ret=[]
  192.     if $Trainer.party.size == 0
  193.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  194.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  195.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  196.       ret[15] = _INTL("$:{1}",$Trainer.money)
  197.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  198.     elsif $Trainer.party.size == 1
  199.       ret[0] = _INTL("{1}",$Trainer.party[0].name)
  200.       ret[1] = _INTL("LV:  {1}",$Trainer.party[0].level)      
  201.       ret[2] = _INTL(" ")
  202.       ret[3] = _INTL(" ")
  203.       ret[4] = _INTL(" ")
  204.       ret[5] = _INTL(" ")
  205.       ret[6] = _INTL(" ")
  206.       ret[7] = _INTL(" ")
  207.       ret[8] = _INTL(" ")
  208.       ret[9] = _INTL(" ")
  209.       ret[10] = _INTL(" ")
  210.       ret[11] = _INTL(" ")
  211.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  212.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  213.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  214.       ret[15] = _INTL("$:{1}",$Trainer.money)
  215.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  216.     elsif $Trainer.party.size == 2
  217.       ret[0] = _INTL("{1}",$Trainer.party[0].name)
  218.       ret[1] = _INTL("LV:  {1}",$Trainer.party[0].level)
  219.       ret[2] = _INTL("{1}",$Trainer.party[1].name)
  220.       ret[3] = _INTL("LV:  {1}",$Trainer.party[1].level)
  221.       ret[4] = _INTL(" ")
  222.       ret[5] = _INTL(" ")
  223.       ret[6] = _INTL(" ")
  224.       ret[7] = _INTL(" ")
  225.       ret[8] = _INTL(" ")
  226.       ret[9] = _INTL(" ")
  227.       ret[10] = _INTL(" ")
  228.       ret[11] = _INTL(" ")
  229.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  230.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  231.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  232.       ret[15] = _INTL("$:{1}",$Trainer.money)
  233.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  234.     elsif $Trainer.party.size == 3
  235.       ret[0] = _INTL("{1}",$Trainer.party[0].name)
  236.       ret[1] = _INTL("LV:  {1}",$Trainer.party[0].level)
  237.       ret[2] = _INTL("{1}",$Trainer.party[1].name)
  238.       ret[3] = _INTL("LV:  {1}",$Trainer.party[1].level)
  239.       ret[4] = _INTL("{1}",$Trainer.party[2].name)
  240.       ret[5] = _INTL("LV:  {1}",$Trainer.party[2].level)
  241.       ret[6] = _INTL(" ")
  242.       ret[7] = _INTL(" ")
  243.       ret[8] = _INTL(" ")
  244.       ret[9] = _INTL(" ")
  245.       ret[10] = _INTL(" ")
  246.       ret[11] = _INTL(" ")
  247.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  248.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  249.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  250.       ret[15] = _INTL("$:{1}",$Trainer.money)
  251.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  252.     elsif $Trainer.party.size == 4
  253.       ret[0] = _INTL("{1}",$Trainer.party[0].name)
  254.       ret[1] = _INTL("LV:  {1}",$Trainer.party[0].level)
  255.       ret[2] = _INTL("{1}",$Trainer.party[1].name)
  256.       ret[3] = _INTL("LV:  {1}",$Trainer.party[1].level)
  257.       ret[4] = _INTL("{1}",$Trainer.party[2].name)
  258.       ret[5] = _INTL("LV:  {1}",$Trainer.party[2].level)
  259.       ret[6] = _INTL("{1}",$Trainer.party[3].name)
  260.       ret[7] = _INTL("LV:  {1}",$Trainer.party[3].level)
  261.       ret[8] = _INTL(" ")
  262.       ret[9] = _INTL(" ")
  263.       ret[10] = _INTL(" ")
  264.       ret[11] = _INTL(" ")
  265.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  266.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  267.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  268.       ret[15] = _INTL("$:{1}",$Trainer.money)
  269.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  270.     elsif $Trainer.party.size == 5
  271.       ret[0] = _INTL("{1}",$Trainer.party[0].name)
  272.       ret[1] = _INTL("LV:  {1}",$Trainer.party[0].level)
  273.       ret[2] = _INTL("{1}",$Trainer.party[1].name)
  274.       ret[3] = _INTL("LV:  {1}",$Trainer.party[1].level)
  275.       ret[4] = _INTL("{1}",$Trainer.party[2].name)
  276.       ret[5] = _INTL("LV:  {1}",$Trainer.party[2].level)
  277.       ret[6] = _INTL("{1}",$Trainer.party[3].name)
  278.       ret[7] = _INTL("LV:  {1}",$Trainer.party[3].level)
  279.       ret[8] = _INTL("{1}",$Trainer.party[4].name)
  280.       ret[9] = _INTL("LV:  {1}",$Trainer.party[4].level)
  281.       ret[10] = _INTL(" ")
  282.       ret[11] = _INTL(" ")
  283.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  284.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  285.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  286.       ret[15] = _INTL("$:{1}",$Trainer.money)
  287.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  288.     elsif $Trainer.party.size == 6
  289.       ret[0] = _INTL("{1}",$Trainer.party[0].name)
  290.       ret[1] = _INTL("LV:  {1}",$Trainer.party[0].level)
  291.       ret[2] = _INTL("{1}",$Trainer.party[1].name)
  292.       ret[3] = _INTL("LV:  {1}",$Trainer.party[1].level)
  293.       ret[4] = _INTL("{1}",$Trainer.party[2].name)
  294.       ret[5] = _INTL("LV:  {1}",$Trainer.party[2].level)
  295.       ret[6] = _INTL("{1}",$Trainer.party[3].name)
  296.       ret[7] = _INTL("LV:  {1}",$Trainer.party[3].level)
  297.       ret[8] = _INTL("{1}",$Trainer.party[4].name)
  298.       ret[9] = _INTL("LV:  {1}",$Trainer.party[4].level)
  299.       ret[10] = _INTL("{1}",$Trainer.party[5].name)
  300.       ret[11] = _INTL("LV:  {1}",$Trainer.party[5].level)
  301.       ret[12] = _INTL("Name:{1}",$Trainer.name)
  302.       ret[13] = _INTL("Seen:{1}",$Trainer.pokedexSeen)
  303.       ret[14] = _INTL("Owned:{1}",$Trainer.pokedexOwned)
  304.       ret[15] = _INTL("$:{1}",$Trainer.money)
  305.       ret[16] = _INTL("Badges:{1}",$Trainer.numbadges)
  306.     end
  307.       return ret
  308.     end
  309.  
  310.     def refreshPartyIcons
  311.       for i in 0...6
  312.         partyMemberExists = $Trainer.party.size > i
  313.         partySpecie = 0
  314.         partyForm = 0
  315.         partyIsEgg = false
  316.         if partyMemberExists
  317.           partySpecie = $Trainer.party[i].species
  318.           partyForm = $Trainer.party[i].form
  319.           partyIsEgg = $Trainer.party[i].egg?
  320.         end
  321.         refresh = (
  322.           @partySpecies[i]!=partySpecie ||
  323.           @partyForm[i]!=partyForm ||
  324.           @partyIsEgg[i]!=partyIsEgg
  325.         )
  326.         if refresh
  327.           @partySpecies[i] = partySpecie
  328.           @partyForm[i] = partyForm
  329.           @partyIsEgg[i] = partyIsEgg
  330.           if partyMemberExists
  331.             pokemonIconFile = pbPokemonIconFile($Trainer.party[i])
  332.             @sprites["pokeicon#{i}"].setBitmap(pokemonIconFile)
  333.             @sprites["pokeicon#{i}"].zoom_x=POKEMONICONZOOM
  334.             @sprites["pokeicon#{i}"].zoom_y=POKEMONICONZOOM
  335.             @sprites["pokeicon#{i}"].src_rect=Rect.new(0,0,64,64)
  336.           end
  337.           @sprites["pokeicon#{i}"].visible = partyMemberExists
  338.         end
  339.       end
  340.     end
  341.  
  342.  
  343.     def refreshHPBars
  344.       for i in 0...6
  345.         hp = 0
  346.         totalhp = 0
  347.         hasHP = i<$Trainer.party.size && !$Trainer.party[i].egg?
  348.         if hasHP
  349.           hp = $Trainer.party[i].hp
  350.           totalhp = $Trainer.party[i].totalhp
  351.         end
  352.  
  353.         lastTimeWasHP = @partyTotalHP[i] != 0
  354.         @sprites["hpbarborder#{i}"].visible = hasHP if lastTimeWasHP != hasHP
  355.  
  356.         redrawFill = hp != @partyHP[i] || totalhp != @partyTotalHP[i]
  357.         if redrawFill
  358.           @partyHP[i] = hp
  359.           @partyTotalHP[i] = totalhp
  360.           @sprites["hpbarfill#{i}"].bitmap.clear
  361.  
  362.           width = @sprites["hpbarfill#{i}"].bitmap.width
  363.           height = @sprites["hpbarfill#{i}"].bitmap.height
  364.           fillAmount = (hp==0 || totalhp==0) ? 0 : hp*width/totalhp
  365.           # Always show a bit of HP when alive
  366.           fillAmount = 1 if fillAmount==0 && hp>0
  367.           if fillAmount > 0
  368.             hpColors=nil
  369.             if hp<=(totalhp/4).floor
  370.               hpColors = [Color.new(240,80,32),Color.new(168,48,56)] # Red
  371.             elsif hp<=(totalhp/2).floor
  372.               hpColors = [Color.new(248,184,0),Color.new(184,112,0)] # Orange
  373.             else
  374.               hpColors = [Color.new(24,192,32),Color.new(0,144,0)] # Green
  375.             end
  376.             shadowHeight = 2
  377.             rect = Rect.new(0,0,fillAmount,shadowHeight)
  378.             @sprites["hpbarfill#{i}"].bitmap.fill_rect(rect, hpColors[1])
  379.             rect = Rect.new(0,shadowHeight,fillAmount,height-shadowHeight)
  380.             @sprites["hpbarfill#{i}"].bitmap.fill_rect(rect, hpColors[0])
  381.           end
  382.         end
  383.       end
  384.     end
  385.  
  386.     def update
  387.       if showHUD?
  388.         if @sprites.empty?
  389.           create
  390.         else
  391.           updateHUDContent = (
  392.             FRAMESPERUPDATE<=1 || Graphics.frame_count%FRAMESPERUPDATE==0
  393.           )
  394.           if updateHUDContent
  395.             newTexts = textsDefined
  396.             if @currentTexts != newTexts
  397.               @currentTexts = newTexts
  398.               drawText
  399.             end
  400.             refreshPartyIcons
  401.             refreshHPBars if SHOWHPBARS
  402.           end
  403.         end
  404.         pbUpdateSpriteHash(@sprites)
  405.       else
  406.         dispose if !@sprites.empty?
  407.       end
  408.     end
  409.  
  410.     def dispose
  411.       pbDisposeSpriteHash(@sprites)
  412.     end
  413.   end
  414.  
  415. class Spriteset_Map
  416.   alias :initializeOldFL :initialize
  417.   alias :disposeOldFL :dispose
  418.   alias :updateOldFL :update
  419.  
  420.   def initialize(map=nil)
  421.     initializeOldFL(map)
  422.   end
  423.  
  424.   def dispose
  425.     @hud.dispose if @hud
  426.     disposeOldFL
  427.   end
  428.  
  429.   def update
  430.     updateOldFL
  431.     @hud = HUD.new if !@hud
  432.     @hud.update
  433.   end
  434. end  
  435.  
  436.  
  437.  
  438. class PokeBattle_Scene
  439.   alias __hud_pbGraphicsUpdate pbGraphicsUpdate
  440.   def pbGraphicsUpdate
  441.     __hud_pbGraphicsUpdate
  442.       @hud = HUD.new if !@hud
  443.       @hud.update
  444.   end
  445. end
Add Comment
Please, Sign In to add comment