Skip to content

Commit

Permalink
fix: only single exosuit can be worn now (#5933)
Browse files Browse the repository at this point in the history
* changes

* formatter
  • Loading branch information
Goredell authored Jan 17, 2025
1 parent 1885898 commit f1679cc
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 2 deletions.
5 changes: 5 additions & 0 deletions data/json/flags.json
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,11 @@
"context": [ "ARMOR", "TOOL_ARMOR" ],
"info": "You can wear <info>only one</info>."
},
{
"id": "EXOSUIT",
"type": "json_flag",
"context": [ "ARMOR", "TOOL_ARMOR" ]
},
{
"id": "FANCY",
"type": "json_flag",
Expand Down
4 changes: 2 additions & 2 deletions data/json/items/armor/power_armor.json
Original file line number Diff line number Diff line change
Expand Up @@ -647,7 +647,7 @@
"NO_UNLOAD",
"NO_RELOAD",
"BELTED",
"ONLY_ONE",
"EXOSUIT",
"POWERARMOR_COMPATIBLE",
"OVERSIZE",
"ALLOWS_NATURAL_ATTACKS"
Expand Down Expand Up @@ -717,7 +717,7 @@
"NO_RELOAD",
"COMPACT",
"BELTED",
"ONLY_ONE",
"EXOSUIT",
"POWERARMOR_COMPATIBLE",
"OVERSIZE",
"ALLOWS_NATURAL_ATTACKS"
Expand Down
6 changes: 6 additions & 0 deletions src/character.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3260,6 +3260,12 @@ ret_val<bool> Character::can_wear( const item &it, bool with_equip_change ) cons
}
}

for( auto &i : worn ) {
if( i->has_flag( flag_EXOSUIT ) && it.has_flag( flag_EXOSUIT ) ) {
return ret_val<bool>::make_failure( _( "Can't wear more than one exosuit!" ) );
}
}

if( amount_worn( it.typeId() ) >= MAX_WORN_PER_TYPE ) {
return ret_val<bool>::make_failure( _( "Can't wear %i or more %s at once." ),
MAX_WORN_PER_TYPE + 1, it.tname( MAX_WORN_PER_TYPE + 1 ) );
Expand Down
1 change: 1 addition & 0 deletions src/flag.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ const flag_id flag_NPC_THROWN( "NPC_THROWN" );
const flag_id flag_NPC_THROW_NOW( "NPC_THROW_NOW" );
const flag_id flag_NUTRIENT_OVERRIDE( "NUTRIENT_OVERRIDE" );
const flag_id flag_ONLY_ONE( "ONLY_ONE" );
const flag_id flag_EXOSUIT( "EXOSUIT" );
const flag_id flag_ORGANIC( "ORGANIC" );
const flag_id flag_OUTER( "OUTER" );
const flag_id flag_OVERSIZE( "OVERSIZE" );
Expand Down
1 change: 1 addition & 0 deletions src/flag.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ extern const flag_id flag_NPC_THROWN;
extern const flag_id flag_NPC_THROW_NOW;
extern const flag_id flag_NUTRIENT_OVERRIDE;
extern const flag_id flag_ONLY_ONE;
extern const flag_id flag_EXOSUIT;
extern const flag_id flag_ORGANIC;
extern const flag_id flag_OUTER;
extern const flag_id flag_OVERSIZE;
Expand Down

0 comments on commit f1679cc

Please sign in to comment.