ИМХО из бд вобще все хранение статики есть смысл выпиливать и переводить на хранение в XML ибо это банально удобней в плане той же расширяемости и т.д.
Расширяемости в плане добавления к примеру новых свойств тех же спавнов например.
В случае с бд к примеру это потребует добавления еще столбцов в таблицу, даже если новые свойства нужны будут не очень большому количеству нпс/мобов.
Можно конечно извратиться и вместо добавления новых столбцов в таблицы спавнов писать отдельные аи для нужных нпс/мобов и там задавать нужные свойства, но как быть в случаях когда для части спавнов свойства должны быть одни, а для части - другие? Можно конечно городить условия в аи, определяя по координатам конкретные спавны, но это же изврат...
Тогда как в XML при желании можно тонко настраивать отдельные спавны одного и того же нпс, и он в зависимости от этого будет вести себя по разному.
Чисто для примера - 4 спавна одного и того же нпс (невидимого нпс 18919 вобще любят корейцы использовать в куче мест, как контроллеры различных событий в локациях), действующего по разному в зависимости от конкретного спавна:
<spawn count="1">
<npc id="18919">
<set name="ai" value="superion.EnhancedBossController" />
<set name="index" value="1" />
<set name="normal_boss_id" value="26137" />
</npc>
<point x="191960" y="56420" z="-7630" />
</spawn>
<spawn count="1">
<npc id="18919">
<set name="ai" value="superion.EnhancedBossController" />
<set name="index" value="2" />
<set name="normal_boss_id" value="29006" />
</npc>
<point x="17740" y="109670" z="-6480" />
</spawn>
<spawn count="1">
<npc id="18919">
<set name="ai" value="superion.EnhancedBossController" />
<set name="index" value="3" />
<set name="normal_boss_id" value="25772" />
</npc>
<point x="-114712" y="150450" z="-13870" />
</spawn>
<spawn count="1">
<npc id="18919">
<set name="ai" value="OmegaGolemSpawner" />
<set name="targetable" value="false" />
<set name="undying" value="true" />
</npc>
<point x="199482" y="84497" z="-191" />
</spawn>
А насчет "сложностей массового изменения данных" в XML я даже не парюсь - мне не сложно в том же пхп по быстрому накорябать скриптик, который мне все что необходимо в хмлке поправит, благо хмлку в пхп загрузить в память в виде объекта, с которым после этого можно делать что угодно, можно буквально одной строчкой. Обратное сохранение измененного в виде хмл тоже особой сложности не составляет - уж один раз написать функцию сохранения этого самого объекта в файл как небходимо написать несложно...