Files
Pokemon-Firered/add_rematcges.ps1
T
2026-06-02 20:01:08 +09:30

90 lines
3.1 KiB
PowerShell

$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
$new = $content
# ----------------------------
# 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
# ----------------------------
if($new -ne $content) {
Set-Content -Path $_.FullName -Value $content
Write-Host "Updated: $($_.FullName)"
}
}