Skip to content
Permalink
Browse files

Disable fall damage when "immortal" group set (#6946)

  • Loading branch information...
lisacvuk authored and SmallJoker committed Jan 23, 2018
1 parent 04e5a65 commit 62c10e3d0855fa14fdc260da0b7cd748e53db13f
Showing with 15 additions and 2 deletions.
  1. +4 −1 src/clientenvironment.cpp
  2. +5 −0 src/content_cao.cpp
  3. +6 −1 src/content_cao.h
@@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "raycast.h"
#include "voxelalgorithms.h"
#include "settings.h"
#include "content_cao.h"
#include <algorithm>
#include "client/renderingengine.h"

@@ -207,6 +208,8 @@ void ClientEnvironment::step(float dtime)

//std::cout<<"Looped "<<loopcount<<" times."<<std::endl;

bool player_immortal = lplayer->getCAO() && lplayer->getCAO()->isImmortal();

for (const CollisionInfo &info : player_collisions) {
v3f speed_diff = info.new_speed - info.old_speed;;
// Handle only fall damage
@@ -227,7 +230,7 @@ void ClientEnvironment::step(float dtime)
pre_factor = 1.0 + (float)addp/100.0;
}
float speed = pre_factor * speed_diff.getLength();
if (speed > tolerance) {
if (speed > tolerance && !player_immortal) {
f32 damage_f = (speed - tolerance) / BS * post_factor;
u8 damage = (u8)MYMIN(damage_f + 0.5, 255);
if (damage != 0) {
@@ -360,6 +360,11 @@ v3f GenericCAO::getPosition()
return pos_translator.vect_show;
}

const bool GenericCAO::isImmortal()
{
return itemgroup_get(getGroups(), "immortal");
}

scene::ISceneNode* GenericCAO::getSceneNode()
{
if (m_meshnode) {
@@ -124,7 +124,10 @@ class GenericCAO : public ClientActiveObject
{
return ACTIVEOBJECT_TYPE_GENERIC;
}

inline const ItemGroupList &getGroups() const
{
return m_armor_groups;
}
void initialize(const std::string &data);

void processInitData(const std::string &data);
@@ -143,6 +146,8 @@ class GenericCAO : public ClientActiveObject
return m_yaw;
}

const bool isImmortal();

scene::ISceneNode *getSceneNode();

scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode();

0 comments on commit 62c10e3

Please sign in to comment.
You can’t perform that action at this time.