mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
157 lines
4.7 KiB
Ruby
157 lines
4.7 KiB
Ruby
class FusionQuiz
|
|
|
|
#
|
|
# Possible difficulties:
|
|
#
|
|
# :REGULAR -> 4 options choice
|
|
#
|
|
# :ADVANCED -> List of all pokemon
|
|
#
|
|
def initialize(difficulty = :REGULAR)
|
|
@sprites = {}
|
|
|
|
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
|
|
|
@difficulty = difficulty
|
|
@customs_list = getCustomSpeciesList(true, false)
|
|
@selected_pokemon = nil
|
|
@head_id = nil
|
|
@body_id = nil
|
|
@choices = []
|
|
|
|
@score = 0
|
|
end
|
|
|
|
def start_quiz_round()
|
|
pick_random_pokemon()
|
|
show_fusion_picture(true)
|
|
|
|
#QUESTION 1
|
|
new_question(500, "What Pokémon is this fusion's body?",@body_id,true)
|
|
pbMessage("Next question!")
|
|
new_question(500,"What Pokémon is this fusion's head?", @head_id,true)
|
|
@viewport.dispose
|
|
|
|
show_fusion_picture(false )
|
|
#QUESTION 1
|
|
new_question(200, "What Pokémon is this fusion's body?",@body_id,true)
|
|
pbMessage("Next question!")
|
|
new_question(200,"What Pokémon is this fusion's head?", @head_id,true)
|
|
@viewport.dispose
|
|
|
|
end
|
|
|
|
|
|
def new_question(points_value,question, answer_id, should_generate_new_choices)
|
|
answer_name = getPokemon(answer_id).real_name
|
|
answered_correctly = give_answer(question,answer_id,should_generate_new_choices)
|
|
award_points(points_value) if answered_correctly
|
|
question_answer_followup_dialog(answered_correctly,answer_name,points_value,true)
|
|
end
|
|
|
|
|
|
|
|
def award_points(nb_points)
|
|
@score += nb_points
|
|
end
|
|
|
|
def question_answer_followup_dialog(answered_correctly,correct_answer, points_awarded_if_win, other_chance_later=false)
|
|
pbMessage("And the correct answer was...")
|
|
pbMessage("...")
|
|
pbMessage(_INTL("{1}!",correct_answer))
|
|
if answered_correctly
|
|
pbMessage("That's a correct answer!")
|
|
pbMessage(_INTL("You're awarded {1} points your answer. Your current score is {2}",points_awarded_if_win,@score.to_s))
|
|
else
|
|
pbMessage("Unfortunately, you didn't get the answer right. ")
|
|
pbMessage("But you'll get another chance later!") if other_chance_later
|
|
end
|
|
end
|
|
|
|
|
|
def show_fusion_picture(obscured = false)
|
|
picturePath = get_fusion_sprite_path(@head_id, @body_id)
|
|
bitmap = AnimatedBitmap.new(picturePath)
|
|
bitmap.scale_bitmap(Settings::FRONTSPRITE_SCALE)
|
|
previewwindow = PictureWindow.new(bitmap)
|
|
previewwindow.y = 30
|
|
previewwindow.x = 100
|
|
previewwindow.z = 100000
|
|
if obscured
|
|
previewwindow.picture.pbSetColor(255, 255, 255, 200)
|
|
end
|
|
end
|
|
|
|
def pick_random_pokemon(save_in_variable = 1)
|
|
random_pokemon = getRandomCustomFusionForIntro(true, @customs_list)
|
|
@head_id = random_pokemon[0]
|
|
@body_id = random_pokemon[1]
|
|
@selected_pokemon = getSpeciesIdForFusion(@head_id, @body_id)
|
|
pbSet(save_in_variable, @selected_pokemon)
|
|
end
|
|
|
|
def give_answer(prompt_message,answer_id,should_generate_new_choices)
|
|
question_answered=false
|
|
answer_pokemon_name = getPokemon(answer_id).real_name
|
|
|
|
while !question_answered
|
|
if @difficulty == :ADVANCED
|
|
player_answer = prompt_pick_answer_advanced(prompt_message,answer_id)
|
|
else
|
|
player_answer = prompt_pick_answer_regular(prompt_message,answer_id,should_generate_new_choices)
|
|
end
|
|
confirmed = pbMessage("Is that your final answer?",["Yes","No"])
|
|
if confirmed==0
|
|
question_answered=true
|
|
end
|
|
end
|
|
return player_answer == answer_pokemon_name
|
|
end
|
|
|
|
def get_random_pokemon_from_same_egg_group(pokemon,previous_choices)
|
|
egg_groups = getPokemonEggGroups(pokemon)
|
|
while true
|
|
new_pokemon = rand(NB_POKEMON+1)
|
|
new_pokemon_egg_groups = getPokemonEggGroups(new_pokemon)
|
|
if (egg_groups & new_pokemon_egg_groups).any? && !previous_choices.include?(new_pokemon)
|
|
return new_pokemon
|
|
end
|
|
end
|
|
end
|
|
|
|
def prompt_pick_answer_regular(prompt_message,real_answer,should_new_choices)
|
|
commands = should_new_choices ? generate_new_choices(real_answer) : @choices
|
|
chosen = pbMessage(prompt_message,commands)
|
|
#chosen = pbChooseList(commands, 0, nil, 1)
|
|
return commands[chosen]
|
|
end
|
|
|
|
def generate_new_choices(real_answer)
|
|
choices = []
|
|
choices << real_answer
|
|
choices << get_random_pokemon_from_same_egg_group(real_answer,choices)
|
|
choices << get_random_pokemon_from_same_egg_group(real_answer,choices)
|
|
choices << get_random_pokemon_from_same_egg_group(real_answer,choices)
|
|
|
|
commands = []
|
|
choices.each do |dex_num, i|
|
|
species = getPokemon(dex_num)
|
|
commands.push(species.real_name)
|
|
end
|
|
@choices = commands
|
|
return commands.shuffle
|
|
end
|
|
|
|
|
|
def prompt_pick_answer_advanced(prompt_message,answer)
|
|
choices.each do |dex_num, i|
|
|
species = getPokemon(dex_num)
|
|
commands.push([i, species.real_name, species.real_name])
|
|
end
|
|
pbMessage(prompt_message)
|
|
#chosen = pbChooseList(commands, 0, nil, 1)
|
|
|
|
end
|
|
|
|
end
|