Skip to content

Commit f6da7b3

Browse files
committedApr 17, 2017
Sneak: Add option for old move code
Temporary option for the old move code for specific old sneak behaviour. Enabled by setting the added 'new move' physics override to false. By default 'new move' is true.
1 parent 907be0a commit f6da7b3

10 files changed

+349
-12
lines changed
 

‎doc/lua_api.txt

+5-1
Original file line numberDiff line numberDiff line change
@@ -3021,7 +3021,11 @@ This is basically a reference to a C++ `ServerActiveObject`
30213021
* `jump`: multiplier to default jump value (default: `1`)
30223022
* `gravity`: multiplier to default gravity value (default: `1`)
30233023
* `sneak`: whether player can sneak (default: `true`)
3024-
* `sneak_glitch`: whether player can use the sneak glitch (default: `true`)
3024+
* `sneak_glitch`: whether player can use the new move code replications
3025+
of the old sneak side-effects: sneak ladders and 2 node sneak jump
3026+
when next to a ledge 2 nodes up (default: `true`)
3027+
* `new_move`: use new move/sneak code. When `false` the exact old code
3028+
is used for the specific old sneak behaviour (default: `true`)
30253029
* `get_physics_override()`: returns the table given to set_physics_override
30263030
* `hud_add(hud definition)`: add a HUD element described by HUD def, returns ID
30273031
number on success

‎src/content_cao.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -1652,6 +1652,7 @@ void GenericCAO::processMessage(const std::string &data)
16521652
// these are sent inverted so we get true when the server sends nothing
16531653
bool sneak = !readU8(is);
16541654
bool sneak_glitch = !readU8(is);
1655+
bool new_move = !readU8(is);
16551656

16561657

16571658
if(m_is_local_player)
@@ -1662,6 +1663,7 @@ void GenericCAO::processMessage(const std::string &data)
16621663
player->physics_override_gravity = override_gravity;
16631664
player->physics_override_sneak = sneak;
16641665
player->physics_override_sneak_glitch = sneak_glitch;
1666+
player->physics_override_new_move = new_move;
16651667
}
16661668
} else if (cmd == GENERIC_CMD_SET_ANIMATION) {
16671669
// TODO: change frames send as v2s32 value

‎src/content_sao.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,7 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, u16 peer_id_, bool is_singleplayer
789789
m_physics_override_gravity(1),
790790
m_physics_override_sneak(true),
791791
m_physics_override_sneak_glitch(true),
792+
m_physics_override_new_move(true),
792793
m_physics_override_sent(false)
793794
{
794795
assert(m_peer_id != 0); // pre-condition
@@ -886,7 +887,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
886887
m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4
887888
msg_os << serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed,
888889
m_physics_override_jump, m_physics_override_gravity, m_physics_override_sneak,
889-
m_physics_override_sneak_glitch)); // 5
890+
m_physics_override_sneak_glitch, m_physics_override_new_move)); // 5
890891
// (GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only.
891892
msg_os << serializeLongString(gob_cmd_update_nametag_attributes(m_prop.nametag_color)); // 6
892893
int message_count = 6 + m_bone_position.size();
@@ -1049,7 +1050,8 @@ void PlayerSAO::step(float dtime, bool send_recommended)
10491050
m_physics_override_sent = true;
10501051
std::string str = gob_cmd_update_physics_override(m_physics_override_speed,
10511052
m_physics_override_jump, m_physics_override_gravity,
1052-
m_physics_override_sneak, m_physics_override_sneak_glitch);
1053+
m_physics_override_sneak, m_physics_override_sneak_glitch,
1054+
m_physics_override_new_move);
10531055
// create message and add to list
10541056
ActiveObjectMessage aom(getId(), true, str);
10551057
m_messages_out.push(aom);

‎src/content_sao.h

+1
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ class PlayerSAO : public UnitSAO
397397
float m_physics_override_gravity;
398398
bool m_physics_override_sneak;
399399
bool m_physics_override_sneak_glitch;
400+
bool m_physics_override_new_move;
400401
bool m_physics_override_sent;
401402
};
402403

‎src/genericobject.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups)
118118
}
119119

120120
std::string gob_cmd_update_physics_override(float physics_override_speed, float physics_override_jump,
121-
float physics_override_gravity, bool sneak, bool sneak_glitch)
121+
float physics_override_gravity, bool sneak, bool sneak_glitch, bool new_move)
122122
{
123123
std::ostringstream os(std::ios::binary);
124124
// command
@@ -130,6 +130,7 @@ std::string gob_cmd_update_physics_override(float physics_override_speed, float
130130
// these are sent inverted so we get true when the server sends nothing
131131
writeU8(os, !sneak);
132132
writeU8(os, !sneak_glitch);
133+
writeU8(os, !new_move);
133134
return os.str();
134135
}
135136

‎src/genericobject.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ std::string gob_cmd_punched(s16 damage, s16 result_hp);
6868
std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups);
6969

7070
std::string gob_cmd_update_physics_override(float physics_override_speed,
71-
float physics_override_jump, float physics_override_gravity, bool sneak, bool sneak_glitch);
71+
float physics_override_jump, float physics_override_gravity,
72+
bool sneak, bool sneak_glitch, bool new_move);
7273

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

0 commit comments

Comments
 (0)
Please sign in to comment.