12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- Joke mod that adds earthquake. By drummyfish, released under CC0 1.0, public
- domain.
- diff --git a/game.h b/game.h
- index 991058d..fdb53e8 100755
- --- a/game.h
- +++ b/game.h
- @@ -1272,6 +1272,14 @@ RCL_Unit SFG_movingWallHeight
- low + halfHeight + (RCL_sin(sinArg) * halfHeight) / RCL_UNITS_PER_SQUARE;
- }
-
- +RCL_Unit SFG_earthQuakeHeightAt(int16_t x, int16_t y)
- +{
- + return SFG_EARTHQUAKE_HEIGHT * (
- + RCL_sin((((x + y) * RCL_UNITS_PER_SQUARE) / SFG_EARTHQUAKE_WAVELENGTH +
- + (SFG_game.frameTime * RCL_UNITS_PER_SQUARE) / SFG_EARTHQUAKE_SPEED) %
- + RCL_UNITS_PER_SQUARE)) / RCL_UNITS_PER_SQUARE;
- +}
- +
- RCL_Unit SFG_floorHeightAt(int16_t x, int16_t y)
- {
- uint8_t properties;
- @@ -1306,10 +1314,12 @@ RCL_Unit SFG_floorHeightAt(int16_t x, int16_t y)
- return SFG_movingWallHeight(
- height,
- height + SFG_TILE_CEILING_HEIGHT(tile) * SFG_WALL_HEIGHT_STEP,
- - SFG_game.frameTime - SFG_currentLevel.timeStart);
- + SFG_game.frameTime - SFG_currentLevel.timeStart) +
- + SFG_earthQuakeHeightAt(x,y);
- }
- -
- - return SFG_TILE_FLOOR_HEIGHT(tile) * SFG_WALL_HEIGHT_STEP - doorHeight;
- +
- + return SFG_TILE_FLOOR_HEIGHT(tile) * SFG_WALL_HEIGHT_STEP - doorHeight +
- + SFG_earthQuakeHeightAt(x,y);
- }
-
- /**
- @@ -1427,11 +1437,13 @@ RCL_Unit SFG_ceilingHeightAt(int16_t x, int16_t y)
- SFG_getMapTile(SFG_currentLevel.levelPointer,x,y,&properties);
-
- if (properties == SFG_TILE_PROPERTY_ELEVATOR)
- - return SFG_CEILING_MAX_HEIGHT;
- + return SFG_CEILING_MAX_HEIGHT + SFG_earthQuakeHeightAt(x,y);
-
- uint8_t height = SFG_TILE_CEILING_HEIGHT(tile);
-
- - return properties != SFG_TILE_PROPERTY_SQUEEZER ?
- + return SFG_earthQuakeHeightAt(x,y) +
- + (
- + properties != SFG_TILE_PROPERTY_SQUEEZER ?
- (
- height != SFG_TILE_CEILING_MAX_HEIGHT ?
- ((SFG_TILE_FLOOR_HEIGHT(tile) + height) * SFG_WALL_HEIGHT_STEP) :
- @@ -1441,7 +1453,8 @@ RCL_Unit SFG_ceilingHeightAt(int16_t x, int16_t y)
- SFG_TILE_FLOOR_HEIGHT(tile) * SFG_WALL_HEIGHT_STEP,
- (SFG_TILE_CEILING_HEIGHT(tile) + SFG_TILE_FLOOR_HEIGHT(tile))
- * SFG_WALL_HEIGHT_STEP,
- - SFG_game.frameTime - SFG_currentLevel.timeStart);
- + SFG_game.frameTime - SFG_currentLevel.timeStart)
- + );
- }
-
- /**
- diff --git a/settings.h b/settings.h
- index a0d8c1f..16674a2 100644
- --- a/settings.h
- +++ b/settings.h
- @@ -343,6 +343,27 @@
- #define SFG_BACKGROUND_BLUR 0
- #endif
-
- +/**
- + Specifies the amplitude of eartquake, in RCL_Units.
- +*/
- +#ifndef SFG_EARTHQUAKE_HEIGHT
- + #define SFG_EARTHQUAKE_HEIGHT 256
- +#endif
- +
- +/**
- + Specifies eartquake wavelength, in game tiles.
- +*/
- +#ifndef SFG_EARTHQUAKE_WAVELENGTH
- + #define SFG_EARTHQUAKE_WAVELENGTH 8
- +#endif
- +
- +/**
- + Specifies eartquake speen in the wave time period in milliseconds.
- +*/
- +#ifndef SFG_EARTHQUAKE_SPEED
- + #define SFG_EARTHQUAKE_SPEED 1024
- +#endif
- +
- /**
- Defines the period, in ms, of things that blink, such as text.
- */
|