mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-11 07:04:59 +00:00
DNA splicers
This commit is contained in:
@@ -66,6 +66,8 @@ class PictureWindow < SpriteWindow_Base
|
|||||||
setBitmap(pathOrBitmap)
|
setBitmap(pathOrBitmap)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def picture; @_iconbitmap; end
|
||||||
|
|
||||||
def dispose
|
def dispose
|
||||||
clearBitmaps()
|
clearBitmaps()
|
||||||
super
|
super
|
||||||
|
|||||||
@@ -18,6 +18,17 @@ class AnimatedBitmap
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def pbSetColor(r = 0, g = 0, b = 0, a = 255)
|
||||||
|
for i in 0..@bitmap.bitmap.width
|
||||||
|
for j in 0..@bitmap.bitmap.height
|
||||||
|
if @bitmap.bitmap.get_pixel(i, j).alpha != 0
|
||||||
|
color = Color.new(r, g, b, a)
|
||||||
|
@bitmap.bitmap.set_pixel(i, j, color)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def [](index)
|
def [](index)
|
||||||
; @bitmap[index];
|
; @bitmap[index];
|
||||||
end
|
end
|
||||||
@@ -82,7 +93,6 @@ class AnimatedBitmap
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ module PokeBattle_BattleCommon
|
|||||||
if itemName.starts_with_vowel?
|
if itemName.starts_with_vowel?
|
||||||
pbDisplay(_INTL("{1} threw an {2}!",pbPlayer.name,itemName))
|
pbDisplay(_INTL("{1} threw an {2}!",pbPlayer.name,itemName))
|
||||||
else
|
else
|
||||||
pbDisplay(_INTL("{1} threw a {2}!",pbPlayer.name,itemName))
|
pbDisplay(_INTL("{1} vcthrew a {2}!",pbPlayer.name,itemName))
|
||||||
end
|
end
|
||||||
pbDisplay(_INTL("But there was no target..."))
|
pbDisplay(_INTL("But there was no target..."))
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -13,31 +13,33 @@ module ItemHandlers
|
|||||||
BattleUseOnPokemon = ItemHandlerHash.new
|
BattleUseOnPokemon = ItemHandlerHash.new
|
||||||
|
|
||||||
def self.hasUseText(item)
|
def self.hasUseText(item)
|
||||||
return UseText[item]!=nil
|
return UseText[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.hasOutHandler(item) # Shows "Use" option in Bag
|
def self.hasOutHandler(item)
|
||||||
return UseFromBag[item]!=nil || UseInField[item]!=nil || UseOnPokemon[item]!=nil
|
# Shows "Use" option in Bag
|
||||||
|
return UseFromBag[item] != nil || UseInField[item] != nil || UseOnPokemon[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.hasUseInFieldHandler(item) # Shows "Register" option in Bag
|
def self.hasUseInFieldHandler(item)
|
||||||
return UseInField[item]!=nil
|
# Shows "Register" option in Bag
|
||||||
|
return UseInField[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.hasUseOnPokemon(item)
|
def self.hasUseOnPokemon(item)
|
||||||
return UseOnPokemon[item]!=nil
|
return UseOnPokemon[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.hasUseInBattle(item)
|
def self.hasUseInBattle(item)
|
||||||
return UseInBattle[item]!=nil
|
return UseInBattle[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.hasBattleUseOnBattler(item)
|
def self.hasBattleUseOnBattler(item)
|
||||||
return BattleUseOnBattler[item]!=nil
|
return BattleUseOnBattler[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.hasBattleUseOnPokemon(item)
|
def self.hasBattleUseOnPokemon(item)
|
||||||
return BattleUseOnPokemon[item]!=nil
|
return BattleUseOnPokemon[item] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns text to display instead of "Use"
|
# Returns text to display instead of "Use"
|
||||||
@@ -75,35 +77,33 @@ module ItemHandlers
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Returns whether item was used
|
# Returns whether item was used
|
||||||
def self.triggerUseOnPokemon(item,pkmn,scene)
|
def self.triggerUseOnPokemon(item, pkmn, scene)
|
||||||
return false if !UseOnPokemon[item]
|
return false if !UseOnPokemon[item]
|
||||||
return UseOnPokemon.trigger(item,pkmn,scene)
|
return UseOnPokemon.trigger(item, pkmn, scene)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.triggerCanUseInBattle(item,pkmn,battler,move,firstAction,battle,scene,showMessages=true)
|
def self.triggerCanUseInBattle(item, pkmn, battler, move, firstAction, battle, scene, showMessages = true)
|
||||||
return true if !CanUseInBattle[item] # Can use the item by default
|
return true if !CanUseInBattle[item] # Can use the item by default
|
||||||
return CanUseInBattle.trigger(item,pkmn,battler,move,firstAction,battle,scene,showMessages)
|
return CanUseInBattle.trigger(item, pkmn, battler, move, firstAction, battle, scene, showMessages)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.triggerUseInBattle(item,battler,battle)
|
def self.triggerUseInBattle(item, battler, battle)
|
||||||
UseInBattle.trigger(item,battler,battle)
|
UseInBattle.trigger(item, battler, battle)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns whether item was used
|
# Returns whether item was used
|
||||||
def self.triggerBattleUseOnBattler(item,battler,scene)
|
def self.triggerBattleUseOnBattler(item, battler, scene)
|
||||||
return false if !BattleUseOnBattler[item]
|
return false if !BattleUseOnBattler[item]
|
||||||
return BattleUseOnBattler.trigger(item,battler,scene)
|
return BattleUseOnBattler.trigger(item, battler, scene)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns whether item was used
|
# Returns whether item was used
|
||||||
def self.triggerBattleUseOnPokemon(item,pkmn,battler,choices,scene)
|
def self.triggerBattleUseOnPokemon(item, pkmn, battler, choices, scene)
|
||||||
return false if !BattleUseOnPokemon[item]
|
return false if !BattleUseOnPokemon[item]
|
||||||
return BattleUseOnPokemon.trigger(item,pkmn,battler,choices,scene)
|
return BattleUseOnPokemon.trigger(item, pkmn, battler, choices, scene)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def pbCanRegisterItem?(item)
|
def pbCanRegisterItem?(item)
|
||||||
return ItemHandlers.hasUseInFieldHandler(item)
|
return ItemHandlers.hasUseInFieldHandler(item)
|
||||||
end
|
end
|
||||||
@@ -112,16 +112,14 @@ def pbCanUseOnPokemon?(item)
|
|||||||
return ItemHandlers.hasUseOnPokemon(item) || GameData::Item.get(item).is_machine?
|
return ItemHandlers.hasUseOnPokemon(item) || GameData::Item.get(item).is_machine?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Change a Pokémon's level
|
# Change a Pokémon's level
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbChangeLevel(pkmn,newlevel,scene)
|
def pbChangeLevel(pkmn, newlevel, scene)
|
||||||
newlevel = newlevel.clamp(1, GameData::GrowthRate.max_level)
|
newlevel = newlevel.clamp(1, GameData::GrowthRate.max_level)
|
||||||
if pkmn.level==newlevel
|
if pkmn.level == newlevel
|
||||||
pbMessage(_INTL("{1}'s level remained unchanged.",pkmn.name))
|
pbMessage(_INTL("{1}'s level remained unchanged.", pkmn.name))
|
||||||
elsif pkmn.level>newlevel
|
elsif pkmn.level > newlevel
|
||||||
attackdiff = pkmn.attack
|
attackdiff = pkmn.attack
|
||||||
defensediff = pkmn.defense
|
defensediff = pkmn.defense
|
||||||
speeddiff = pkmn.speed
|
speeddiff = pkmn.speed
|
||||||
@@ -131,17 +129,17 @@ def pbChangeLevel(pkmn,newlevel,scene)
|
|||||||
pkmn.level = newlevel
|
pkmn.level = newlevel
|
||||||
pkmn.calc_stats
|
pkmn.calc_stats
|
||||||
scene.pbRefresh
|
scene.pbRefresh
|
||||||
pbMessage(_INTL("{1} dropped to Lv. {2}!",pkmn.name,pkmn.level))
|
pbMessage(_INTL("{1} dropped to Lv. {2}!", pkmn.name, pkmn.level))
|
||||||
attackdiff = pkmn.attack-attackdiff
|
attackdiff = pkmn.attack - attackdiff
|
||||||
defensediff = pkmn.defense-defensediff
|
defensediff = pkmn.defense - defensediff
|
||||||
speeddiff = pkmn.speed-speeddiff
|
speeddiff = pkmn.speed - speeddiff
|
||||||
spatkdiff = pkmn.spatk-spatkdiff
|
spatkdiff = pkmn.spatk - spatkdiff
|
||||||
spdefdiff = pkmn.spdef-spdefdiff
|
spdefdiff = pkmn.spdef - spdefdiff
|
||||||
totalhpdiff = pkmn.totalhp-totalhpdiff
|
totalhpdiff = pkmn.totalhp - totalhpdiff
|
||||||
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
|
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
|
||||||
totalhpdiff,attackdiff,defensediff,spatkdiff,spdefdiff,speeddiff))
|
totalhpdiff, attackdiff, defensediff, spatkdiff, spdefdiff, speeddiff))
|
||||||
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
|
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
|
||||||
pkmn.totalhp,pkmn.attack,pkmn.defense,pkmn.spatk,pkmn.spdef,pkmn.speed))
|
pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed))
|
||||||
else
|
else
|
||||||
attackdiff = pkmn.attack
|
attackdiff = pkmn.attack
|
||||||
defensediff = pkmn.defense
|
defensediff = pkmn.defense
|
||||||
@@ -154,32 +152,32 @@ def pbChangeLevel(pkmn,newlevel,scene)
|
|||||||
pkmn.calc_stats
|
pkmn.calc_stats
|
||||||
scene.pbRefresh
|
scene.pbRefresh
|
||||||
if scene.is_a?(PokemonPartyScreen)
|
if scene.is_a?(PokemonPartyScreen)
|
||||||
scene.pbDisplay(_INTL("{1} grew to Lv. {2}!",pkmn.name,pkmn.level))
|
scene.pbDisplay(_INTL("{1} grew to Lv. {2}!", pkmn.name, pkmn.level))
|
||||||
else
|
else
|
||||||
pbMessage(_INTL("{1} grew to Lv. {2}!",pkmn.name,pkmn.level))
|
pbMessage(_INTL("{1} grew to Lv. {2}!", pkmn.name, pkmn.level))
|
||||||
end
|
end
|
||||||
attackdiff = pkmn.attack-attackdiff
|
attackdiff = pkmn.attack - attackdiff
|
||||||
defensediff = pkmn.defense-defensediff
|
defensediff = pkmn.defense - defensediff
|
||||||
speeddiff = pkmn.speed-speeddiff
|
speeddiff = pkmn.speed - speeddiff
|
||||||
spatkdiff = pkmn.spatk-spatkdiff
|
spatkdiff = pkmn.spatk - spatkdiff
|
||||||
spdefdiff = pkmn.spdef-spdefdiff
|
spdefdiff = pkmn.spdef - spdefdiff
|
||||||
totalhpdiff = pkmn.totalhp-totalhpdiff
|
totalhpdiff = pkmn.totalhp - totalhpdiff
|
||||||
pbTopRightWindow(_INTL("Max. HP<r>+{1}\r\nAttack<r>+{2}\r\nDefense<r>+{3}\r\nSp. Atk<r>+{4}\r\nSp. Def<r>+{5}\r\nSpeed<r>+{6}",
|
pbTopRightWindow(_INTL("Max. HP<r>+{1}\r\nAttack<r>+{2}\r\nDefense<r>+{3}\r\nSp. Atk<r>+{4}\r\nSp. Def<r>+{5}\r\nSpeed<r>+{6}",
|
||||||
totalhpdiff,attackdiff,defensediff,spatkdiff,spdefdiff,speeddiff),scene)
|
totalhpdiff, attackdiff, defensediff, spatkdiff, spdefdiff, speeddiff), scene)
|
||||||
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
|
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
|
||||||
pkmn.totalhp,pkmn.attack,pkmn.defense,pkmn.spatk,pkmn.spdef,pkmn.speed),scene)
|
pkmn.totalhp, pkmn.attack, pkmn.defense, pkmn.spatk, pkmn.spdef, pkmn.speed), scene)
|
||||||
# Learn new moves upon level up
|
# Learn new moves upon level up
|
||||||
movelist = pkmn.getMoveList
|
movelist = pkmn.getMoveList
|
||||||
for i in movelist
|
for i in movelist
|
||||||
next if i[0]!=pkmn.level
|
next if i[0] != pkmn.level
|
||||||
pbLearnMove(pkmn,i[1],true) { scene.pbUpdate }
|
pbLearnMove(pkmn, i[1], true) { scene.pbUpdate }
|
||||||
end
|
end
|
||||||
# Check for evolution
|
# Check for evolution
|
||||||
newspecies = pkmn.check_evolution_on_level_up
|
newspecies = pkmn.check_evolution_on_level_up
|
||||||
if newspecies
|
if newspecies
|
||||||
pbFadeOutInWithMusic {
|
pbFadeOutInWithMusic {
|
||||||
evo = PokemonEvolutionScene.new
|
evo = PokemonEvolutionScene.new
|
||||||
evo.pbStartScreen(pkmn,newspecies)
|
evo.pbStartScreen(pkmn, newspecies)
|
||||||
evo.pbEvolution
|
evo.pbEvolution
|
||||||
evo.pbEndScreen
|
evo.pbEndScreen
|
||||||
scene.pbRefresh if scene.is_a?(PokemonPartyScreen)
|
scene.pbRefresh if scene.is_a?(PokemonPartyScreen)
|
||||||
@@ -191,7 +189,7 @@ end
|
|||||||
def pbTopRightWindow(text, scene = nil)
|
def pbTopRightWindow(text, scene = nil)
|
||||||
window = Window_AdvancedTextPokemon.new(text)
|
window = Window_AdvancedTextPokemon.new(text)
|
||||||
window.width = 198
|
window.width = 198
|
||||||
window.x = Graphics.width-window.width
|
window.x = Graphics.width - window.width
|
||||||
window.y = 0
|
window.y = 0
|
||||||
window.z = 99999
|
window.z = 99999
|
||||||
pbPlayDecisionSE
|
pbPlayDecisionSE
|
||||||
@@ -208,33 +206,33 @@ end
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Restore HP
|
# Restore HP
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbItemRestoreHP(pkmn,restoreHP)
|
def pbItemRestoreHP(pkmn, restoreHP)
|
||||||
newHP = pkmn.hp+restoreHP
|
newHP = pkmn.hp + restoreHP
|
||||||
newHP = pkmn.totalhp if newHP>pkmn.totalhp
|
newHP = pkmn.totalhp if newHP > pkmn.totalhp
|
||||||
hpGain = newHP-pkmn.hp
|
hpGain = newHP - pkmn.hp
|
||||||
pkmn.hp = newHP
|
pkmn.hp = newHP
|
||||||
return hpGain
|
return hpGain
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbHPItem(pkmn,restoreHP,scene)
|
def pbHPItem(pkmn, restoreHP, scene)
|
||||||
if !pkmn.able? || pkmn.hp==pkmn.totalhp
|
if !pkmn.able? || pkmn.hp == pkmn.totalhp
|
||||||
scene.pbDisplay(_INTL("It won't have any effect."))
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
hpGain = pbItemRestoreHP(pkmn,restoreHP)
|
hpGain = pbItemRestoreHP(pkmn, restoreHP)
|
||||||
scene.pbRefresh
|
scene.pbRefresh
|
||||||
scene.pbDisplay(_INTL("{1}'s HP was restored by {2} points.",pkmn.name,hpGain))
|
scene.pbDisplay(_INTL("{1}'s HP was restored by {2} points.", pkmn.name, hpGain))
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbBattleHPItem(pkmn,battler,restoreHP,scene)
|
def pbBattleHPItem(pkmn, battler, restoreHP, scene)
|
||||||
if battler
|
if battler
|
||||||
if battler.pbRecoverHP(restoreHP)>0
|
if battler.pbRecoverHP(restoreHP) > 0
|
||||||
scene.pbDisplay(_INTL("{1}'s HP was restored.",battler.pbThis))
|
scene.pbDisplay(_INTL("{1}'s HP was restored.", battler.pbThis))
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if pbItemRestoreHP(pkmn,restoreHP)>0
|
if pbItemRestoreHP(pkmn, restoreHP) > 0
|
||||||
scene.pbDisplay(_INTL("{1}'s HP was restored.",pkmn.name))
|
scene.pbDisplay(_INTL("{1}'s HP was restored.", pkmn.name))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
@@ -243,18 +241,18 @@ end
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Restore PP
|
# Restore PP
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbRestorePP(pkmn,idxMove,pp)
|
def pbRestorePP(pkmn, idxMove, pp)
|
||||||
return 0 if !pkmn.moves[idxMove] || !pkmn.moves[idxMove].id
|
return 0 if !pkmn.moves[idxMove] || !pkmn.moves[idxMove].id
|
||||||
return 0 if pkmn.moves[idxMove].total_pp<=0
|
return 0 if pkmn.moves[idxMove].total_pp <= 0
|
||||||
oldpp = pkmn.moves[idxMove].pp
|
oldpp = pkmn.moves[idxMove].pp
|
||||||
newpp = pkmn.moves[idxMove].pp+pp
|
newpp = pkmn.moves[idxMove].pp + pp
|
||||||
newpp = pkmn.moves[idxMove].total_pp if newpp>pkmn.moves[idxMove].total_pp
|
newpp = pkmn.moves[idxMove].total_pp if newpp > pkmn.moves[idxMove].total_pp
|
||||||
pkmn.moves[idxMove].pp = newpp
|
pkmn.moves[idxMove].pp = newpp
|
||||||
return newpp-oldpp
|
return newpp - oldpp
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbBattleRestorePP(pkmn, battler, idxMove, pp)
|
def pbBattleRestorePP(pkmn, battler, idxMove, pp)
|
||||||
return if pbRestorePP(pkmn,idxMove,pp) == 0
|
return if pbRestorePP(pkmn, idxMove, pp) == 0
|
||||||
if battler && !battler.effects[PBEffects::Transform] &&
|
if battler && !battler.effects[PBEffects::Transform] &&
|
||||||
battler.moves[idxMove] && battler.moves[idxMove].id == pkmn.moves[idxMove].id
|
battler.moves[idxMove] && battler.moves[idxMove].id == pkmn.moves[idxMove].id
|
||||||
battler.pbSetPP(battler.moves[idxMove], pkmn.moves[idxMove].pp)
|
battler.pbSetPP(battler.moves[idxMove], pkmn.moves[idxMove].pp)
|
||||||
@@ -292,9 +290,9 @@ def pbRaiseEffortValues(pkmn, stat, evGain = 10, ev_limit = true)
|
|||||||
return evGain
|
return evGain
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbRaiseHappinessAndLowerEV(pkmn,scene,stat,messages)
|
def pbRaiseHappinessAndLowerEV(pkmn, scene, stat, messages)
|
||||||
h = pkmn.happiness<255
|
h = pkmn.happiness < 255
|
||||||
e = pkmn.ev[stat]>0
|
e = pkmn.ev[stat] > 0
|
||||||
if !h && !e
|
if !h && !e
|
||||||
scene.pbDisplay(_INTL("It won't have any effect."))
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
||||||
return false
|
return false
|
||||||
@@ -304,27 +302,27 @@ def pbRaiseHappinessAndLowerEV(pkmn,scene,stat,messages)
|
|||||||
end
|
end
|
||||||
if e
|
if e
|
||||||
pkmn.ev[stat] -= 10
|
pkmn.ev[stat] -= 10
|
||||||
pkmn.ev[stat] = 0 if pkmn.ev[stat]<0
|
pkmn.ev[stat] = 0 if pkmn.ev[stat] < 0
|
||||||
pkmn.calc_stats
|
pkmn.calc_stats
|
||||||
end
|
end
|
||||||
scene.pbRefresh
|
scene.pbRefresh
|
||||||
scene.pbDisplay(messages[2-(h ? 0 : 2)-(e ? 0 : 1)])
|
scene.pbDisplay(messages[2 - (h ? 0 : 2) - (e ? 0 : 1)])
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Battle items
|
# Battle items
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbBattleItemCanCureStatus?(status,pkmn,scene,showMessages)
|
def pbBattleItemCanCureStatus?(status, pkmn, scene, showMessages)
|
||||||
if !pkmn.able? || pkmn.status!=status
|
if !pkmn.able? || pkmn.status != status
|
||||||
scene.pbDisplay(_INTL("It won't have any effect.")) if showMessages
|
scene.pbDisplay(_INTL("It won't have any effect.")) if showMessages
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbBattleItemCanRaiseStat?(stat,battler,scene,showMessages)
|
def pbBattleItemCanRaiseStat?(stat, battler, scene, showMessages)
|
||||||
if !battler || !battler.pbCanRaiseStatStage?(stat,battler)
|
if !battler || !battler.pbCanRaiseStatStage?(stat, battler)
|
||||||
scene.pbDisplay(_INTL("It won't have any effect.")) if showMessages
|
scene.pbDisplay(_INTL("It won't have any effect.")) if showMessages
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@@ -368,17 +366,17 @@ def pbClosestHiddenItem
|
|||||||
playerY = $game_player.y
|
playerY = $game_player.y
|
||||||
for event in $game_map.events.values
|
for event in $game_map.events.values
|
||||||
next if !event.name[/hiddenitem/i]
|
next if !event.name[/hiddenitem/i]
|
||||||
next if (playerX-event.x).abs>=8
|
next if (playerX - event.x).abs >= 8
|
||||||
next if (playerY-event.y).abs>=6
|
next if (playerY - event.y).abs >= 6
|
||||||
next if $game_self_switches[[$game_map.map_id,event.id,"A"]]
|
next if $game_self_switches[[$game_map.map_id, event.id, "A"]]
|
||||||
result.push(event)
|
result.push(event)
|
||||||
end
|
end
|
||||||
return nil if result.length==0
|
return nil if result.length == 0
|
||||||
ret = nil
|
ret = nil
|
||||||
retmin = 0
|
retmin = 0
|
||||||
for event in result
|
for event in result
|
||||||
dist = (playerX-event.x).abs+(playerY-event.y).abs
|
dist = (playerX - event.x).abs + (playerY - event.y).abs
|
||||||
next if ret && retmin<=dist
|
next if ret && retmin <= dist
|
||||||
ret = event
|
ret = event
|
||||||
retmin = dist
|
retmin = dist
|
||||||
end
|
end
|
||||||
@@ -388,58 +386,104 @@ end
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Teach and forget a move
|
# Teach and forget a move
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbLearnMove(pkmn,move,ignoreifknown=false,bymachine=false,&block)
|
def pbLearnMove(pkmn, move, ignoreifknown = false, bymachine = false, &block)
|
||||||
return false if !pkmn
|
return false if !pkmn
|
||||||
move = GameData::Move.get(move).id
|
move = GameData::Move.get(move).id
|
||||||
if pkmn.egg? && !$DEBUG
|
if pkmn.egg? && !$DEBUG
|
||||||
pbMessage(_INTL("Eggs can't be taught any moves."),&block)
|
pbMessage(_INTL("Eggs can't be taught any moves."), &block)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if pkmn.shadowPokemon?
|
if pkmn.shadowPokemon?
|
||||||
pbMessage(_INTL("Shadow Pokémon can't be taught any moves."),&block)
|
pbMessage(_INTL("Shadow Pokémon can't be taught any moves."), &block)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
pkmnname = pkmn.name
|
pkmnname = pkmn.name
|
||||||
movename = GameData::Move.get(move).name
|
movename = GameData::Move.get(move).name
|
||||||
if pkmn.hasMove?(move)
|
if pkmn.hasMove?(move)
|
||||||
pbMessage(_INTL("{1} already knows {2}.",pkmnname,movename),&block) if !ignoreifknown
|
pbMessage(_INTL("{1} already knows {2}.", pkmnname, movename), &block) if !ignoreifknown
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if pkmn.numMoves<Pokemon::MAX_MOVES
|
if pkmn.numMoves < Pokemon::MAX_MOVES
|
||||||
pkmn.learn_move(move)
|
pkmn.learn_move(move)
|
||||||
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]",pkmnname,movename),&block)
|
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]", pkmnname, movename), &block)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
loop do
|
loop do
|
||||||
pbMessage(_INTL("{1} wants to learn {2}, but it already knows {3} moves.\1",
|
pbMessage(_INTL("{1} wants to learn {2}, but it already knows {3} moves.\1",
|
||||||
pkmnname, movename, pkmn.numMoves.to_word), &block) if !bymachine
|
pkmnname, movename, pkmn.numMoves.to_word), &block) if !bymachine
|
||||||
pbMessage(_INTL("Please choose a move that will be replaced with {1}.",movename),&block)
|
pbMessage(_INTL("Please choose a move that will be replaced with {1}.", movename), &block)
|
||||||
forgetmove = pbForgetMove(pkmn,move)
|
forgetmove = pbForgetMove(pkmn, move)
|
||||||
if forgetmove>=0
|
if forgetmove >= 0
|
||||||
oldmovename = pkmn.moves[forgetmove].name
|
oldmovename = pkmn.moves[forgetmove].name
|
||||||
oldmovepp = pkmn.moves[forgetmove].pp
|
oldmovepp = pkmn.moves[forgetmove].pp
|
||||||
pkmn.moves[forgetmove] = Pokemon::Move.new(move) # Replaces current/total PP
|
pkmn.moves[forgetmove] = Pokemon::Move.new(move) # Replaces current/total PP
|
||||||
if bymachine && Settings::TAUGHT_MACHINES_KEEP_OLD_PP
|
if bymachine && Settings::TAUGHT_MACHINES_KEEP_OLD_PP
|
||||||
pkmn.moves[forgetmove].pp = [oldmovepp,pkmn.moves[forgetmove].total_pp].min
|
pkmn.moves[forgetmove].pp = [oldmovepp, pkmn.moves[forgetmove].total_pp].min
|
||||||
end
|
end
|
||||||
pbMessage(_INTL("1, 2, and...\\wt[16] ...\\wt[16] ... Ta-da!\\se[Battle ball drop]\1"),&block)
|
pbMessage(_INTL("1, 2, and...\\wt[16] ...\\wt[16] ... Ta-da!\\se[Battle ball drop]\1"), &block)
|
||||||
pbMessage(_INTL("{1} forgot how to use {2}.\\nAnd...\1",pkmnname,oldmovename),&block)
|
pbMessage(_INTL("{1} forgot how to use {2}.\\nAnd...\1", pkmnname, oldmovename), &block)
|
||||||
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]",pkmnname,movename),&block)
|
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]", pkmnname, movename), &block)
|
||||||
pkmn.changeHappiness("machine") if bymachine
|
pkmn.changeHappiness("machine") if bymachine
|
||||||
return true
|
return true
|
||||||
elsif pbConfirmMessage(_INTL("Give up on learning {1}?",movename),&block)
|
elsif pbConfirmMessage(_INTL("Give up on learning {1}?", movename), &block)
|
||||||
pbMessage(_INTL("{1} did not learn {2}.",pkmnname,movename),&block)
|
pbMessage(_INTL("{1} did not learn {2}.", pkmnname, movename), &block)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbForgetMove(pkmn,moveToLearn)
|
def pbLearnMove(pkmn, move, ignoreifknown = false, bymachine = false, fast = false, &block)
|
||||||
|
return false if !pkmn
|
||||||
|
move = GameData::Move.get(move).id
|
||||||
|
if pkmn.egg? && !$DEBUG
|
||||||
|
pbMessage(_INTL("Eggs can't be taught any moves."), &block)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
if pkmn.shadowPokemon?
|
||||||
|
pbMessage(_INTL("Shadow Pokémon can't be taught any moves."), &block)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
pkmnname = pkmn.name
|
||||||
|
movename = GameData::Move.get(move).name
|
||||||
|
if pkmn.hasMove?(move)
|
||||||
|
pbMessage(_INTL("{1} already knows {2}.", pkmnname, movename), &block) if !ignoreifknown
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
if pkmn.numMoves < Pokemon::MAX_MOVES
|
||||||
|
pkmn.learn_move(move)
|
||||||
|
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]", pkmnname, movename), &block)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
loop do
|
||||||
|
pbMessage(_INTL("{1} wants to learn {2}, but it already knows {3} moves.\1",
|
||||||
|
pkmnname, movename, pkmn.numMoves.to_word), &block) if !bymachine && !fast
|
||||||
|
pbMessage(_INTL("Please choose a move that will be replaced with {1}.", movename), &block)
|
||||||
|
forgetmove = pbForgetMove(pkmn, move)
|
||||||
|
if forgetmove >= 0
|
||||||
|
oldmovename = pkmn.moves[forgetmove].name
|
||||||
|
oldmovepp = pkmn.moves[forgetmove].pp
|
||||||
|
pkmn.moves[forgetmove] = Pokemon::Move.new(move) # Replaces current/total PP
|
||||||
|
if bymachine && Settings::TAUGHT_MACHINES_KEEP_OLD_PP
|
||||||
|
pkmn.moves[forgetmove].pp = [oldmovepp, pkmn.moves[forgetmove].total_pp].min
|
||||||
|
end
|
||||||
|
pbMessage(_INTL("1, 2, and...\\wt[16] ...\\wt[16] ... Ta-da!\\se[Battle ball drop]\1"), &block) if !fast
|
||||||
|
pbMessage(_INTL("{1} forgot how to use {2}.\\nAnd...\1", pkmnname, oldmovename), &block) if !fast
|
||||||
|
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]", pkmnname, movename), &block)
|
||||||
|
pkmn.changeHappiness("machine") if bymachine
|
||||||
|
return true
|
||||||
|
elsif pbConfirmMessage(_INTL("Give up on learning {1}?", movename), &block)
|
||||||
|
pbMessage(_INTL("{1} did not learn {2}.", pkmnname, movename), &block)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def pbForgetMove(pkmn, moveToLearn)
|
||||||
ret = -1
|
ret = -1
|
||||||
pbFadeOutIn {
|
pbFadeOutIn {
|
||||||
scene = PokemonSummary_Scene.new
|
scene = PokemonSummary_Scene.new
|
||||||
screen = PokemonSummaryScreen.new(scene)
|
screen = PokemonSummaryScreen.new(scene)
|
||||||
ret = screen.pbStartForgetScreen([pkmn],0,moveToLearn)
|
ret = screen.pbStartForgetScreen([pkmn], 0, moveToLearn)
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
@@ -448,7 +492,7 @@ end
|
|||||||
# Use an item from the Bag and/or on a Pokémon
|
# Use an item from the Bag and/or on a Pokémon
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# @return [Integer] 0 = item wasn't used; 1 = item used; 2 = close Bag to use in field
|
# @return [Integer] 0 = item wasn't used; 1 = item used; 2 = close Bag to use in field
|
||||||
def pbUseItem(bag,item,bagscene=nil)
|
def pbUseItem(bag, item, bagscene = nil)
|
||||||
itm = GameData::Item.get(item)
|
itm = GameData::Item.get(item)
|
||||||
useType = itm.field_use
|
useType = itm.field_use
|
||||||
if itm.is_machine? # TM or TR or HM
|
if itm.is_machine? # TM or TR or HM
|
||||||
@@ -459,15 +503,15 @@ def pbUseItem(bag,item,bagscene=nil)
|
|||||||
machine = itm.move
|
machine = itm.move
|
||||||
return 0 if !machine
|
return 0 if !machine
|
||||||
movename = GameData::Move.get(machine).name
|
movename = GameData::Move.get(machine).name
|
||||||
pbMessage(_INTL("\\se[PC access]You booted up {1}.\1",itm.name))
|
pbMessage(_INTL("\\se[PC access]You booted up {1}.\1", itm.name))
|
||||||
if !pbConfirmMessage(_INTL("Do you want to teach {1} to a Pokémon?",movename))
|
if !pbConfirmMessage(_INTL("Do you want to teach {1} to a Pokémon?", movename))
|
||||||
return 0
|
return 0
|
||||||
elsif pbMoveTutorChoose(machine,nil,true,itm.is_TR?)
|
elsif pbMoveTutorChoose(machine, nil, true, itm.is_TR?)
|
||||||
bag.pbDeleteItem(item) if itm.is_TR?
|
bag.pbDeleteItem(item) if itm.is_TR?
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
elsif useType==1 || useType==5 # Item is usable on a Pokémon
|
elsif useType == 1 || useType == 5 # Item is usable on a Pokémon
|
||||||
if $Trainer.pokemon_count == 0
|
if $Trainer.pokemon_count == 0
|
||||||
pbMessage(_INTL("There is no Pokémon."))
|
pbMessage(_INTL("There is no Pokémon."))
|
||||||
return 0
|
return 0
|
||||||
@@ -483,22 +527,22 @@ def pbUseItem(bag,item,bagscene=nil)
|
|||||||
end
|
end
|
||||||
pbFadeOutIn {
|
pbFadeOutIn {
|
||||||
scene = PokemonParty_Scene.new
|
scene = PokemonParty_Scene.new
|
||||||
screen = PokemonPartyScreen.new(scene,$Trainer.party)
|
screen = PokemonPartyScreen.new(scene, $Trainer.party)
|
||||||
screen.pbStartScene(_INTL("Use on which Pokémon?"),false,annot)
|
screen.pbStartScene(_INTL("Use on which Pokémon?"), false, annot)
|
||||||
loop do
|
loop do
|
||||||
scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
|
scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
|
||||||
chosen = screen.pbChoosePokemon
|
chosen = screen.pbChoosePokemon
|
||||||
if chosen<0
|
if chosen < 0
|
||||||
ret = false
|
ret = false
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
pkmn = $Trainer.party[chosen]
|
pkmn = $Trainer.party[chosen]
|
||||||
if pbCheckUseOnPokemon(item,pkmn,screen)
|
if pbCheckUseOnPokemon(item, pkmn, screen)
|
||||||
ret = ItemHandlers.triggerUseOnPokemon(item,pkmn,screen)
|
ret = ItemHandlers.triggerUseOnPokemon(item, pkmn, screen)
|
||||||
if ret && useType==1 # Usable on Pokémon, consumed
|
if ret && useType == 1 # Usable on Pokémon, consumed
|
||||||
bag.pbDeleteItem(item)
|
bag.pbDeleteItem(item)
|
||||||
if !bag.pbHasItem?(item)
|
if !bag.pbHasItem?(item)
|
||||||
pbMessage(_INTL("You used your last {1}.",itm.name)) { screen.pbUpdate }
|
pbMessage(_INTL("You used your last {1}.", itm.name)) { screen.pbUpdate }
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -508,12 +552,15 @@ def pbUseItem(bag,item,bagscene=nil)
|
|||||||
bagscene.pbRefresh if bagscene
|
bagscene.pbRefresh if bagscene
|
||||||
}
|
}
|
||||||
return (ret) ? 1 : 0
|
return (ret) ? 1 : 0
|
||||||
elsif useType==2 # Item is usable from Bag
|
elsif useType == 2 # Item is usable from Bag
|
||||||
intret = ItemHandlers.triggerUseFromBag(item)
|
intret = ItemHandlers.triggerUseFromBag(item)
|
||||||
case intret
|
case intret
|
||||||
when 0 then return 0
|
when 0 then
|
||||||
when 1 then return 1 # Item used
|
return 0
|
||||||
when 2 then return 2 # Item used, end screen
|
when 1 then
|
||||||
|
return 1 # Item used
|
||||||
|
when 2 then
|
||||||
|
return 2 # Item used, end screen
|
||||||
when 3 # Item used, consume item
|
when 3 # Item used, consume item
|
||||||
bag.pbDeleteItem(item)
|
bag.pbDeleteItem(item)
|
||||||
return 1
|
return 1
|
||||||
@@ -530,7 +577,7 @@ end
|
|||||||
|
|
||||||
# Only called when in the party screen and having chosen an item to be used on
|
# Only called when in the party screen and having chosen an item to be used on
|
||||||
# the selected Pokémon
|
# the selected Pokémon
|
||||||
def pbUseItemOnPokemon(item,pkmn,scene)
|
def pbUseItemOnPokemon(item, pkmn, scene)
|
||||||
itm = GameData::Item.get(item)
|
itm = GameData::Item.get(item)
|
||||||
# TM or HM
|
# TM or HM
|
||||||
if itm.is_machine?
|
if itm.is_machine?
|
||||||
@@ -540,11 +587,11 @@ def pbUseItemOnPokemon(item,pkmn,scene)
|
|||||||
if pkmn.shadowPokemon?
|
if pkmn.shadowPokemon?
|
||||||
pbMessage(_INTL("Shadow Pokémon can't be taught any moves.")) { scene.pbUpdate }
|
pbMessage(_INTL("Shadow Pokémon can't be taught any moves.")) { scene.pbUpdate }
|
||||||
elsif !pkmn.compatible_with_move?(machine)
|
elsif !pkmn.compatible_with_move?(machine)
|
||||||
pbMessage(_INTL("{1} can't learn {2}.",pkmn.name,movename)) { scene.pbUpdate }
|
pbMessage(_INTL("{1} can't learn {2}.", pkmn.name, movename)) { scene.pbUpdate }
|
||||||
else
|
else
|
||||||
pbMessage(_INTL("\\se[PC access]You booted up {1}.\1",itm.name)) { scene.pbUpdate }
|
pbMessage(_INTL("\\se[PC access]You booted up {1}.\1", itm.name)) { scene.pbUpdate }
|
||||||
if pbConfirmMessage(_INTL("Do you want to teach {1} to {2}?",movename,pkmn.name)) { scene.pbUpdate }
|
if pbConfirmMessage(_INTL("Do you want to teach {1} to {2}?", movename, pkmn.name)) { scene.pbUpdate }
|
||||||
if pbLearnMove(pkmn,machine,false,true) { scene.pbUpdate }
|
if pbLearnMove(pkmn, machine, false, true) { scene.pbUpdate }
|
||||||
$PokemonBag.pbDeleteItem(item) if itm.is_TR?
|
$PokemonBag.pbDeleteItem(item) if itm.is_TR?
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@@ -553,14 +600,14 @@ def pbUseItemOnPokemon(item,pkmn,scene)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
# Other item
|
# Other item
|
||||||
ret = ItemHandlers.triggerUseOnPokemon(item,pkmn,scene)
|
ret = ItemHandlers.triggerUseOnPokemon(item, pkmn, scene)
|
||||||
scene.pbClearAnnotations
|
scene.pbClearAnnotations
|
||||||
scene.pbHardRefresh
|
scene.pbHardRefresh
|
||||||
useType = itm.field_use
|
useType = itm.field_use
|
||||||
if ret && useType==1 # Usable on Pokémon, consumed
|
if ret && useType == 1 # Usable on Pokémon, consumed
|
||||||
$PokemonBag.pbDeleteItem(item)
|
$PokemonBag.pbDeleteItem(item)
|
||||||
if !$PokemonBag.pbHasItem?(item)
|
if !$PokemonBag.pbHasItem?(item)
|
||||||
pbMessage(_INTL("You used your last {1}.",itm.name)) { scene.pbUpdate }
|
pbMessage(_INTL("You used your last {1}.", itm.name)) { scene.pbUpdate }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return ret
|
return ret
|
||||||
@@ -568,47 +615,47 @@ end
|
|||||||
|
|
||||||
def pbUseKeyItemInField(item)
|
def pbUseKeyItemInField(item)
|
||||||
ret = ItemHandlers.triggerUseInField(item)
|
ret = ItemHandlers.triggerUseInField(item)
|
||||||
if ret==-1 # Item effect not found
|
if ret == -1 # Item effect not found
|
||||||
pbMessage(_INTL("Can't use that here."))
|
pbMessage(_INTL("Can't use that here."))
|
||||||
elsif ret==3 # Item was used and consumed
|
elsif ret == 3 # Item was used and consumed
|
||||||
$PokemonBag.pbDeleteItem(item)
|
$PokemonBag.pbDeleteItem(item)
|
||||||
end
|
end
|
||||||
return ret!=-1 && ret!=0
|
return ret != -1 && ret != 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbUseItemMessage(item)
|
def pbUseItemMessage(item)
|
||||||
itemname = GameData::Item.get(item).name
|
itemname = GameData::Item.get(item).name
|
||||||
if itemname.starts_with_vowel?
|
if itemname.starts_with_vowel?
|
||||||
pbMessage(_INTL("You used an {1}.",itemname))
|
pbMessage(_INTL("You used an {1}.", itemname))
|
||||||
else
|
else
|
||||||
pbMessage(_INTL("You used a {1}.",itemname))
|
pbMessage(_INTL("You used a {1}.", itemname))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbCheckUseOnPokemon(_item,pkmn,_screen)
|
def pbCheckUseOnPokemon(_item, pkmn, _screen)
|
||||||
return pkmn && !pkmn.egg?
|
return pkmn && !pkmn.egg?
|
||||||
end
|
end
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Give an item to a Pokémon to hold, and take a held item from a Pokémon
|
# Give an item to a Pokémon to hold, and take a held item from a Pokémon
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbGiveItemToPokemon(item,pkmn,scene,pkmnid=0)
|
def pbGiveItemToPokemon(item, pkmn, scene, pkmnid = 0)
|
||||||
newitemname = GameData::Item.get(item).name
|
newitemname = GameData::Item.get(item).name
|
||||||
if pkmn.egg?
|
if pkmn.egg?
|
||||||
scene.pbDisplay(_INTL("Eggs can't hold items."))
|
scene.pbDisplay(_INTL("Eggs can't hold items."))
|
||||||
return false
|
return false
|
||||||
elsif pkmn.mail
|
elsif pkmn.mail
|
||||||
scene.pbDisplay(_INTL("{1}'s mail must be removed before giving it an item.",pkmn.name))
|
scene.pbDisplay(_INTL("{1}'s mail must be removed before giving it an item.", pkmn.name))
|
||||||
return false if !pbTakeItemFromPokemon(pkmn,scene)
|
return false if !pbTakeItemFromPokemon(pkmn, scene)
|
||||||
end
|
end
|
||||||
if pkmn.hasItem?
|
if pkmn.hasItem?
|
||||||
olditemname = pkmn.item.name
|
olditemname = pkmn.item.name
|
||||||
if pkmn.hasItem?(:LEFTOVERS)
|
if pkmn.hasItem?(:LEFTOVERS)
|
||||||
scene.pbDisplay(_INTL("{1} is already holding some {2}.\1",pkmn.name,olditemname))
|
scene.pbDisplay(_INTL("{1} is already holding some {2}.\1", pkmn.name, olditemname))
|
||||||
elsif newitemname.starts_with_vowel?
|
elsif newitemname.starts_with_vowel?
|
||||||
scene.pbDisplay(_INTL("{1} is already holding an {2}.\1",pkmn.name,olditemname))
|
scene.pbDisplay(_INTL("{1} is already holding an {2}.\1", pkmn.name, olditemname))
|
||||||
else
|
else
|
||||||
scene.pbDisplay(_INTL("{1} is already holding a {2}.\1",pkmn.name,olditemname))
|
scene.pbDisplay(_INTL("{1} is already holding a {2}.\1", pkmn.name, olditemname))
|
||||||
end
|
end
|
||||||
if scene.pbConfirm(_INTL("Would you like to switch the two items?"))
|
if scene.pbConfirm(_INTL("Would you like to switch the two items?"))
|
||||||
$PokemonBag.pbDeleteItem(item)
|
$PokemonBag.pbDeleteItem(item)
|
||||||
@@ -619,9 +666,9 @@ def pbGiveItemToPokemon(item,pkmn,scene,pkmnid=0)
|
|||||||
scene.pbDisplay(_INTL("The Bag is full. The Pokémon's item could not be removed."))
|
scene.pbDisplay(_INTL("The Bag is full. The Pokémon's item could not be removed."))
|
||||||
else
|
else
|
||||||
if GameData::Item.get(item).is_mail?
|
if GameData::Item.get(item).is_mail?
|
||||||
if pbWriteMail(item,pkmn,pkmnid,scene)
|
if pbWriteMail(item, pkmn, pkmnid, scene)
|
||||||
pkmn.item = item
|
pkmn.item = item
|
||||||
scene.pbDisplay(_INTL("Took the {1} from {2} and gave it the {3}.",olditemname,pkmn.name,newitemname))
|
scene.pbDisplay(_INTL("Took the {1} from {2} and gave it the {3}.", olditemname, pkmn.name, newitemname))
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
if !$PokemonBag.pbStoreItem(item)
|
if !$PokemonBag.pbStoreItem(item)
|
||||||
@@ -630,26 +677,26 @@ def pbGiveItemToPokemon(item,pkmn,scene,pkmnid=0)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
pkmn.item = item
|
pkmn.item = item
|
||||||
scene.pbDisplay(_INTL("Took the {1} from {2} and gave it the {3}.",olditemname,pkmn.name,newitemname))
|
scene.pbDisplay(_INTL("Took the {1} from {2} and gave it the {3}.", olditemname, pkmn.name, newitemname))
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if !GameData::Item.get(item).is_mail? || pbWriteMail(item,pkmn,pkmnid,scene)
|
if !GameData::Item.get(item).is_mail? || pbWriteMail(item, pkmn, pkmnid, scene)
|
||||||
$PokemonBag.pbDeleteItem(item)
|
$PokemonBag.pbDeleteItem(item)
|
||||||
pkmn.item = item
|
pkmn.item = item
|
||||||
scene.pbDisplay(_INTL("{1} is now holding the {2}.",pkmn.name,newitemname))
|
scene.pbDisplay(_INTL("{1} is now holding the {2}.", pkmn.name, newitemname))
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbTakeItemFromPokemon(pkmn,scene)
|
def pbTakeItemFromPokemon(pkmn, scene)
|
||||||
ret = false
|
ret = false
|
||||||
if !pkmn.hasItem?
|
if !pkmn.hasItem?
|
||||||
scene.pbDisplay(_INTL("{1} isn't holding anything.",pkmn.name))
|
scene.pbDisplay(_INTL("{1} isn't holding anything.", pkmn.name))
|
||||||
elsif !$PokemonBag.pbCanStore?(pkmn.item)
|
elsif !$PokemonBag.pbCanStore?(pkmn.item)
|
||||||
scene.pbDisplay(_INTL("The Bag is full. The Pokémon's item could not be removed."))
|
scene.pbDisplay(_INTL("The Bag is full. The Pokémon's item could not be removed."))
|
||||||
elsif pkmn.mail
|
elsif pkmn.mail
|
||||||
@@ -663,14 +710,14 @@ def pbTakeItemFromPokemon(pkmn,scene)
|
|||||||
end
|
end
|
||||||
elsif scene.pbConfirm(_INTL("If the mail is removed, its message will be lost. OK?"))
|
elsif scene.pbConfirm(_INTL("If the mail is removed, its message will be lost. OK?"))
|
||||||
$PokemonBag.pbStoreItem(pkmn.item)
|
$PokemonBag.pbStoreItem(pkmn.item)
|
||||||
scene.pbDisplay(_INTL("Received the {1} from {2}.",pkmn.item.name,pkmn.name))
|
scene.pbDisplay(_INTL("Received the {1} from {2}.", pkmn.item.name, pkmn.name))
|
||||||
pkmn.item = nil
|
pkmn.item = nil
|
||||||
pkmn.mail = nil
|
pkmn.mail = nil
|
||||||
ret = true
|
ret = true
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
$PokemonBag.pbStoreItem(pkmn.item)
|
$PokemonBag.pbStoreItem(pkmn.item)
|
||||||
scene.pbDisplay(_INTL("Received the {1} from {2}.",pkmn.item.name,pkmn.name))
|
scene.pbDisplay(_INTL("Received the {1} from {2}.", pkmn.item.name, pkmn.name))
|
||||||
pkmn.item = nil
|
pkmn.item = nil
|
||||||
ret = true
|
ret = true
|
||||||
end
|
end
|
||||||
@@ -684,7 +731,7 @@ def pbChooseItem(var = 0, *args)
|
|||||||
ret = nil
|
ret = nil
|
||||||
pbFadeOutIn {
|
pbFadeOutIn {
|
||||||
scene = PokemonBag_Scene.new
|
scene = PokemonBag_Scene.new
|
||||||
screen = PokemonBagScreen.new(scene,$PokemonBag)
|
screen = PokemonBagScreen.new(scene, $PokemonBag)
|
||||||
ret = screen.pbChooseItemScreen
|
ret = screen.pbChooseItemScreen
|
||||||
}
|
}
|
||||||
$game_variables[var] = ret || :NONE if var > 0
|
$game_variables[var] = ret || :NONE if var > 0
|
||||||
@@ -695,7 +742,7 @@ def pbChooseApricorn(var = 0)
|
|||||||
ret = nil
|
ret = nil
|
||||||
pbFadeOutIn {
|
pbFadeOutIn {
|
||||||
scene = PokemonBag_Scene.new
|
scene = PokemonBag_Scene.new
|
||||||
screen = PokemonBagScreen.new(scene,$PokemonBag)
|
screen = PokemonBagScreen.new(scene, $PokemonBag)
|
||||||
ret = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_apricorn? })
|
ret = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_apricorn? })
|
||||||
}
|
}
|
||||||
$game_variables[var] = ret || :NONE if var > 0
|
$game_variables[var] = ret || :NONE if var > 0
|
||||||
@@ -706,7 +753,7 @@ def pbChooseFossil(var = 0)
|
|||||||
ret = nil
|
ret = nil
|
||||||
pbFadeOutIn {
|
pbFadeOutIn {
|
||||||
scene = PokemonBag_Scene.new
|
scene = PokemonBag_Scene.new
|
||||||
screen = PokemonBagScreen.new(scene,$PokemonBag)
|
screen = PokemonBagScreen.new(scene, $PokemonBag)
|
||||||
ret = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_fossil? })
|
ret = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_fossil? })
|
||||||
}
|
}
|
||||||
$game_variables[var] = ret || :NONE if var > 0
|
$game_variables[var] = ret || :NONE if var > 0
|
||||||
@@ -732,7 +779,7 @@ def pbChooseItemFromList(message, variable, *args)
|
|||||||
commands.push(_INTL("Cancel"))
|
commands.push(_INTL("Cancel"))
|
||||||
itemid.push(nil)
|
itemid.push(nil)
|
||||||
ret = pbMessage(message, commands, -1)
|
ret = pbMessage(message, commands, -1)
|
||||||
if ret < 0 || ret >= commands.length-1
|
if ret < 0 || ret >= commands.length - 1
|
||||||
$game_variables[variable] = nil
|
$game_variables[variable] = nil
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -936,58 +936,6 @@ ItemHandlers::UseOnPokemon.add(:PRISONBOTTLE,proc { |item,pkmn,scene|
|
|||||||
next true
|
next true
|
||||||
})
|
})
|
||||||
|
|
||||||
ItemHandlers::UseOnPokemon.add(:DNASPLICERS,proc { |item,pkmn,scene|
|
|
||||||
if !pkmn.isSpecies?(:KYUREM)
|
|
||||||
scene.pbDisplay(_INTL("It had no effect."))
|
|
||||||
next false
|
|
||||||
end
|
|
||||||
if pkmn.fainted?
|
|
||||||
scene.pbDisplay(_INTL("This can't be used on the fainted Pokémon."))
|
|
||||||
next false
|
|
||||||
end
|
|
||||||
# Fusing
|
|
||||||
if pkmn.fused.nil?
|
|
||||||
chosen = scene.pbChoosePokemon(_INTL("Fuse with which Pokémon?"))
|
|
||||||
next false if chosen<0
|
|
||||||
poke2 = $Trainer.party[chosen]
|
|
||||||
if pkmn==poke2
|
|
||||||
scene.pbDisplay(_INTL("It cannot be fused with itself."))
|
|
||||||
next false
|
|
||||||
elsif poke2.egg?
|
|
||||||
scene.pbDisplay(_INTL("It cannot be fused with an Egg."))
|
|
||||||
next false
|
|
||||||
elsif poke2.fainted?
|
|
||||||
scene.pbDisplay(_INTL("It cannot be fused with that fainted Pokémon."))
|
|
||||||
next false
|
|
||||||
elsif !poke2.isSpecies?(:RESHIRAM) &&
|
|
||||||
!poke2.isSpecies?(:ZEKROM)
|
|
||||||
scene.pbDisplay(_INTL("It cannot be fused with that Pokémon."))
|
|
||||||
next false
|
|
||||||
end
|
|
||||||
newForm = 0
|
|
||||||
newForm = 1 if poke2.isSpecies?(:RESHIRAM)
|
|
||||||
newForm = 2 if poke2.isSpecies?(:ZEKROM)
|
|
||||||
pkmn.setForm(newForm) {
|
|
||||||
pkmn.fused = poke2
|
|
||||||
$Trainer.remove_pokemon_at_index(chosen)
|
|
||||||
scene.pbHardRefresh
|
|
||||||
scene.pbDisplay(_INTL("{1} changed Forme!",pkmn.name))
|
|
||||||
}
|
|
||||||
next true
|
|
||||||
end
|
|
||||||
# Unfusing
|
|
||||||
if $Trainer.party_full?
|
|
||||||
scene.pbDisplay(_INTL("You have no room to separate the Pokémon."))
|
|
||||||
next false
|
|
||||||
end
|
|
||||||
pkmn.setForm(0) {
|
|
||||||
$Trainer.party[$Trainer.party.length] = pkmn.fused
|
|
||||||
pkmn.fused = nil
|
|
||||||
scene.pbHardRefresh
|
|
||||||
scene.pbDisplay(_INTL("{1} changed Forme!",pkmn.name))
|
|
||||||
}
|
|
||||||
next true
|
|
||||||
})
|
|
||||||
|
|
||||||
ItemHandlers::UseOnPokemon.add(:NSOLARIZER,proc { |item,pkmn,scene|
|
ItemHandlers::UseOnPokemon.add(:NSOLARIZER,proc { |item,pkmn,scene|
|
||||||
if !pkmn.isSpecies?(:NECROZMA) || pkmn.form == 2
|
if !pkmn.isSpecies?(:NECROZMA) || pkmn.form == 2
|
||||||
|
|||||||
@@ -54,6 +54,14 @@ class PokemonSprite < SpriteWrapper
|
|||||||
changeOrigin
|
changeOrigin
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def setPokemonBitmapFromId(id,back=false)
|
||||||
|
@_iconbitmap.dispose if @_iconbitmap
|
||||||
|
@_iconbitmap = GameData::Species.sprite_bitmap_from_pokemon_id(id, back)
|
||||||
|
self.bitmap = (@_iconbitmap) ? @_iconbitmap.bitmap : nil
|
||||||
|
self.color = Color.new(0,0,0,0)
|
||||||
|
changeOrigin
|
||||||
|
end
|
||||||
|
|
||||||
def setPokemonBitmapSpecies(pokemon,species,back=false)
|
def setPokemonBitmapSpecies(pokemon,species,back=false)
|
||||||
@_iconbitmap.dispose if @_iconbitmap
|
@_iconbitmap.dispose if @_iconbitmap
|
||||||
@_iconbitmap = (pokemon) ? GameData::Species.sprite_bitmap_from_pokemon(pokemon, back, species) : nil
|
@_iconbitmap = (pokemon) ? GameData::Species.sprite_bitmap_from_pokemon(pokemon, back, species) : nil
|
||||||
|
|||||||
@@ -12,6 +12,15 @@ module GameData
|
|||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.sprite_bitmap_from_pokemon_id(id, back = false)
|
||||||
|
if back
|
||||||
|
ret = self.back_sprite_bitmap(id)
|
||||||
|
else
|
||||||
|
ret = self.front_sprite_bitmap(id)
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
def self.front_sprite_bitmap(dex_number)
|
def self.front_sprite_bitmap(dex_number)
|
||||||
filename = self.sprite_filename(dex_number)
|
filename = self.sprite_filename(dex_number)
|
||||||
return (filename) ? AnimatedBitmap.new(filename) : nil
|
return (filename) ? AnimatedBitmap.new(filename) : nil
|
||||||
|
|||||||
1648
Data/Scripts/050_AddOns/New Items effects.rb
Normal file
1648
Data/Scripts/050_AddOns/New Items effects.rb
Normal file
File diff suppressed because it is too large
Load Diff
@@ -33,13 +33,13 @@ class PBFusion
|
|||||||
Custom6 = 31
|
Custom6 = 31
|
||||||
Custom7 = 32
|
Custom7 = 32
|
||||||
|
|
||||||
EVONAMES=["Unknown",
|
EVONAMES = ["Unknown",
|
||||||
"Happiness","HappinessDay","HappinessNight","Level","Trade",
|
"Happiness", "HappinessDay", "HappinessNight", "Level", "Trade",
|
||||||
"TradeItem","Item","AttackGreater","AtkDefEqual","DefenseGreater",
|
"TradeItem", "Item", "AttackGreater", "AtkDefEqual", "DefenseGreater",
|
||||||
"Silcoon","Cascoon","Ninjask","Shedinja","Beauty",
|
"Silcoon", "Cascoon", "Ninjask", "Shedinja", "Beauty",
|
||||||
"ItemMale","ItemFemale","DayHoldItem","NightHoldItem","HasMove",
|
"ItemMale", "ItemFemale", "DayHoldItem", "NightHoldItem", "HasMove",
|
||||||
"HasInParty","LevelMale","LevelFemale","Location","TradeSpecies",
|
"HasInParty", "LevelMale", "LevelFemale", "Location", "TradeSpecies",
|
||||||
"Custom1","Custom2","Custom3","Custom4","Custom5","Custom6","Custom7"
|
"Custom1", "Custom2", "Custom3", "Custom4", "Custom5", "Custom6", "Custom7"
|
||||||
]
|
]
|
||||||
|
|
||||||
# 0 = no parameter
|
# 0 = no parameter
|
||||||
@@ -48,18 +48,16 @@ class PBFusion
|
|||||||
# 3 = Move internal name
|
# 3 = Move internal name
|
||||||
# 4 = Species internal name
|
# 4 = Species internal name
|
||||||
# 5 = Type internal name
|
# 5 = Type internal name
|
||||||
EVOPARAM=[0, # Unknown (do not use)
|
EVOPARAM = [0, # Unknown (do not use)
|
||||||
0,0,0,1,0, # Happiness, HappinessDay, HappinessNight, Level, Trade
|
0, 0, 0, 1, 0, # Happiness, HappinessDay, HappinessNight, Level, Trade
|
||||||
2,2,1,1,1, # TradeItem, Item, AttackGreater, AtkDefEqual, DefenseGreater
|
2, 2, 1, 1, 1, # TradeItem, Item, AttackGreater, AtkDefEqual, DefenseGreater
|
||||||
1,1,1,1,1, # Silcoon, Cascoon, Ninjask, Shedinja, Beauty
|
1, 1, 1, 1, 1, # Silcoon, Cascoon, Ninjask, Shedinja, Beauty
|
||||||
2,2,2,2,3, # ItemMale, ItemFemale, DayHoldItem, NightHoldItem, HasMove
|
2, 2, 2, 2, 3, # ItemMale, ItemFemale, DayHoldItem, NightHoldItem, HasMove
|
||||||
4,1,1,1,4, # HasInParty, LevelMale, LevelFemale, Location, TradeSpecies
|
4, 1, 1, 1, 4, # HasInParty, LevelMale, LevelFemale, Location, TradeSpecies
|
||||||
1,1,1,1,1,1,1 # Custom 1-7
|
1, 1, 1, 1, 1, 1, 1 # Custom 1-7
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SpriteMetafile
|
class SpriteMetafile
|
||||||
VIEWPORT = 0
|
VIEWPORT = 0
|
||||||
TONE = 1
|
TONE = 1
|
||||||
@@ -90,15 +88,15 @@ class SpriteMetafile
|
|||||||
return @metafile[i]
|
return @metafile[i]
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize(viewport=nil)
|
def initialize(viewport = nil)
|
||||||
@metafile=[]
|
@metafile = []
|
||||||
@values=[
|
@values = [
|
||||||
viewport,
|
viewport,
|
||||||
Tone.new(0,0,0,0),Rect.new(0,0,0,0),
|
Tone.new(0, 0, 0, 0), Rect.new(0, 0, 0, 0),
|
||||||
true,
|
true,
|
||||||
0,0,0,0,0,100,100,
|
0, 0, 0, 0, 0, 100, 100,
|
||||||
0,false,0,255,0,
|
0, false, 0, 255, 0,
|
||||||
Color.new(0,0,0,0),Color.new(0,0,0,0),
|
Color.new(0, 0, 0, 0), Color.new(0, 0, 0, 0),
|
||||||
0
|
0
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
@@ -110,12 +108,12 @@ class SpriteMetafile
|
|||||||
def dispose
|
def dispose
|
||||||
end
|
end
|
||||||
|
|
||||||
def flash(color,duration)
|
def flash(color, duration)
|
||||||
if duration>0
|
if duration > 0
|
||||||
@values[FLASHCOLOR]=color.clone
|
@values[FLASHCOLOR] = color.clone
|
||||||
@values[FLASHDURATION]=duration
|
@values[FLASHDURATION] = duration
|
||||||
@metafile.push([FLASHCOLOR,color])
|
@metafile.push([FLASHCOLOR, color])
|
||||||
@metafile.push([FLASHDURATION,duration])
|
@metafile.push([FLASHDURATION, duration])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -124,8 +122,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def x=(value)
|
def x=(value)
|
||||||
@values[X]=value
|
@values[X] = value
|
||||||
@metafile.push([X,value])
|
@metafile.push([X, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def y
|
def y
|
||||||
@@ -133,8 +131,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def y=(value)
|
def y=(value)
|
||||||
@values[Y]=value
|
@values[Y] = value
|
||||||
@metafile.push([Y,value])
|
@metafile.push([Y, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def bitmap
|
def bitmap
|
||||||
@@ -143,8 +141,8 @@ class SpriteMetafile
|
|||||||
|
|
||||||
def bitmap=(value)
|
def bitmap=(value)
|
||||||
if value && !value.disposed?
|
if value && !value.disposed?
|
||||||
@values[SRC_RECT].set(0,0,value.width,value.height)
|
@values[SRC_RECT].set(0, 0, value.width, value.height)
|
||||||
@metafile.push([SRC_RECT,@values[SRC_RECT].clone])
|
@metafile.push([SRC_RECT, @values[SRC_RECT].clone])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -153,8 +151,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def src_rect=(value)
|
def src_rect=(value)
|
||||||
@values[SRC_RECT]=value
|
@values[SRC_RECT] = value
|
||||||
@metafile.push([SRC_RECT,value])
|
@metafile.push([SRC_RECT, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def visible
|
def visible
|
||||||
@@ -162,8 +160,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def visible=(value)
|
def visible=(value)
|
||||||
@values[VISIBLE]=value
|
@values[VISIBLE] = value
|
||||||
@metafile.push([VISIBLE,value])
|
@metafile.push([VISIBLE, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def z
|
def z
|
||||||
@@ -171,8 +169,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def z=(value)
|
def z=(value)
|
||||||
@values[Z]=value
|
@values[Z] = value
|
||||||
@metafile.push([Z,value])
|
@metafile.push([Z, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def ox
|
def ox
|
||||||
@@ -180,8 +178,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def ox=(value)
|
def ox=(value)
|
||||||
@values[OX]=value
|
@values[OX] = value
|
||||||
@metafile.push([OX,value])
|
@metafile.push([OX, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def oy
|
def oy
|
||||||
@@ -189,8 +187,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def oy=(value)
|
def oy=(value)
|
||||||
@values[OY]=value
|
@values[OY] = value
|
||||||
@metafile.push([OY,value])
|
@metafile.push([OY, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def zoom_x
|
def zoom_x
|
||||||
@@ -198,8 +196,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def zoom_x=(value)
|
def zoom_x=(value)
|
||||||
@values[ZOOM_X]=value
|
@values[ZOOM_X] = value
|
||||||
@metafile.push([ZOOM_X,value])
|
@metafile.push([ZOOM_X, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def zoom_y
|
def zoom_y
|
||||||
@@ -207,8 +205,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def zoom_y=(value)
|
def zoom_y=(value)
|
||||||
@values[ZOOM_Y]=value
|
@values[ZOOM_Y] = value
|
||||||
@metafile.push([ZOOM_Y,value])
|
@metafile.push([ZOOM_Y, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def angle
|
def angle
|
||||||
@@ -216,8 +214,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def angle=(value)
|
def angle=(value)
|
||||||
@values[ANGLE]=value
|
@values[ANGLE] = value
|
||||||
@metafile.push([ANGLE,value])
|
@metafile.push([ANGLE, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def mirror
|
def mirror
|
||||||
@@ -225,8 +223,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def mirror=(value)
|
def mirror=(value)
|
||||||
@values[MIRROR]=value
|
@values[MIRROR] = value
|
||||||
@metafile.push([MIRROR,value])
|
@metafile.push([MIRROR, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def bush_depth
|
def bush_depth
|
||||||
@@ -234,8 +232,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def bush_depth=(value)
|
def bush_depth=(value)
|
||||||
@values[BUSH_DEPTH]=value
|
@values[BUSH_DEPTH] = value
|
||||||
@metafile.push([BUSH_DEPTH,value])
|
@metafile.push([BUSH_DEPTH, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def opacity
|
def opacity
|
||||||
@@ -243,8 +241,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def opacity=(value)
|
def opacity=(value)
|
||||||
@values[OPACITY]=value
|
@values[OPACITY] = value
|
||||||
@metafile.push([OPACITY,value])
|
@metafile.push([OPACITY, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def blend_type
|
def blend_type
|
||||||
@@ -252,8 +250,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def blend_type=(value)
|
def blend_type=(value)
|
||||||
@values[BLEND_TYPE]=value
|
@values[BLEND_TYPE] = value
|
||||||
@metafile.push([BLEND_TYPE,value])
|
@metafile.push([BLEND_TYPE, value])
|
||||||
end
|
end
|
||||||
|
|
||||||
def color
|
def color
|
||||||
@@ -261,8 +259,8 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def color=(value)
|
def color=(value)
|
||||||
@values[COLOR]=value.clone
|
@values[COLOR] = value.clone
|
||||||
@metafile.push([COLOR,@values[COLOR]])
|
@metafile.push([COLOR, @values[COLOR]])
|
||||||
end
|
end
|
||||||
|
|
||||||
def tone
|
def tone
|
||||||
@@ -270,23 +268,21 @@ class SpriteMetafile
|
|||||||
end
|
end
|
||||||
|
|
||||||
def tone=(value)
|
def tone=(value)
|
||||||
@values[TONE]=value.clone
|
@values[TONE] = value.clone
|
||||||
@metafile.push([TONE,@values[TONE]])
|
@metafile.push([TONE, @values[TONE]])
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@metafile.push([-1,nil])
|
@metafile.push([-1, nil])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SpriteMetafilePlayer
|
class SpriteMetafilePlayer
|
||||||
def initialize(metafile,sprite=nil)
|
def initialize(metafile, sprite = nil)
|
||||||
@metafile=metafile
|
@metafile = metafile
|
||||||
@sprites=[]
|
@sprites = []
|
||||||
@playing=false
|
@playing = false
|
||||||
@index=0
|
@index = 0
|
||||||
@sprites.push(sprite) if sprite
|
@sprites.push(sprite) if sprite
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -299,64 +295,62 @@ class SpriteMetafilePlayer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def play
|
def play
|
||||||
@playing=true
|
@playing = true
|
||||||
@index=0
|
@index = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
if @playing
|
if @playing
|
||||||
for j in @index...@metafile.length
|
for j in @index...@metafile.length
|
||||||
@index=j+1
|
@index = j + 1
|
||||||
break if @metafile[j][0]<0
|
break if @metafile[j][0] < 0
|
||||||
code=@metafile[j][0]
|
code = @metafile[j][0]
|
||||||
value=@metafile[j][1]
|
value = @metafile[j][1]
|
||||||
for sprite in @sprites
|
for sprite in @sprites
|
||||||
case code
|
case code
|
||||||
when SpriteMetafile::X
|
when SpriteMetafile::X
|
||||||
sprite.x=value
|
sprite.x = value
|
||||||
when SpriteMetafile::Y
|
when SpriteMetafile::Y
|
||||||
sprite.y=value
|
sprite.y = value
|
||||||
when SpriteMetafile::OX
|
when SpriteMetafile::OX
|
||||||
sprite.ox=value
|
sprite.ox = value
|
||||||
when SpriteMetafile::OY
|
when SpriteMetafile::OY
|
||||||
sprite.oy=value
|
sprite.oy = value
|
||||||
when SpriteMetafile::ZOOM_X
|
when SpriteMetafile::ZOOM_X
|
||||||
sprite.zoom_x=value
|
sprite.zoom_x = value
|
||||||
when SpriteMetafile::ZOOM_Y
|
when SpriteMetafile::ZOOM_Y
|
||||||
sprite.zoom_y=value
|
sprite.zoom_y = value
|
||||||
when SpriteMetafile::SRC_RECT
|
when SpriteMetafile::SRC_RECT
|
||||||
sprite.src_rect=value
|
sprite.src_rect = value
|
||||||
when SpriteMetafile::VISIBLE
|
when SpriteMetafile::VISIBLE
|
||||||
sprite.visible=value
|
sprite.visible = value
|
||||||
when SpriteMetafile::Z
|
when SpriteMetafile::Z
|
||||||
sprite.z=value
|
sprite.z = value
|
||||||
# prevent crashes
|
# prevent crashes
|
||||||
when SpriteMetafile::ANGLE
|
when SpriteMetafile::ANGLE
|
||||||
sprite.angle=(value==180) ? 179.9 : value
|
sprite.angle = (value == 180) ? 179.9 : value
|
||||||
when SpriteMetafile::MIRROR
|
when SpriteMetafile::MIRROR
|
||||||
sprite.mirror=value
|
sprite.mirror = value
|
||||||
when SpriteMetafile::BUSH_DEPTH
|
when SpriteMetafile::BUSH_DEPTH
|
||||||
sprite.bush_depth=value
|
sprite.bush_depth = value
|
||||||
when SpriteMetafile::OPACITY
|
when SpriteMetafile::OPACITY
|
||||||
sprite.opacity=value
|
sprite.opacity = value
|
||||||
when SpriteMetafile::BLEND_TYPE
|
when SpriteMetafile::BLEND_TYPE
|
||||||
sprite.blend_type=value
|
sprite.blend_type = value
|
||||||
when SpriteMetafile::COLOR
|
when SpriteMetafile::COLOR
|
||||||
sprite.color=value
|
sprite.color = value
|
||||||
when SpriteMetafile::TONE
|
when SpriteMetafile::TONE
|
||||||
sprite.tone=value
|
sprite.tone = value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@playing=false if @index==@metafile.length
|
@playing = false if @index == @metafile.length
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def pbSaveSpriteState(sprite)
|
def pbSaveSpriteState(sprite)
|
||||||
state=[]
|
state = []
|
||||||
return state if !sprite || sprite.disposed?
|
return state if !sprite || sprite.disposed?
|
||||||
state[SpriteMetafile::BITMAP] = sprite.x
|
state[SpriteMetafile::BITMAP] = sprite.x
|
||||||
state[SpriteMetafile::X] = sprite.x
|
state[SpriteMetafile::X] = sprite.x
|
||||||
@@ -378,7 +372,7 @@ def pbSaveSpriteState(sprite)
|
|||||||
return state
|
return state
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbRestoreSpriteState(sprite,state)
|
def pbRestoreSpriteState(sprite, state)
|
||||||
return if !state || !sprite || sprite.disposed?
|
return if !state || !sprite || sprite.disposed?
|
||||||
sprite.x = state[SpriteMetafile::X]
|
sprite.x = state[SpriteMetafile::X]
|
||||||
sprite.y = state[SpriteMetafile::Y]
|
sprite.y = state[SpriteMetafile::Y]
|
||||||
@@ -400,87 +394,81 @@ end
|
|||||||
|
|
||||||
def pbSaveSpriteStateAndBitmap(sprite)
|
def pbSaveSpriteStateAndBitmap(sprite)
|
||||||
return [] if !sprite || sprite.disposed?
|
return [] if !sprite || sprite.disposed?
|
||||||
state=pbSaveSpriteState(sprite)
|
state = pbSaveSpriteState(sprite)
|
||||||
state[SpriteMetafile::BITMAP]=sprite.bitmap
|
state[SpriteMetafile::BITMAP] = sprite.bitmap
|
||||||
return state
|
return state
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbRestoreSpriteStateAndBitmap(sprite,state)
|
def pbRestoreSpriteStateAndBitmap(sprite, state)
|
||||||
return if !state || !sprite || sprite.disposed?
|
return if !state || !sprite || sprite.disposed?
|
||||||
sprite.bitmap=state[SpriteMetafile::BITMAP]
|
sprite.bitmap = state[SpriteMetafile::BITMAP]
|
||||||
pbRestoreSpriteState(sprite,state)
|
pbRestoreSpriteState(sprite, state)
|
||||||
return state
|
return state
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#####################
|
#####################
|
||||||
|
|
||||||
class PokemonFusionScene
|
class PokemonFusionScene
|
||||||
private
|
private
|
||||||
def pbGenerateMetafiles(s1x,s1y,s2x,s2y,s3x,s3y,sxx,s3xx)
|
|
||||||
sprite=SpriteMetafile.new
|
|
||||||
sprite3=SpriteMetafile.new
|
|
||||||
sprite2=SpriteMetafile.new
|
|
||||||
|
|
||||||
sprite.opacity=255
|
def pbGenerateMetafiles(s1x, s1y, s2x, s2y, s3x, s3y, sxx, s3xx)
|
||||||
sprite3.opacity=255
|
sprite = SpriteMetafile.new
|
||||||
sprite2.opacity=0
|
sprite3 = SpriteMetafile.new
|
||||||
|
sprite2 = SpriteMetafile.new
|
||||||
|
|
||||||
|
sprite.opacity = 255
|
||||||
|
sprite3.opacity = 255
|
||||||
|
sprite2.opacity = 0
|
||||||
|
|
||||||
sprite.ox=s1x
|
sprite.ox = s1x
|
||||||
sprite.oy=s1y
|
sprite.oy = s1y
|
||||||
sprite2.ox=s2x
|
sprite2.ox = s2x
|
||||||
sprite2.oy=s2y
|
sprite2.oy = s2y
|
||||||
sprite3.ox=s3x
|
sprite3.ox = s3x
|
||||||
sprite3.oy=s3y
|
sprite3.oy = s3y
|
||||||
|
|
||||||
|
|
||||||
sprite.x = sxx
|
sprite.x = sxx
|
||||||
sprite3.x=s3xx
|
sprite3.x = s3xx
|
||||||
|
|
||||||
red=10
|
red = 10
|
||||||
green=5
|
green = 5
|
||||||
blue=90
|
blue = 90
|
||||||
|
|
||||||
for j in 0...26
|
for j in 0...26
|
||||||
sprite.color.red= red
|
sprite.color.red = red
|
||||||
sprite.color.green=green
|
sprite.color.green = green
|
||||||
sprite.color.blue=blue
|
sprite.color.blue = blue
|
||||||
sprite.color.alpha=j*10
|
sprite.color.alpha = j * 10
|
||||||
sprite.color=sprite.color
|
sprite.color = sprite.color
|
||||||
|
|
||||||
sprite3.color.red= red
|
sprite3.color.red = red
|
||||||
sprite3.color.green=green
|
sprite3.color.green = green
|
||||||
sprite3.color.blue=blue
|
sprite3.color.blue = blue
|
||||||
sprite3.color.alpha=j*10
|
sprite3.color.alpha = j * 10
|
||||||
sprite3.color=sprite3.color
|
sprite3.color = sprite3.color
|
||||||
|
|
||||||
|
sprite2.color = sprite.color
|
||||||
|
|
||||||
sprite2.color=sprite.color
|
|
||||||
sprite.update
|
sprite.update
|
||||||
sprite3.update
|
sprite3.update
|
||||||
sprite2.update
|
sprite2.update
|
||||||
end
|
end
|
||||||
anglechange=0
|
anglechange = 0
|
||||||
sevenseconds=Graphics.frame_rate*3 #actually 3 seconds
|
sevenseconds = Graphics.frame_rate * 3 #actually 3 seconds
|
||||||
for j in 0...sevenseconds
|
for j in 0...sevenseconds
|
||||||
sprite.angle+=anglechange
|
sprite.angle += anglechange
|
||||||
sprite.angle%=360
|
sprite.angle %= 360
|
||||||
|
|
||||||
sprite3.angle+=anglechange
|
sprite3.angle += anglechange
|
||||||
sprite3.angle%=360
|
sprite3.angle %= 360
|
||||||
|
|
||||||
|
anglechange += 5 if j % 2 == 0
|
||||||
anglechange+=5 if j%2==0
|
if j >= sevenseconds - 50
|
||||||
if j>=sevenseconds-50
|
sprite2.angle = sprite.angle
|
||||||
sprite2.angle=sprite.angle
|
sprite2.opacity += 6
|
||||||
sprite2.opacity+=6
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if sprite.x < sprite3.x && j >=20
|
if sprite.x < sprite3.x && j >= 20
|
||||||
sprite.x +=2
|
sprite.x += 2
|
||||||
sprite3.x -= 2
|
sprite3.x -= 2
|
||||||
else
|
else
|
||||||
#sprite.ox+=1
|
#sprite.ox+=1
|
||||||
@@ -491,96 +479,92 @@ class PokemonFusionScene
|
|||||||
sprite3.update
|
sprite3.update
|
||||||
sprite2.update
|
sprite2.update
|
||||||
end
|
end
|
||||||
sprite.angle=360-sprite.angle
|
sprite.angle = 360 - sprite.angle
|
||||||
sprite3.angle=360-sprite.angle
|
sprite3.angle = 360 - sprite.angle
|
||||||
sprite2.angle=360-sprite2.angle
|
sprite2.angle = 360 - sprite2.angle
|
||||||
for j in 0...sevenseconds
|
for j in 0...sevenseconds
|
||||||
sprite2.angle+=anglechange
|
sprite2.angle += anglechange
|
||||||
sprite2.angle%=360
|
sprite2.angle %= 360
|
||||||
anglechange-=5 if j%2==0
|
anglechange -= 5 if j % 2 == 0
|
||||||
if j<50
|
if j < 50
|
||||||
sprite.angle=sprite2.angle
|
sprite.angle = sprite2.angle
|
||||||
sprite.opacity-=6
|
sprite.opacity -= 6
|
||||||
|
|
||||||
sprite3.angle=sprite2.angle
|
sprite3.angle = sprite2.angle
|
||||||
sprite3.opacity-=6
|
sprite3.opacity -= 6
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprite3.update
|
sprite3.update
|
||||||
sprite.update
|
sprite.update
|
||||||
sprite2.update
|
sprite2.update
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
for j in 0...26
|
for j in 0...26
|
||||||
sprite2.color.red=30
|
sprite2.color.red = 30
|
||||||
sprite2.color.green=230
|
sprite2.color.green = 230
|
||||||
sprite2.color.blue=55
|
sprite2.color.blue = 55
|
||||||
sprite2.color.alpha=(26-j)*10
|
sprite2.color.alpha = (26 - j) * 10
|
||||||
sprite2.color=sprite2.color
|
sprite2.color = sprite2.color
|
||||||
sprite.color=sprite2.color
|
sprite.color = sprite2.color
|
||||||
sprite.update
|
sprite.update
|
||||||
sprite2.update
|
sprite2.update
|
||||||
end
|
end
|
||||||
@metafile1=sprite
|
@metafile1 = sprite
|
||||||
@metafile2=sprite2
|
@metafile2 = sprite2
|
||||||
@metafile3=sprite3
|
@metafile3 = sprite3
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Starts the evolution screen with the given Pokemon and new Pokemon species.
|
# Starts the evolution screen with the given Pokemon and new Pokemon species.
|
||||||
|
|
||||||
def pbStartScreen(pokemon1,pokemon2,newspecies)
|
def pbStartScreen(pokemon1, pokemon2, newspecies)
|
||||||
@sprites={}
|
@sprites = {}
|
||||||
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
|
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||||
@viewport.z=99999
|
@viewport.z = 99999
|
||||||
@pokemon1=pokemon1
|
@pokemon1 = pokemon1
|
||||||
@pokemon2=pokemon2
|
@pokemon2 = pokemon2
|
||||||
|
|
||||||
@newspecies=newspecies
|
@newspecies = newspecies
|
||||||
addBackgroundOrColoredPlane(@sprites,"background","evolutionbg",
|
addBackgroundOrColoredPlane(@sprites, "background", "evolutionbg",
|
||||||
Color.new(248,248,248),@viewport)
|
Color.new(248, 248, 248), @viewport)
|
||||||
|
|
||||||
|
poke1_number = GameData::Species.get(@pokemon1.species).id_number
|
||||||
|
poke2_number = GameData::Species.get(@pokemon2.species).id_number
|
||||||
|
|
||||||
rsprite1=PokemonSprite.new(@viewport)
|
rsprite1 = PokemonSprite.new(@viewport)
|
||||||
rsprite2=PokemonSprite.new(@viewport)
|
rsprite2 = PokemonSprite.new(@viewport)
|
||||||
rsprite3 =PokemonSprite.new(@viewport)
|
rsprite3 = PokemonSprite.new(@viewport)
|
||||||
|
|
||||||
rsprite1.setPokemonBitmap(@pokemon1,false)
|
rsprite1.setPokemonBitmapFromId(poke1_number, false)
|
||||||
rsprite3.setPokemonBitmap(@pokemon2,false)
|
rsprite3.setPokemonBitmapFromId(poke2_number, false)
|
||||||
|
|
||||||
rsprite2.setPokemonBitmapSpecies(@pokemon1,@newspecies,false)
|
rsprite2.setPokemonBitmapFromId(@newspecies, false)
|
||||||
|
|
||||||
rsprite1.ox=rsprite1.bitmap.width/2
|
rsprite1.ox = rsprite1.bitmap.width / 2
|
||||||
rsprite1.oy=rsprite1.bitmap.height/2
|
rsprite1.oy = rsprite1.bitmap.height / 2
|
||||||
|
|
||||||
rsprite3.ox=rsprite3.bitmap.width/2
|
rsprite3.ox = rsprite3.bitmap.width / 2
|
||||||
rsprite3.oy=rsprite3.bitmap.height/2
|
rsprite3.oy = rsprite3.bitmap.height / 2
|
||||||
|
|
||||||
rsprite2.ox=rsprite2.bitmap.width/2
|
rsprite2.ox = rsprite2.bitmap.width / 2
|
||||||
rsprite2.oy=rsprite2.bitmap.height/2
|
rsprite2.oy = rsprite2.bitmap.height / 2
|
||||||
|
|
||||||
|
rsprite2.x = Graphics.width / 2
|
||||||
|
rsprite1.y = (Graphics.height - 96) / 2
|
||||||
|
rsprite3.y = (Graphics.height - 96) / 2
|
||||||
|
|
||||||
|
rsprite1.x = (Graphics.width / 2) - 100
|
||||||
|
rsprite3.x = (Graphics.width / 2) + 100
|
||||||
|
|
||||||
rsprite2.x=Graphics.width/2
|
rsprite2.y = (Graphics.height - 96) / 2
|
||||||
rsprite1.y=(Graphics.height-96)/2
|
rsprite2.opacity = 0
|
||||||
rsprite3.y=(Graphics.height-96)/2
|
@sprites["rsprite1"] = rsprite1
|
||||||
|
@sprites["rsprite2"] = rsprite2
|
||||||
|
@sprites["rsprite3"] = rsprite3
|
||||||
|
|
||||||
rsprite1.x=(Graphics.width/2)-100
|
pbGenerateMetafiles(rsprite1.ox, rsprite1.oy, rsprite2.ox, rsprite2.oy, rsprite3.ox, rsprite3.oy, rsprite1.x, rsprite3.x)
|
||||||
rsprite3.x=(Graphics.width/2)+100
|
|
||||||
|
|
||||||
|
@sprites["msgwindow"] = Kernel.pbCreateMessageWindow(@viewport)
|
||||||
rsprite2.y=(Graphics.height-96)/2
|
|
||||||
rsprite2.opacity=0
|
|
||||||
@sprites["rsprite1"]=rsprite1
|
|
||||||
@sprites["rsprite2"]=rsprite2
|
|
||||||
@sprites["rsprite3"]=rsprite3
|
|
||||||
|
|
||||||
pbGenerateMetafiles(rsprite1.ox,rsprite1.oy,rsprite2.ox,rsprite2.oy,rsprite3.ox,rsprite3.oy,rsprite1.x,rsprite3.x)
|
|
||||||
|
|
||||||
@sprites["msgwindow"]=Kernel.pbCreateMessageWindow(@viewport)
|
|
||||||
pbFadeInAndShow(@sprites)
|
pbFadeInAndShow(@sprites)
|
||||||
|
|
||||||
####FUSION MULTIPLIER
|
####FUSION MULTIPLIER
|
||||||
@@ -591,9 +575,9 @@ class PokemonFusionScene
|
|||||||
|
|
||||||
####LEVEL DIFFERENCE
|
####LEVEL DIFFERENCE
|
||||||
if (level1 >= level2) then
|
if (level1 >= level2) then
|
||||||
avgLevel = (2*level1 + level2)/3
|
avgLevel = (2 * level1 + level2) / 3
|
||||||
else
|
else
|
||||||
avgLevel = (2*level2 + level1)/3
|
avgLevel = (2 * level2 + level1) / 3
|
||||||
end
|
end
|
||||||
|
|
||||||
####CAPTURE RATES
|
####CAPTURE RATES
|
||||||
@@ -614,23 +598,24 @@ class PokemonFusionScene
|
|||||||
end
|
end
|
||||||
|
|
||||||
def averageFusionIvs()
|
def averageFusionIvs()
|
||||||
for i in 0..@pokemon1.iv.length-1
|
return
|
||||||
poke1Iv = @pokemon1.iv[i]
|
# for i in 0..@pokemon1.iv.length-1
|
||||||
poke2Iv = @pokemon2.iv[i]
|
# poke1Iv = @pokemon1.iv[i]
|
||||||
@pokemon1.iv[i] = ((poke1Iv+poke2Iv)/2).floor
|
# poke2Iv = @pokemon2.iv[i]
|
||||||
end
|
# @pokemon1.iv[i] = ((poke1Iv+poke2Iv)/2).floor
|
||||||
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
#unused. was meant for super splicers, but too broken
|
#unused. was meant for super splicers, but too broken
|
||||||
def setHighestFusionIvs()
|
def setHighestFusionIvs()
|
||||||
for i in 0..@pokemon1.iv.length-1
|
for i in 0..@pokemon1.iv.length - 1
|
||||||
iv1 = @pokemon1.iv[i]
|
iv1 = @pokemon1.iv[i]
|
||||||
iv2 = @pokemon2.iv[i]
|
iv2 = @pokemon2.iv[i]
|
||||||
@pokemon1.iv[i] = iv1 >= iv2 ? iv1 : iv2
|
@pokemon1.iv[i] = iv1 >= iv2 ? iv1 : iv2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Closes the evolution screen.
|
# Closes the evolution screen.
|
||||||
def pbEndScreen
|
def pbEndScreen
|
||||||
Kernel.pbDisposeMessageWindow(@sprites["msgwindow"])
|
Kernel.pbDisposeMessageWindow(@sprites["msgwindow"])
|
||||||
pbFadeOutAndHide(@sprites)
|
pbFadeOutAndHide(@sprites)
|
||||||
@@ -638,12 +623,11 @@ class PokemonFusionScene
|
|||||||
@viewport.dispose
|
@viewport.dispose
|
||||||
end
|
end
|
||||||
|
|
||||||
# Opens the fusion screen
|
# Opens the fusion screen
|
||||||
def pbFusionScreen(cancancel=false,superSplicer=false)
|
def pbFusionScreen(cancancel = false, superSplicer = false)
|
||||||
metaplayer1=SpriteMetafilePlayer.new(@metafile1,@sprites["rsprite1"])
|
metaplayer1 = SpriteMetafilePlayer.new(@metafile1, @sprites["rsprite1"])
|
||||||
metaplayer2=SpriteMetafilePlayer.new(@metafile2,@sprites["rsprite2"])
|
metaplayer2 = SpriteMetafilePlayer.new(@metafile2, @sprites["rsprite2"])
|
||||||
metaplayer3=SpriteMetafilePlayer.new(@metafile3,@sprites["rsprite3"])
|
metaplayer3 = SpriteMetafilePlayer.new(@metafile3, @sprites["rsprite3"])
|
||||||
|
|
||||||
|
|
||||||
metaplayer1.play
|
metaplayer1.play
|
||||||
metaplayer2.play
|
metaplayer2.play
|
||||||
@@ -652,20 +636,18 @@ class PokemonFusionScene
|
|||||||
pbBGMStop()
|
pbBGMStop()
|
||||||
pbPlayCry(@pokemon)
|
pbPlayCry(@pokemon)
|
||||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||||
_INTL("The Pokémon are being fused!",@pokemon1.name))
|
_INTL("The Pokémon are being fused!", @pokemon1.name))
|
||||||
|
|
||||||
|
Kernel.pbMessageWaitForInput(@sprites["msgwindow"], 100, true)
|
||||||
|
|
||||||
Kernel.pbMessageWaitForInput(@sprites["msgwindow"],100,true)
|
|
||||||
pbPlayDecisionSE()
|
pbPlayDecisionSE()
|
||||||
oldstate=pbSaveSpriteState(@sprites["rsprite1"])
|
oldstate = pbSaveSpriteState(@sprites["rsprite1"])
|
||||||
oldstate2=pbSaveSpriteState(@sprites["rsprite2"])
|
oldstate2 = pbSaveSpriteState(@sprites["rsprite2"])
|
||||||
oldstate3=pbSaveSpriteState(@sprites["rsprite3"])
|
oldstate3 = pbSaveSpriteState(@sprites["rsprite3"])
|
||||||
|
|
||||||
pbBGMPlay("fusion")
|
pbBGMPlay("fusion")
|
||||||
|
|
||||||
canceled = false
|
canceled = false
|
||||||
noMoves=false
|
noMoves = false
|
||||||
begin
|
begin
|
||||||
metaplayer1.update
|
metaplayer1.update
|
||||||
metaplayer2.update
|
metaplayer2.update
|
||||||
@@ -673,8 +655,8 @@ class PokemonFusionScene
|
|||||||
|
|
||||||
Graphics.update
|
Graphics.update
|
||||||
Input.update
|
Input.update
|
||||||
if Input.trigger?(Input::B) && Input.trigger?(Input::C)# && Input.trigger?(Input::A)# && cancancel
|
if Input.trigger?(Input::B) && Input.trigger?(Input::C) # && Input.trigger?(Input::A)# && cancancel
|
||||||
noMoves=true
|
noMoves = true
|
||||||
pbSEPlay("buzzer")
|
pbSEPlay("buzzer")
|
||||||
Graphics.update
|
Graphics.update
|
||||||
end
|
end
|
||||||
@@ -686,79 +668,78 @@ class PokemonFusionScene
|
|||||||
@pbEndScreen
|
@pbEndScreen
|
||||||
_INTL("Huh? The fusion was cancelled!")
|
_INTL("Huh? The fusion was cancelled!")
|
||||||
else
|
else
|
||||||
frames=pbCryFrameLength(@newspecies)
|
frames = pbCryFrameLength(@newspecies)
|
||||||
pbBGMStop()
|
pbBGMStop()
|
||||||
pbPlayCry(@newspecies)
|
pbPlayCry(@newspecies)
|
||||||
frames.times do
|
frames.times do
|
||||||
Graphics.update
|
Graphics.update
|
||||||
end
|
end
|
||||||
pbMEPlay("Voltorb Flip Win")
|
pbMEPlay("Voltorb Flip Win")
|
||||||
newspeciesname=PBSpecies.getName(@newspecies)
|
newSpecies = GameData::Species.get(@newspecies)
|
||||||
oldspeciesname=PBSpecies.getName(@pokemon1.species)
|
newspeciesname = newSpecies.real_name
|
||||||
|
oldspeciesname = GameData::Species.get(@pokemon1.species).real_name
|
||||||
|
|
||||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||||
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]",@pokemon1.name,newspeciesname))
|
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
||||||
|
|
||||||
averageFusionIvs()
|
averageFusionIvs()
|
||||||
#add to pokedex
|
#add to pokedex
|
||||||
if ! $Trainer.owned[@newspecies]
|
if !$Trainer.pokedex.owned?(newSpecies)
|
||||||
$Trainer.seen[@newspecies]=true
|
$Trainer.pokedex.set_seen(newSpecies)
|
||||||
$Trainer.owned[@newspecies]=true
|
$Trainer.pokedex.set_owned(newSpecies)
|
||||||
pbSeenForm(@pokemon)
|
|
||||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||||
_INTL("{1}'s data was added to the Pokédex",newspeciesname))
|
_INTL("{1}'s data was added to the Pokédex", newspeciesname))
|
||||||
@scene.pbShowPokedex(@newspecies)
|
#@scene.pbShowPokedex(@newspecies)
|
||||||
end
|
end
|
||||||
#first check if hidden ability
|
#first check if hidden ability
|
||||||
hiddenAbility1 = @pokemon1.ability == @pokemon1.getAbilityList[0][-1]
|
hiddenAbility1 = @pokemon1.ability == @pokemon1.getAbilityList[0][-1]
|
||||||
hiddenAbility2 = @pokemon2.ability == @pokemon2.getAbilityList[0][-1]
|
hiddenAbility2 = @pokemon2.ability == @pokemon2.getAbilityList[0][-1]
|
||||||
|
|
||||||
#change species
|
#change species
|
||||||
@pokemon1.species=@newspecies
|
@pokemon1.species = newSpecies
|
||||||
|
|
||||||
#Check moves for new species
|
#Check moves for new species
|
||||||
movelist=@pokemon1.getMoveList
|
movelist = @pokemon1.getMoveList
|
||||||
for i in movelist
|
for i in movelist
|
||||||
if i[0]==@pokemon1.level
|
if i[0] == @pokemon1.level
|
||||||
pbLearnMove(@pokemon1,i[1]) if !noMoves #(pokemon,move,ignoreifknown=true, byTM=false , quick =true)
|
pbLearnMove(@pokemon1, i[1]) if !noMoves #(pokemon,move,ignoreifknown=true, byTM=false , quick =true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
#@pokemon1.ability = pbChooseAbility(@pokemon1,@pokemon2)
|
#@pokemon1.ability = pbChooseAbility(@pokemon1,@pokemon2)
|
||||||
removeItem=false
|
removeItem = false
|
||||||
if @pokemon2.isShiny? || @pokemon1.isShiny?
|
if @pokemon2.isShiny? || @pokemon1.isShiny?
|
||||||
@pokemon1.makeShiny
|
@pokemon1.makeShiny
|
||||||
end
|
end
|
||||||
|
|
||||||
#make it untraded, pour qu'on puisse le unfused après, même si un des 2 était traded
|
#make it untraded, pour qu'on puisse le unfused après, même si un des 2 était traded
|
||||||
@pokemon1.obtainMode = 0
|
@pokemon1.obtain_method = 0
|
||||||
|
|
||||||
@pokemon1.setAbility(pbChooseAbility(@pokemon1,hiddenAbility1,hiddenAbility2))
|
@pokemon1.ability = pbChooseAbility(@pokemon1, hiddenAbility1, hiddenAbility2)
|
||||||
if superSplicer
|
if superSplicer
|
||||||
@pokemon1.setNature(pbChooseNature(@pokemon1.nature,@pokemon2.nature))
|
@pokemon1.nature = pbChooseNature(@pokemon1.nature, @pokemon2.nature)
|
||||||
end
|
end
|
||||||
|
|
||||||
movelist=@pokemon2.moves
|
movelist = @pokemon2.moves
|
||||||
for k in movelist
|
for k in movelist
|
||||||
if k.id != 0
|
if k.id != 0
|
||||||
pbLearnMove(@pokemon1,k.id,true,false,true) if !noMoves
|
pbLearnMove(@pokemon1, k.id, true, false,true) if !noMoves #todo: learn moves faster
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pbSEPlay("Voltorb Flip Point")
|
pbSEPlay("Voltorb Flip Point")
|
||||||
|
|
||||||
@pokemon1.firstmoves=[]
|
#@pokemon1.firstmoves = []
|
||||||
@pokemon1.name=newspeciesname if @pokemon1.name==oldspeciesname
|
@pokemon1.name = newspeciesname if @pokemon1.name == oldspeciesname
|
||||||
|
|
||||||
@pokemon1.level = setPokemonLevel(@pokemon1.level, @pokemon2.level,superSplicer)
|
@pokemon1.level = setPokemonLevel(@pokemon1.level, @pokemon2.level, superSplicer)
|
||||||
@pokemon1.calcStats
|
@pokemon1.calc_stats
|
||||||
@pokemon1.obtainMode = 0
|
@pokemon1.obtain_method = 0
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def setPokemonLevel(pokemon1,pokemon2,superSplicers)
|
def setPokemonLevel(pokemon1, pokemon2, superSplicers)
|
||||||
lv1 = @pokemon1.level
|
lv1 = @pokemon1.level
|
||||||
lv2 = @pokemon2.level
|
lv2 = @pokemon2.level
|
||||||
if superSplicers
|
if superSplicers
|
||||||
@@ -769,9 +750,9 @@ def setPokemonLevel(pokemon1,pokemon2,superSplicers)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
if (lv1 >= lv2) then
|
if (lv1 >= lv2) then
|
||||||
return (2*lv1 + lv2)/3
|
return (2 * lv1 + lv2) / 3
|
||||||
else
|
else
|
||||||
return (2*lv2 + lv1)/3
|
return (2 * lv2 + lv1) / 3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return lv1
|
return lv1
|
||||||
@@ -785,10 +766,7 @@ def pbShowPokedex(species)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def pbChooseAbility(poke, hidden1 = false, hidden2 = false)
|
||||||
|
|
||||||
|
|
||||||
def pbChooseAbility(poke,hidden1=false,hidden2=false)
|
|
||||||
abilityList = poke.getAbilityList
|
abilityList = poke.getAbilityList
|
||||||
#pas sur de l'ordre pour les hidden (3 et 4) peut-être a inverser
|
#pas sur de l'ordre pour les hidden (3 et 4) peut-être a inverser
|
||||||
#Mais les fusions ont tjrs 4 hidden abilities
|
#Mais les fusions ont tjrs 4 hidden abilities
|
||||||
@@ -797,39 +775,39 @@ def pbChooseAbility(poke,hidden1=false,hidden2=false)
|
|||||||
#4. hidden du poke 1
|
#4. hidden du poke 1
|
||||||
#5. hidden du poke2
|
#5. hidden du poke2
|
||||||
|
|
||||||
|
abID1 = hidden1 ? abilityList[4][0] : abilityList[0][0]
|
||||||
|
abID2 = hidden2 ? abilityList[5][0] : abilityList[1][0]
|
||||||
|
|
||||||
abID1 = hidden1 ? abilityList[0][4] : abilityList[0][0]
|
|
||||||
abID2 = hidden2 ? abilityList[0][5] : abilityList[0][1]
|
|
||||||
|
|
||||||
if (Kernel.pbMessage("Choose an ability.",[_INTL("{1}",PBAbilities.getName(abID1)),_INTL("{1}",PBAbilities.getName(abID2))],2))==0
|
ability1_name = GameData::Ability.get(abID1).name
|
||||||
|
ability2_name = GameData::Ability.get(abID2).name
|
||||||
|
|
||||||
|
if (Kernel.pbMessage("Choose an ability.", [_INTL("{1}", ability1_name), _INTL("{1}", ability2_name)], 2)) == 0
|
||||||
return hidden1 ? 4 : 0
|
return hidden1 ? 4 : 0
|
||||||
end
|
end
|
||||||
return hidden2 ? 5 : 1
|
return hidden2 ? 5 : 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
#pas au point. renvoie tjrs la mm nature
|
#pas au point. renvoie tjrs la mm nature
|
||||||
def pbChooseNature(species1,species2)
|
def pbChooseNature(species1, species2)
|
||||||
nature1 = PBNatures.getName(species1)
|
nature1 = PBNatures.getName(species1)
|
||||||
nature2 = PBNatures.getName(species2)
|
nature2 = PBNatures.getName(species2)
|
||||||
if (Kernel.pbMessage("Choose a nature.",[_INTL("{1}",nature1),_INTL("{1}",nature2)],2))==0
|
if (Kernel.pbMessage("Choose a nature.", [_INTL("{1}", nature1), _INTL("{1}", nature2)], 2)) == 0
|
||||||
return PBNatures.getNum(nature1)
|
return PBNatures.getNum(nature1)
|
||||||
else
|
else
|
||||||
return PBNatures.getNum(nature2)
|
return PBNatures.getNum(nature2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#EDITED FOR GEN2
|
#EDITED FOR GEN2
|
||||||
def fixEvolutionOverflow(retB,retH,oldSpecies)
|
def fixEvolutionOverflow(retB, retH, oldSpecies)
|
||||||
#raise Exception.new("retB: " + retB.to_s + " retH: " + retH.to_s)
|
#raise Exception.new("retB: " + retB.to_s + " retH: " + retH.to_s)
|
||||||
|
|
||||||
oldBody = getBasePokemonID(oldSpecies)
|
oldBody = getBasePokemonID(oldSpecies)
|
||||||
oldHead = getBasePokemonID(oldSpecies,false)
|
oldHead = getBasePokemonID(oldSpecies, false)
|
||||||
return -1 if isNegativeOrNull(retB) && isNegativeOrNull(retH)
|
return -1 if isNegativeOrNull(retB) && isNegativeOrNull(retH)
|
||||||
return oldBody*NB_POKEMON+retH if isNegativeOrNull(retB) #only head evolves
|
return oldBody * NB_POKEMON + retH if isNegativeOrNull(retB) #only head evolves
|
||||||
return retB*NB_POKEMON + oldHead if isNegativeOrNull(retH) #only body evolves
|
return retB * NB_POKEMON + oldHead if isNegativeOrNull(retH) #only body evolves
|
||||||
return retB*NB_POKEMON+retH #both evolve
|
return retB * NB_POKEMON + retH #both evolve
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user