commit - ff8951934097c499e8282150b679feca7d53ea4c
commit + e5dfe53d14c67dcf18bf7c84a672eb490a0329dc
blob - 07f1032f49506cc12acc1cb6965600965a419a27
blob + 06f8368e342a02b0d903ea07aeb4a7b94c37d186
--- include/globals.h
+++ include/globals.h
// every time a block is broken.
#define ENABLE_PICKUP_ANIMATION
+// If defined, players are able to receive damage from nearby cacti.
+#define ENABLE_CACTUS_DAMAGE
+
// If defined, logs unrecognized packet IDs
// #define DEV_LOG_UNKNOWN_PACKETS
blob - 780d6e055a8239a2ee9ca2454ec435e49dac2244
blob + 464e7a4df918d7c63b3d2568dbc3d194f7974d27
--- src/procedures.c
+++ src/procedures.c
strcpy((char *)recv_buffer + player_name_len, " was slain by ");
strcpy((char *)recv_buffer + player_name_len + 14, attacker->name);
recv_buffer[player_name_len + 14 + strlen(attacker->name)] = '\0';
+ } else if (damage_type == D_cactus) {
+ // Killed by being near a cactus
+ strcpy((char *)recv_buffer + player_name_len, " was pricked to death");
+ recv_buffer[player_name_len + 21] = '\0';
} else {
// Unknown death reason
strcpy((char *)recv_buffer + player_name_len, " died");
- recv_buffer[player_name_len + 4] = '\0';
+ recv_buffer[player_name_len + 5] = '\0';
}
} else player->health -= effective_damage;
if (block >= B_lava && block < B_lava + 4) {
hurtEntity(player->client_fd, -1, D_lava, 8);
}
+ #ifdef ENABLE_CACTUS_DAMAGE
+ // Tick damage from a cactus block if one is under/inside or around the player.
+ if (block == B_cactus ||
+ getBlockAt(player->x + 1, player->y, player->z) == B_cactus ||
+ getBlockAt(player->x - 1, player->y, player->z) == B_cactus ||
+ getBlockAt(player->x, player->y, player->z + 1) == B_cactus ||
+ getBlockAt(player->x, player->y, player->z - 1) == B_cactus
+ ) hurtEntity(player->client_fd, -1, D_cactus, 4);
+ #endif
// Heal from saturation if player is able and has enough food
if (player->health >= 20 || player->health == 0) continue;
if (player->hunger < 18) continue;