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] =
{
/* 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),
/* r. laun. */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_FIREBALL,1,900),
/* plasma */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_PLASMA,1,550),
/* r. laun. */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_FIREBALL,1,850),
/* plasma */ SFG_WEAPON_ATTRIBUTE(SFG_WEAPON_FIRE_TYPE_PLASMA,1,600),
/* 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,
/* bullet */ 10,
/* explostion (fireball) */ 13,
/* explostion (fireball) */ 17,
/* plasma */ 17
};

22
game.h
View File

@ -1707,6 +1707,17 @@ void SFG_playerChangeHealth(int8_t healthAdd)
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)
{
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);
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)
{
@ -2067,7 +2078,7 @@ void SFG_monsterPerformAI(SFG_MonsterRecord *monster)
state = SFG_MONSTER_STATE_ATTACKING;
SFG_playerChangeHealth(
SFG_playerChangeHealthWithMiltiplier(
-1 * SFG_getDamageValue(SFG_WEAPON_FIRE_TYPE_MELEE));
SFG_playGameSound(3,255);
@ -2081,10 +2092,7 @@ void SFG_monsterPerformAI(SFG_MonsterRecord *monster)
SFG_TileDefinition tile =
SFG_getMapTile(SFG_currentLevel.levelPointer,mX,mY,&properties);
SFG_createExplosion(mX * RCL_UNITS_PER_SQUARE,
mY * RCL_UNITS_PER_SQUARE,
SFG_TILE_FLOOR_HEIGHT(tile) * SFG_WALL_HEIGHT_STEP +
SFG_WALL_HEIGHT_STEP);
SFG_createExplosion(pX,pY,pZ);
monster->health = 0;
}
@ -2294,7 +2302,7 @@ void SFG_updateLevel()
SFG_player.camera.height))
{
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

View File

@ -26,7 +26,9 @@
integers and rounding errors can occur soon, so don't set this to extreme
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
@ -81,6 +83,14 @@
#define SFG_RESOLUTION_SCALEDOWN 1
#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.
*/
@ -301,14 +311,14 @@
Developer cheat for having infinite ammo in all weapons.
*/
#ifndef SFG_INFINITE_AMMO
#define SFG_INFINITE_AMMO 1
#define SFG_INFINITE_AMMO 0
#endif
/**
Developer cheat for immortality.
*/
#ifndef SFG_IMMORTAL
#define SFG_IMMORTAL 1
#define SFG_IMMORTAL 0
#endif
/**
@ -330,14 +340,14 @@
options is ignored, 1 means load level 1 etc.
*/
#ifndef SFG_START_LEVEL
#define SFG_START_LEVEL 6
#define SFG_START_LEVEL 0
#endif
/**
Reveals whole level map from start.
*/
#ifndef SFG_REVEAL_MAP
#define SFG_REVEAL_MAP 1
#define SFG_REVEAL_MAP 0
#endif
/**