StCooler
Mayst thou thy peace discover.
- 9,792
- Posts
- 5
- Years
- Seen yesterday
Pokémon Legends Arceus content
Gen 8 project for V18
Hi all,
I added some content of Pokémon Legends: Arceus to my game, so I thought I would share the code.
This add-on implements the code for Drowsy / Frostbite (the new statuses), as well as the new moves, new forms and new Pokémons.
First warnings:
- This is an addition to the Gen 8 project for Essentials v18.
- This is NOT for Essentials v18 or v18.1 alone.
- This is NOT for Essentials v19. For Essentials v19.1, check this thread instead.
Second warnings:
- I wasn't planning to release this script, so I had to "extract" my edits for you. I may have forgotten some parts. If you feel something is missing and/or something doesn't work as expected, let me know ^^
- I haven't played (and don't plan to play) to Pokémon Legends: Arceus, so maybe my messages for drowsiness/frostbite are not correct. Please tell me the right messages if you want.
- Some edits are not "official". I don't like moves that increase evasion so I ignored this boost. Also, I considered that every move that thaws the user, also removes its frostbite. And Electric moves all remove drowsiness. You can comment the corresponding code if you don't like it.
- This plugin is almost purely about scripting. For the sprites of the new Pokémons/forms, please follow this thread on Smogon.
- The new moves + the new common animations for statuses are now on the todo-list for my animation project.
There is a script edit part. As always, be careful with it, make backups before anything.
Part 1 - PBS additions
Add the following data to the corresponding PBS file:
- pokemon.txt
Version 1: only the new Pokémons with their official movesets.
Version 2: only the new Pokémons, with extended movesets (I tried to give more moves to the Pokémons).
Version 3: all new data in Pokémon Legends: Arceus. You have to edit the PBS yourself. - pokemonforms.txt
Version 1: only the new forms with their official movesets.
Version 2: only the new forms, with extended movesets (I tried to give more moves to the Pokémons).
Version 3: all new data in Pokémon Legends: Arceus. You have to edit the PBS yourself. - moves.txt
Strong Style. Be careful with the ids of the moves. Note: all moves are in Strong Style.
My own balance. Most moves are in Standard style, and some moves are in Strong Style (Raging Fury, Wave Crash, Chloroblast, Headlong Rush, maybe I'm missing some). This is an attempt at balancing the new moves, most of them are too powerful compared to the existing ones.
For pokemon.txt and pokemonforms.txt, if you don't know what to do, use Version 2 of both. These files give a larger moveset to each Pokémon.
Also, the tutor moves are added as a "TutorMoves" list. You should add them to the tm.txt file. Yes, this is tedious.
Part 2 - Status graphics
Download the attached ZIP file and merge the Graphics folder with your Graphics folder, and replace the files.
Part 3 - New script
Install this script, above Main, and below ZUD and Following Pokémon, if you use any of them.
https://pastebin.com/7qCtWZLj
Part 4 - Script edits.
Ow lawd, they coming.
Step 1 is, as always: make a backup!
Spoiler:
In the file PBStatuses:
Spoiler:
Below the line:
Code:
FROZEN = 5
Code:
FROSTBITE = 6 # Pokémon Legends: Arceus
DROWSY = 7 # Pokémon Legends: Arceus
Code:
def self.getName(id)
Code:
_INTL("frozen")
Code:
_INTL("frozen"),
_INTL("frostbitten"), # Pokémon Legends: Arceus
_INTL("drowsy") # Pokémon Legends: Arceus
In the file Battle_Statuses:
Spoiler:
In the function
Code:
def pbCanInflictStatus?(newStatus,user,showMessages,move=nil,ignoreStatus=false)
Code:
when PBStatuses::FROZEN; msg = _INTL("{1} is already frozen solid!",pbThis)
Code:
when PBStatuses::FROSTBITE; msg = _INTL("{1} is already frostbitten!",pbThis)
when PBStatuses::DROWSY; msg = _INTL("{1} is already drowsy!",pbThis)
Code:
when PBStatuses::FROZEN
hasImmuneType |= pbHasType?(:ICE)
Code:
when PBStatuses::FROSTBITE
hasImmuneType |= pbHasType?(:ICE)
hasImmuneType |= pbHasType?(:FIRE)
Code:
when PBStatuses::FROZEN; msg = _INTL("{1} cannot be frozen solid!",pbThis)
Code:
when PBStatuses::FROSTBITE; msg = _INTL("{1} cannot be frostbitten!",pbThis)
when PBStatuses::DROWSY; msg = _INTL("{1} resists drowsiness!",pbThis)
Code:
when PBStatuses::FROZEN
msg = _INTL("{1} cannot be frozen solid because of {2}'s {3}!",
pbThis,immAlly.pbThis(true),immAlly.abilityName)
Code:
when PBStatuses::FROSTBITE
msg = _INTL("{1} cannot be frostbitten because of {2}'s {3}!",
pbThis,immAlly.pbThis(true),immAlly.abilityName)
when PBStatuses::DROWSY
msg = _INTL("{1} resists drowsiness because of {2}'s {3}!",
pbThis,immAlly.pbThis(true),immAlly.abilityName)
Code:
when PBStatuses::FROZEN; msg = _INTL("{1}'s {2} prevents freezing!",pbThis,abilityName)
Code:
when PBStatuses::FROSTBITE; msg = _INTL("{1}'s {2} prevents frostbites!",pbThis,abilityName)
when PBStatuses::DROWSY; msg = _INTL("{1}'s {2} prevents drowsiness!",pbThis,abilityName)
In the function
Code:
def pbCanSynchronizeStatus?(newStatus,target)
Code:
when PBStatuses::FROZEN
hasImmuneType |= pbHasType?(:ICE)
Code:
when PBStatuses::FROSTBITE
hasImmuneType |= pbHasType?(:ICE)
hasImmuneType |= pbHasType?(:FIRE)
In the function:
Code:
def pbInflictStatus(newStatus,newStatusCount=0,msg=nil,user=nil)
Code:
when PBStatuses::FROZEN
@battle.pbCommonAnimation("Frozen",self)
msg = _INTL("{1} was frozen solid!",pbThis) if !msg || msg==""
Code:
when PBStatuses::FROSTBITE
@battle.pbCommonAnimation("Frostbitten",self)
msg = _INTL("{1} was frostbitten!",pbThis) if !msg || msg==""
when PBStatuses::DROWSY
@battle.pbCommonAnimation("Drowsy",self)
msg = _INTL("{1} is drowsy!",pbThis) if !msg || msg==""
In the function:
Code:
def pbContinueStatus
Code:
when PBStatuses::FROZEN
anim = "Frozen"; msg = _INTL("{1} is frozen solid!",pbThis)
Code:
when PBStatuses::FROSTBITE
anim = "Frostbitten"; msg = _INTL("{1} was hurt by its frostbite!",pbThis)
when PBStatuses::DROWSY
anim = "Drowsy"; msg = _INTL("{1} is drowsy.",pbThis)
In the function:
Code:
def pbCureStatus(showMessages=true)
Code:
when PBStatuses::FROZEN; @battle.pbDisplay(_INTL("{1} thawed out!",pbThis))
Code:
when PBStatuses::FROSTBITE; @battle.pbDisplay(_INTL("{1}'s frostbite was healed!",pbThis))
when PBStatuses::DROWSY; @battle.pbDisplay(_INTL("{1} is no longer drowsy!",pbThis))
In the file Battler_UseMove:
Spoiler:
In the function:
Code:
def pbUseMove(choice,specialUsage=false)
Code:
# Self-thawing due to the move
if user.status==PBStatuses::FROZEN && move.thawsUser?
user.pbCureStatus(false)
@battle.pbDisplay(_INTL("{1} melted the ice!",user.pbThis))
end
Code:
# Pokémon Legends Arceus: Cures Drowsy.
if user.status==PBStatuses::DROWSY && move.undrowsesUser?
user.pbCureStatus(false)
@battle.pbDisplay(_INTL("{1} is longer drowsy!",user.pbThis))
end
# Pokémon Legends Arceus: Cures Frostbite.
if user.status==PBStatuses::FROSTBITE && move.thawsUser?
user.pbCureStatus(false)
@battle.pbDisplay(_INTL("{1} cures its frostbite!",user.pbThis))
end
In the file Battler_UseMove_SuccessChecks:
Spoiler:
Below the following code:
Code:
# Paralysis
if @status==PBStatuses::PARALYSIS
if @battle.pbRandom(100)<25
pbContinueStatus
@lastMoveFailed = true
return false
end
end
Code:
# Drowsy
if @status==PBStatuses::DROWSY
if @battle.pbRandom(100)<25
pbContinueStatus
@lastMoveFailed = true
return false
end
end
In the file Move_Usage_Calculations:
Spoiler:
Below the follow code:
Code:
# Burn
if user.status==PBStatuses::BURN && physicalMove? && damageReducedByBurn? &&
!user.hasActiveAbility?(:GUTS)
multipliers[FINAL_DMG_MULT] /= 2
end
Code:
# Frostbite (Pokémon Legends: Arceus)
if user.status==PBStatuses::FROSTBITE && specialMove? && damageReducedByFrostbite? &&
!user.hasActiveAbility?(:GUTS)
multipliers[FINAL_DMG_MULT] /= 2
end
# Drowsy (Pokémon Legends: Arceus)
if target.status==PBStatuses::DROWSY
multipliers[FINAL_DMG_MULT] /= 1.25 # I don't know the exact value.
end
Code:
if @battle.pbWeather == PBWeather::Sandstorm
if target.pbHasType?(:ROCK) && specialMove? && @function!="122" # Psyshock
multipliers[DEF_MULT] *= 1.5
end
end
Code:
# Pokémon Legends: Arceus
if user.effects[PBEffects::VictoryDance]
multipliers[FINAL_DMG_MULT] *= 1.5
end
In the file Battle_Phase_EndOfRound:
Spoiler:
Below this piece of code:
Code:
# Damage from burn
priority.each do |b|
next if b.status!=PBStatuses::BURN || !b.takesIndirectDamage?
oldHP = b.hp
dmg = (NEWEST_BATTLE_MECHANICS) ? b.totalhp/16 : b.totalhp/8
dmg = (dmg/2.0).round if b.hasActiveAbility?(:HEATPROOF)
b.pbContinueStatus { b.pbReduceHP(dmg,false) }
b.pbItemHPHealCheck
b.pbAbilitiesOnDamageTaken(oldHP)
b.pbFaint if b.fainted?
end
Code:
# Damage from frostbite (Pokémon Legends: Arceus)
priority.each do |b|
next if b.status!=PBStatuses::FROSTBITE || !b.takesIndirectDamage?
oldHP = b.hp
dmg = (NEWEST_BATTLE_MECHANICS) ? b.totalhp/16 : b.totalhp/8
dmg = (dmg/2.0).round if b.hasActiveAbility?(:MAGMAARMOR)
b.pbContinueStatus { b.pbReduceHP(dmg,false) }
b.pbItemHPHealCheck
b.pbAbilitiesOnDamageTaken(oldHP)
b.pbFaint if b.fainted?
end
Code:
# Damage from Hyper Mode (Shadow Pokémon)
Code:
# Pokémon Legends: Arceus
# Stone Axe Splinters
priority.each do |b|
b.effects[PBEffects::StoneAxe] -= 1
next if b.effects[PBEffects::StoneAxe] < 0
next if !b.takesIndirectDamage?
pbCommonAnimation("StoneAxe",b)
oldHP = b.hp
b.pbReduceHP(b.totalhp/8)
pbDisplay(_INTL("The stone axe splinters hurt {1}!",b.pbThis(true)))
b.pbItemHPHealCheck
b.pbAbilitiesOnDamageTaken(oldHP)
b.pbFaint if b.fainted?
end
# Ceaseless Edge Splinters
priority.each do |b|
b.effects[PBEffects::CeaselessEdge] -= 1
next if b.effects[PBEffects::CeaselessEdge] < 0
next if !b.takesIndirectDamage?
pbCommonAnimation("CeaselessEdge",b)
oldHP = b.hp
b.pbReduceHP(b.totalhp/8)
pbDisplay(_INTL("The ceaseless edge splinters hurt {1}!",b.pbThis(true)))
b.pbItemHPHealCheck
b.pbAbilitiesOnDamageTaken(oldHP)
b.pbFaint if b.fainted?
end
In the file AI_Move_EffectScores:
Spoiler:
Find the code for:
Code:
when "018"
Code:
when PBStatuses::BURN, PBStatuses::PARALYSIS, PBStatuses::FROSTBITE
Code:
when PBStatuses::BURN, PBStatuses::PARALYSIS, PBStatuses::FROSTBITE, PBStatuses::DROWSY
Code:
when "07D"
Code:
score -= 20 if target.status==PBStatuses::SLEEP && # Will cure status
target.statusCount>1
Code:
score -= 20 if (target.status==PBStatuses::SLEEP ||
target.status==PBStatuses::DROWSY) && # Will cure status
target.statusCount>1
Code:
when "110"
Code:
score += 80 if user.pbOwnSide.effects[PBEffects::StealthRock]
Code:
score += 80 if user.effects[PBEffects::StoneAxe] > -1
score += 80 if user.effects[PBEffects::CeaselessEdge] > -1
Code:
when "15A"
Code:
if target.opposes?(user)
score -= 40 if target.status==PBStatuses::BURN
else
score += 40 if target.status==PBStatuses::BURN
end
Code:
if target.opposes?(user)
score -= 40 if target.status==PBStatuses::BURN || target.status==PBStatuses::FROSTBITE
else
score += 40 if target.status==PBStatuses::BURN || target.status==PBStatuses::FROSTBITE
end
If you use the Gen 8 project for v18.1 (which I do), the last line in the AI should be:
Code:
#---------------------------------------------------------------------------
when "198" # Eerie Spell
score -= 40
Code:
#---------------------------------------------------------------------------
when "200" # Dire Claw
score += 30 if target.status==PBStatuses::NONE
#---------------------------------------------------------------------------
when "201" # Power Shift
if skill>=PBTrainerAI.mediumSkill
aatk = pbRoughStat(user,PBStats::ATTACK,skill)
adef = pbRoughStat(user,PBStats::DEFENSE,skill)
asatk = pbRoughStat(user,PBStats::SPATK,skill)
asdef = pbRoughStat(user,PBStats::SPDEF,skill)
if (aatk==adef && asatk==asdef) ||
user.effects[PBEffects::PowerShift] # No flip-flopping
score -= 90
elsif adef>aatk || asdef>asatk # Prefer a higher Attack
score += 30
else
score -= 30
end
else
score -= 30
end
#---------------------------------------------------------------------------
when "202" # Stone Axe
score += 60 if target.effects[PBEffects::StoneAxe] < 0
#---------------------------------------------------------------------------
when "203" # Ceaseless Edge
score += 60 if target.effects[PBEffects::CeaselessEdge] < 0
#---------------------------------------------------------------------------
when "204" # Springtide Storm
if move.statusMove?
if user.statStageAtMax?(PBStats::DEFENSE)
score -= 90
else
score += 40 if user.turnCount==0
score -= user.stages[PBStats::DEFENSE]*20
end
else
score += 10 if user.turnCount==0
score += 20 if user.stages[PBStats::DEFENSE]<0
end
#---------------------------------------------------------------------------
when "205" # Mystical Power
if skill>=PBTrainerAI.mediumSkill
aatk = pbRoughStat(user,PBStats::ATTACK,skill)
adef = pbRoughStat(user,PBStats::DEFENSE,skill)
asatk = pbRoughStat(user,PBStats::SPATK,skill)
asdef = pbRoughStat(user,PBStats::SPDEF,skill)
if aatk + asatk >= adef + asdef
if user.statStageAtMax?(PBStats::ATTACK) && user.statStageAtMax?(PBStats::SPATK)
score -= 90
else
score += 40 if user.turnCount==0
score -= user.stages[PBStats::ATTACK]*20
score -= user.stages[PBStats::SPATK]*20
end
else
if user.statStageAtMax?(PBStats::DEFENSE) && user.statStageAtMax?(PBStats::SPDEF)
score -= 90
else
score += 40 if user.turnCount==0
score -= user.stages[PBStats::DEFENSE]*20
score -= user.stages[PBStats::SPDEF]*20
end
end
else
score -= 30
end
#---------------------------------------------------------------------------
when "206" # Wave Crash
score -= 20
#---------------------------------------------------------------------------
when "207" # Chloroblast
score -= 20
#---------------------------------------------------------------------------
when "208" # Victory Dance
if skill>=PBTrainerAI.mediumSkill
if user.statStageAtMax?(PBStats::DEFENSE) && user.statStageAtMax?(PBStats::SPDEF) &&
user.statStageAtMax?(PBStats::ATTACK) && user.statStageAtMax?(PBStats::SPATK)
score -= 90
else
score += 40 if user.turnCount==0 || !user.effects[PBEffects::VictoryDance]
score -= user.stages[PBStats::DEFENSE]*10
score -= user.stages[PBStats::SPDEF]*10
score -= user.stages[PBStats::ATTACK]*10
score -= user.stages[PBStats::SPATK]*10
end
else
score -= 30
end
#---------------------------------------------------------------------------
when "209" # Barb Barrage
score += 30 if target.status != PBStatuses::NONE
#---------------------------------------------------------------------------
when "210" # Bitter Malice
score += 30 if target.status != PBStatuses::NONE
#---------------------------------------------------------------------------
when "211" # Infernal Parade
score += 30 if target.status != PBStatuses::NONE
#---------------------------------------------------------------------------
when "212" # Triple Arrows
score += 30 if user.effects[PBEffects::FocusEnergy]<2
score += user.stages[PBStats::DEFENSE]*10
#---------------------------------------------------------------------------
when "213" # Bleakwind Storm
if target.pbCanFrostbite?(user,false)
score += 30
if skill>=PBTrainerAI.highSkill
score -= 40 if target.hasActiveAbility?([:GUTS,:MARVELSCALE,:QUICKFEET])
end
else
if skill>=PBTrainerAI.mediumSkill
score -= 90 if move.statusMove?
end
end
#---------------------------------------------------------------------------
when "214" # Lunar Blessing
if user.hp==user.totalhp || (skill>=PBTrainerAI.mediumSkill && !user.canHeal?)
score -= 90
else
score += 50
score -= user.hp*100/user.totalhp
end
case user.status
when PBStatuses::POISON
score += 40
if skill>=PBTrainerAI.mediumSkill
if user.hp<user.totalhp/8
score += 60
elsif skill>=PBTrainerAI.highSkill &&
user.hp<(user.effects[PBEffects::Toxic]+1)*user.totalhp/16
score += 60
end
end
when PBStatuses::BURN, PBStatuses::PARALYSIS, PBStatuses::FROSTBITE, PBStatuses::DROWSY
score += 40
else
score -= 90
end
#---------------------------------------------------------------------------
when "215" # Take Heart
if skill>=PBTrainerAI.mediumSkill
if user.statStageAtMax?(PBStats::DEFENSE) && user.statStageAtMax?(PBStats::SPDEF) &&
user.statStageAtMax?(PBStats::ATTACK) && user.statStageAtMax?(PBStats::SPATK)
score -= 90
else
score += 40 if user.turnCount==0
score -= user.stages[PBStats::DEFENSE]*10
score -= user.stages[PBStats::SPDEF]*10
score -= user.stages[PBStats::ATTACK]*10
score -= user.stages[PBStats::SPATK]*10
end
else
score -= 30
end
case user.status
when PBStatuses::POISON
score += 40
if skill>=PBTrainerAI.mediumSkill
if user.hp<user.totalhp/8
score += 60
elsif skill>=PBTrainerAI.highSkill &&
user.hp<(user.effects[PBEffects::Toxic]+1)*user.totalhp/16
score += 60
end
end
when PBStatuses::BURN, PBStatuses::PARALYSIS, PBStatuses::FROSTBITE, PBStatuses::DROWSY
score += 40
else
score -= 90
end
In the file AI_Move_Utilities:
Spoiler:
Find the code:
# Burn
if skill>=PBTrainerAI.highSkill
if user.status==PBStatuses::BURN && move.physicalMove?(type) &&
!user.hasActiveAbility?(:GUTS) &&
!(NEWEST_BATTLE_MECHANICS && move.function=="07E") # Facade
multipliers[FINAL_DMG_MULT] /= 2
end
end
and below it, paste this:
# Frostbite (Pokémon Legends: Arceus)
if skill>=PBTrainerAI.highSkill
if user.status==PBStatuses::FROSTBITE && move.specialMove?(type) &&
!user.hasActiveAbility?(:GUTS) &&
!(NEWEST_BATTLE_MECHANICS && move.function=="07E") # Facade
multipliers[FINAL_DMG_MULT] /= 2
end
end
In the file PokeBattle_BattlePalace:
Spoiler:
In the function:
Code:
def pbEnemyShouldWithdraw?(idxBattler)
Code:
case thispkmn.status
when PBStatuses::SLEEP, PBStatuses::FROZEN
factor += 20
when PBStatuses::POISON, PBStatuses::BURN
factor += 10
when PBStatuses::PARALYSIS
factor += 15
end
Code:
case thispkmn.status
when PBStatuses::SLEEP, PBStatuses::FROZEN
factor += 20
when PBStatuses::POISON, PBStatuses::BURN, PBStatuses::FROSTBITE
factor += 10
when PBStatuses::PARALYSIS, PBStatuses::DROWSY
factor += 15
end
In the file Debug_Pokemon:
Spoiler:
In the function
Code:
def pbPokemonDebugActions(command,pkmn,pkmnid,heldpoke=nil,settingUpBattle=false)
Code:
cmd = pbShowCommands(_INTL("Set {1}'s status.",pkmn.name),[
_INTL("[Cure]"),
_INTL("Sleep"),
_INTL("Poison"),
_INTL("Burn"),
_INTL("Paralysis"),
_INTL("Frozen")
],cmd)
Code:
cmd = pbShowCommands(_INTL("Set {1}'s status.",pkmn.name),[
_INTL("[Cure]"),
_INTL("Sleep"),
_INTL("Poison"),
_INTL("Burn"),
_INTL("Paralysis"),
_INTL("Frozen"),
_INTL("Frostbite"),
_INTL("Drowsy")
],cmd)
In the file PokeBattle_SceneElements:
Spoiler:
In the class:
Code:
class PokemonDataBox < SpriteWrapper
Code:
def refresh
Code:
s = 6 if s==PBStatuses::POISON && @battler.statusCount>0 # Badly poisoned
Code:
s = 8 if s==PBStatuses::POISON && @battler.statusCount>0 # Badly poisoned
In the file PScreen_Party:
Spoiler:
In the class:
Code:
class PokemonPartyPanel < SpriteWrapper
Code:
def refresh
Code:
# Draw status
status = -1
status = 6 if @pokemon.pokerusStage==1
status = @pokemon.status-1 if @pokemon.status>0
status = 5 if @pokemon.hp<=0
Code:
# Draw status
status = -1
status = 8 if @pokemon.pokerusStage==1
status = @pokemon.status-1 if @pokemon.status>0
status = 7 if @pokemon.hp<=0
In the file PScreen_Summary:
Spoiler:
In the class:
Code:
class PokemonSummary_Scene
Code:
def drawPage(page)
Code:
# Show status/fainted/Pokérus infected icon
status = -1
status = 6 if @pokemon.pokerusStage==1
status = @pokemon.status-1 if @pokemon.status>0
status = 5 if @pokemon.hp==0
Code:
# Show status/fainted/Pokérus infected icon
status = -1
status = 8 if @pokemon.pokerusStage==1
status = @pokemon.status-1 if @pokemon.status>0
status = 7 if @pokemon.hp==0
If you use ZUD for Essentials v18.1 (a wonderful script):
In the file ZUD_03_Battle_Display:
Spoiler:
In the class:
Code:
class PokemonDataBox < SpriteWrapper
Code:
def refresh
Code:
s = 6 if s==PBStatuses::POISON && @battler.statusCount>0 # Badly poisoned
Code:
s = 8 if s==PBStatuses::POISON && @battler.statusCount>0 # Badly poisoned
Repeat this change in the file ZUD_MaxRaid_01_Battle if you use it.
In the file ZUD_MaxRaid_01_Battle:
Spoiler:
In the function:
Code:
def pbCheer(idxBattler)
Code:
when cheerHealParty
if battler==partyPriority.last
eachSameSideBattler(battler) do |b|
if b.hp < b.totalhp
b.pbRecoverHP(b.totalhp.floor)
pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
end
status = b.status
b.pbCureStatus(false)
case status
when PBStatuses::BURN
pbDisplay(_INTL("{1} was healed of its burn!",b.pbThis))
when PBStatuses::POISON
pbDisplay(_INTL("{1} was cured of its poison!",b.pbThis))
when PBStatuses::PARALYSIS
pbDisplay(_INTL("{1} was cured of its paralysis!",b.pbThis))
when PBStatuses::SLEEP
pbDisplay(_INTL("{1} woke up!",b.pbThis))
when PBStatuses::FROZEN
pbDisplay(_INTL("{1} thawed out!",b.pbThis))
end
end
end
Code:
when cheerHealParty
if battler==partyPriority.last
eachSameSideBattler(battler) do |b|
if b.hp < b.totalhp
b.pbRecoverHP(b.totalhp.floor)
pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
end
status = b.status
b.pbCureStatus(false)
case status
when PBStatuses::BURN
pbDisplay(_INTL("{1} was healed of its burn!",b.pbThis))
when PBStatuses::POISON
pbDisplay(_INTL("{1} was cured of its poison!",b.pbThis))
when PBStatuses::PARALYSIS
pbDisplay(_INTL("{1} was cured of its paralysis!",b.pbThis))
when PBStatuses::SLEEP
pbDisplay(_INTL("{1} woke up!",b.pbThis))
when PBStatuses::FROZEN
pbDisplay(_INTL("{1} thawed out!",b.pbThis))
when PBStatuses::FROSTBITE
pbDisplay(_INTL("{1} was healed of its frostbite!",b.pbThis))
when PBStatuses::DROWSY
pbDisplay(_INTL("{1} was pull out of drowsiness!",b.pbThis))
end
end
end
If you use Following Pokémon script for v18.1:
In the file Follower_Config:
Spoiler:
Find this code:
Code:
Events.OnTalkToFollower += proc {|pkmn,x,y,randomVal|
# Special Dialogue when statused
case pkmn.status
when PBStatuses::POISON
$scene.spriteset.addUserAnimation(Emo_Poison,x,y)
pbWait(120)
pbMessage(_INTL("{1} is shivering with the effects of being poisoned.",pkmn.name))
when PBStatuses::BURN
$scene.spriteset.addUserAnimation(Emo_Hate,x,y)
pbWait(70)
pbMessage(_INTL("{1}'s burn looks painful.",pkmn.name))
when PBStatuses::FROZEN
$scene.spriteset.addUserAnimation(Emo_Normal,x,y)
pbWait(100)
pbMessage(_INTL("{1} seems very cold. It's frozen solid!",pkmn.name))
when PBStatuses::SLEEP
$scene.spriteset.addUserAnimation(Emo_Normal, x, y)
pbWait(100)
pbMessage(_INTL("{1} seems really tired.",pkmn.name))
when PBStatuses::PARALYSIS
$scene.spriteset.addUserAnimation(Emo_Normal,x,y)
pbWait(100)
pbMessage(_INTL("{1} is standing still and twitching.",pkmn.name))
end
next true if pkmn.status != PBStatuses::NONE
}
Code:
pbMessage(_INTL("{1} is standing still and twitching.",pkmn.name))
Code:
when PBStatuses::FROSTBITE
$scene.spriteset.addUserAnimation(Emo_Hate,x,y)
pbWait(70)
pbMessage(_INTL("{1}'s frostbite looks painful.",pkmn.name))
when PBStatuses::DROWSY
$scene.spriteset.addUserAnimation(Emo_Normal, x, y)
pbWait(100)
pbMessage(_INTL("{1} is drowsy...",pkmn.name))
Still in the Following Pokémon plugin:
In the file Follower_Main:
Spoiler:
In the class:
Code:
class DependentEventSprites
Code:
def update
Code:
when PBStatuses::SLEEP
@sprites[i].tone.set(@sprites[i].tone.red+SLEEPTONE[0],@sprites[i].tone.green+SLEEPTONE[1],@sprites[i].tone.blue+SLEEPTONE[2],@sprites[i].tone.gray+SLEEPTONE[3])
Code:
when PBStatuses::FROSTBITE
@sprites[i].tone.set(@sprites[i].tone.red+FREEZETONE[0],@sprites[i].tone.green+FREEZETONE[1],@sprites[i].tone.blue+FREEZETONE[2],@sprites[i].tone.gray+FREEZETONE[3])
when PBStatuses::DROWSY
@sprites[i].tone.set(@sprites[i].tone.red+SLEEPTONE[0],@sprites[i].tone.green+SLEEPTONE[1],@sprites[i].tone.blue+SLEEPTONE[2],@sprites[i].tone.gray+SLEEPTONE[3])
As always, I don't care about credits, but I was alone on this.Credits
Attachments
Last edited: