Release 6.9.0

This commit is contained in:
chardub
2026-11-02 11:34:46 -05:00
parent 060726298d
commit ae6e2ebc64
5697 changed files with 131795 additions and 17423 deletions
@@ -48,6 +48,7 @@ class BattledTrainer
attr_accessor :friendship_level
attr_accessor :overworld_sprite
attr_accessor :location_map_id
attr_reader :favorite
@@ -146,8 +147,9 @@ class BattledTrainer
while @friendship_level < thresholds.length && @friendship >= thresholds[@friendship_level]
@friendship_level += 1
trainerClassName = GameData::TrainerType.get(@trainerType).real_name
pbMessage(_INTL("\\C[3]Friendship increased with {1} {2}!", trainerClassName, @trainerName))
trainerClassName = GameData::TrainerType.get(@trainerType).name
trainerName = pbGetMessageFromHash(MessageTypes::TrainerNames, @trainerName)
pbMessage(_INTL("\\C[3]Friendship increased with {1} {2}!", trainerClassName, trainerName))
case @friendship_level
when 1
pbMessage(_INTL("You can now trade with each other!"))
@@ -172,7 +174,7 @@ class BattledTrainer
store_usable_item_chance = 80
chance_to_give_item = 60
@inventory = [] unless @inventory
#Move pokemon held items to inventory
@currentTeam.each do |pokemon|
next unless pokemon.item
@@ -289,8 +291,17 @@ class BattledTrainer
pbMessage(_INTL("Don't say anything... I know you want this."))
obtainClothes(CLOTHES_PSYSHAMAN_F)
end
when :TRIATHLETE_BIKE_M, :TRIATHLETE_BIKE_F
if !hasClothes?(CLOTHES_BIKE)
pbCallBub(2, event.id)
pbMessage(_INTL("The best athletes need the best gear! This should help improve your performance even more."))
obtainClothes(CLOTHES_BIKE)
obtainHat(HAT_BIKE)
end
when :POKEFAN_M, :POKEFAN_F
possible_masks = [HAT_POOCHYENA_MASK, HAT_LOTAD_MASK, HAT_ZIGZAGOON_MASK, HAT_WURMPLE_MASK]
possible_masks = [HAT_POOCHYENA_MASK, HAT_LOTAD_MASK, HAT_ZIGZAGOON_MASK, HAT_WURMPLE_MASK,
HAT_SEEDOT_MASK, HAT_TAILLOW_MASK, HAT_TREECKO_MASK, HAT_MUDKIP_MASK]
unobtained_masks = possible_masks.reject { |hatID| hasHat?(hatID) }
unless unobtained_masks.empty?
pbCallBub(2, event.id)
@@ -427,4 +438,4 @@ class BattledTrainer
end
return list
end
end
end
@@ -127,6 +127,7 @@ def registerBattledTrainer(event_id, mapId, trainerType, trainerName, trainerVer
trainer.setLinkedTrainer(linked_event) if linked_event
trainer.setOverworldSprite(getOverworldSprite(event_id,mapId))
trainer.setLocation(getMapName(mapId))
trainer.location_map_id = mapId
$PokemonGlobal.battledTrainers[key] = trainer
echoln "Registered rematchable trainer #{key}"
return trainer
@@ -54,7 +54,7 @@ TRAINER_REMATCH_SPECIFIC_GIFTS = {
:LADY => [[:LUXURYBALL], [:NUGGET]],
:GENTLEMAN => [[:LUXURYBALL], [:NUGGET]],
:HIKER => [[:TINYMUSHROOM, :REPEL], [:BIGMUSHROOM]],
:HIKER => [[:TINYMUSHROOM, :REPEL, :ESCAPEROPE, :FRESHWATER], [:BIGMUSHROOM]],
:CRUSHGIRL => [[:XSPEED], [:CARBOS]],
:BLACKBELT => [[:XATTACK], [:PROTEIN]],
:NURSE => [[:HEALBALL, :SUPERPOTION], [:FULLRESTORE]],
@@ -65,6 +65,9 @@ TRAINER_REMATCH_SPECIFIC_GIFTS = {
:AROMALADY => [[:PINKNECTAR, :REDNECTAR, :YELLOWNECTAR, :BLUENECTAR], [:LEAFSTONE]],
:TRIATHLETE_BIKE_F => [[:FRESHWATER], [:FRESHWATER]],
:TRIATHLETE_BIKE_M => [[:FRESHWATER], [:FRESHWATER]],
:NINJABOY => [[:SMOKEBALL], [:SMOKEBALL]],
}
def should_find_item(trainer)
@@ -7,7 +7,8 @@ class Trainer
end
def partnerWithTrainer(eventId, mapID, trainer,trainer_key=nil ,common_event=nil)
common_event = COMMON_EVENT_TRAINER_REMATCH_PARTNER if !common_event
Kernel.pbAddDependency2(eventId,trainer.trainerName,common_event)
trainer_key = getRebattledTrainerKey(eventId,mapID) if !trainer_key
Kernel.pbAddDependency2(eventId,trainer_key,common_event)
pbCancelVehicles
originalTrainer = pbLoadTrainer(trainer.trainerType, trainer.trainerName, 0)
Events.onTrainerPartyLoad.trigger(nil, originalTrainer)
@@ -200,16 +200,18 @@ def generateTrainerTradeOffer(trainer)
pbChoosePokemon(1, 2)
else
wanted_types_string = wanted_types.map { |type|
type_name = GameData::Type.get(type).real_name
type_name = GameData::Type.get(type).name
"\\C[1]#{type_name}\\C[0]"
}.join(", ")
trainerClassName = GameData::TrainerType.get(trainer.trainerType).real_name
trainerClassName = GameData::TrainerType.get(trainer.trainerType).name
trainerName = pbGetMessageFromHash(MessageTypes::TrainerNames, trainer.trainerName)
pbMessage(_INTL("{1} {2} is looking for Pokémon of the following type(s):\\n{3}\\nWhich Pokémon do you want to trade?",
trainerClassName, trainer.trainerName, wanted_types_string))
trainerClassName, trainerName, wanted_types_string))
pbChoosePokemon(1, 2,
proc { |pokemon|
pokemon.hasOneOfTheseTypes?(wanted_types)
pokemon.hasOneOfTheseTypes?(wanted_types) &&
!pokemon.egg?
})
end
chosen_index = pbGet(1)
@@ -217,15 +219,15 @@ def generateTrainerTradeOffer(trainer)
chosen_pokemon = $Trainer.party[chosen_index]
offered_pokemon = offerPokemonForTrade(chosen_pokemon, trainer.currentTeam, trainer.trainerType, trainer.favorite_type)
if !offered_pokemon
pbMessage(_INTL("{1} {2} does not want to trade...", trainerClassName, trainer.trainerName))
pbMessage(_INTL("{1} {2} does not want to trade...", trainerClassName, trainerName))
return trainer
end
pif_sprite = BattleSpriteLoader.new.get_pif_sprite_from_species(offered_pokemon.species)
message = _INTL("{1} {2} is offering {3} (Level {4}) for your {5}.", trainerClassName, trainer.trainerName, offered_pokemon.name, offered_pokemon.level, chosen_pokemon.name)
message = _INTL("{1} {2} is offering {3} (Level {4}) for your {5}.", trainerClassName, trainerName, offered_pokemon.name, offered_pokemon.level, chosen_pokemon.name)
showPokemonInPokeballWithMessage(pif_sprite, message)
if pbConfirmMessage(_INTL("Trade away {1} for {2} {3}'s {4}?", chosen_pokemon.name, trainerClassName, trainer.trainerName, offered_pokemon.name))
if pbConfirmMessage(_INTL("Trade away {1} for {2} {3}'s {4}?", chosen_pokemon.name, trainerClassName, trainerName, offered_pokemon.name))
pbStartTrade(chosen_index, offered_pokemon, offered_pokemon.name, trainer.trainerName, 0)
updated_party = trainer.currentTeam
trainer.increase_friendship(10) if GameData::Type.exists?(trainer.favorite_type) && offered_pokemon.hasType?(trainer.favorite_type)