Quite probably. Go look in PokeBattle_Pokemon, and scroll down to about line 280. You'll see this def:
Code:
def isShiny?
a=@personalID^@trainerID
b=a&0xFFFF
c=(a>>16)&0xFFFF
d=b^c
return (d<8)
end
To do what you want, you'll need to put in an "if/else" statement.
Code:
def isShiny?
if map.map_id==98 || map.map_id==99
return true
else
a=@personalID^@trainerID
b=a&0xFFFF
c=(a>>16)&0xFFFF
d=b^c
return (d<8)
end
end
Now, I'm not sure about the code that finds out which map you're currently on (i.e. the "map.map_id==98"), but I think the rest should work fine.
The important point is that the check for which map you're on comes
before the regular calculation to see if it should be shiny. In this example, maps 98 and 99 are Pinkan Island, although you can expand upon this to include more (or fewer) maps, and perhaps even use "greater than"/"less than" commands if the island's maps' IDs are all grouped together (it would save on programming them all in separately).