mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-07-22 15:47:00 +00:00
Update 6.8
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
def openChallengeApp
|
||||
pbFadeOutIn {
|
||||
scene = PokemonChallenges_Scene.new
|
||||
screen = PokemonChallenges_Screen.new(scene)
|
||||
screen.pbStartScreen
|
||||
# scene.pbRefresh
|
||||
}
|
||||
end
|
||||
|
||||
class Player
|
||||
|
||||
def add_challenge(challenge_id)
|
||||
@challenges = {} unless @challenges
|
||||
challenge_template = CHALLENGES[challenge_id]
|
||||
return unless challenge_template
|
||||
|
||||
reward = pick_challenge_reward(challenge_template.category)
|
||||
@challenges[challenge_id] = PlayerChallenge.new(challenge_id, reward)
|
||||
end
|
||||
|
||||
def complete_challenge(challenge_id)
|
||||
@challenges = {} unless @challenges
|
||||
if @challenges.has_key?(challenge_id)
|
||||
challenge = @challenges[challenge_id]
|
||||
challenge.completed = true
|
||||
@challenges[challenge_id] = challenge
|
||||
$Trainer.nb_completed_challenges = 0 unless $Trainer.nb_completed_challenges
|
||||
$Trainer.nb_completed_challenges += 1
|
||||
pbSEPlay("challenge_complete")
|
||||
end
|
||||
end
|
||||
|
||||
def completed_challenge?(challenge_id)
|
||||
if @challenges.has_key?(challenge_id)
|
||||
return @challenges[challenge_id]
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
def select_random_challenge(category)
|
||||
candidates = CHALLENGES.select { |_k, v| v.category == category }.keys
|
||||
return nil if candidates.empty?
|
||||
return candidates.sample
|
||||
end
|
||||
|
||||
def refresh_challenges()
|
||||
@challenges = {} unless @challenges
|
||||
@challenges.each do |challenge_id, challenge|
|
||||
unless challenge.completed
|
||||
remove_challenge(challenge.id)
|
||||
end
|
||||
end
|
||||
categories = [:encounter, :battle, :catch, :fusion]
|
||||
categories.each do |category|
|
||||
unclaimed_challenges = listPlayerChallengesOfCategory(category)
|
||||
if unclaimed_challenges.empty?
|
||||
challenge_id = select_random_challenge(category)
|
||||
add_challenge(challenge_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def listPlayerChallengesOfCategory(category)
|
||||
challenges_list = []
|
||||
@challenges.each do |challenge_id, challenge|
|
||||
if challenge.category == category
|
||||
challenges_list << challenge.id
|
||||
end
|
||||
end
|
||||
return challenges_list
|
||||
end
|
||||
|
||||
def remove_challenge(challenge_id)
|
||||
@challenges.delete(challenge_id)
|
||||
end
|
||||
|
||||
def clear_all_challenges
|
||||
@challenges = {} unless @challenges
|
||||
for id in @challenges
|
||||
remove_challenge(id)
|
||||
end
|
||||
end
|
||||
|
||||
def pick_challenge_reward(category)
|
||||
tier = rand(3) == 0 ? :TIER2 : :TIER1
|
||||
items_list = []
|
||||
case category
|
||||
when :encounter
|
||||
items_list = tier == :TIER1 ? CHALLENGE_ENCOUNTER_REWARDS_TIER1 : CHALLENGE_ENCOUNTER_REWARDS_TIER2
|
||||
when :battle
|
||||
items_list = tier == :TIER1 ? CHALLENGE_BATTLE_REWARDS_TIER1 : CHALLENGE_BATTLE_REWARDS_TIER2
|
||||
when :catch
|
||||
items_list = tier == :TIER1 ? CHALLENGE_CATCH_REWARDS_TIER1 : CHALLENGE_CATCH_REWARDS_TIER2
|
||||
when :fusion
|
||||
items_list = tier == :TIER1 ? CHALLENGE_FUSE_REWARDS_TIER1 : CHALLENGE_FUSE_REWARDS_TIER2
|
||||
end
|
||||
item = items_list.sample
|
||||
if tier == :TIER1
|
||||
quantity = rand(1..3)
|
||||
else
|
||||
quantity = 1
|
||||
end
|
||||
reward = []
|
||||
for i in 1..quantity
|
||||
reward << item
|
||||
end
|
||||
return reward
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class PlayerChallenge
|
||||
attr_reader :id
|
||||
attr_reader :item_reward
|
||||
attr_reader :template
|
||||
attr_accessor :completed
|
||||
|
||||
def initialize(id, item_reward = [])
|
||||
@id = id
|
||||
@item_reward = item_reward
|
||||
@template = CHALLENGES[id]
|
||||
@completed = false
|
||||
end
|
||||
|
||||
def description
|
||||
return _INTL(@template.description)
|
||||
end
|
||||
|
||||
def category
|
||||
return _INTL(@template.category)
|
||||
end
|
||||
|
||||
def money_reward
|
||||
return _INTL(@template.money_reward)
|
||||
end
|
||||
end
|
||||
|
||||
class ChallengeTemplate
|
||||
attr_reader :id, :description, :category, :money_reward
|
||||
|
||||
def initialize(id, description, category, money_reward)
|
||||
@id = id
|
||||
@description = description
|
||||
@money_reward = money_reward
|
||||
@category = category
|
||||
end
|
||||
end
|
||||
|
||||
CHALLENGES = {}
|
||||
|
||||
def define_challenge(id, description:, category:, money_reward:)
|
||||
CHALLENGES[id] = ChallengeTemplate.new(id, description, category, money_reward)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user