Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.
Hi, i want to create a new status effect, Bleeding. I thought it would be cool because is a status that makes sense for a lot of attacks of many types to be able to get. And would be cool for lots of new attacks like "Thorn whip" a physical grass move that has Bleeding as a possible effect.
The idea is that the status will work VERY similar to burn, you lost hp at the end of every turn but the difference is that it cuts down the defense stats. Also, this status can not affect ghost types (i don't think they can bleed right?)
I looked at the script of the burn status but i suck at scripting really. If someone is interested and likes the idea i would love to see how to put it in the game with its own status graphics and all.
This is actually something I've just started playing around with. I'm stuck on my current status effect so I'll give you a hand with yours. What you want is really straight forward so it shouldn't be any trouble.
First thing you wanna do is go into PBStatuses. This tells the game there is a condition. Just add the bleed stuff thats in red(don't miss the comma after the second frozen):
rescue Exception
if $!.is_a?(SystemExit) || "#{$!.class}"=="Reset"
raise $!
end
end
Next, we go to PokeBattle_BattlerEffects. Here we want to find: Generalised status displays. This is just general stuff the game will say. Add what's in red.
Spoiler:
#===============================================================================
# Generalised status displays
#===============================================================================
def pbContinueStatus(showAnim=true)
case self.status
when PBStatuses::SLEEP
@battle.pbCommonAnimation("Sleep",self,nil)
@battle.pbDisplay(_INTL("{1} is fast asleep.",pbThis))
when PBStatuses::POISON
@battle.pbCommonAnimation("Poison",self,nil)
@battle.pbDisplay(_INTL("{1} was hurt by poison!",pbThis))
when PBStatuses::BURN
@battle.pbCommonAnimation("Burn",self,nil)
@battle.pbDisplay(_INTL("{1} was hurt by its burn!",pbThis))
when PBStatuses::PARALYSIS
@battle.pbCommonAnimation("Paralysis",self,nil)
@battle.pbDisplay(_INTL("{1} is paralyzed! It can't move!",pbThis))
when PBStatuses::FROZEN
@battle.pbCommonAnimation("Frozen",self,nil)
@battle.pbDisplay(_INTL("{1} is frozen solid!",pbThis)) when PBStatuses::BLEED
@battle.pbCommonAnimation("Bleed",self,nil)
@battle.pbDisplay(_INTL("{1} is bleeding!",pbThis))
end
end
def pbCureStatus(showMessages=true)
oldstatus=self.status
self.status=0
self.statusCount=0
if showMessages
case oldstatus
when PBStatuses::SLEEP
@battle.pbDisplay(_INTL("{1} woke up!",pbThis))
when PBStatuses::POISON
when PBStatuses::BURN
when PBStatuses::PARALYSIS
@battle.pbDisplay(_INTL("{1} was cured of paralysis.",pbThis))
when PBStatuses::FROZEN
@battle.pbDisplay(_INTL("{1} thawed out!",pbThis)) when PBStatuses::BLEED
@battle.pbDisplay(_INTL("{1} stopped bleeding!",pbThis))
end
end
PBDebug.log("[Status change] #{pbThis}'s status was cured")
end
Next, you wanna go to bottom and paste this. This going to tell the game who can get bleed.
Spoiler:
#===============================================================================
# Bleed
#===============================================================================
def pbCanBleed?(attacker,showMessages,move=nil)
return false if fainted?
if self.status==PBStatuses::BLEED
@battle.pbDisplay(_INTL("{1} is already bleeding.",pbThis)) if showMessages
return false
end
if self.status!=0 ||
(@effects[PBEffects::Substitute]>0 && (!move || !move.ignoresSubstitute?(attacker)))
@battle.pbDisplay(_INTL("But it failed!")) if showMessages
return false
end
if pbHasType?(:GHOST) && !hasWorkingItem(:RINGTARGET)
@battle.pbDisplay(_INTL("It doesn't affect {1}...",pbThis(true))) if showMessages
return false
end
if !attacker || !attacker.hasMoldBreaker
if (hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)) ||
(hasWorkingAbility(:LEAFGUARD) && (@battle.pbWeather==PBWeather::SUNNYDAY ||
@battle.pbWeather==PBWeather::HARSHSUN))
@battle.pbDisplay(_INTL("{1}'s {2} prevents bleeding!",pbThis,PBAbilities.getName(self.ability))) if showMessages
return false
end
if pbPartner.hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)
abilityname=PBAbilities.getName(pbPartner.ability)
@battle.pbDisplay(_INTL("{1}'s partner's {2} prevents bleeding!",pbThis,abilityname)) if showMessages
return false
end
end
if pbOwnSide.effects[PBEffects::Safeguard]>0 &&
(!attacker || !attacker.hasWorkingAbility(:INFILTRATOR))
@battle.pbDisplay(_INTL("{1}'s team is protected by Safeguard!",pbThis)) if showMessages
return false
end
return true
end
def pbCanBleedSynchronize?(opponent)
return false if fainted?
return false if self.status!=0
if pbHasType?(:FIRE) && !hasWorkingItem(:RINGTARGET)
@battle.pbDisplay(_INTL("{1}'s {2} had no effect on {3}!",
opponent.pbThis,PBAbilities.getName(opponent.ability),pbThis(true)))
return false
end
if (hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)) ||
(hasWorkingAbility(:LEAFGUARD) && (@battle.pbWeather==PBWeather::SUNNYDAY ||
@battle.pbWeather==PBWeather::HARSHSUN))
@battle.pbDisplay(_INTL("{1}'s {2} prevents {3}'s {4} from working!",
pbThis,PBAbilities.getName(self.ability),
opponent.pbThis(true),PBAbilities.getName(opponent.ability)))
return false
end
if pbPartner.hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)
@battle.pbDisplay(_INTL("{1}'s {2} prevents {3}'s {4} from working!",
pbPartner.pbThis,PBAbilities.getName(pbPartner.ability),
opponent.pbThis(true),PBAbilities.getName(opponent.ability)))
return false
end
return true
end
def pbBleed(attacker=nil,msg=nil)
self.status=PBStatuses::BLEED
self.statusCount=0
@battle.pbCommonAnimation("Bleed",self,nil)
if msg && msg!=""
@battle.pbDisplay(msg)
else
@battle.pbDisplay(_INTL("{1} was wounded!",pbThis))
end
PBDebug.log("[Status change] #{pbThis} was wounded")
if attacker && self.index!=attacker.index &&
self.hasWorkingAbility(:SYNCHRONIZE)
if attacker.pbCanBurnSynchronize?(self)
PBDebug.log("[Ability triggered] #{self.pbThis}'s Synchronize")
attacker.pbBurn(nil,_INTL("{1}'s {2} wounded {3}!",self.pbThis,
PBAbilities.getName(self.ability),attacker.pbThis(true)))
end
end
end
Next we are going drop the defense of wounded pokemon. Go to PokeBattle_Move and right under this:
Spoiler:
if !attacker.hasMoldBreaker
if opponent.hasWorkingAbility(:MARVELSCALE) &&
opponent.status>0 && pbIsPhysical?(type)
defmult=(defmult*1.5).round
end
Put this:
Spoiler:
if opponent.status=PBStatuses::BLEED
defmult=(defmult/2).round
end
Our next step is in PokeBattle_Battle. We are telling Shedskin, Hydration, and Healer that they can heal this condition. If you don't want it to do that then don't add the things in red.
Spoiler:
if (i.hasWorkingAbility(:SHEDSKIN) && pbRandom(10)<3) ||
(i.hasWorkingAbility(:HYDRATION) && (pbWeather==PBWeather::RAINDANCE ||
pbWeather==PBWeather::HEAVYRAIN))
if i.status>0
PBDebug.log("[Ability triggered] #{i.pbThis}'s #{PBAbilities.getName(i.ability)}")
s=i.status
i.pbCureStatus(false)
case s
when PBStatuses::SLEEP
pbDisplay(_INTL("{1}'s {2} cured its sleep problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::POISON
pbDisplay(_INTL("{1}'s {2} cured its poison problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::BURN
pbDisplay(_INTL("{1}'s {2} healed its burn!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::PARALYSIS
pbDisplay(_INTL("{1}'s {2} cured its paralysis!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::FROZEN
pbDisplay(_INTL("{1}'s {2} thawed it out!",i.pbThis,PBAbilities.getName(i.ability))) when PBStatuses::BLEED
pbDisplay(_INTL("{1}'s {2} healed its wound!",i.pbThis,PBAbilities.getName(i.ability)))
end
end
end
# Healer
if i.hasWorkingAbility(:HEALER) && pbRandom(10)<3
partner=i.pbPartner
if partner && partner.status>0
PBDebug.log("[Ability triggered] #{i.pbThis}'s #{PBAbilities.getName(i.ability)}")
s=partner.status
partner.pbCureStatus(false)
case s
when PBStatuses::SLEEP
pbDisplay(_INTL("{1}'s {2} cured its partner's sleep problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::POISON
pbDisplay(_INTL("{1}'s {2} cured its partner's poison problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::BURN
pbDisplay(_INTL("{1}'s {2} healed its partner's burn!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::PARALYSIS
pbDisplay(_INTL("{1}'s {2} cured its partner's paralysis!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::FROZEN
pbDisplay(_INTL("{1}'s {2} thawed its partner out!",i.pbThis,PBAbilities.getName(i.ability))) when PBStatuses::BLEED
pbDisplay(_INTL("{1}'s {2} healed its partner's wound!",i.pbThis,PBAbilities.getName(i.ability)))
end
end
end
end
Just a little further down is this piece of code
Spoiler:
# Burn
if i.status==PBStatuses::BURN
if !i.hasWorkingAbility(:MAGICGUARD)
PBDebug.log("[Status damage] #{i.pbThis} took damage from burn")
if i.hasWorkingAbility(:HEATPROOF)
PBDebug.log("[Ability triggered] #{i.pbThis}'s Heatproof")
i.pbReduceHP((i.totalhp/16).floor)
else
i.pbReduceHP((i.totalhp/8).floor)
end
i.pbContinueStatus
end
Right underneath put this:
Spoiler:
# Bleed
if i.status==PBStatuses::BLEED
if !i.hasWorkingAbility(:MAGICGUARD)
PBDebug.log("[Status damage] #{i.pbThis} is bleeding and lost some health! ")
i.pbReduceHP((i.totalhp/8).floor)
end
end
i.pbContinueStatus
end
Final bit of code here. This goes at the bottom of PokeBattle_MoveEffects. Make sure to change the XXX to an unused function code.
Spoiler:
################################################################################
# Gives the target Bleed.
################################################################################
class PokeBattle_Move_XXX < PokeBattle_Move
def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
return super(attacker,opponent,hitnum,alltargets,showanimation) if pbIsDamaging?
return -1 if !opponent.pbCanBleed?(attacker,true,self)
pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation)
opponent.pbBleed(attacker)
return 0
end
def pbAdditionalEffect(attacker,opponent)
return if opponent.damagestate.substitute
if opponent.pbCanBleed?(attacker,false,self)
opponent.pbBleed(attacker)
end
end
end
Now just add this to the bottom of your Moves.pbs. Change YYY to an unused Id. And change XXX to whatever the you changed the XXX from above to.
Spoiler:
YYY,THORNWHIP,Thorn Whip,XXX,60,GRASS,Physical,100,20,30,00,0,abcef,"The user strikes the target with a whip covered in thorns. It may cause bleeding."
And for the cherry on top. The graphics. Put statuses into the folder Graphics/Pictures. Put icon_statues into Graphics/Pictures/Battle
That should be everything. Let me know if something didn't work. (It's 100% likely as I am still a newb)
This is actually something I've just started playing around with. I'm stuck on my current status effect so I'll give you a hand with yours. What you want is really straight forward so it shouldn't be any trouble.
First thing you wanna do is go into PBStatuses. This tells the game there is a condition. Just add the bleed stuff thats in red(don't miss the comma after the second frozen):
rescue Exception
if $!.is_a?(SystemExit) || "#{$!.class}"=="Reset"
raise $!
end
end
Next, we go to PokeBattle_BattlerEffects. Here we want to find: Generalised status displays. This is just general stuff the game will say. Add what's in red.
Spoiler:
#===============================================================================
# Generalised status displays
#===============================================================================
def pbContinueStatus(showAnim=true)
case self.status
when PBStatuses::SLEEP
@battle.pbCommonAnimation("Sleep",self,nil)
@battle.pbDisplay(_INTL("{1} is fast asleep.",pbThis))
when PBStatuses::POISON
@battle.pbCommonAnimation("Poison",self,nil)
@battle.pbDisplay(_INTL("{1} was hurt by poison!",pbThis))
when PBStatuses::BURN
@battle.pbCommonAnimation("Burn",self,nil)
@battle.pbDisplay(_INTL("{1} was hurt by its burn!",pbThis))
when PBStatuses::PARALYSIS
@battle.pbCommonAnimation("Paralysis",self,nil)
@battle.pbDisplay(_INTL("{1} is paralyzed! It can't move!",pbThis))
when PBStatuses::FROZEN
@battle.pbCommonAnimation("Frozen",self,nil)
@battle.pbDisplay(_INTL("{1} is frozen solid!",pbThis)) when PBStatuses::BLEED
@battle.pbCommonAnimation("Bleed",self,nil)
@battle.pbDisplay(_INTL("{1} is bleeding!",pbThis))
end
end
def pbCureStatus(showMessages=true)
oldstatus=self.status
self.status=0
self.statusCount=0
if showMessages
case oldstatus
when PBStatuses::SLEEP
@battle.pbDisplay(_INTL("{1} woke up!",pbThis))
when PBStatuses::POISON
when PBStatuses::BURN
when PBStatuses::PARALYSIS
@battle.pbDisplay(_INTL("{1} was cured of paralysis.",pbThis))
when PBStatuses::FROZEN
@battle.pbDisplay(_INTL("{1} thawed out!",pbThis)) when PBStatuses::BLEED
@battle.pbDisplay(_INTL("{1} stopped bleeding!",pbThis))
end
end
PBDebug.log("[Status change] #{pbThis}'s status was cured")
end
Next, you wanna go to bottom and paste this. This going to tell the game who can get bleed.
Spoiler:
#===============================================================================
# Bleed
#===============================================================================
def pbCanBleed?(attacker,showMessages,move=nil)
return false if fainted?
if self.status==PBStatuses::BLEED
@battle.pbDisplay(_INTL("{1} is already bleeding.",pbThis)) if showMessages
return false
end
if self.status!=0 ||
(@effects[PBEffects::Substitute]>0 && (!move || !move.ignoresSubstitute?(attacker)))
@battle.pbDisplay(_INTL("But it failed!")) if showMessages
return false
end
if pbHasType?(:GHOST) && !hasWorkingItem(:RINGTARGET)
@battle.pbDisplay(_INTL("It doesn't affect {1}...",pbThis(true))) if showMessages
return false
end
if !attacker || !attacker.hasMoldBreaker
if (hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)) ||
(hasWorkingAbility(:LEAFGUARD) && (@battle.pbWeather==PBWeather::SUNNYDAY ||
@battle.pbWeather==PBWeather::HARSHSUN))
@battle.pbDisplay(_INTL("{1}'s {2} prevents bleeding!",pbThis,PBAbilities.getName(self.ability))) if showMessages
return false
end
if pbPartner.hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)
abilityname=PBAbilities.getName(pbPartner.ability)
@battle.pbDisplay(_INTL("{1}'s partner's {2} prevents bleeding!",pbThis,abilityname)) if showMessages
return false
end
end
if pbOwnSide.effects[PBEffects::Safeguard]>0 &&
(!attacker || !attacker.hasWorkingAbility(:INFILTRATOR))
@battle.pbDisplay(_INTL("{1}'s team is protected by Safeguard!",pbThis)) if showMessages
return false
end
return true
end
def pbCanBleedSynchronize?(opponent)
return false if fainted?
return false if self.status!=0
if pbHasType?(:FIRE) && !hasWorkingItem(:RINGTARGET)
@battle.pbDisplay(_INTL("{1}'s {2} had no effect on {3}!",
opponent.pbThis,PBAbilities.getName(opponent.ability),pbThis(true)))
return false
end
if (hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)) ||
(hasWorkingAbility(:LEAFGUARD) && (@battle.pbWeather==PBWeather::SUNNYDAY ||
@battle.pbWeather==PBWeather::HARSHSUN))
@battle.pbDisplay(_INTL("{1}'s {2} prevents {3}'s {4} from working!",
pbThis,PBAbilities.getName(self.ability),
opponent.pbThis(true),PBAbilities.getName(opponent.ability)))
return false
end
if pbPartner.hasWorkingAbility(:FLOWERVEIL) && pbHasType?(:GRASS)
@battle.pbDisplay(_INTL("{1}'s {2} prevents {3}'s {4} from working!",
pbPartner.pbThis,PBAbilities.getName(pbPartner.ability),
opponent.pbThis(true),PBAbilities.getName(opponent.ability)))
return false
end
return true
end
def pbBleed(attacker=nil,msg=nil)
self.status=PBStatuses::BLEED
self.statusCount=0
@battle.pbCommonAnimation("Bleed",self,nil)
if msg && msg!=""
@battle.pbDisplay(msg)
else
@battle.pbDisplay(_INTL("{1} was wounded!",pbThis))
end
PBDebug.log("[Status change] #{pbThis} was wounded")
if attacker && self.index!=attacker.index &&
self.hasWorkingAbility(:SYNCHRONIZE)
if attacker.pbCanBurnSynchronize?(self)
PBDebug.log("[Ability triggered] #{self.pbThis}'s Synchronize")
attacker.pbBurn(nil,_INTL("{1}'s {2} wounded {3}!",self.pbThis,
PBAbilities.getName(self.ability),attacker.pbThis(true)))
end
end
end
Next we are going drop the defense of wounded pokemon. Go to PokeBattle_Move and right under this:
Spoiler:
if !attacker.hasMoldBreaker
if opponent.hasWorkingAbility(:MARVELSCALE) &&
opponent.status>0 && pbIsPhysical?(type)
defmult=(defmult*1.5).round
end
Put this:
Spoiler:
if opponent.status=PBStatuses::BLEED
defmult=(defmult/2).round
end
Our next step is in PokeBattle_Battle. We are telling Shedskin, Hydration, and Healer that they can heal this condition. If you don't want it to do that then don't add the things in red.
Spoiler:
if (i.hasWorkingAbility(:SHEDSKIN) && pbRandom(10)<3) ||
(i.hasWorkingAbility(:HYDRATION) && (pbWeather==PBWeather::RAINDANCE ||
pbWeather==PBWeather::HEAVYRAIN))
if i.status>0
PBDebug.log("[Ability triggered] #{i.pbThis}'s #{PBAbilities.getName(i.ability)}")
s=i.status
i.pbCureStatus(false)
case s
when PBStatuses::SLEEP
pbDisplay(_INTL("{1}'s {2} cured its sleep problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::POISON
pbDisplay(_INTL("{1}'s {2} cured its poison problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::BURN
pbDisplay(_INTL("{1}'s {2} healed its burn!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::PARALYSIS
pbDisplay(_INTL("{1}'s {2} cured its paralysis!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::FROZEN
pbDisplay(_INTL("{1}'s {2} thawed it out!",i.pbThis,PBAbilities.getName(i.ability))) when PBStatuses::BLEED
pbDisplay(_INTL("{1}'s {2} healed its wound!",i.pbThis,PBAbilities.getName(i.ability)))
end
end
end
# Healer
if i.hasWorkingAbility(:HEALER) && pbRandom(10)<3
partner=i.pbPartner
if partner && partner.status>0
PBDebug.log("[Ability triggered] #{i.pbThis}'s #{PBAbilities.getName(i.ability)}")
s=partner.status
partner.pbCureStatus(false)
case s
when PBStatuses::SLEEP
pbDisplay(_INTL("{1}'s {2} cured its partner's sleep problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::POISON
pbDisplay(_INTL("{1}'s {2} cured its partner's poison problem!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::BURN
pbDisplay(_INTL("{1}'s {2} healed its partner's burn!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::PARALYSIS
pbDisplay(_INTL("{1}'s {2} cured its partner's paralysis!",i.pbThis,PBAbilities.getName(i.ability)))
when PBStatuses::FROZEN
pbDisplay(_INTL("{1}'s {2} thawed its partner out!",i.pbThis,PBAbilities.getName(i.ability))) when PBStatuses::BLEED
pbDisplay(_INTL("{1}'s {2} healed its partner's wound!",i.pbThis,PBAbilities.getName(i.ability)))
end
end
end
end
Just a little further down is this piece of code
Spoiler:
# Burn
if i.status==PBStatuses::BURN
if !i.hasWorkingAbility(:MAGICGUARD)
PBDebug.log("[Status damage] #{i.pbThis} took damage from burn")
if i.hasWorkingAbility(:HEATPROOF)
PBDebug.log("[Ability triggered] #{i.pbThis}'s Heatproof")
i.pbReduceHP((i.totalhp/16).floor)
else
i.pbReduceHP((i.totalhp/8).floor)
end
i.pbContinueStatus
end
Right underneath put this:
Spoiler:
# Bleed
if i.status==PBStatuses::BLEED
if !i.hasWorkingAbility(:MAGICGUARD)
PBDebug.log("[Status damage] #{i.pbThis} is bleeding and lost some health! ")
i.pbReduceHP((i.totalhp/8).floor)
end
end
i.pbContinueStatus
end
Final bit of code here. This goes at the bottom of PokeBattle_MoveEffects. Make sure to change the XXX to an unused function code.
Spoiler:
################################################################################
# Gives the target Bleed.
################################################################################
class PokeBattle_Move_XXX < PokeBattle_Move
def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
return super(attacker,opponent,hitnum,alltargets,showanimation) if pbIsDamaging?
return -1 if !opponent.pbCanBleed?(attacker,true,self)
pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation)
opponent.pbBleed(attacker)
return 0
end
def pbAdditionalEffect(attacker,opponent)
return if opponent.damagestate.substitute
if opponent.pbCanBleed?(attacker,false,self)
opponent.pbBleed(attacker)
end
end
end
Now just add this to the bottom of your Moves.pbs. Change YYY to an unused Id. And change XXX to whatever the you changed the XXX from above to.
Spoiler:
YYY,THORNWHIP,Thorn Whip,XXX,60,GRASS,Physical,100,20,30,00,0,abcef,"The user strikes the target with a whip covered in thorns. It may cause bleeding."
And for the cherry on top. The graphics. Put statuses into the folder Graphics/Pictures. Put icon_statues into Graphics/Pictures/Battle
That should be everything. Let me know if something didn't work. (It's 100% likely as I am still a newb)
Tested already. There are some problems.
1) If i edit PokeBattle_Battle y get a syntax error at the last line the las "end" line. If i simply erase that line i get a Name error at line 3438 "undefined local variable or method "priority" for pokemon_battle:Class. I left the Pokebattle_Battle by default to see if i can se the effect at least in the game. And it does, at least the BLD graphic appears.
2) BLD appears when you get hit by ANY attack. Not the status ones
3) The Bleed does not lower the pokemon HP every turn, neither defense.
4) Bleed affects GHOST types.
So basically the BLD graphic appears every time you do a damage-dealing attack, but has no real effect and affects ghost too.
Tested already. There are some problems.
1) If i edit PokeBattle_Battle y get a syntax error at the last line the las "end" line. If i simply erase that line i get a Name error at line 3438 "undefined local variable or method "priority" for pokemon_battle:Class. I left the Pokebattle_Battle by default to see if i can se the effect at least in the game. And it does, at least the BLD graphic appears.
3) The Bleed does not lower the pokemon HP every turn, neither defense.
Well these two are definitely related since the HP loss code comes from a change you're supposed to make in PokeBattle_Battle (the defense drop isn't visible, but you can see that it's applied in PokeBattle_Move). I imagine some or all of the other errors are also the result of misplaced code.
Well these two are definitely related since the HP loss code comes from a change you're supposed to make in PokeBattle_Battle (the defense drop isn't visible, but you can see that it's applied in PokeBattle_Move). I imagine some or all of the other errors are also the result of misplaced code.
I've followed all the steps given. Im using essentials 17.2.
The defense drop not working it's easy to check, i do the same attack before and after the status appear and the damage is the same. So it's not working either
I've followed all the steps given. Im using essentials 17.2.
The defense drop not working it's easy to check, i do the same attack before and after the status appear and the damage is the same. So it's not working either
Great, with this change the status works and i was able to edit PokeBattle_Battle.
The status appears only when it should, and GHOST type is not affected 😁.
The only thing not working (and that gives me the syntax error) is the hp loss every turn. Edit: BUT IT'S SOLVED
I edit because i've solved it 😀. The code for the hp loss has an "end" not needed.
This is the corrected code.
Spoiler:
# Bleed
if i.status==PBStatuses::BLEED
if !i.hasWorkingAbility(:MAGICGUARD)
PBDebug.log("[Status damage] #{i.pbThis} is bleeding and lost some health! ")
i.pbReduceHP((i.totalhp/8).floor)
end
i.pbContinueStatus
end
All seems to be working well now, i must thank you very much both Szmygielski and mgriffin for your help.
Szmygielski your code was almost perfect, just a "=" and "end" that escaped you, but a great work indeed.
I guess you're gonna have to think about the syntax of the changes you're trying to make in there and check that you're actually adding the right number of ends, work out what the error about priority is coming from, etc.
Glad you guys fixed it! Sorry I posted poopy code. I'll be sure to test more thoroughly next time. It should be noted that you two are super excellent!
Glad you guys fixed it! Sorry I posted poopy code. I'll be sure to test more thoroughly next time. It should be noted that you two are super excellent!
Glad you guys fixed it! Sorry I posted poopy code. I'll be sure to test more thoroughly next time. It should be noted that you two are super excellent!
As mgriffin said, your code was almost perfect and a great job. You helped me so quickly it's normal that a word or 2 of code can slip, it would have taken me a lot of time to "Frankenstein that code up" as i have almost no experience. Thank you.
You'll still need to change PScreen_Party to display the graphics properly or it will say Pokemon are fainted when actually just bleeding, around line 368 is where it draws the status, change this
# Draw status
status = -1
status = 6 if @pokemon.pokerusStage==1
status = @pokemon.status-1 if @pokemon.status>0
status = 5 if @pokemon.hp<=0 to this
# Draw status
status = -1
status = 7 if @pokemon.pokerusStage==1
status = @pokemon.status-1 if @pokemon.status>0
status = 6 if @pokemon.hp<=0