moonlight & morning sun field moves + fishing items

This commit is contained in:
infinitefusion
2022-04-23 18:22:42 -04:00
parent 2982a07b7e
commit 92e950d157
24 changed files with 91 additions and 379 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.

View File

@@ -42,6 +42,7 @@ def pbFishingEnd
end
def pbFishing(hasEncounter,rodType=1)
autohook= Settings::FISHING_AUTO_HOOK || $game_switches[FISHING_AUTOHOOK_SWITCH]
speedup = ($Trainer.first_pokemon && [:STICKYHOLD, :SUCTIONCUPS].include?($Trainer.first_pokemon.ability_id))
biteChance = 20+(25*rodType) # 45, 70, 95
biteChance *= 1.5 if speedup # 67.5, 100, 100
@@ -70,9 +71,30 @@ def pbFishing(hasEncounter,rodType=1)
pbMessageDisplay(msgWindow,_INTL("The Pokémon got away..."))
break
end
if Settings::FISHING_AUTO_HOOK || rand(100) < hookChance
itemChance = rand((rodType)*4)
if itemChance<=1
#ITEM
items = [:PEARL,
:OLDBOOT,
:OLDBOOT,
:OLDBOOT,
:OLDBOOT,
:WATERGEM,
:PEARL,
:WATERGEM
]
Kernel.pbItemBall(items[rand(items.size)],1,nil,false)
Kernel.pbDisposeMessageWindow(msgWindow)
pbFishingEnd
pbMessageDisplay(msgWindow,_INTL("Landed a Pokémon!")) if !Settings::FISHING_AUTO_HOOK
$game_player.setDefaultCharName(nil,oldpattern)
return false
end
if autohook || rand(100) < hookChance
pbFishingEnd
pbMessageDisplay(msgWindow,_INTL("Landed a Pokémon!")) if !autohook
$game_player.setDefaultCharName(nil,oldpattern)
ret = true
break
@@ -111,6 +133,7 @@ end
# A Pokémon is biting, reflex test to reel it in
def pbWaitForInput(msgWindow,message,frames)
autohook= Settings::FISHING_AUTO_HOOK || $game_switches[FISHING_AUTOHOOK_SWITCH]
pbMessageDisplay(msgWindow,message,false)
numFrame = 0
twitchFrame = 0
@@ -131,7 +154,7 @@ def pbWaitForInput(msgWindow,message,frames)
$game_player.pattern = 0
return true
end
break if !Settings::FISHING_AUTO_HOOK && numFrame > frames
break if !autohook && numFrame > frames
numFrame += 1
end
return false

View File

@@ -154,7 +154,7 @@ end
def pbChooseMoveList(default = nil)
commands = []
GameData::Move.each { |i| commands.push([i.id_number, i.real_name, i.id]) }
return pbChooseList(commands, default, nil, -1)
return pbChooseList(commands, default, nil, 1)
end
def pbChooseMoveListForSpecies(species, defaultMoveID = nil)

View File

@@ -16,6 +16,8 @@ end
def pbWarpToMapFly
pbBetterRegionMap(0,true,true,false,nil,true)
$game_screen.weather(:None,0,0)
$game_map.refresh
end
def pbWarpToMap

View File

@@ -54,5 +54,5 @@ SINGLE_POKEMON_MODE_VAR=251
SINGLE_POKEMON_MODE_HEAD_SWITCH=791
SINGLE_POKEMON_MODE_BODY_SWITCH=792
SINGLE_POKEMON_MODE_RANDOM_SWITCH=793
FISHING_AUTOHOOK_SWITCH = 916
ODDKEYSTONE_NB_VARIABLE=252

View File

@@ -79,4 +79,58 @@ def pbRockSmashRandomEncounterDive
Kernel.pbItemBall(itemsList[i],1,nil,false)
end
end
end
############### MORNING SUN / MOONLIGHT
HiddenMoveHandlers::CanUseMove.add(:MORNINGSUN,proc{|move,pkmn|
if !GameData::MapMetadata.get($game_map.map_id).outdoor_map
Kernel.pbMessage(_INTL("Can't use that here."))
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:MORNINGSUN,proc{|move,pokemon|
Kernel.pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
pbHiddenMoveAnimation(pokemon)
pbFadeOutIn(99999){
pbSkipTime(9)
newTime = pbGetTimeNow.strftime("%I:%M %p")
Kernel.pbMessage(_INTL("{1} waited until morning...",$Trainer.name))
Kernel.pbMessage(_INTL("The time is now {1}",newTime))
$game_screen.weather(:None,0,0)
$game_map.refresh
}
next true
})
HiddenMoveHandlers::CanUseMove.add(:MOONLIGHT,proc{|move,pkmn|
if !GameData::MapMetadata.get($game_map.map_id).outdoor_map
Kernel.pbMessage(_INTL("Can't use that here."))
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:MOONLIGHT,proc{|move,pokemon|
Kernel.pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
pbHiddenMoveAnimation(pokemon)
pbFadeOutIn(99999){
pbSkipTime(21)
newTime = pbGetTimeNow.strftime("%I:%M %p")
Kernel.pbMessage(_INTL("{1} waited until night...",$Trainer.name))
Kernel.pbMessage(_INTL("The time is now {1}",newTime))
$game_screen.weather(:None,0,0)
$game_map.refresh
}
next true
})
def pbSkipTime(newTime)
currentTime = pbGetTimeNow.hour
#hoursToAdd = (24-currentTime + newTime)-24
hoursToAdd = newTime - currentTime
$game_variables[UnrealTime::EXTRA_SECONDS] += hoursToAdd*3600
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1692,6 +1692,7 @@ ShowArea=true
BattleBack=Snow
Bicycle=true
MapPosition=1,25,4
Weather=Snow,100
Outdoor=true
ShowArea=true
Environment = Snow

View File

@@ -991,7 +991,6 @@ Pokemon = B109H35,22
Pokemon = RATTATA,19
Pokemon = B16H109,19 #Koffgey,
Pokemon = RATTATA,19
Pokemon = B69H100,19
#########################################
[PICNICKER,Dana]
@@ -1534,18 +1533,16 @@ Pokemon = B58H43,34 #oddlithe,
#####################
[SAILOR,Dwayne]
Pokemon = B25H1,20 #Bulbchu,
Pokemon = B25H4,20 #Charchu,
Pokemon = B25H7,20 #Squirtchu,
Pokemon = B86H25,20 #seel + pikachu
#----------------------------------------
[ENGINEER,Baily]
Pokemon = B100H14,21 #Kakorb,
Pokemon = B81H11,21 #Metamite,
Pokemon = B43H100,21 #oddish + voltorb,
Pokemon = B69H100,21 #bellsprout + voltorb,
#--------------------------------------
[GENTLEMAN,Tucker]
Pokemon = B25H81,23 #Magnechu,
Pokemon = B66H8,23 #Machop + magnemite,
#######################
@@ -2010,8 +2007,8 @@ Pokemon = B98H100,24 #voltby,
Moves = METALCLAW,BUBBLE,LIGHTSCREEN,SPARK
AbilityIndex = 1
Item = MAGNET
Pokemon = B17H25,24 #Pikeotto,
Moves = GUST,SANDATTACK,QUICKATTACK,ELECTROBALL
Pokemon = B50H25,24 #diglet + pikachu,
Moves = SANDATTACK,MUDSLAP,QUICKATTACK,THUNDERSHOCK
AbilityIndex = 1
Item = MAGNET
Pokemon = B125H26,26 #raibuzz,

Binary file not shown.

365
mkxp.json
View File

@@ -1,365 +0,0 @@
{
// Lines starting with '//' are comments.
//
// About filesystem paths specified in this config:
// The "gameFolder" path is resolved either relative
// to the directory containing the mkxp executable
// (the default behavior), or relative to the current
// working directory (when compiled with
// -DWORKDIR_CURRENT). All other paths are resolved
// relative to gameFolder and ignoring both RTPs and
// encrypted archives.
// Specify the RGSS version to run under.
// Possible values are 0, 1, 2, 3. If set to 0,
// mkxp will try to guess the required version
// based on the game files found in gameFolder.
// If this fails, the version defaults to 1.
// (default: 0)
//
"rgssVersion": 1,
// Create a debug context and log
// OpenGL debug information to the console
// (default: disabled)
//
"debugMode": false,
// Continuously print average FPS to console.
// This setting does not affect the window title
// FPS display toggled via F2
// (default: disabled)
//
"printFPS": false,
// Game window is resizable
// (default: enabled)
//
"winResizable": true,
// Start game in fullscreen (this can
// always be toggled with Alt-Enter at runtime)
// (default: disabled)
//
"fullscreen": false,
// Preserve game screen aspect ratio,
// as opposed to stretch-to-fill
// (default: enabled)
//
"fixedAspectRatio": true,
// Apply linear interpolation when game screen
// is upscaled
// (default: disabled)
//
"smoothScaling": false,
// Sync screen redraws to the monitor refresh rate
// (default: disabled)
//
"vsync": false,
// Specify the window width on startup. If set to 0,
// it will default to the default resolution width
// specific to the RGSS version (640 in RGSS1, 544
// in RGSS2 or higher).
// (default: 0)
//
"defScreenW": 512,
// Specify the window height on startup. If set to 0,
// it will default to the default resolution height
// specific to the RGSS version (480 in RGSS1, 416
// in RGSS2 or higher).
// (default: 0)
//
"defScreenH": 384,
// Override the game window title
// (default: none)
//
//"windowTitle": "Pokémon Infinite Fusion",
// Enforce a static frame rate
// This option may be force-disabled at build time.
// (0 = disabled)
//
"fixedFramerate": 60,
// Skip (don't draw) frames when behind.
// Can be changed at runtime, but this is the
// default value when the game starts.
// (default: disabled)
//
"frameSkip": false,
// Use a fixed framerate that is approx. equal to the
// native screen refresh rate. This is different from
// "fixedFramerate" because the actual frame rate is
// reported back to the game, ensuring correct timers.
// If the screen refresh rate cannot be determined,
// this option is force-disabled.
// This option may be force-disabled at build time.
// (default: disabled)
//
"syncToRefreshrate": false,
// Don't use alpha blending when rendering text
// (default: disabled)
//
"solidFonts": false,
// Work around buggy graphics drivers which don't
// properly synchronize texture access, most
// apparent when text doesn't show up or the map
// tileset doesn't render at all
// (default: disabled)
//
"subImageFix": false,
// Enable framebuffer blitting if the driver is
// capable of it. Some drivers carry buggy
// implementations of this functionality, so
// disabling it can be used as a workaround
// (default: enabled)
//
"enableBlitting": true,
// Limit the maximum size (width, height) of
// most textures mkxp will create (exceptions are
// rendering backbuffers and similar).
// If set to 0, the hardware maximum is used.
// This is useful for recording traces that can
// be played back on machines with lower specs.
// (default: 0)
//
"maxTextureSize": 0,
// Set the base path of the game to '/path/to/game'
// (default: executable directory)
//
"gameFolder": ".",
// Use either right or left Alt + Enter to toggle
// fullscreen
// (default: disabled)
//
"anyAltToggleFS": false,
// Enable F12 game reset
// (default: enabled)
//
"enableReset": true,
// Names of the input buttons in the F1 key bindings
// window. This only affects the names displayed
// there, and won't enable those names as Input
// constants in the scripts.
"bindingNames": {"c": "Use",
"b": "Back",
"a": "Action",
"x": "JumpUp",
"y": "JumpDown",
"z": "Special",
"l": "(unused)",
"r": "(unused)"},
// Allow symlinks for game assets to be followed
// (default: disabled)
//
"allowSymlinks": false,
// Organisation / company and application / game
// name to build the directory path where mkxp
// will store game specific data (eg. key bindings).
// If not specified, mkxp will save to a common
// directory shared by all games. Note that these
// are TWO individual config entries, and both need
// to be defined for this to take effect.
// (default: none)
//
// "dataPathOrg": "mycompany",
// "dataPathApp": "mygame",
// Set the game window icon to 'path/to/icon.png'
// (default: none)
//
// "iconPath": "/path/to/icon.png",
// Instead of playing an RPG Maker game,
// execute a single plain text script instead
// (default: none)
//
// "customScript": "/path/to/script.rb",
// Define raw scripts to be executed before the
// actual Scripts.rxdata execution starts
// This option may be force-disabled at build time.
// (default: none)
//
// "preloadScript": ["my_win32_wrapper.rb",
// "ruby18_fixes.rb"],
// Index all accesible assets via their lower case path
// (emulates windows case insensitivity)
// (default: enabled)
//
"pathCache": true,
// In some versions of Essentials, overworld code
// requests the player's sprite texture from disk
// at least once every frame. The damage this
// causes is less perceptible in RPG Maker XP,
// but MKXP's RGSSAD code is much slower and will
// cause games to lag. Hard.
//
// I have no interest in fixing it, because:
//
// (A) I don't see any point in such frail encryption, and
// (B) One can easily replicate load_data entirely in Ruby
// (https://gist.github.com/inori-z/0800dbdc213b9936e0e81f64c9a98c4c)
//
// If you insist on using archives, you can use a
// version of Essentials that isn't broken,
// otherwise come up with your own solution
// (there are many), or leave your Graphics files
// loose and disable this option.
// (default: false)
//
"compressedGraphics": false,
// Add 'rtp1', 'rtp2.zip' and 'game.rgssad' to the
// asset search path (multiple allowed)
// (default: none)
//
// "RTP": ["/path/to/rtp1",
// "/path/to/rtp2.zip",
// "/path/to/game.rgssad"],
// Use the script's name as filename in warnings and error messages
// (default: enabled)
//
"useScriptNames": true,
// Font substitutions allow drop-in replacements of fonts
// to be used without changing the RGSS scripts,
// eg. providing 'Open Sans' when the game thinkgs it's
// using 'Arial'. Font family to be substituted and
// replacement family are separated by one sole '>'.
// Be careful not to include any spaces.
// This is not connected to the built-in font, which is
// always used when a non-existing font family is
// requested by RGSS.
// (default: none)
//
// "fontSub": ["Arial>Open Sans",
// "Times New Roman>Liberation Serif"]
// Because mkxp is usually distributed as a stand alone
// build, no predefined load paths are initialized
// ($:, $LOAD_PATH) in the MRI backend. With this option,
// they can be specified manually (eg. when using a system
// libruby.so). It is however recommended to statically
// link all required gems into libruby.so.
// (default: none)
//
// "rubyLoadpath": ["/usr/lib64/ruby/",
// "/usr/local/share/ruby/site_ruby"],
// Determines whether JIT is enabled. This probably
// won't work unless you also have the header file
// that it needs. Only works with Ruby 2.6 or higher.
// (default: false)
//
"JITEnable": false,
// Determines what level of verbosity to use when
// logging JIT events. Starts at 0, which is next
// to nothing. Set it higher to see more.
// (default: 0)
//
"JITVerboseLevel": 0,
// Determines how many compiled methods that Ruby
// will keep in its cache.
// (default: 100)
//
"JITMaxCache": 100,
// Determines how many times a function has to be
// called before it is compiled.
// (default: 10000)
//
"JITMinCalls": 10000,
// SoundFont to use for midi playback (via fluidsynth)
// (default: none)
//
"midiSoundFont": "soundfont.sf2",
// Activate "chorus" effect for midi playback
//
"midiChorus": false,
// Activate "reverb" effect for midi playback
//
"midiReverb": false,
// Number of OpenAL sources to allocate for SE playback.
// If there are a lot of sounds playing at the same time
// and audibly cutting each other off, try increasing
// this number. Maximum: 64.
//
"SESourceCount": 6
// The Windows game executable name minus ".exe". By default
// this is "Game", but some developers manually rename it.
// mkxp needs this name because both the .ini (game
// configuration) and .rgssad (encrypted data archive) must
// carry the same name minus their extension, and we cannot
// guess the executable's name.
// You could just as well rename them both to "Game.ini" and
// "Game.rgssad", but specifying the executable name here
// is a tiny bit less intrusive.
//
"execName": "Game"
}