CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.33k stars 4.14k forks source link

mission properties: can only request one type #26301

Closed overbo closed 5 years ago

overbo commented 5 years ago

Is your feature request related to a problem? Please describe.

Missions can only track one item type (or target type). It would be excellent to be able to request an array of items within the mission definition. As it stands, item placement requires a function call instead of a location, which limits the types of missions that can be generated. As it stands, NPC quests are delivered in a simplistic fetch quest manner.

Describe the solution you'd like
It would be great to have more complex quest goals enabled by the quest structure. Multipart quests would go a decent way to generating a more dynamic NPC environment. Establishing a successful pattern with quest items could be re-used to establish better patterns for other mission types.

Imagine a quest where an demonstrably intelligent NPC that wanted to be a doctor but never got the chance was trying to convert an abandoned autodoc basement into a way of life.

The quest structure would go from a chain of fetch quests:

quest 1.

  "item": "anesthetic",
  "count": 3,
  "start": "reveal_lab",

quest 2.

  "item": "manual_first_aid",
  "count": 1,
  "start": "reveal_hospital",

quest 3

  "item": "textbook_first_aid",
  "count": 1,
  "start": "reveal_hospital",

quest 4

  "item": "textbook_first_aid",
  "count": 1,
  "start": "reveal_hospital",

to this: quest 1

  "item": {
    [ "item": "anesthetic", "count": 3, "location": "lab_4side" ],
    [ "item": "manual_first_aid", "count": 1, "location": "hospital_5" ],
    [ "item": "textbook_firstaid", "count": 1, "location": "hospital_7" ],
    [ "item": "emergency_book", "count": 1, "location": "hosoital_8" ]
  }

If the project decided to re-use place_item from mapgen, x and y coordinates could also potentially be specified pre-rotation.

Describe alternatives you've considered
stick with the chain of fetch quests grind the rust off my c++, learn to use github, attempting to code it myself and end in failure play the chain of fetch quests for comedy via NPC dialogue.

oh, hey, in advanced to the advanced emergency guide, it turns out that I also need the illustrated guide with no words because as luck would have it I'm illiterate and farsighted with no glasses, sorry if that didn't come up before, but you're in it this far, you may as well see it to the end.

Additional context
repeating the patterns for item placement from mapgen would be even more powerful. Changing mission structures to re-use code or functions in mapgen could establish a pattern for place_npcs, place_vehicles, place_monster, and the like, possibly giving the project an opportunity to re-use what seems like superior core code to me.

stale[bot] commented 5 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not \'bump\' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

stale[bot] commented 5 years ago

This issue has been automatically closed due to lack of activity. This does not mean that we do not value the issue. Feel free to request that it be re-opened if you are going to actively work on it