diff --git a/src/activity_handlers.cpp b/src/activity_handlers.cpp index b5c54c549cb18..539768bf18d6e 100644 --- a/src/activity_handlers.cpp +++ b/src/activity_handlers.cpp @@ -1921,7 +1921,12 @@ void activity_handlers::start_fire_do_turn( player_activity *act, Character *you if( !here.is_flammable( where ) ) { try_fuel_fire( *act, *you, true ); if( !here.is_flammable( where ) ) { - you->add_msg_if_player( m_info, _( "There's nothing to light there." ) ); + if( here.has_flag_ter( ter_furn_flag::TFLAG_DEEP_WATER, where ) || + here.has_flag_ter( ter_furn_flag::TFLAG_SHALLOW_WATER, where ) ) { + you->add_msg_if_player( m_info, _( "You can't light a fire on water." ) ); + } else { + you->add_msg_if_player( m_info, _( "There's nothing to light there." ) ); + } you->cancel_activity(); return; } diff --git a/src/map.cpp b/src/map.cpp index 4be1b87a350de..d53f8702771c0 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -3681,6 +3681,12 @@ bool map::is_flammable( const tripoint &p ) bool map::is_flammable( const tripoint_bub_ms &p ) { + // No fires on water tiles regardless of other factors + if( has_flag_ter( ter_furn_flag::TFLAG_DEEP_WATER, p ) || + has_flag_ter( ter_furn_flag::TFLAG_SHALLOW_WATER, p ) ) { + return false; + } + if( has_flag( ter_furn_flag::TFLAG_FLAMMABLE, p ) ) { return true; }