diff --git a/src/terra/vmap.cpp b/src/terra/vmap.cpp index a6644b0..1a4d809 100644 --- a/src/terra/vmap.cpp +++ b/src/terra/vmap.cpp @@ -1082,6 +1082,38 @@ void vrtMap::dump_terrain() { //delete[] line_buffer; } +void vrtMap::netModify(uchar* p) { + //ZMOD 1.18 DYNAMIC WATER + //ZMOD 1.20 fix + if (NetworkON && zMod_flood_level_delta!=0) { + uchar* pa,*pc,*pf,*pa0,*pc0,*pf0; + //uchar type,lxVal,rxVal; + pa0 = pa = p; + pf0 = pf = pa0 + H_SIZE; + + if (zMod_flood_level_delta>0) { //если уровень повысился + for(int x = 0;x < H_SIZE; x++, pa++, pf++) + if (*(pa0 + x) <= FloodLEVEL) //заливаем всё что ниже уровня + *pf &= ~TERRAIN_MASK & ~OBJSHADOW; + + } else { //если уровень понизился + for(int x = 0;x < H_SIZE; x++, pa++, pf++) + if (*(pa0 + x) > FloodLEVEL) //осушаем всё что выше уровня + if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) //и только существующую воду + *pf |= MAIN_TERRAIN; + } + } + /* + //znfo ficha DRY + uchar* pf = p + H_SIZE; + for (int x=0;x0) { //если уровень повысился - for(int x = 0;x < H_SIZE; x++, pa++, pf++) - if (*(pa0 + x) <= FloodLEVEL) //заливаем все что ниже уровня - *pf &= ~TERRAIN_MASK & ~OBJSHADOW; - - } else { //если уровень понизился - for(int x = 0;x < H_SIZE; x++, pa++, pf++) - if (*(pa0 + x) > FloodLEVEL) //осушаем все что выше уровня - if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) //и только существующую воду - *pf |= MAIN_TERRAIN; - - } -} - -/* - //znfo ficha DRY (there is one more in upper) - uchar* pf = p + H_SIZE; - for (int x=0;x