diff --git a/Graphics/hazards/Acorn/Acorn.max b/Graphics/hazards/Acorn/Acorn.max index d9c9f1e7c..2682a0c62 100644 Binary files a/Graphics/hazards/Acorn/Acorn.max and b/Graphics/hazards/Acorn/Acorn.max differ diff --git a/Graphics/hazards/Acorn/acorn.gin b/Graphics/hazards/Acorn/acorn.gin index 03e045a5a..98db3a36c 100644 Binary files a/Graphics/hazards/Acorn/acorn.gin and b/Graphics/hazards/Acorn/acorn.gin differ diff --git a/Graphics/levels/Chapter01/Level02/Level02.MEX b/Graphics/levels/Chapter01/Level02/Level02.MEX index ae6c774d5..bc6b745d1 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 e0032d509..e847962ed 100644 Binary files a/Graphics/levels/Chapter01/Level02/level02.Mep and b/Graphics/levels/Chapter01/Level02/level02.Mep differ diff --git a/Graphics/levels/Chapter01/Level03/Level03.MEX b/Graphics/levels/Chapter01/Level03/Level03.MEX index fd4eebc0a..9e305de0a 100644 Binary files a/Graphics/levels/Chapter01/Level03/Level03.MEX and b/Graphics/levels/Chapter01/Level03/Level03.MEX differ diff --git a/Graphics/levels/Chapter01/Level03/level03.Mep b/Graphics/levels/Chapter01/Level03/level03.Mep index 0418e0c7a..9d22e2c32 100644 Binary files a/Graphics/levels/Chapter01/Level03/level03.Mep and b/Graphics/levels/Chapter01/Level03/level03.Mep differ diff --git a/Utils/MapEdit/LayerHazard.cpp b/Utils/MapEdit/LayerHazard.cpp index 5de8078e8..f3d43d5f3 100644 --- a/Utils/MapEdit/LayerHazard.cpp +++ b/Utils/MapEdit/LayerHazard.cpp @@ -133,6 +133,7 @@ void CLayerHazard::GUIThingUpdate(bool OnlySel) GUIHazard.SetVal(GUIHazard.m_TurnRate,ThisThing.Data.Hazard.HazardTurnRate); GUIHazard.SetVal(GUIHazard.m_Health,ThisThing.Data.Hazard.HazardHealth); GUIHazard.SetVal(GUIHazard.m_Attack,ThisThing.Data.Hazard.HazardAttackStrength); + GUIHazard.SetVal(GUIHazard.m_Respawn,ThisThing.Data.Hazard.HazardRespawn); GUIHazard.m_Collision.SetCheck(ThisThing.Data.Hazard.HazardCollisionFlag); } else @@ -141,6 +142,7 @@ void CLayerHazard::GUIThingUpdate(bool OnlySel) GUIHazard.m_TurnRate.SetWindowText(""); GUIHazard.m_Health.SetWindowText(""); GUIHazard.m_Attack.SetWindowText(""); + GUIHazard.m_Respawn.SetWindowText(""); GUIHazard.m_Collision.SetCheck(false); } GUIHazard.DisableCallback(false); @@ -162,6 +164,7 @@ void CLayerHazard::GUIChanged(CCore *Core) ThisThing.Data.Hazard.HazardTurnRate=GUIHazard.GetVal(GUIHazard.m_TurnRate); ThisThing.Data.Hazard.HazardHealth=GUIHazard.GetVal(GUIHazard.m_Health); ThisThing.Data.Hazard.HazardAttackStrength=GUIHazard.GetVal(GUIHazard.m_Attack); + ThisThing.Data.Hazard.HazardRespawn=GUIHazard.GetVal(GUIHazard.m_Respawn); ThisThing.Data.Hazard.HazardCollisionFlag=GUIHazard.m_Collision.GetCheck()!=0; } diff --git a/Utils/MkLevel/MkLevel.cpp b/Utils/MkLevel/MkLevel.cpp index 3b77a9c6d..f262f531f 100644 --- a/Utils/MkLevel/MkLevel.cpp +++ b/Utils/MkLevel/MkLevel.cpp @@ -200,7 +200,7 @@ int Idx; CFace F; ExpTri2Face(ThisTri,F); - ModelFaceList.SetTPageFlag(F,ThisTri.Flags*0); + ModelFaceList.SetTPageFlag(F,ThisTri.Flags); ModelFaceList.AddFace(F,false); } diff --git a/source/frontend/fmvintro.cpp b/source/frontend/fmvintro.cpp index 42ccd005f..255e1284b 100644 --- a/source/frontend/fmvintro.cpp +++ b/source/frontend/fmvintro.cpp @@ -79,7 +79,7 @@ static bool fmvPerFrameFunc() ---------------------------------------------------------------------- */ void CFrontEndFMVIntro::select() { - FMV_play(FMV_INTRO,&fmvPerFrameFunc); +// FMV_play(FMV_INTRO,&fmvPerFrameFunc); } /*---------------------------------------------------------------------- diff --git a/source/game/convo.cpp b/source/game/convo.cpp index df0122dc1..61803626e 100644 --- a/source/game/convo.cpp +++ b/source/game/convo.cpp @@ -530,7 +530,7 @@ void CConversation::thinkQuestion() if(s_currentQuestion==QUESTION_YES_NO) { - if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_FIRE)) + if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) { s_currentAnswer=s_currentSelectedAnswer==0?ANSWER_YES:ANSWER_NO; s_currentQuestion=QUESTION_NONE; @@ -542,7 +542,7 @@ void CConversation::thinkQuestion() } else if(s_currentQuestion==QUESTION_OK) { - if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_FIRE)) + if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) { s_currentAnswer=ANSWER_OK; s_currentQuestion=QUESTION_NONE; diff --git a/source/gfx/actor.cpp b/source/gfx/actor.cpp index 5140295c7..94717890f 100644 --- a/source/gfx/actor.cpp +++ b/source/gfx/actor.cpp @@ -567,13 +567,12 @@ u16 ThisFrame=ThisAnim->Anim[Frame]; } /*****************************************************************************/ -sActorPool *DbgPool; +const int BBOX_ADJ=4; POLY_FT4 *CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool XFlip,bool YFlip) { sPoolNode *ThisNode,*FindNode; POLY_FT4 *Ft4; - DbgPool=PoolEntry; CurrentFrame=GetFrame(Anim,Frame); ThisNode=0; @@ -667,10 +666,10 @@ POLY_FT4 *Ft4; // Set BBox int HalfW=CurrentFrame->W>>1; - BBox.XMin=-HalfW; - BBox.XMax=+HalfW; - BBox.YMin=-CurrentFrame->H; - BBox.YMax=0; + BBox.XMin=-HalfW+BBOX_ADJ; + BBox.XMax=+HalfW-BBOX_ADJ; + BBox.YMin=-CurrentFrame->H+BBOX_ADJ; + BBox.YMax=0-BBOX_ADJ; return(Ft4); } @@ -729,10 +728,10 @@ int YMin,YMax; if (YMaxx0=Pos.vx+x0; Ft4->y0=Pos.vy+y0; Ft4->x1=Pos.vx+x1; Ft4->y1=Pos.vy+y1; diff --git a/source/hazard/hfalling.cpp b/source/hazard/hfalling.cpp index 2325b962e..2c5d802ba 100644 --- a/source/hazard/hfalling.cpp +++ b/source/hazard/hfalling.cpp @@ -133,3 +133,9 @@ void CNpcFallingHazard::processTimer( int _frames ) m_bounceFinish = false; } } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +void CNpcFallingHazard::collidedWith( CThing *_thisThing ) +{ + if (!m_bounceFinish && m_movementTimer<=0) CNpcHazard::collidedWith(_thisThing); +} diff --git a/source/hazard/hfalling.h b/source/hazard/hfalling.h index ea0d87aec..4d2e9ab5f 100644 --- a/source/hazard/hfalling.h +++ b/source/hazard/hfalling.h @@ -25,6 +25,7 @@ public: protected: void processMovement( int _frames ); void processTimer( int _frames ); + virtual void collidedWith(CThing *_thisThing); s32 m_movementTimer; u8 m_bounceFinish; diff --git a/source/level/layercollision.h b/source/level/layercollision.h index 821aeecae..26be923ca 100644 --- a/source/level/layercollision.h +++ b/source/level/layercollision.h @@ -8,9 +8,9 @@ #include -//#if !defined(__USER_CDBUILD__) +#if !defined(__USER_CDBUILD__) #define __SHOW_COLLISION__ -//#endif +#endif /*****************************************************************************/ diff --git a/source/level/level.cpp b/source/level/level.cpp index 7203d90e1..6c10bd30b 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -165,7 +165,9 @@ bool Finished=false; if (Lvl>=LvlTableSize) Lvl=0; } // End TMP - Lvl&=3; // Ch1 only Bodge +/*** E3 Bodge ***/ + if (Lvl>2) Lvl=0; +/****************/ return(Finished); } diff --git a/source/pad/pads.cpp b/source/pad/pads.cpp index d246fd8d3..edd0f12e3 100644 --- a/source/pad/pads.cpp +++ b/source/pad/pads.cpp @@ -398,9 +398,9 @@ CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]= PAD_UP, // PAD_CFG_UP PAD_DOWN, // PAD_CFG_DOWN - PAD_CROSS, // PAD_CFG_FIRE + PAD_SQUARE, // PAD_CFG_FIRE PAD_TRIANGLE, // PAD_CFG_CATCH - PAD_SQUARE, // PAD_CFG_JUMP + PAD_CROSS, // PAD_CFG_JUMP }}, // Config B {{ diff --git a/source/player/player.h b/source/player/player.h index b34e02759..b61bbc83c 100644 --- a/source/player/player.h +++ b/source/player/player.h @@ -294,7 +294,7 @@ private: enum { INVINCIBLE_FRAMES__START=200, // Invincible for this many frames at start of life - INVINCIBLE_FRAMES__HIT=30, // Invincible for this many frames after taking damage + INVINCIBLE_FRAMES__HIT=60, // Invincible for this many frames after taking damage }; int m_invincibleFrameCount; // Initial invincibility and also invincibility after taking damage diff --git a/source/player/pmodes.h b/source/player/pmodes.h index aaee4fc8f..1a50afdf4 100644 --- a/source/player/pmodes.h +++ b/source/player/pmodes.h @@ -75,7 +75,7 @@ enum DEFAULT_PLAYER_TERMINAL_VELOCITY=8, DEFAULT_BUTT_FALL_VELOCITY=14, DEFAULT_HITREACT_XVELOCITY=5, - DEFAULT_HITREACT_YVELOCITY=3, + DEFAULT_HITREACT_YVELOCITY=3-1, DEFAULT_HITREACT_FRAMES=15, }; diff --git a/source/system/main.cpp b/source/system/main.cpp index 622d90861..c164cb99e 100644 --- a/source/system/main.cpp +++ b/source/system/main.cpp @@ -71,7 +71,7 @@ CPaulScene s_paulScene; #if __FILE_SYSTEM__==PC #if !defined(__USER_CDBUILD__) #if defined(__VERSION_DEBUG__) - #define SCREEN_GRAB + #define USE_SCREEN_UTILS #endif #endif #endif @@ -188,12 +188,11 @@ void MainLoop() dumpDebugMem(); #endif - #if defined(SCREEN_GRAB) + #if defined(USE_SCREEN_UTILS) if (PadGetHeld(0) & PAD_L2) if (PadGetDown(0) & PAD_START) SaveScreen(VidGetScreen()->Draw.clip); - #endif - if (PadGetDown(0) & PAD_SELECT) VRamViewer(); + #endif #endif } } @@ -224,7 +223,7 @@ int main() } /*****************************************************************************/ -#if defined(SCREEN_GRAB) +#if defined(USE_SCREEN_UTILS) #if defined(__VERSION_DEBUG__) struct sTgaHdr { diff --git a/tools/Data/bin/MkLevel.exe b/tools/Data/bin/MkLevel.exe index b038d7db6..9e1e532d2 100644 Binary files a/tools/Data/bin/MkLevel.exe and b/tools/Data/bin/MkLevel.exe differ