Update map

This commit is contained in:
Miloslav Číž 2020-09-11 21:22:57 +02:00
parent 951dc585e6
commit f842560d61
4 changed files with 34 additions and 16 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -477,10 +477,10 @@ uint16_t SFG_monsterAttributeTable[SFG_MONSTERS_TOTAL] =
SFG_PROGRAM_MEMORY uint8_t SFG_weaponAttributeTable[SFG_WEAPONS_TOTAL] = SFG_PROGRAM_MEMORY uint8_t SFG_weaponAttributeTable[SFG_WEAPONS_TOTAL] =
{ {
/* knife */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_MELEE,1,650), /* knife */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_MELEE,1,650),
/* shotgun */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_BULLET,2,1200), /* shotgun */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_BULLET,2,1400),
/* m. gun */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_BULLET,1,700), /* m. gun */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_BULLET,1,700),
/* r. laun. */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_FIREBALL,1,900), /* r. laun. */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_FIREBALL,1,850),
/* plasma */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_PLASMA,1,550), /* plasma */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_PLASMA,1,600),
/* solution */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_PLASMA,4,1050) /* solution */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_PLASMA,4,1050)
}; };
@ -488,7 +488,7 @@ SFG_PROGRAM_MEMORY uint8_t SFG_attackDamageTable[SFG_WEAPON_FIRE_TYPES_TOTAL] =
{ {
/* melee */ 7, /* melee */ 7,
/* bullet */ 10, /* bullet */ 10,
/* explostion (fireball) */ 13, /* explostion (fireball) */ 17,
/* plasma */ 17 /* plasma */ 17
}; };

22
game.h
View File

@ -1707,6 +1707,17 @@ void SFG_playerChangeHealth(int8_t healthAdd)
SFG_player.lastHurtFrame = SFG_game.frame; SFG_player.lastHurtFrame = SFG_game.frame;
} }
void SFG_playerChangeHealthWithMiltiplier(int8_t healthAdd)
{
if (healthAdd < 0)
healthAdd =
RCL_min(-1,
(((RCL_Unit) healthAdd) * SFG_PLAYER_DAMAGE_MULTIPLIER) /
RCL_UNITS_PER_SQUARE);
SFG_playerChangeHealth(healthAdd);
}
uint8_t SFG_distantSoundVolume(RCL_Unit x, RCL_Unit y, RCL_Unit z) uint8_t SFG_distantSoundVolume(RCL_Unit x, RCL_Unit y, RCL_Unit z)
{ {
RCL_Unit distance = SFG_taxicabDistance(x,y,z, RCL_Unit distance = SFG_taxicabDistance(x,y,z,
@ -1819,7 +1830,7 @@ void SFG_createExplosion(RCL_Unit x, RCL_Unit y, RCL_Unit z)
uint8_t damage = SFG_getDamageValue(SFG_WEAPON_FIRE_TYPE_FIREBALL); uint8_t damage = SFG_getDamageValue(SFG_WEAPON_FIRE_TYPE_FIREBALL);
if (SFG_pushPlayerAway(x,y,SFG_EXPLOSION_PUSH_AWAY_DISTANCE)) if (SFG_pushPlayerAway(x,y,SFG_EXPLOSION_PUSH_AWAY_DISTANCE))
SFG_playerChangeHealth(-1 * damage); SFG_playerChangeHealthWithMiltiplier(-1 * damage);
for (uint16_t i = 0; i < SFG_currentLevel.monsterRecordCount; ++i) for (uint16_t i = 0; i < SFG_currentLevel.monsterRecordCount; ++i)
{ {
@ -2067,7 +2078,7 @@ void SFG_monsterPerformAI(SFG_MonsterRecord *monster)
state = SFG_MONSTER_STATE_ATTACKING; state = SFG_MONSTER_STATE_ATTACKING;
SFG_playerChangeHealth( SFG_playerChangeHealthWithMiltiplier(
-1 * SFG_getDamageValue(SFG_WEAPON_FIRE_TYPE_MELEE)); -1 * SFG_getDamageValue(SFG_WEAPON_FIRE_TYPE_MELEE));
SFG_playGameSound(3,255); SFG_playGameSound(3,255);
@ -2081,10 +2092,7 @@ void SFG_monsterPerformAI(SFG_MonsterRecord *monster)
SFG_TileDefinition tile = SFG_TileDefinition tile =
SFG_getMapTile(SFG_currentLevel.levelPointer,mX,mY,&properties); SFG_getMapTile(SFG_currentLevel.levelPointer,mX,mY,&properties);
SFG_createExplosion(mX * RCL_UNITS_PER_SQUARE, SFG_createExplosion(pX,pY,pZ);
mY * RCL_UNITS_PER_SQUARE,
SFG_TILE_FLOOR_HEIGHT(tile) * SFG_WALL_HEIGHT_STEP +
SFG_WALL_HEIGHT_STEP);
monster->health = 0; monster->health = 0;
} }
@ -2294,7 +2302,7 @@ void SFG_updateLevel()
SFG_player.camera.height)) SFG_player.camera.height))
{ {
eliminate = 1; eliminate = 1;
SFG_playerChangeHealth(-1 * SFG_getDamageValue(attackType)); SFG_playerChangeHealthWithMiltiplier(-1 * SFG_getDamageValue(attackType));
} }
/* check collision with the map (we don't use SFG_floorCollisionHeightAt /* check collision with the map (we don't use SFG_floorCollisionHeightAt

View File

@ -26,7 +26,9 @@
integers and rounding errors can occur soon, so don't set this to extreme integers and rounding errors can occur soon, so don't set this to extreme
values (try to keep from 20 to 100). values (try to keep from 20 to 100).
*/ */
#define SFG_FPS 60 #ifndef SFG_FPS
#define SFG_FPS 60
#endif
/** /**
On platforms with mouse this sets its horizontal sensitivity. 128 means 1 On platforms with mouse this sets its horizontal sensitivity. 128 means 1
@ -81,6 +83,14 @@
#define SFG_RESOLUTION_SCALEDOWN 1 #define SFG_RESOLUTION_SCALEDOWN 1
#endif #endif
/**
Multiplier, in RCL_Units (1024 == 1.0), of the damager player takes. This can
be used to balance difficulty.
*/
#ifndef SFG_PLAYER_DAMAGE_MULTIPLIER
#define SFG_PLAYER_DAMAGE_MULTIPLIER 512
#endif
/** /**
Hint as to whether run in fullscreen, if the platform allows it. Hint as to whether run in fullscreen, if the platform allows it.
*/ */
@ -301,14 +311,14 @@
Developer cheat for having infinite ammo in all weapons. Developer cheat for having infinite ammo in all weapons.
*/ */
#ifndef SFG_INFINITE_AMMO #ifndef SFG_INFINITE_AMMO
#define SFG_INFINITE_AMMO 1 #define SFG_INFINITE_AMMO 0
#endif #endif
/** /**
Developer cheat for immortality. Developer cheat for immortality.
*/ */
#ifndef SFG_IMMORTAL #ifndef SFG_IMMORTAL
#define SFG_IMMORTAL 1 #define SFG_IMMORTAL 0
#endif #endif
/** /**
@ -330,14 +340,14 @@
options is ignored, 1 means load level 1 etc. options is ignored, 1 means load level 1 etc.
*/ */
#ifndef SFG_START_LEVEL #ifndef SFG_START_LEVEL
#define SFG_START_LEVEL 6 #define SFG_START_LEVEL 0
#endif #endif
/** /**
Reveals whole level map from start. Reveals whole level map from start.
*/ */
#ifndef SFG_REVEAL_MAP #ifndef SFG_REVEAL_MAP
#define SFG_REVEAL_MAP 1 #define SFG_REVEAL_MAP 0
#endif #endif
/** /**