Started working on this after I saw somebody remaking Pokemon Red version in Godot. I don't plan on completely remaking gen 2, but I do want to get the base mechanics down and add simple multiplayer on top of it for fun (though I'll probably end up extending MultiplayerAPIExtension and keep track of networked nodes with an ID system so I'm not constrained to the SceneTree needing to be the same, but we'll see.)
The Player is a Node2D instead of a CharacterBody2D. I use a RayCast2D to detect StaticBody2Ds and Area2Ds to determine if the player can move to the next tile, or if they should enter the Jump state. I also have an Area2D attached to the Player to detect when a grass area has been entered/exited.
One feature I'm pretty proud I got working was the smooth scrolling in the dialog box. I basically tween the RichTextLabel's VScrollBar.value to the desired value. You can see it in action when DUDE BROGUY sends out Caterpie. Such a simple feature, but It took so long to figure out how to implement.
var scroll_bar: VScrollBar = rich_text.get_v_scroll_bar()
var scroll_tween: Tween = create_tween()
scroll_tween.tween_property(scroll_bar, "value", new_scroll_value, 0.25)
Overall this has been a pretty fun exercise and a nice break from my main project.