mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
Play player_damage.ogg when recieving damage and additionally play player_falling_damage.ogg when recieving falling damage
This commit is contained in:
parent
773471750d
commit
2cdf0ff4ab
@ -40,6 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
#include "clientmap.h"
|
#include "clientmap.h"
|
||||||
#include "localplayer.h"
|
#include "localplayer.h"
|
||||||
|
#include "event.h"
|
||||||
#endif
|
#endif
|
||||||
#include "daynightratio.h"
|
#include "daynightratio.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
@ -2190,8 +2191,11 @@ void ClientEnvironment::step(float dtime)
|
|||||||
{
|
{
|
||||||
f32 damage_f = (speed - tolerance)/BS * post_factor;
|
f32 damage_f = (speed - tolerance)/BS * post_factor;
|
||||||
u16 damage = (u16)(damage_f+0.5);
|
u16 damage = (u16)(damage_f+0.5);
|
||||||
if(damage != 0)
|
if(damage != 0){
|
||||||
damageLocalPlayer(damage, true);
|
damageLocalPlayer(damage, true);
|
||||||
|
MtEvent *e = new SimpleTriggerEvent("PlayerFallingDamage");
|
||||||
|
m_gamedef->event()->put(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
17
src/game.cpp
17
src/game.cpp
@ -729,6 +729,18 @@ public:
|
|||||||
sm->m_sound->playSound(sm->m_ndef->get(nde->n).sound_dug, false);
|
sm->m_sound->playSound(sm->m_ndef->get(nde->n).sound_dug, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void playerDamage(MtEvent *e, void *data)
|
||||||
|
{
|
||||||
|
SoundMaker *sm = (SoundMaker*)data;
|
||||||
|
sm->m_sound->playSound(SimpleSoundSpec("player_damage", 0.5), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void playerFallingDamage(MtEvent *e, void *data)
|
||||||
|
{
|
||||||
|
SoundMaker *sm = (SoundMaker*)data;
|
||||||
|
sm->m_sound->playSound(SimpleSoundSpec("player_falling_damage", 0.5), false);
|
||||||
|
}
|
||||||
|
|
||||||
void registerReceiver(MtEventManager *mgr)
|
void registerReceiver(MtEventManager *mgr)
|
||||||
{
|
{
|
||||||
mgr->reg("ViewBobbingStep", SoundMaker::viewBobbingStep, this);
|
mgr->reg("ViewBobbingStep", SoundMaker::viewBobbingStep, this);
|
||||||
@ -737,6 +749,8 @@ public:
|
|||||||
mgr->reg("CameraPunchLeft", SoundMaker::cameraPunchLeft, this);
|
mgr->reg("CameraPunchLeft", SoundMaker::cameraPunchLeft, this);
|
||||||
mgr->reg("CameraPunchRight", SoundMaker::cameraPunchRight, this);
|
mgr->reg("CameraPunchRight", SoundMaker::cameraPunchRight, this);
|
||||||
mgr->reg("NodeDug", SoundMaker::nodeDug, this);
|
mgr->reg("NodeDug", SoundMaker::nodeDug, this);
|
||||||
|
mgr->reg("PlayerDamage", SoundMaker::playerDamage, this);
|
||||||
|
mgr->reg("PlayerFallingDamage", SoundMaker::playerFallingDamage, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void step(float dtime)
|
void step(float dtime)
|
||||||
@ -2202,6 +2216,9 @@ void the_game(
|
|||||||
player->hurt_tilt_timer = 1.5;
|
player->hurt_tilt_timer = 1.5;
|
||||||
player->hurt_tilt_strength = event.player_damage.amount/2;
|
player->hurt_tilt_strength = event.player_damage.amount/2;
|
||||||
player->hurt_tilt_strength = rangelim(player->hurt_tilt_strength, 2.0, 10.0);
|
player->hurt_tilt_strength = rangelim(player->hurt_tilt_strength, 2.0, 10.0);
|
||||||
|
|
||||||
|
MtEvent *e = new SimpleTriggerEvent("PlayerDamage");
|
||||||
|
gamedef->event()->put(e);
|
||||||
}
|
}
|
||||||
else if(event.type == CE_PLAYER_FORCE_MOVE)
|
else if(event.type == CE_PLAYER_FORCE_MOVE)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user