add rematches

This commit is contained in:
2026-06-02 19:57:45 +09:30
parent a96cf3c0b8
commit e77f4cad82
+86
View File
@@ -0,0 +1,86 @@
$root = "C:\Users\dionmoustos\Projects\pokefirered\"
Get-ChildItem -Path $root -Recurse -File -Filter "scripts.inc" |
ForEach-Object {
Write-Host "Processing: $($_.FullName)"
# ----------------------------
# Read entire file as one string
# ----------------------------
$content = Get-Content -Path $_.FullName -Raw
# ----------------------------
# Regex pattern (PowerShell-safe)
# Your pattern:
# [a-zA-Z_0-9]+::(\n\t[a-zA-Z_0-9 ,]+)+
# ----------------------------
$pattern = '[a-zA-Z_0-9]+::(\r?\n\t[a-zA-Z_0-9 ,]+)+'
# ----------------------------
# Extract matches as array of multiline strings
# ----------------------------
$matches = [regex]::Matches($content, $pattern)
$array = @()
foreach ($m in $matches) {
$array += $m.Value
}
# ----------------------------
# Do replacements on original string
# (example transformation per item)
# ----------------------------
foreach ($item in $array) {
if ($item -match '^\s*([A-Za-z0-9_]+)::\s*\r?\n\s*trainerbattle_single\s+([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+)\r?\n\s*msgbox\s+([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+)\r?\n\s*end') {
$eventScript = $matches[1]
$trainer = $matches[2]
$introText = $matches[3]
$defeatText = $matches[4]
$postbattle = $matches[5]
$messagebox = $matches[6]
$replacement = "$eventScript::
trainerbattle_single $trainer, $introText, $defeatText
specialvar VAR_RESULT, ShouldTryRematchBattle
goto_if_eq VAR_RESULT, TRUE, $eventScript`Rematch
msgbox $postbattle, $messagebox
end
$($eventScript)Rematch::
trainerbattle_rematch $trainer, $introText, $defeatText
msgbox $postbattle, $messagebox
end"
$content = $content -replace [regex]::Escape($item), $replacement
} elseif ($item -match '^\s*([A-Za-z0-9_]+)::\s*\r?\n\s*trainerbattle_double\s+([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+)\r?\n\s*msgbox\s+([A-Za-z0-9_]+),\s*([A-Za-z0-9_]+)\r?\n\s*end') {
$eventScript = $matches[1]
$trainer = $matches[2]
$introText = $matches[3]
$defeatText = $matches[4]
$notenoughmons = $matches[5]
$postbattle = $matches[6]
$messagebox = $matches[7]
$replacement = "$eventScript::
trainerbattle_double $trainer, $introText, $defeatText, $notenoughmons
specialvar VAR_RESULT, ShouldTryRematchBattle
goto_if_eq VAR_RESULT, TRUE, $eventScript`Rematch
msgbox $postbattle, $messagebox
end
$($eventScript)Rematch::
trainerbattle_rematch_double $trainer, $introText, $defeatText, $notenoughmons
msgbox $postbattle, $messagebox
end"
$content = $content -replace [regex]::Escape($item), $replacement
}
}
# ----------------------------
# Write back to file
# ----------------------------
Set-Content -Path $_.FullName -Value $content.Trim()
}