Skip to content

Commit 6bea84f

Browse files
authored
Merge pull request #82664 from sparr/debug_spawn_faction
Add debug menu entry to spawn npc in player faction
2 parents 150f9b2 + 318b7b6 commit 6bea84f

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/debug_menu.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ std::string enum_to_string<debug_menu::debug_menu_index>( debug_menu::debug_menu
196196
case debug_menu::debug_menu_index::SHORT_TELEPORT: return "SHORT_TELEPORT";
197197
case debug_menu::debug_menu_index::LONG_TELEPORT: return "LONG_TELEPORT";
198198
case debug_menu::debug_menu_index::SPAWN_NPC: return "SPAWN_NPC";
199+
case debug_menu::debug_menu_index::SPAWN_NPC_FOLLOWER: return "SPAWN_NPC_FOLLOWER";
199200
case debug_menu::debug_menu_index::SPAWN_NAMED_NPC: return "SPAWN_NAMED_NPC";
200201
case debug_menu::debug_menu_index::SPAWN_OM_NPC: return "SPAWN_OM_NPC";
201202
case debug_menu::debug_menu_index::SPAWN_MON: return "SPAWN_MON";
@@ -1038,6 +1039,7 @@ static int spawning_uilist()
10381039
{ uilist_entry( debug_menu_index::WISH, true, 'w', _( "Spawn an item" ) ) },
10391040
{ uilist_entry( debug_menu_index::SPAWN_ITEM_GROUP, true, 'W', _( "Spawn an item group" ) ) },
10401041
{ uilist_entry( debug_menu_index::SPAWN_NPC, true, 'n', _( "Spawn NPC" ) ) },
1042+
{ uilist_entry( debug_menu_index::SPAWN_NPC_FOLLOWER, true, 'f', _( "Spawn NPC follower" ) ) },
10411043
{ uilist_entry( debug_menu_index::SPAWN_NAMED_NPC, true, 'p', _( "Spawn named NPC" ) ) },
10421044
{ uilist_entry( debug_menu_index::SPAWN_OM_NPC, true, 'N', _( "Spawn random NPC on overmap" ) ) },
10431045
{ uilist_entry( debug_menu_index::SPAWN_MON, true, 'm', _( "Spawn monster" ) ) },
@@ -3749,6 +3751,23 @@ static void spawn_npc()
37493751
g->load_npcs();
37503752
}
37513753

3754+
static void spawn_npc_follower()
3755+
{
3756+
avatar &player_character = get_avatar();
3757+
shared_ptr_fast<npc> temp = make_shared_fast<npc>();
3758+
temp->normalize();
3759+
temp->randomize();
3760+
temp->spawn_at_precise( player_character.pos_abs() + point( -4, -4 ) );
3761+
overmap_buffer.insert_npc( temp );
3762+
temp->form_opinion( player_character );
3763+
temp->set_attitude( NPCATT_FOLLOW );
3764+
temp->set_fac( faction_your_followers );
3765+
temp->mission = NPC_MISSION_NULL;
3766+
temp->add_new_mission( mission::reserve_random( ORIGIN_ANY_NPC, temp->pos_abs_omt(),
3767+
temp->getID() ) );
3768+
g->load_npcs();
3769+
}
3770+
37523771
static void spawn_named_npc()
37533772
{
37543773
uilist npc_menu;
@@ -4117,6 +4136,10 @@ void debug()
41174136
spawn_npc();
41184137
break;
41194138

4139+
case debug_menu_index::SPAWN_NPC_FOLLOWER:
4140+
spawn_npc_follower();
4141+
break;
4142+
41204143
case debug_menu_index::SPAWN_NAMED_NPC:
41214144
spawn_named_npc();
41224145
break;

src/debug_menu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ enum class debug_menu_index : int {
2424
SHORT_TELEPORT,
2525
LONG_TELEPORT,
2626
SPAWN_NPC,
27+
SPAWN_NPC_FOLLOWER,
2728
SPAWN_NAMED_NPC,
2829
SPAWN_OM_NPC,
2930
SPAWN_MON,

0 commit comments

Comments
 (0)