I wasn't aware if such a project already existed so I started coding the new stuff on my own today. Luckily I found this before I got too far.
I noticed in your Wind Rider (the part tied to Tailwind move usage) it checks all battlers, in my research I saw it was only the battlers from own side, I could be wrong, I did it like this:
#===============================================================================
# For 4 rounds, doubles the Speed of all battlers on the user's side. (Tailwind)
#===============================================================================
class Battle::Move::StartUserSideDoubleSpeed < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user, targets)
if user.pbOwnSide.effects[PBEffects::Tailwind] > 0
@battle.pbDisplay(_INTL("But it failed!"))
return true
end
return false
end
def pbEffectGeneral(user)
user.pbOwnSide.effects[PBEffects::Tailwind] = 4
@battle.pbDisplay(_INTL("The Tailwind blew from behind {1}!", user.pbTeam(true)))
#windrider
@battle.allSameSideBattlers(user.index).each do |b|
next if !b.hasActiveAbility?(:WINDRIDER)
if b.pbCanRaiseStatStage?(:ATTACK, b)
b.pbRaiseStatStageByAbility(:ATTACK, 1, b)
end
end
#windrider
end
end
Rocky Payload is a copy of a lot of abilities:
Battle::AbilityEffects::DamageCalcFromUser.add(:ROCKYPAYLOAD,
proc { |ability, user, target, move, mults, baseDmg, type|
if type == :ROCK
mults[:attack_multiplier] *= 1.5
end
}
)
in # DamageCalcFromUser handlers
And Costar:
Battle::AbilityEffects::OnSwitchIn.add(:COSTAR,
proc { |ability, battler, battle, switch_in|
abilityProc = false
statChange = false
stats = [:ATTACK,:DEFENSE,:SPEED,:SPECIAL_ATTACK,:SPECIAL_DEFENSE]
battle.allSameSideBattlers(battler.index).each do |b|
next if b == battler
stats.each do |s|
statChange = true if b.stages[s] != 0
end
if statChange && !abilityProc
abilityProc = true
stats.each do |s|
if b.stages[s] > 0
battler.pbRaiseStatStageByAbility(s, b.stages[s], battler) if
battler.pbCanRaiseStatStage?(s, battler)
elsif b.stages[s] < 0
battler.pbLowerStatStageByAbility(s, b.stages[s], battler, true) if
battler.pbCanLowerStatStage?(s, battler)
end
end
end
end
}
)
in # OnSwitchIn handlers (I'm unsure how this would work in a triple battle since triple battles don't exist in SV, that extra check is to copy the 1st ally only and avoid proccing twice in a triple battle)
#===============================================================================
# Seed Sower
#===============================================================================
Battle::AbilityEffects::OnBeingHit.add(:SEEDSOWER,
proc { |ability, user, target, move, battle|
next if battle.field.terrain == :Grassy
battle.pbShowAbilitySplash(target)
battle.pbStartTerrain(target, :Grassy)
}
)
If you have a discord or smth hmu so we can coordenate better, I have some free time atm and I'd like to contribute.