NPC ~ Dependencies: Player class, Open world, Battle - uchicago-cs/chiventure GitHub Wiki

Teams: Player class, Open world, Battle, and NPC

Battle

  • Appropriate-level NPCs: either make an explicit range of levels of players than can fight a given NPC (store it in npc-battle struct) or have a difference from the npc's level that player's can be (either below or above) to fight a given NPC; question: should there be the same difference for every NPC or should it be explicitly stated for each NPC?
  • Flag NPCs for battle: this information is stored in the hostility struct. Only NPCs which are conditional_friendly or hostile can fight.
  • Choice to battle, or NPC just attacks (option for hostile NPCs or NPCs available to battle): again this information is stored in the hostility struct. If an NPC is conditional_friendly players (of appropriate levels) can choose to fight them. If an NPC is hostile it will attack first.
  • Looting dead bodies of NPCs: can use the remove_item_from_NPC function to remove it from the NPC. When the NPC dies maybe a list of their items is printed and players can choose from that list what they want to pick up (with take _____ command). Question for CLI: would it be possible to print out this list? For the "take" command, do we need to move all of the items from the NPC to the room they're in or can the "take" command take directly from the NPC?
  • Allow for multiple battles with the same NPC: first, added a surrender_level to NPCs which is the level of health at which they surrender (so the battle can end before an NPC dies). Second, add functions to change an NPC's hostility level, difficulty, will_fight, and surrender level, so that they can behave differently in different battles.

Class

  • Different classes could encounter different NPC -- parse out these interactions [for a later sprint]
  • Summary of what kind of npcs are being created

Openworld

  • What kind of NPCs (Hostile or non hostile one) will be generated in a room / level [for a later sprint]
  • Add issue to backlog for room-specific NPCs