diff --git a/Graphics/levels/Chapter01/Level02/Level02.MEX b/Graphics/levels/Chapter01/Level02/Level02.MEX index 818f57668..3ebe6eeb6 100644 Binary files a/Graphics/levels/Chapter01/Level02/Level02.MEX and b/Graphics/levels/Chapter01/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter01/Level02/level02.Mep b/Graphics/levels/Chapter01/Level02/level02.Mep index 947dda235..75780e0c6 100644 Binary files a/Graphics/levels/Chapter01/Level02/level02.Mep and b/Graphics/levels/Chapter01/Level02/level02.Mep differ diff --git a/Graphics/levels/Chapter02/Level01/level01.MEX b/Graphics/levels/Chapter02/Level01/level01.MEX index 154cd14c5..d93941224 100644 Binary files a/Graphics/levels/Chapter02/Level01/level01.MEX and b/Graphics/levels/Chapter02/Level01/level01.MEX differ diff --git a/Graphics/levels/Chapter02/Level01/level01.Mep b/Graphics/levels/Chapter02/Level01/level01.Mep index 36475d98e..9bee351dd 100644 Binary files a/Graphics/levels/Chapter02/Level01/level01.Mep and b/Graphics/levels/Chapter02/Level01/level01.Mep differ diff --git a/Graphics/levels/Chapter03/Level02/Level02.MEX b/Graphics/levels/Chapter03/Level02/Level02.MEX index cdea433f7..9acb6a4d4 100644 Binary files a/Graphics/levels/Chapter03/Level02/Level02.MEX and b/Graphics/levels/Chapter03/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter03/Level02/Level02.Mep b/Graphics/levels/Chapter03/Level02/Level02.Mep index ad1bb7434..c6c2c524a 100644 Binary files a/Graphics/levels/Chapter03/Level02/Level02.Mep and b/Graphics/levels/Chapter03/Level02/Level02.Mep differ diff --git a/Graphics/levels/Chapter04/Level04/Level04.MEX b/Graphics/levels/Chapter04/Level04/Level04.MEX index 0987db87b..57469e4ba 100644 Binary files a/Graphics/levels/Chapter04/Level04/Level04.MEX and b/Graphics/levels/Chapter04/Level04/Level04.MEX differ diff --git a/Graphics/levels/Chapter04/Level04/level04.Mep b/Graphics/levels/Chapter04/Level04/level04.Mep index 99d84207d..1343d0cc8 100644 Binary files a/Graphics/levels/Chapter04/Level04/level04.Mep and b/Graphics/levels/Chapter04/Level04/level04.Mep differ diff --git a/data/translations/text.dat b/data/translations/text.dat index 4dfb5d59f..6a43f5bec 100644 --- a/data/translations/text.dat +++ b/data/translations/text.dat @@ -157,7 +157,7 @@ eng=Load Error!\n\nPress the X button to continue [STR__MEMCARD__NOSPACEONCARD] eng=Insufficient free blocks available on MEMORY CARD in MEMORY CARD SLOT 1. One free block required [STR__MEMCARD__DUPLICATESAVENAME] -eng=Are you sure you want to\noverwrite the existing file on the MEMORY CARD in MEMORY CARD slot 1? +eng=File already exists on the\nMEMORY CARD in MEMORY CARD slot 1\nAre you sure you want to overwrite the previous file? [STR__MEMCARD__DOYOUWANTTOFORMATCARD] eng=MEMORY CARD in MEMORY CARD slot 1 is not formatted. Do you wish to format? [STR__MEMCARD__FORMATTINGPLEASEWIAT] diff --git a/source/level/level.cpp b/source/level/level.cpp index 9bb0d0abc..c2b88a33d 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -745,10 +745,10 @@ sLayerHdr *layer; /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -void CLevel::destroyMapArea(DVECTOR const &Pos) +void CLevel::destroyMapArea(DVECTOR const &Pos,int ColT) { DVECTOR TL,BR; -const int ColT=COLLISION_TYPE_DESTRUCTABLE_WALL; +//const int ColT=COLLISION_TYPE_DESTRUCTABLE_WALL; TL.vx=Pos.vx&-16;; @@ -775,9 +775,12 @@ DVECTOR DP; if (*ColElem>>COLLISION_TYPE_FLAG_SHIFT==ColT) { sTileMapElem *MapElem=TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]->getMapPtr(DP.vx,DP.vy); - CFXFallingTile *FX=(CFXFallingTile*)CFX::Create(CFX::FX_TYPE_FALLINGTILE,DP); - FX->SetTile(MapElem->Tile); - MapElem->Tile=0; + if (MapElem->Tile) + { + CFXFallingTile *FX=(CFXFallingTile*)CFX::Create(CFX::FX_TYPE_FALLINGTILE,DP); + FX->SetTile(MapElem->Tile); + MapElem->Tile=0; + } *ColElem=0; } @@ -788,11 +791,11 @@ DVECTOR DP; /*****************************************************************************/ // fixed now, so takes out whole vertical section, wherever it is hit // Note: relies on tiles not being top or bottom of map tho!! -void CLevel::destroyMapTile(DVECTOR const &Pos) +void CLevel::destroyMapTile(DVECTOR const &Pos,int ColT) { int Width=getMapWidth(); DVECTOR MP=Pos; -const int ColT=COLLISION_TYPE_DESTRUCTABLE_FLOOR; +//const int ColT=COLLISION_TYPE_DESTRUCTABLE_FLOOR; // Goto Top while (*CollisionLayer->getMapPtr(MP.vx,MP.vy-1)>>COLLISION_TYPE_FLAG_SHIFT==ColT) @@ -806,9 +809,12 @@ sTileMapElem *MapElem=TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]->getMapPtr( // Thrash em down while (*ColElem>>COLLISION_TYPE_FLAG_SHIFT==ColT) { - CFXFallingTile *FX=(CFXFallingTile*)CFX::Create(CFX::FX_TYPE_FALLINGTILE,MP); - FX->SetTile(MapElem->Tile); - MapElem->Tile=0; + if (MapElem->Tile) + { + CFXFallingTile *FX=(CFXFallingTile*)CFX::Create(CFX::FX_TYPE_FALLINGTILE,MP); + FX->SetTile(MapElem->Tile); + MapElem->Tile=0; + } *ColElem=0; MapElem+=Width; @@ -851,6 +857,7 @@ DVECTOR DP; /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ +// note: slippery used as special type in 4:4 boss arena void CLevel::CreateTileStore() { int MapW=getMapWidth(); @@ -866,7 +873,7 @@ int X,Y; { u8 *ColElem=CollisionLayer->getMapPtr(X*16,Y*16); int ColT = (*ColElem) & COLLISION_TYPE_MASK; - if ( ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_FLOOR || ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_WALL) + if ( ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_FLOOR || ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_WALL || ColT==COLLISION_TYPE_FLAG_SLIPPERY) { m_TileStoreCount++; } @@ -884,7 +891,7 @@ int X,Y; { u8 *ColElem=CollisionLayer->getMapPtr(X*16,Y*16); int ColT = (*ColElem) & COLLISION_TYPE_MASK; - if ( ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_FLOOR || ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_WALL) + if ( ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_FLOOR || ColT==COLLISION_TYPE_FLAG_DESTRUCTABLE_WALL || ColT==COLLISION_TYPE_FLAG_SLIPPERY) { Ptr->X=X; Ptr->Y=Y; diff --git a/source/level/level.h b/source/level/level.h index a9677fb12..77f122b59 100644 --- a/source/level/level.h +++ b/source/level/level.h @@ -65,8 +65,8 @@ static int getChapterLoadingText() {return LvlTable[s_globalLevelSelec static int getLevelLoadingText() {return LvlTable[s_globalLevelSelectThing].LevelLoadingText;} static CFmaScene::FMA_SCRIPT_NUMBER getFMAToFollow() {return LvlTable[s_globalLevelSelectThing].FMAToFollow;} - void destroyMapArea(DVECTOR const &Pos); - void destroyMapTile(DVECTOR const &Pos); + void destroyMapArea(DVECTOR const &Pos,int ColT=COLLISION_TYPE_DESTRUCTABLE_WALL); + void destroyMapTile(DVECTOR const &Pos,int ColT=COLLISION_TYPE_DESTRUCTABLE_FLOOR); void reverseMapConveyor(); diff --git a/source/platform/pfblock.cpp b/source/platform/pfblock.cpp index c50845adc..748826a43 100644 --- a/source/platform/pfblock.cpp +++ b/source/platform/pfblock.cpp @@ -44,6 +44,11 @@ void CNpcFallingBlockPlatform::trigger() { m_isTriggered = true; m_timer = GameState::getOneSecondInFrames(); + +// Clear collision, flagged with normal - cos rest is solid! + CLevel &level=GameScene.GetLevel(); + level.destroyMapArea(Pos,COLLISION_TYPE_SLIPPERY); + } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////