Guess that fusion quiz (not events)

This commit is contained in:
infinitefusion
2023-07-01 11:40:00 -04:00
parent 77789c8278
commit 88c6bcc9d5
17 changed files with 18803 additions and 15702 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,7 @@ class FusionQuiz
@sprites = {} @sprites = {}
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height) @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@previewwindow=nil
@difficulty = difficulty @difficulty = difficulty
@customs_list = getCustomSpeciesList(true, false) @customs_list = getCustomSpeciesList(true, false)
@selected_pokemon = nil @selected_pokemon = nil
@@ -22,31 +22,91 @@ class FusionQuiz
@score = 0 @score = 0
end end
def start_quiz_round() def start_quiz(nb_rounds=3)
round_multiplier = 1
round_multiplier_increase = 0.1
for i in 1..nb_rounds
if i == nb_rounds
pbMessage(_INTL("Get ready! Here comes the final round!"))
elsif i ==1
pbMessage(_INTL("Get ready! Here comes the first round!"))
else
pbMessage(_INTL("Get ready! Here comes round {1}!",i))
end
start_quiz_new_round(round_multiplier)
rounds_left = nb_rounds-i
if rounds_left >0
pbMessage(_INTL("That's it for round {1}. You've accumulated {2} points so far.",i,@score))
prompt_next_round = pbMessage(_INTL("Are you ready to move on to the next round?",i),["Yes","No"])
if prompt_next_round != 0
prompt_quit = pbMessage(_INTL("You still have {1} rounds to go. You'll only keep your points if you finish all {2} rounds. Do you really want to quit now?",rounds_left,nb_rounds),["Yes","No"])
if prompt_quit
pbMessage(_INTL("Well that's the show, folks. Make sure to tune in next time for some more Guess The Fusion!"))
return
end
end
round_multiplier += round_multiplier_increase
else
pbMessage(_INTL("That concludes our quiz! You've accumulated {1} points in total.",@score))
pbMessage("Thanks for playing with us today!")
end
end
end
def start_quiz_new_round(round_multiplier=1)
base_points_q1=300
base_points_q1_redemption=100
base_points_q2=400
base_points_q2_redemption=100
pick_random_pokemon() pick_random_pokemon()
show_fusion_picture(true) show_fusion_picture(true)
correct_answers=[]
#QUESTION 1 #OBSCURED
new_question(500, "What Pokémon is this fusion's body?",@body_id,true) correct_answers << new_question(base_points_q1*round_multiplier, "Which Pokémon is this fusion's body?",@body_id,true,true )
pbMessage("Next question!") pbMessage("Next question!")
new_question(500,"What Pokémon is this fusion's head?", @head_id,true) correct_answers << new_question(base_points_q2*round_multiplier,"Which Pokémon is this fusion's head?", @head_id,true,true )
@viewport.dispose @viewport.dispose
show_fusion_picture(false ) show_fusion_picture(false )
#QUESTION 1 #NON-OBSCURED
new_question(200, "What Pokémon is this fusion's body?",@body_id,true) if !correct_answers[0] || !correct_answers[1]
pbMessage("Okay, now's your chance to make up for the points you missed!")
if !correct_answers[0] #1st question redemption
new_question(base_points_q1_redemption, "Which Pokémon is this fusion's body?",@body_id,true,false )
if !correct_answers[1]
pbMessage("Next question!") pbMessage("Next question!")
new_question(200,"What Pokémon is this fusion's head?", @head_id,true) end
end
if !correct_answers[1] #2nd question redemption
new_question(base_points_q2_redemption,"Which Pokémon is this fusion's head?", @head_id,true,false )
end
else
pbMessage("A perfect round! Here's what this Pokémon looked like!")
end
hide_fusion_picture()
@viewport.dispose @viewport.dispose
end end
def new_question(points_value,question, answer_id, should_generate_new_choices) def new_question(points_value,question, answer_id, should_generate_new_choices, other_chance_later)
points_value=points_value.to_i
answer_name = getPokemon(answer_id).real_name answer_name = getPokemon(answer_id).real_name
answered_correctly = give_answer(question,answer_id,should_generate_new_choices) answered_correctly = give_answer(question,answer_id,should_generate_new_choices)
award_points(points_value) if answered_correctly award_points(points_value) if answered_correctly
question_answer_followup_dialog(answered_correctly,answer_name,points_value,true) question_answer_followup_dialog(answered_correctly,answer_name,points_value,other_chance_later)
return answered_correctly
end end
@@ -56,32 +116,40 @@ class FusionQuiz
end end
def question_answer_followup_dialog(answered_correctly,correct_answer, points_awarded_if_win, other_chance_later=false) def question_answer_followup_dialog(answered_correctly,correct_answer, points_awarded_if_win, other_chance_later=false)
if !other_chance_later
pbMessage("And the correct answer was...") pbMessage("And the correct answer was...")
pbMessage("...") pbMessage("...")
pbMessage(_INTL("{1}!",correct_answer)) pbMessage(_INTL("{1}!",correct_answer))
end
if answered_correctly if answered_correctly
pbMessage("That's a correct answer!") 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)) pbMessage(_INTL("You're awarded {1} points for your answer. Your current score is {2}",points_awarded_if_win,@score.to_s))
else else
pbMessage("Unfortunately, you didn't get the answer right. ") pbMessage("Unfortunately, that was a wong answer.")
pbMessage("But you'll get another chance later!") if other_chance_later pbMessage("But you'll get another chance!") if other_chance_later
end end
end end
def show_fusion_picture(obscured = false) def show_fusion_picture(obscured = false)
hide_fusion_picture()
picturePath = get_fusion_sprite_path(@head_id, @body_id) picturePath = get_fusion_sprite_path(@head_id, @body_id)
bitmap = AnimatedBitmap.new(picturePath) bitmap = AnimatedBitmap.new(picturePath)
bitmap.scale_bitmap(Settings::FRONTSPRITE_SCALE) bitmap.scale_bitmap(Settings::FRONTSPRITE_SCALE)
previewwindow = PictureWindow.new(bitmap) @previewwindow = PictureWindow.new(bitmap)
previewwindow.y = 30 @previewwindow.y = 30
previewwindow.x = 100 @previewwindow.x = 100
previewwindow.z = 100000 @previewwindow.z = 100000
if obscured if obscured
previewwindow.picture.pbSetColor(255, 255, 255, 200) @previewwindow.picture.pbSetColor(255, 255, 255, 200)
end end
end end
def hide_fusion_picture()
@previewwindow.dispose if @previewwindow
end
def pick_random_pokemon(save_in_variable = 1) def pick_random_pokemon(save_in_variable = 1)
random_pokemon = getRandomCustomFusionForIntro(true, @customs_list) random_pokemon = getRandomCustomFusionForIntro(true, @customs_list)
@head_id = random_pokemon[0] @head_id = random_pokemon[0]
@@ -100,7 +168,7 @@ class FusionQuiz
else else
player_answer = prompt_pick_answer_regular(prompt_message,answer_id,should_generate_new_choices) player_answer = prompt_pick_answer_regular(prompt_message,answer_id,should_generate_new_choices)
end end
confirmed = pbMessage("Is that your final answer?",["Yes","No"]) confirmed = pbMessage("Is this your final answer?",["Yes","No"])
if confirmed==0 if confirmed==0
question_answered=true question_answered=true
end end
@@ -111,7 +179,7 @@ class FusionQuiz
def get_random_pokemon_from_same_egg_group(pokemon,previous_choices) def get_random_pokemon_from_same_egg_group(pokemon,previous_choices)
egg_groups = getPokemonEggGroups(pokemon) egg_groups = getPokemonEggGroups(pokemon)
while true while true
new_pokemon = rand(NB_POKEMON+1) new_pokemon = rand(1,NB_POKEMON)+1
new_pokemon_egg_groups = getPokemonEggGroups(new_pokemon) new_pokemon_egg_groups = getPokemonEggGroups(new_pokemon)
if (egg_groups & new_pokemon_egg_groups).any? && !previous_choices.include?(new_pokemon) if (egg_groups & new_pokemon_egg_groups).any? && !previous_choices.include?(new_pokemon)
return new_pokemon return new_pokemon
@@ -150,7 +218,10 @@ class FusionQuiz
end end
pbMessage(prompt_message) pbMessage(prompt_message)
#chosen = pbChooseList(commands, 0, nil, 1) #chosen = pbChooseList(commands, 0, nil, 1)
end
def get_score
return @score
end end
end end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.