Skip to content

Commit

Permalink
Sneak: Add option for old move code
Browse files Browse the repository at this point in the history
Temporary option for classic sneak behaviour.
Enabled by an additional 'old move' physics override.
Disabled by default.
  • Loading branch information
paramat committed Apr 6, 2017
1 parent 859141a commit 7681e42
Show file tree
Hide file tree
Showing 9 changed files with 348 additions and 11 deletions.
3 changes: 3 additions & 0 deletions src/content_cao.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1645,6 +1645,8 @@ void GenericCAO::processMessage(const std::string &data)
// these are sent inverted so we get true when the server sends nothing
bool sneak = !readU8(is);
bool sneak_glitch = !readU8(is);
// this is not sent inverted to get false when the server sends nothing
bool old_move = readU8(is);


if(m_is_local_player)
Expand All @@ -1655,6 +1657,7 @@ void GenericCAO::processMessage(const std::string &data)
player->physics_override_gravity = override_gravity;
player->physics_override_sneak = sneak;
player->physics_override_sneak_glitch = sneak_glitch;
player->physics_override_old_move = old_move;
}
} else if (cmd == GENERIC_CMD_SET_ANIMATION) {
// TODO: change frames send as v2s32 value
Expand Down
6 changes: 4 additions & 2 deletions src/content_sao.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -789,6 +789,7 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, u16 peer_id_, bool is_singleplayer
m_physics_override_gravity(1),
m_physics_override_sneak(true),
m_physics_override_sneak_glitch(true),
m_physics_override_old_move(false),
m_physics_override_sent(false)
{
assert(m_peer_id != 0); // pre-condition
Expand Down Expand Up @@ -886,7 +887,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4
msg_os << serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed,
m_physics_override_jump, m_physics_override_gravity, m_physics_override_sneak,
m_physics_override_sneak_glitch)); // 5
m_physics_override_sneak_glitch, m_physics_override_old_move)); // 5
// (GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only.
msg_os << serializeLongString(gob_cmd_update_nametag_attributes(m_prop.nametag_color)); // 6
int message_count = 6 + m_bone_position.size();
Expand Down Expand Up @@ -1025,7 +1026,8 @@ void PlayerSAO::step(float dtime, bool send_recommended)
m_physics_override_sent = true;
std::string str = gob_cmd_update_physics_override(m_physics_override_speed,
m_physics_override_jump, m_physics_override_gravity,
m_physics_override_sneak, m_physics_override_sneak_glitch);
m_physics_override_sneak, m_physics_override_sneak_glitch,
m_physics_override_old_move);
// create message and add to list
ActiveObjectMessage aom(getId(), true, str);
m_messages_out.push(aom);
Expand Down
1 change: 1 addition & 0 deletions src/content_sao.h
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ class PlayerSAO : public UnitSAO
float m_physics_override_gravity;
bool m_physics_override_sneak;
bool m_physics_override_sneak_glitch;
bool m_physics_override_old_move;
bool m_physics_override_sent;
};

Expand Down
4 changes: 3 additions & 1 deletion src/genericobject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups)
}

std::string gob_cmd_update_physics_override(float physics_override_speed, float physics_override_jump,
float physics_override_gravity, bool sneak, bool sneak_glitch)
float physics_override_gravity, bool sneak, bool sneak_glitch, bool old_move)
{
std::ostringstream os(std::ios::binary);
// command
Expand All @@ -130,6 +130,8 @@ std::string gob_cmd_update_physics_override(float physics_override_speed, float
// these are sent inverted so we get true when the server sends nothing
writeU8(os, !sneak);
writeU8(os, !sneak_glitch);
// this is not inverted to get false when the server sends nothing
writeU8(os, old_move);
return os.str();
}

Expand Down
3 changes: 2 additions & 1 deletion src/genericobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ std::string gob_cmd_punched(s16 damage, s16 result_hp);
std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups);

std::string gob_cmd_update_physics_override(float physics_override_speed,
float physics_override_jump, float physics_override_gravity, bool sneak, bool sneak_glitch);
float physics_override_jump, float physics_override_gravity,
bool sneak, bool sneak_glitch, bool old_move);

std::string gob_cmd_update_animation(v2f frames, float frame_speed, float frame_blend, bool frame_loop);

Expand Down
Loading

0 comments on commit 7681e42

Please sign in to comment.