diff --git a/data/json/bionics.json b/data/json/bionics.json index 5195589e082e5..bc9ad14afb364 100644 --- a/data/json/bionics.json +++ b/data/json/bionics.json @@ -1022,7 +1022,7 @@ "id": "bio_gills", "type": "bionic", "name": { "str": "Respirator" }, - "description": "A complex respiration augmentation system. Improves respiration ability in air and allows breathing water. Will automatically turn on when drowning. Turn on to recharge stamina faster, at moderate power cost. Asthmatics may also use it to stop asthma attacks.", + "description": "A complex respiration augmentation system. Improves respiration ability in air and allows breathing water. Will automatically activate when drowning. Turn on to recharge stamina faster, at moderate power cost. Asthmatics may also use it to stop asthma attacks.", "occupied_bodyparts": [ [ "torso", 8 ], [ "head", 2 ], [ "mouth", 2 ] ], "flags": [ "BIONIC_TOGGLED" ], "trigger_cost": "25 kJ" diff --git a/src/bionics.cpp b/src/bionics.cpp index e8acb46911b37..48b680bf8ef27 100644 --- a/src/bionics.cpp +++ b/src/bionics.cpp @@ -1693,10 +1693,13 @@ void Character::process_bionic( bionic &bio ) mod_power_level( -trigger_cost ); } } else if( bio.id == bio_gills ) { - if( has_effect( effect_asthma ) ) { + const units::energy trigger_cost = bio.info().power_trigger / 8; + if( has_effect( effect_asthma ) && get_power_level() >= trigger_cost ) { add_msg_if_player( m_good, - _( "You feel your throat open up and air filling your lungs!" ) ); + _( "Your %s activates and you feel your throat open up and air filling your lungs!" ), + bio.info().name ); remove_effect( effect_asthma ); + mod_power_level( -trigger_cost ); } } else if( bio.id == bio_evap ) { if( is_underwater() ) { diff --git a/src/suffer.cpp b/src/suffer.cpp index 5658887b7c459..dd43ba37b7b17 100644 --- a/src/suffer.cpp +++ b/src/suffer.cpp @@ -317,9 +317,15 @@ void suffer::while_underwater( Character &you ) you.oxygen += 12; } if( you.oxygen <= 5 ) { - if( you.has_bionic( bio_gills ) && you.get_power_level() >= bio_gills->power_trigger ) { - you.oxygen += 5; - you.mod_power_level( -bio_gills->power_trigger ); + if( you.has_bionic( bio_gills ) ) { + if( you.get_power_level() >= bio_gills->power_trigger ) { + you.oxygen += 5; + you.mod_power_level( -bio_gills->power_trigger ); + } else { + you.add_msg_if_player( m_bad, + _( "You don't have enough bionic power for activation of your Respirator, so you're drowning!" ) ); + you.apply_damage( nullptr, bodypart_id( "torso" ), rng( 1, 4 ) ); + } } else { you.add_msg_if_player( m_bad, _( "You're drowning!" ) ); you.apply_damage( nullptr, bodypart_id( "torso" ), rng( 1, 4 ) );