class TripleBattle < BattleRule def setRule(battle); battle.setBattleMode("triple"); end end class PokemonRuleSet def hasRegistrableTeam?(list) return false if !list || list.length0 (self.minTeamLength..self.maxTeamLength).each do |x| pbEachCombination(team,x){|comb| if isValid?(comb) return true end } end return false end return true end end class PokemonOnlineRules attr_reader :team_preview attr_reader :ruleset attr_reader :levelAdjustment attr_reader :battlerules attr_reader :rules_hash def initialize @team_preview = 0 @ruleset=ruleset ? ruleset : PokemonRuleSet.new @levelAdjustment=nil @battlerules=[] @rules_hash={:battle=>[],:pokemon=>[], :subset=>[], :team=>[],:level_adjust=>nil} end def team_preview?; return @team_preview>0; end def number return self.ruleset.number end def setNumberRange(minValue,maxValue) self.ruleset.setNumberRange(minValue,maxValue) return self end def setTeamPreview(value) @team_preview = value return self end def adjustLevels(party1,party2) if @levelAdjustment && @levelAdjustment.type==LevelAdjustment::BothTeams return @levelAdjustment.adjustLevels(party1,party2) else return nil end end def unadjustLevels(party1,party2,adjusts) if @levelAdjustment && adjusts && @levelAdjustment.type==LevelAdjustment::BothTeams @levelAdjustment.unadjustLevels(party1,party2,adjusts) end end def addPokemonRule(rule, *args) saved_args = CableClub::apply_args_type_hint(*args) @rules_hash[:pokemon].push([rule,*saved_args]) self.ruleset.addPokemonRule(rule.new(*args)) return self end def addSubsetRule(rule, *args) saved_args = CableClub::apply_args_type_hint(*args) @rules_hash[:subset].push([rule,*saved_args]) self.ruleset.addSubsetRule(rule.new(*args)) return self end def addTeamRule(rule, *args) saved_args = CableClub::apply_args_type_hint(*args) @rules_hash[:team].push([rule,*saved_args]) self.ruleset.addTeamRule(rule.new(*args)) return self end def addBattleRule(rule, *args) saved_args = CableClub::apply_args_type_hint(*args) @rules_hash[:battle].push([rule,*saved_args]) @battlerules.push(rule.new(*args)) return self end def setLevelAdjustment(rule,*args) if rule saved_args = CableClub::apply_args_type_hint(*args) @rules_hash[:level_adjust]=[rule,*saved_args] @levelAdjustment=rule.new(*args) else @rules_hash[:level_adjust]=nil @levelAdjustment=nil end return self end def applyBattleRules(battle) for p in @battlerules p.setRule(battle) end end end