Changed: TilemapXP @@ -338,1 +338,1 @@ - if !sprite.bitmap.equal?(bitmap) || sprite.bitmap!=bitmap + if sprite.bitmap!=bitmap @@ -345,1 +345,1 @@ - if !sprite.bitmap.equal?(@tileset) || sprite.bitmap!=@tileset + if sprite.bitmap!=@tileset @@ -357,1 +357,1 @@ - if !sprite.bitmap.equal?(bitmap) || sprite.bitmap!=bitmap + if sprite.bitmap!=bitmap Changed: PokemonMap @@ -430,1 +430,1 @@ - if FileTest.exist?("Data/Tilesets.rxdata") + if pbRgssExists?("Data/Tilesets.rxdata") @@ -775,5 +775,6 @@ - def getFacingTile(direction=nil) - x=$game_player.x - y=$game_player.y - id=$game_map.map_id - direction=$game_player.direction if direction==nil + def getFacingTile(direction=nil,event=nil) + event=$game_player if event==nil + x=event.x + y=event.y + id=event.map.map_id + direction=event.direction if direction==nil @@ -790,4 +791,4 @@ - return [$game_map.map_id,x,y] - end - if $game_map.valid?(x,y) - return [$game_map.map_id,x,y] + return [id,x,y] + end + if event.map.valid?(x,y) + return [id,x,y] Changed: PokeBattle_Pokemon @@ -148,0 +148,3 @@ + fromballused= [0,3,5,2,1,6,7,8,9,10,11,12] + ballused=@ballused && @ballused0) ? y-1 : y + realtext=(newlineBreaks) ? text : text.gsub(/\n/," ") + if numlines==2 && !explicitBreaksOnly && !realtext[/\n/] && realtext.length>=50 + # Set half to middle of text (known to contain no formatting) + half=realtext.length/2 + leftSearch=0 + rightSearch=0 + # Search left for a space + i=half; while i>=0 + if realtext[i,1][/\s/]||isWaitChar(realtext[i]) + # found a space + break + end + leftSearch+=1 + i-=1 + end + # Search right for a space + i=half; while i0) ? y : y+1 + if numlines==2 && realtext && !realtext[/\n/] && realtext.length>=50 + # Set half to middle of text (known to contain no formatting) + half=realtext.length/2 + leftSearch=0 + rightSearch=0 + # Search left for a space + i=half; while i>=0 + if realtext[i,1][/\s/]||isWaitChar(realtext[i,1]) + # found a space + break + end + leftSearch+=1 + i-=1 + end + # Search right for a space + i=half; while i12 + raise _INTL("Kind {1} is greater than 12 characters long (section {2}, PBS/pokemon.txt)",value,currentmap) if value.length>12 @@ -2256,1 +2273,1 @@ - raise _INTL("Species name {1} is greater than 10 characters long (section {2})",value,currentmap) if value.length>10 + raise _INTL("Species name {1} is greater than 10 characters long (section {2}, PBS/pokemon.txt)",value,currentmap) if value.length>10 Changed: Game_Player* @@ -10,1 +10,1 @@ - $game_player.addDependentEvent(event) + $PokemonTemp.dependentEvents.addEvent(event) @@ -13,1 +13,8 @@ - $game_player.removeDependentEvent(event) + $PokemonTemp.dependentEvents.removeEvent(event) +end + +def pbAddDependency2(eventID, eventName, commonEvent) + $PokemonTemp.dependentEvents.addEvent($game_map.events[eventID],eventName,commonEvent) +end +def pbRemoveDependency2(eventName) + $PokemonTemp.dependentEvents.removeEventByName(eventName) @@ -27,3 +34,0 @@ - if event.is_a?(Game_Event) - $PokemonMap.addMovedEvent(event.id) - end @@ -49,22 +53,20 @@ - if follower.is_a?(Game_Event) - $PokemonMap.addMovedEvent(follower.id) - end -end - -def pbFollowEvent(leader,follower) - d=leader.direction - newX = leader.x + (d == 6 ? -1 : d == 4 ? 1 : 0) - newY = leader.y + (d == 2 ? -1 : d == 8 ? 1 : 0) - posX = newX + (d == 6 ? -1 : d == 4 ? 1 : 0) - posY = newY + (d == 2 ? -1 : d == 8 ? 1 : 0) - if follower.x-newX==-1 && follower.y==newY - follower.move_right - elsif follower.x-newX==1 && follower.y==newY - follower.move_left - elsif follower.y-newY==-1 && follower.x==newX - follower.move_down - elsif follower.y-newY==1 && follower.x==newX - follower.move_up - elsif follower.x!=posX || follower.y!=posY - follower.moveto(posX,posY) - case leader.direction +end + +def pbTestPass(follower,x,y,direction) + oldThrough=follower.through + follower.through=false + ret=follower.passableStrict?(x,y,direction) + follower.through=oldThrough + return ret +end + +def moveIfPossible(follower,direction) + deltaX=(direction == 6 ? 1 : direction == 4 ? -1 : 0) + deltaY=(direction == 2 ? 1 : direction == 8 ? -1 : 0) + newX = follower.x + deltaX + newY = follower.y + deltaY + if ($game_player.x==newX && $game_player.y==newY) || + pbTestPass(follower,newX,newY,0) + oldThrough=follower.through + follower.through=true + case direction @@ -79,0 +81,22 @@ + end + follower.through=oldThrough + end +end + +def pbFancyMoveTo(follower,newX,newY) + if follower.x-newX==-1 && follower.y==newY + moveIfPossible(follower,6) + elsif follower.x-newX==1 && follower.y==newY + moveIfPossible(follower,4) + elsif follower.y-newY==-1 && follower.x==newX + moveIfPossible(follower,2) + elsif follower.y-newY==1 && follower.x==newX + moveIfPossible(follower,8) + elsif follower.x-newX==-2 && follower.y==newY + middle=pbTestPass(follower,follower.x+1,newY,0) + ending=pbTestPass(follower,newX,newY,0) + if middle + moveIfPossible(follower,6) + moveIfPossible(follower,6) + elsif ending + follower.jump(2,0) @@ -80,7 +104,33 @@ - end - if follower.is_a?(Game_Event) - $PokemonMap.addMovedEvent(follower.id) - end -end - -def pbFollowEventJumping(leader,follower) + elsif follower.x-newX==2 && follower.y==newY + middle=pbTestPass(follower,follower.x-1,newY,0) + ending=pbTestPass(follower,newX,newY,0) + if middle + moveIfPossible(follower,4) + moveIfPossible(follower,4) + elsif ending + follower.jump(-2,0) + end + elsif follower.y-newY==-2 && follower.x==newX + middle=pbTestPass(follower,newX,follower.y+1,0) + ending=pbTestPass(follower,newX,newY,0) + if middle + moveIfPossible(follower,2) + moveIfPossible(follower,2) + elsif ending + follower.jump(0,2) + end + elsif follower.y-newY==2 && follower.x==newX + middle=pbTestPass(follower,newX,follower.y-1,0) + ending=pbTestPass(follower,newX,newY,0) + if middle + moveIfPossible(follower,8) + moveIfPossible(follower,8) + elsif ending + follower.jump(0,2) + end + elsif follower.x!=newX || follower.y!=newY + follower.moveto(newX,newY) + end +end + +def pbFollowEvent(leader,follower) @@ -88,16 +138,15 @@ - newX = leader.x + (d == 6 ? -1 : d == 4 ? 1 : 0) - newY = leader.y + (d == 2 ? -1 : d == 8 ? 1 : 0) - posX = newX + (d == 6 ? -1 : d == 4 ? 1 : 0) - posY = newY + (d == 2 ? -1 : d == 8 ? 1 : 0) - if follower.x-newX==-1 && follower.y==newY - follower.jump(1,0) - return - elsif follower.x-newX==1 && follower.y==newY - follower.jump(-1,0) - return - elsif follower.y-newY==-1 && follower.x==newX - follower.jump(0,1) - return - elsif follower.y-newY==1 && follower.x==newX - follower.jump(0,-1) - return + deltaX=(d == 6 ? -1 : d == 4 ? 1 : 0) + deltaY=(d == 2 ? -1 : d == 8 ? 1 : 0) + newX = leader.x + deltaX + newY = leader.y + deltaY + posX = newX + deltaX + posY = newY + deltaY + if (follower.x-newX==-1 && follower.y==newY) || + (follower.x-newX==1 && follower.y==newY) || + (follower.y-newY==-1 && follower.x==newX) || + (follower.y-newY==1 && follower.x==newX) || + (follower.x-newX==-2 && follower.y==newY) || + (follower.x-newX==2 && follower.y==newY) || + (follower.y-newY==-2 && follower.x==newX) || + (follower.y-newY==2 && follower.x==newX) + pbFancyMoveTo(follower,newX,newY) @@ -105,16 +154,6 @@ - follower.moveto(posX,posY) - end - case leader.direction - when 2 # down - follower.jump(0,1) - when 4 # left - follower.jump(-1,0) - when 6 # right - follower.jump(1,0) - when 8 # up - follower.jump(0,-1) - end - if follower.is_a?(Game_Event) - $PokemonMap.addMovedEvent(follower.id) - end -end + pbFancyMoveTo(follower,posX,posY) + pbFancyMoveTo(follower,newX,newY) + end +end + + @@ -137,41 +176,1 @@ - return @dependentEvents && (@dependentEvents.length>0) - end - def addDependentEvent(event) - @dependentEvents=[] if !@dependentEvents - for i in 0...@dependentEvents.length - if @dependentEvents[i][0]==$game_map.map_id&& - @dependentEvents[i][1]==event.id - # Already exists - return - end - end - @dependentEvents.push([$game_map.map_id,event.id,event.through]) - event.through=true - end - def removeDependentEvent(event) - if @dependentEvents - mapid=$game_map.map_id - for i in 0...@dependentEvents.length - if @dependentEvents[i][0]==mapid && - @dependentEvents[i][1]==event.id - event.through=@dependentEvents[i][2] - @dependentEvents[i]=nil - end - end - @dependentEvents.compact! - end - end - def updateDependentEvents - if @dependentEvents - for i in 0...@dependentEvents.length - @dependentEvents[i]=nil if @dependentEvents[i][0]!=$game_map.map_id - end - @dependentEvents.compact! - end - end - def getDependentEvent(evt) - event=$game_map.events[evt[1]] - if event - event.through=true - end - return event + return $PokemonGlobal.dependentEvents.length>0 @@ -189,1 +188,1 @@ - pbMoveDependentEvents + $PokemonTemp.dependentEvents.pbMoveDependentEvents @@ -207,1 +206,1 @@ - pbMoveDependentEvents + $PokemonTemp.dependentEvents.pbMoveDependentEvents @@ -225,1 +224,1 @@ - pbMoveDependentEvents + $PokemonTemp.dependentEvents.pbMoveDependentEvents @@ -243,1 +242,1 @@ - pbMoveDependentEvents + $PokemonTemp.dependentEvents.pbMoveDependentEvents @@ -250,36 +249,0 @@ - end - def pbMoveDependentEvents - return if !@dependentEvents - updateDependentEvents - leader=self - for evt in @dependentEvents - event=getDependentEvent(evt) - if event - pbFollowEvent(leader,event) - leader=event - end - end - end - def pbJumpDependentEvents - return if !@dependentEvents - updateDependentEvents - leader=self - for evt in @dependentEvents - event=getDependentEvent(evt) - if event - pbFollowEventJumping(leader,event) - leader=event - end - end - end - def pbTurnDependentEvents - return if !@dependentEvents - updateDependentEvents - leader=self - for evt in @dependentEvents - event=getDependentEvent(evt) - if event - pbTurnTowardEvent(event,leader) - leader=event - end - end @@ -546,1 +509,1 @@ - updateDependentEvents + $PokemonTemp.dependentEvents.updateDependentEvents @@ -618,1 +581,1 @@ - pbTurnDependentEvents + $PokemonTemp.dependentEvents.pbTurnDependentEvents Changed: PokemonMessages @@ -829,0 +829,5 @@ + +def Kernel.pbConfirmMessageSerious(message) + return (Kernel.pbMessage(message,[_INTL("NO"),_INTL("YES")],1)==1) +end + Changed: Game_Character 2 @@ -1,6 +1,0 @@ -#============================================================================== -# ■ Game_Character (分割定義 2) -#------------------------------------------------------------------------------ -#  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event -# クラスのスーパークラスとして使用されます。 -#============================================================================== @@ -9,3 +3,0 @@ - #-------------------------------------------------------------------------- - # ● フレーム更新 - #-------------------------------------------------------------------------- @@ -13,1 +4,0 @@ - # ジャンプ中、移動中、停止中で分岐 @@ -21,2 +11,0 @@ - # アニメカウントが最大値を超えた場合 - # ※最大値は、基本値 18 から移動速度 * 1 を引いた値 @@ -24,1 +12,0 @@ - # 停止時アニメが OFF かつ 停止中の場合 @@ -26,1 +13,0 @@ - # パターンをオリジナルに戻す @@ -28,1 +14,0 @@ - # 停止時アニメが ON または 移動中の場合 @@ -30,1 +15,0 @@ - # パターンを更新 @@ -33,1 +17,0 @@ - # アニメカウントをクリア @@ -36,1 +19,0 @@ - # ウェイト中の場合 @@ -38,1 +20,0 @@ - # ウェイトカウントを減らす @@ -42,1 +23,0 @@ - # 移動ルート強制中の場合 @@ -44,1 +24,0 @@ - # カスタム移動 @@ -48,1 +27,0 @@ - # イベント実行待機中またはロック状態の場合 @@ -50,4 +28,2 @@ - # 自律移動はしない - return - end - # 停止カウントが一定の値 (移動頻度から算出) を超えた場合 + return + end @@ -55,1 +31,0 @@ - # 移動タイプで分岐 @@ -57,1 +32,1 @@ - when 1 # ランダム + when 1 @@ -59,1 +34,1 @@ - when 2 # 近づく + when 2 @@ -61,1 +36,1 @@ - when 3 # カスタム + when 3 @@ -66,3 +41,0 @@ - #-------------------------------------------------------------------------- - # ● フレーム更新 (ジャンプ) - #-------------------------------------------------------------------------- @@ -70,1 +42,0 @@ - # ジャンプカウントを 1 減らす @@ -72,1 +43,0 @@ - # 新しい座標を計算 @@ -76,3 +46,0 @@ - #-------------------------------------------------------------------------- - # ● フレーム更新 (移動) - #-------------------------------------------------------------------------- @@ -101,3 +68,0 @@ - #-------------------------------------------------------------------------- - # ● フレーム更新 (停止) - #-------------------------------------------------------------------------- @@ -105,1 +69,0 @@ - # 停止時アニメが ON の場合 @@ -107,1 +70,0 @@ - # アニメカウントを 1 増やす @@ -109,1 +71,0 @@ - # 停止時アニメが OFF だが、現在のパターンがオリジナルと異なる場合 @@ -111,1 +72,0 @@ - # アニメカウントを 1.5 増やす @@ -114,2 +74,0 @@ - # イベント実行待機中またはロック状態ではない場合 - # ※ロックは、実行中のイベントが立ち止まる処理 @@ -117,1 +75,0 @@ - # 停止カウントを 1 増やす @@ -121,3 +78,0 @@ - #-------------------------------------------------------------------------- - # ● 移動タイプ : ランダム - #-------------------------------------------------------------------------- @@ -125,1 +79,0 @@ - # 乱数 0~5 で分岐 @@ -127,1 +80,1 @@ - when 0..3 # ランダム + when 0..3 @@ -129,1 +82,1 @@ - when 4 # 一歩前進 + when 4 @@ -131,1 +84,1 @@ - when 5 # 一時停止 + when 5 @@ -135,3 +88,0 @@ - #-------------------------------------------------------------------------- - # ● 移動タイプ : 近づく - #-------------------------------------------------------------------------- @@ -139,1 +89,0 @@ - # プレイヤーの座標との差を求める @@ -142,1 +91,0 @@ - # 差の絶対値を求める @@ -145,1 +93,0 @@ - # 縦横あわせて 20 タイル以上離れている場合 @@ -147,1 +94,0 @@ - # ランダム @@ -151,1 +97,0 @@ - # 乱数 0~5 で分岐 @@ -153,1 +98,1 @@ - when 0..3 # プレイヤーに近づく + when 0..3 @@ -155,1 +100,1 @@ - when 4 # ランダム + when 4 @@ -157,1 +102,1 @@ - when 5 # 一歩前進 + when 5 @@ -161,3 +106,0 @@ - #-------------------------------------------------------------------------- - # ● 移動タイプ : カスタム - #-------------------------------------------------------------------------- @@ -165,1 +107,0 @@ - # 停止中でなければ中断 @@ -169,1 +110,0 @@ - # 移動コマンドのリストの最後に到達するまでループ @@ -171,1 +111,0 @@ - # 移動コマンドを取得 @@ -173,1 +112,0 @@ - # コマンドコード 0 番 (リストの最後) の場合 @@ -175,1 +113,0 @@ - # オプション [動作を繰り返す] が ON の場合 @@ -177,1 +114,0 @@ - # 移動ルートのインデックスを最初に戻す @@ -180,1 +116,0 @@ - # オプション [動作を繰り返す] が OFF の場合 @@ -182,1 +117,0 @@ - # 移動ルート強制中の場合 @@ -184,1 +118,0 @@ - # 移動ルートの強制を解除 @@ -186,1 +119,0 @@ - # オリジナルの移動ルートを復帰 @@ -191,1 +123,0 @@ - # 停止カウントをクリア @@ -196,1 +127,0 @@ - # 移動系コマンド (下に移動~ジャンプ) の場合 @@ -198,1 +128,0 @@ - # コマンドコードで分岐 @@ -200,1 +129,1 @@ - when 1 # 下に移動 + when 1 @@ -202,1 +131,1 @@ - when 2 # 左に移動 + when 2 @@ -204,1 +133,1 @@ - when 3 # 右に移動 + when 3 @@ -206,1 +135,1 @@ - when 4 # 上に移動 + when 4 @@ -208,1 +137,1 @@ - when 5 # 左下に移動 + when 5 @@ -210,1 +139,1 @@ - when 6 # 右下に移動 + when 6 @@ -212,1 +141,1 @@ - when 7 # 左上に移動 + when 7 @@ -214,1 +143,1 @@ - when 8 # 右上に移動 + when 8 @@ -216,1 +145,1 @@ - when 9 # ランダムに移動 + when 9 @@ -218,1 +147,1 @@ - when 10 # プレイヤーに近づく + when 10 @@ -220,1 +149,1 @@ - when 11 # プレイヤーから遠ざかる + when 11 @@ -222,1 +151,1 @@ - when 12 # 一歩前進 + when 12 @@ -224,1 +153,1 @@ - when 13 # 一歩後退 + when 13 @@ -226,1 +155,1 @@ - when 14 # ジャンプ + when 14 @@ -229,1 +158,0 @@ - # オプション [移動できない場合は無視] が OFF で、移動失敗の場合 @@ -236,1 +164,0 @@ - # ウェイトの場合 @@ -238,1 +165,0 @@ - # ウェイトカウントを設定 @@ -243,1 +169,0 @@ - # 向き変更系のコマンドの場合 @@ -245,1 +170,0 @@ - # コマンドコードで分岐 @@ -247,1 +171,1 @@ - when 16 # 下を向く + when 16 @@ -249,1 +173,1 @@ - when 17 # 左を向く + when 17 @@ -251,1 +175,1 @@ - when 18 # 右を向く + when 18 @@ -253,1 +177,1 @@ - when 19 # 上を向く + when 19 @@ -255,1 +179,1 @@ - when 20 # 右に 90 度回転 + when 20 @@ -257,1 +181,1 @@ - when 21 # 左に 90 度回転 + when 21 @@ -259,1 +183,1 @@ - when 22 # 180 度回転 + when 22 @@ -261,1 +185,1 @@ - when 23 # 右か左に 90 度回転 + when 23 @@ -263,1 +187,1 @@ - when 24 # ランダムに方向転換 + when 24 @@ -265,1 +189,1 @@ - when 25 # プレイヤーの方を向く + when 25 @@ -267,1 +191,1 @@ - when 26 # プレイヤーの逆を向く + when 26 @@ -273,1 +197,0 @@ - # その他のコマンドの場合 @@ -275,1 +198,0 @@ - # コマンドコードで分岐 @@ -277,1 +199,1 @@ - when 27 # スイッチ ON + when 27 @@ -280,1 +202,1 @@ - when 28 # スイッチ OFF + when 28 @@ -283,1 +205,1 @@ - when 29 # 移動速度の変更 + when 29 @@ -285,1 +207,1 @@ - when 30 # 移動頻度の変更 + when 30 @@ -287,1 +209,1 @@ - when 31 # 移動時アニメ ON + when 31 @@ -289,1 +211,1 @@ - when 32 # 移動時アニメ OFF + when 32 @@ -291,1 +213,1 @@ - when 33 # 停止時アニメ ON + when 33 @@ -293,1 +215,1 @@ - when 34 # 停止時アニメ OFF + when 34 @@ -295,1 +217,1 @@ - when 35 # 向き固定 ON + when 35 @@ -297,1 +219,1 @@ - when 36 # 向き固定 OFF + when 36 @@ -299,1 +221,1 @@ - when 37 # すり抜け ON + when 37 @@ -301,1 +223,1 @@ - when 38 # すり抜け OFF + when 38 @@ -303,1 +225,1 @@ - when 39 # 最前面に表示 ON + when 39 @@ -305,1 +227,1 @@ - when 40 # 最前面に表示 OFF + when 40 @@ -307,1 +229,1 @@ - when 41 # グラフィック変更 + when 41 @@ -320,1 +242,1 @@ - when 42 # 不透明度の変更 + when 42 @@ -322,1 +244,1 @@ - when 43 # 合成方法の変更 + when 43 @@ -324,1 +246,1 @@ - when 44 # SE の演奏 + when 44 @@ -326,1 +248,1 @@ - when 45 # スクリプト + when 45 @@ -333,3 +255,0 @@ - #-------------------------------------------------------------------------- - # ● 歩数増加 - #-------------------------------------------------------------------------- @@ -337,1 +256,0 @@ - # 停止カウントをクリア Changed: SpriteWindow @@ -655,0 +655,9 @@ +def pbRgssExists?(filename) + filename=canonicalize(filename) + if FileTest.exist?("./Game.rgssad") + return pbGetFileString(filename)!=nil + else + return FileTest.exist?(filename) + end +end + @@ -656,0 +665,1 @@ + file=canonicalize(file) @@ -671,0 +681,1 @@ + file=canonicalize(file) @@ -1465,0 +1476,1 @@ + TEXTPADDING=4 # In pixels @@ -1881,1 +1893,1 @@ - self.width=dims[0]+self.borderX+2+6 + self.width=dims[0]+self.borderX+SpriteWindow_Base::TEXTPADDING @@ -1982,1 +1994,1 @@ - def resizeToFitInternal(text,maxwidth) + def resizeToFitInternal(text,maxwidth) # maxwidth is maximum acceptable window width @@ -1986,1 +1998,1 @@ - getLineBrokenChunks(self.contents,text,cwidth,dims,true) + getLineBrokenChunks(self.contents,text,cwidth-self.borderX-SpriteWindow_Base::TEXTPADDING,dims,true) @@ -1989,1 +2001,1 @@ - def resizeToFit(text,maxwidth=-1) + def resizeToFit(text,maxwidth=-1) # maxwidth is maximum acceptable window width @@ -1992,1 +2004,1 @@ - self.width=dims[0]+self.borderX+2+6 + self.width=dims[0]+self.borderX+SpriteWindow_Base::TEXTPADDING @@ -2006,1 +2018,1 @@ - @textwidth=dims[0]+2+6 + @textwidth=dims[0]+SpriteWindow_Base::TEXTPADDING @@ -2009,1 +2021,1 @@ - drawTextEx(self.contents,0,0,self.contents.width,0, + drawTextEx(self.contents,0,0,self.contents.width-SpriteWindow_Base::TEXTPADDING,0, @@ -2069,1 +2081,1 @@ - def resizeToFitInternal(text,maxwidth) + def resizeToFitInternal(text,maxwidth) # maxwidth is maximum acceptable window width @@ -2072,1 +2084,1 @@ - getLineBrokenChunks(self.contents,text,cwidth,dims,true) + getLineBrokenChunks(self.contents,text,cwidth-self.borderX-SpriteWindow_Base::TEXTPADDING,dims,true) @@ -2075,1 +2087,1 @@ - def resizeToFit(text,maxwidth=-1) + def resizeToFit(text,maxwidth=-1) # maxwidth is maximum acceptable window width @@ -2077,1 +2089,1 @@ - self.width=dims[0]+self.borderX+2+6 + self.width=dims[0]+self.borderX+SpriteWindow_Base::TEXTPADDING @@ -2081,1 +2093,1 @@ - def resizeHeightToFit(text,width=-1) + def resizeHeightToFit(text,width=-1) # width is current window width @@ -2090,1 +2102,1 @@ - drawTextEx(self.contents,0,0,self.contents.width,0, + drawTextEx(self.contents,0,0,self.contents.width-SpriteWindow_Base::TEXTPADDING,0, @@ -2133,1 +2145,1 @@ - self.width-self.borderX,-1, + self.width-self.borderX-SpriteWindow_Base::TEXTPADDING,-1, @@ -2145,1 +2157,1 @@ - self.width-self.borderX,-1, + self.width-self.borderX-SpriteWindow_Base::TEXTPADDING,-1, @@ -2161,2 +2173,6 @@ - @fmtchars.push(ch) - @textchars.push(ch[5] ? "" : ch[0]) + # Don't add newline characters, since they + # can slow down letter-by-letter display + if ch[5] || (ch[0]!="\r") + @fmtchars.push(ch) + @textchars.push(ch[5] ? "" : ch[0]) + end @@ -2259,1 +2275,1 @@ - self.contents,0,0,cwidth-self.borderX-2-6,-1,text,32) + self.contents,0,0,cwidth-self.borderX-2-6,-1,text,32,true) @@ -2270,1 +2286,1 @@ - self.width=[dims[0]+self.borderX+2+6,maxwidth].min + self.width=[dims[0]+self.borderX+SpriteWindow_Base::TEXTPADDING,maxwidth].min @@ -2279,1 +2295,1 @@ - self.width=dims[0]+self.borderX+2+6 + self.width=dims[0]+self.borderX+SpriteWindow_Base::TEXTPADDING Changed: PokemonUtilities @@ -260,0 +260,1 @@ + # Special case for eggs @@ -261,0 +262,15 @@ + end + if isConst?(pokemon.species,PBSpecies,:UNOWN) + # Special case for Unown + d=pokemon.personalID&3 + d|=((pokemon.personalID>>8)&3)<<2 + d|=((pokemon.personalID>>16)&3)<<4 + d|=((pokemon.personalID>>24)&3)<<6 + d%=28 # index of letter : ABCDEFGHIJKLMNOPQRSTUVWXYZ!? + filename=sprintf("Graphics/Icons/icon%03d_%02d.png",pokemon.species,d) + begin + load_data(filename) + return filename + rescue Errno::ENOENT, RGSSError + # File not found, just fall back + end @@ -937,0 +953,38 @@ +def pbHideVisibleObjects + visibleObjects=[] + # Windows excluded because they + # are implemented as sprites + ObjectSpace.each_object(Sprite){|o| + if !o.disposed? && o.visible + visibleObjects.push(o) + o.visible=false + end + } + ObjectSpace.each_object(Viewport){|o| + if !pbDisposed?(o) && o.visible + visibleObjects.push(o) + o.visible=false + end + } + ObjectSpace.each_object(Plane){|o| + if !o.disposed? && o.visible + visibleObjects.push(o) + o.visible=false + end + } + ObjectSpace.each_object(Tilemap){|o| + if !o.disposed? && o.visible + visibleObjects.push(o) + o.visible=false + end + } + return visibleObjects +end + +def pbShowObjects(visibleObjects) + for o in visibleObjects + if !pbDisposed?(o) + o.visible=true + end + end +end @@ -942,8 +996,0 @@ - col=Color.new(0,0,0,0) - viewport=Viewport.new(0,0,Graphics.width,Graphics.height) - viewport.z=99999 - for j in 0..26 - col.set(0,0,0,j*10) - viewport.color=col - Graphics.update - end @@ -951,1 +997,0 @@ - viewport.visible=false @@ -953,0 +998,3 @@ + visibleObjects=pbHideVisibleObjects + Graphics.transition(15) + Graphics.freeze @@ -956,0 +1004,2 @@ + Graphics.transition(15) + Graphics.freeze @@ -957,8 +1007,2 @@ - viewport.visible=true - Graphics.transition(26) - for j in 0..26 - col.set(0,0,0,(26-j)*10) - viewport.color=col - Graphics.update - end - viewport.dispose + pbShowObjects(visibleObjects) + Graphics.transition(20) Changed: PokeBattle_Battle @@ -581,1 +581,1 @@ - pbDisplayPaused(_INTL("Wild {1} and {2} appeared!", + pbDisplayPaused(_INTL("Wild {1} and\r\n{2} appeared!", @@ -611,4 +611,4 @@ - pbDisplay(_INTL("{1} sent out {2}!",@opponent[0].fullname,@party2[sendout1].name)) - pbDisplayBrief(_INTL("{1} sent out {2}!",@opponent[1].fullname,@party2[sendout2].name)) - else - pbDisplayPaused(_INTL("{1} would like to battle!",@opponent.fullname)) + pbDisplay(_INTL("{1} sent\r\nout {2}!",@opponent[0].fullname,@party2[sendout1].name)) + pbDisplayBrief(_INTL("{1} sent\r\nout {2}!",@opponent[1].fullname,@party2[sendout2].name)) + else + pbDisplayPaused(_INTL("{1}\r\nwould like to battle!",@opponent.fullname)) @@ -620,1 +620,1 @@ - pbDisplayBrief(_INTL("{1} sent out {2} and {3}!",@opponent.fullname,@party2[sendout1].name,@party2[sendout2].name)) + pbDisplayBrief(_INTL("{1} sent\r\nout {2} and {3}!",@opponent.fullname,@party2[sendout1].name,@party2[sendout2].name)) @@ -646,2 +646,2 @@ - pbDisplayPaused(_INTL("{1} would like to battle!",@opponent.fullname)) - pbDisplayBrief(_INTL("{1} sent out {2}!",@opponent.fullname,trainerpoke.name)) + pbDisplayPaused(_INTL("{1}\r\nwould like to battle!",@opponent.fullname)) + pbDisplayBrief(_INTL("{1} sent\r\nout {2}!",@opponent.fullname,trainerpoke.name)) @@ -661,1 +661,1 @@ - pbDisplayBrief(_INTL("{1} sent out {2}! Go! {3}!",@player[1].fullname,@party1[sendout2].name,@party1[sendout1].name)) + pbDisplayBrief(_INTL("{1} sent\r\nout {2}! Go! {3}!",@player[1].fullname,@party1[sendout2].name,@party1[sendout1].name)) @@ -742,1 +742,1 @@ - pbDisplayPaused(_INTL("Player defeated {1}!",@opponent.fullname)) + pbDisplayPaused(_INTL("Player defeated\r\n{1}!",@opponent.fullname)) @@ -772,1 +772,1 @@ - pbDisplayPaused(_INTL("{1} got ${2} for winning!",self.pbPlayer.name,maxlevel)) + pbDisplayPaused(_INTL("{1} got ${2}\r\nfor winning!",self.pbPlayer.name,maxlevel)) @@ -793,1 +793,1 @@ - pbDisplayPaused(_INTL("Player lost against {1}!",@opponent.fullname)) + pbDisplayPaused(_INTL("Player lost against\r\n{1}!",@opponent.fullname)) @@ -796,1 +796,1 @@ - pbDisplayPaused(_INTL("{1} paid ${2} as the prize money...",self.pbPlayer.name,moneylost)) + pbDisplayPaused(_INTL("{1} paid ${2}\r\nas the prize money...",self.pbPlayer.name,moneylost)) @@ -801,1 +801,1 @@ - pbDisplayPaused(_INTL("{1} panicked and lost ${2}...",self.pbPlayer.name,moneylost)) + pbDisplayPaused(_INTL("{1} panicked and lost\r\n${2}...",self.pbPlayer.name,moneylost)) @@ -1707,1 +1707,1 @@ - pbDisplayBrief(_INTL("{1} used {2}!",opponent.fullname,itemname)) + pbDisplayBrief(_INTL("{1} used the\r\n{2}!",opponent.fullname,itemname)) @@ -2097,1 +2097,1 @@ - pbDisplayPaused(_INTL("{1} gained a boosted {2} Exp. Points!",thispoke.name,exp)) + pbDisplayPaused(_INTL("{1} gained a boosted\r\n{2} Exp. Points!",thispoke.name,exp)) @@ -2099,1 +2099,1 @@ - pbDisplayPaused(_INTL("{1} gained {2} Exp. Points!",thispoke.name,exp)) + pbDisplayPaused(_INTL("{1} gained\r\n{2} Exp. Points!",thispoke.name,exp)) @@ -2282,1 +2282,1 @@ - pbDisplayBrief(_INTL("{1} sent out {2}!",owner.fullname,party[newpoke].name)) + pbDisplayBrief(_INTL("{1} sent\r\nout {2}!",owner.fullname,party[newpoke].name)) @@ -2502,1 +2502,1 @@ - pbDisplayBrief(_INTL("{1}, that's enough! Come back!",battlers[i].name)); + pbDisplayBrief(_INTL("{1}, that's enough!\r\nCome back!",battlers[i].name)); @@ -2692,0 +2692,1 @@ + pbCommonAnimation("StatUp",i,nil) Changed: PokemonItems @@ -72,0 +72,1 @@ + # Return value: @@ -78,1 +79,6 @@ - return 0 + # Check the UseInField handler if present + if @@useInField[item] + @@useInField[item].call(item) + return 1 # item was used + end + return 0 # item was not used Changed: PokeBattle_Battler @@ -1122,1 +1122,1 @@ - @battle.pbDisplay(_INTL("It doesn't affect {1}...",target.pbThis)); + @battle.pbDisplay(_INTL("It doesn't affect\r\n{1}...",target.pbThis)); @@ -1149,1 +1149,1 @@ - @battle.pbDisplay(_INTL("{1} avoided the attack!",target.pbThis)) + @battle.pbDisplay(_INTL("{1}\r\navoided the attack!",target.pbThis)) @@ -1151,1 +1151,1 @@ - @battle.pbDisplay(_INTL("{1} evaded the attack!",target.pbThis)) + @battle.pbDisplay(_INTL("{1}\r\nevaded the attack!",target.pbThis)) @@ -1153,1 +1153,1 @@ - @battle.pbDisplay(_INTL("{1}'s attack missed!",user.pbThis)) + @battle.pbDisplay(_INTL("{1}'s\r\nattack missed!",user.pbThis)) @@ -1720,1 +1720,1 @@ - @battle.pbDisplay(_INTL("{1} used {2}!",pbThis,thismove.name)) + @battle.pbDisplay(_INTL("{1} used\r\n{2}!",pbThis,thismove.name)) Changed: PokemonStorage @@ -1881,1 +1881,1 @@ - msgwindow=Window_UnformattedTextPokemon.new(message) + msgwindow=Window_UnformattedTextPokemon.newWithSize("",160,0,Graphics.width-160,32) @@ -1885,1 +1885,1 @@ - msgwindow.resizeHeightToFit(message,Graphics.height) + msgwindow.resizeHeightToFit(message,Graphics.width-160) @@ -1920,1 +1920,1 @@ - msgwindow=Window_UnformattedTextPokemon.new(message) + msgwindow=Window_UnformattedTextPokemon.newWithSize("",160,0,Graphics.width-160,32) @@ -1925,1 +1925,1 @@ - msgwindow.resizeHeightToFit(message,Graphics.height) + msgwindow.resizeHeightToFit(message,Graphics.width-160) Added: DependentEvents Changed: Scene_Intro @@ -63,0 +63,1 @@ + when 4; toDeleteUpdate @@ -105,0 +106,5 @@ + if Input.press?(Input::DOWN) && + Input.press?(Input::CTRL) && + Input.press?(Input::B) + @phase=4 + end @@ -136,0 +142,13 @@ + def toDeleteUpdate + # Decrease Splash Opacity + @sprite.opacity -= @speed if @sprite.opacity > 0 + # Decresh Start Logo Opacity + @start.opacity -= @speed if @start.opacity > 0 + # Proceed to Title Screen + if @sprite.opacity <= 0 && @start.opacity <= 0 + Audio.bgm_stop + sscene=PokemonLoadScene.new + sscreen=PokemonLoad.new(sscene) + sscreen.pbStartDeleteScreen + end + end Changed: PokemonDebug @@ -61,1 +61,1 @@ - if FileTest.exist?(@savefile) + if pbRgssExists?(@savefile) Changed: PokemonOrgBattle @@ -532,1 +532,1 @@ - elsif pokemon.level<=maxlevel + elsif pokemon.level<=maxlevel && pbIsEligible?(pokemon) @@ -639,0 +639,28 @@ + +# Checks whether a Pokemon can participate in an +# organized battle +def pbIsEligible?(pokemon) +# Below is a suggestion for customizing this function +# Change 30 to any variable number +# Remove "=begin" and "=end" to uncomment the code +=begin + # If variable 30 is set to 1 + if $game_variables[30]==1 + # Only water types are eligible + if pokemon.type1==PBTypes::WATER || pokemon.type2==PBTypes::WATER + return true + end + return false + end + # If variable 30 is set to 2 + if $game_variables[30]==2 + # Only fire types are eligible + if pokemon.type1==PBTypes::FIRE || pokemon.type2==PBTypes::FIRE + return true + end + return false + end +=end + # Variable wasn't set, assume Pokemon is eligible + return true +end Changed: TilemapXP Changed: PokemonMap Changed: PokeBattle_Pokemon Changed: PokemonMenu Changed: PokeBattle_MoveEffects Changed: DrawText Changed: PokeBattle_Move Changed: PBIntl Changed: Walk/Run Changed: PokemonField Changed: PokeBattle_ActualScene Changed: PokemonLoad Changed: Game_Character 3* Changed: Game_Event* Changed: Compiler Changed: Game_Player* Changed: PokemonMessages Changed: Game_Character 2 Changed: SpriteWindow Changed: PokemonUtilities Changed: PokeBattle_Battle Changed: PokemonItems Changed: PokeBattle_Battler Changed: PokemonStorage Added: DependentEvents Changed: Scene_Intro Changed: PokemonDebug Changed: PokemonOrgBattle