pioneer icon indicating copy to clipboard operation
pioneer copied to clipboard

New mission: Find person

Open robothauler opened this issue 5 years ago • 27 comments

The player has to find a person or a person with a ship and hand over a message. Which means hopping from station to station. Then return, or transport the person back. The ideas are taken from "https://pioneerspacesim.net/forum/viewtopic.php?f=3&t=487". I tried to add some surprises like pirates firing missiles or mercenaries who try to intercept if close to the planet.

Unfortunately, merging this will cause two issues.

  1. ~~The missile launch is not detected. No warning.~~ ~~No police action.~~
  2. Close to a station, the mercenary can fire what he can. But the player is immediately attacked by the police.

While 2. can be solved later. ~~It would be great if someone can take care of 1. e.g. play a warning sound and trigger an event so that other modules can take action.~~

robothauler avatar Nov 23 '19 17:11 robothauler

Hey! I think I have a very old branch, where I have a lot of "mysterious" messages that can be delivered. Could that be incorporated in this? (I have not tried this PR or looked at your code yet).

Look at MESSAGE_1-MESSAGE_70 here: https://github.com/impaktor/pioneer/blob/deliverMessage/data/lang/module-delivermessage/en.json#L102

EDIT: the reason I never opened a PR on that branch is because the code is just a copy-pase of DeliverPackage, which wouldn't really add any novel game play.

impaktor avatar Nov 23 '19 17:11 impaktor

The missile launch is not detected. No warning. No police action.

You can modify: https://github.com/pioneerspacesim/pioneer/blob/0c66156d227cb266fa3320507a4cb8303aa0e2a9/src/Ship.cpp#L1064

In order to obtain a "Warning" for missile launch, you should change the "for" to handle Missile...

Optionally, you can add a method to get the target of Missile and narrow the alert state propagation.

mike-f1 avatar Nov 24 '19 11:11 mike-f1

@impaktor, the message is more a file or a document or simply "If you want to be alive, jump into my ship".

@mike-f1, thank you for the hint.

robothauler avatar Nov 25 '19 10:11 robothauler

@mike-f1, thank you for the hint.

You're welcome :)

If I may, why not to "push" a different string instead of "ship-firing" (in LuaPlayer.cpp)?

And another thing I would note and could be done here or in a different PR: wouldn't it be easy to move the code for 'ship-equipping' in Ship.lua? ...IIRC there are a lot of code spreads along all modules which do the same exact thing. Just pick one ;)

Close to a station, the mercenary can fire what he can. But the player is immediately attacked by the police.

Found (and probably a change here will also close #4713) :

https://github.com/pioneerspacesim/pioneer/blob/d2ab921b62daa20e8a58f45c1c04c1e406b80a0a/data/modules/CrimeTracking/CrimeTracking.lua#L29

...which have an obious fix ;) Though I can't beat it will works well.

It's still quite limited even if you let any ship as a target: for example only a single mercenary/pirate will be prosecuted; if you fire back even you will be prosecuted... But at least you can obtain a more realistic behaviour.

mike-f1 avatar Dec 03 '19 14:12 mike-f1

Just an update from my side: I intend to review this (read code, and test play a mission), I'll have time over Christmas, which for me starts now on Tuesday (I had some vacation saved up), so please nag on me if I'm inactive.

impaktor avatar Dec 15 '19 16:12 impaktor

I've just done a fist quick glance, and I note:

  • There's no BBS-icon. That's perfectly fine in my book, and can be added later (E.g. magnifying glass over a person?), maybe @nozmajner has thoughts / want to know.

  • Not all mission headlines (specifically ADTEXT_1 & ADTEXT_2) start with uppercase on BBS. E.g. "SEARCH MISSION" does, but "Find person in X system" doesn't. Technically, I don't think we have this as a formal rule, but (almost?) all adverts follow it, so I'd recommend this module to do the same.

I'll get back with more feedback.

impaktor avatar Dec 21 '19 09:12 impaktor

I'll make an icon, not sure when I can get to it though.

bszlrd avatar Dec 21 '19 10:12 bszlrd

I have yet to go through the Lua file. I'm curious how a player can find an NPC in a "bar" or "shipyard", or just "anywhere in System X", that the language file seems to suggest should be possible.

Please do not expect too much! You need a bit of imagination here. ;-)

robothauler avatar Dec 26 '19 19:12 robothauler

The C++ code looks good to me so far, fairly standard and in keeping with the rest of the code. You'll need to make sure it conforms with our existing style guides as best as possible, but I don't have any objections.

...That doesn't mean I like how the alert system is implemented in general, but that's a complaint for another time, when I have the energy to rip the whole thing out.

sturnclaw avatar Dec 29 '19 18:12 sturnclaw

intro

Am I understanding it correctly, that the format for this mission type is:

  1. fly to system X

  2. visit every spaceport in system X until mission becomes halfdone (i.e. player happens to visit the station where the missing person is)

  3. they fly back to mission contractor?

(plus chance of being attacked/intercepted)

feedback

If So, it's quite similar to all our other delivery missions, except the player now has to figure out the correct starport?

I tried two missions, one to Sol, and another to some other densely populated system, so I really didn't feel like visiting 10-20 stations, so I gave up (sorry).

Due to the amount of in-system travel, it might be worth only assigning missions to single star systems, and possibly have the number of stations in it add to the deadline in some way (square root of the number?), or filter out the worst offenders (although that wouldn't be stable if we change our universe to be more densely packed in the future). Maybe only use the N most sparse system within some radius of the BBS?

Anyway, these are just some random thoughts/suggestions, you decide if you want to act on them, I'm just pointing out what struck me when I played it.

The best would be if any of our players could test this out.

(By the way, the new Missile Alert state isn't needed for this PR, right? So anyone wanting to test can just download the lua + json file, and not needing any recompile?)

Some more suggested changes:

  • "Is there a risk" --> "Is there any risk"

  • Also, the copyrright for the new files you've added (except *.json files): 2019 -> 2020

impaktor avatar Jan 01 '20 18:01 impaktor

I increased the probability of the tipster. After a few stations the player should now know where to go.

robothauler avatar Jan 04 '20 13:01 robothauler

(By the way, the new Missile Alert state isn't needed for this PR, right? So anyone wanting to test can just download the lua + json file, and not needing any recompile?)

Yes, that should work.

robothauler avatar Jan 04 '20 13:01 robothauler

I'll give it another play through.

By the way, something that I thought of, you have a flavour that's very specific, a drone flying into someone's apartment, it just struck me that the more specific a description is, the stranger it will look to see that one twice, or multiple times.

I.e. "Hi, I'm X, I want transport to Y" works repeatedly, but "Hi find Y because a drone flew into their apartment" is less general. But perhaps in the future there's serious drone hazard?

Anyway, it could be more general by being un-specific about what caused the damaged. or even more general to say property, rather than apartment, but that might be a little flavour less. Anyway, that's just what came into my mind when I read it.

impaktor avatar Jan 05 '20 15:01 impaktor

But perhaps in the future there's serious drone hazard?

If that's not worth a headline in a BBS newspaper ...

robothauler avatar Jan 08 '20 19:01 robothauler

OK, I've tested it now.

I get tip of which station I should go to every time (3 out of 3) times I land. Maybe fluke? I haven't looked at the code, but I imagine it could be some cumulative probability, i.e. after you landed on 2-3 stations the probability of getting a tip next time you land is close to 100%

Just a thought.

What probably should be fixed, is that I get tip for station even if I'm not in the mission system. E.g. if I land on a base in Tau Ceti, I get "I heard Jimmy Hoffa is in London". I imagine such information of which starbase they're on to only be "local", in the mission system?

impaktor avatar Jan 11 '20 11:01 impaktor

Is it possible to add options to the other items on the bulletin board with the question of the person you are looking for?

Gliese852 avatar Jan 13 '20 20:01 Gliese852

OK, I really hate it when I do work, get a little feedback, fix it, thinking I'm done, then get some more nitpick feedback, fix it thinking, "OK, now I'm done", and loop continues iterating. Thus I don't want to be like that here. Also, I've seen many PRs die because people suggest to "make it more general", or is some other way expand the scope beyond what the author contributed.

Thus, I apologize for doing all of the above now, but I just need to shoot off these ideas:

Is it possible to add options to the other items on the bulletin board with the question of the person you are looking for?

It's kind of hackish solution, but maybe less so than the current one, i.e. land and you "auto detect" people's presence.

Such a button would do best to e.g. engage the lobby-staff in a conversation, and get a box:

  +----------------------+
  |  Have anyone seen:   |
  |----------------------+
  | L. Skywalker         |
  | J. Hoffa             |
  | Lindbergh Jr.        |
  |                      |
  |                      |
  +------------------+---+
  | +----------+         |
  | |  ASK     |         |
  | +----------+         |
  +----------------------+

They might answer something like:

  • Yes, they're here
  • No, but perhaps another station knows
  • No, but I've heard / computer system said they're in station A in this system
  • if lawlessness >> 0 then: For x credits I can get the information you're looking for

(If we could engage the lobby in conversation, then the advice/rumor module could move to that as well.)

Anyway, my main objection with this module is it's too similar to delivery package / taxi missions / cargo mission, i.e. 1. go to mission system, 2. land on stations until you notice a message on your comms, 3. go back to client's system/station.

Although pioneer is more limited than I'd like, in what is possible to do, there are still some interesting modules left to be written:

  • [X] Search & rescue: interesting because let's player see NPC ships up close
  • [X] Cargo mission: interesting because uses custom cargo functionality, but suffers from the dull station-traveling
  • [ ] Cargo-scoop-mission (as suggested by @robothauler): Pick up debris after space battle, or illegal cargo pick up, interesting due to use of cargo scoop
  • [ ] Exploration: interesting because player gets to fly long distances, to discover new systems and set a system as explored. I know we've had a long discussion on the dev-forum, but I think one could have a stab at it with simple as possible: get payed for number of systems explored, and bodies discovered, or similar.
  • [ ] Scout: interesting because it forces player to fly close to land, showing off terrain generator (I have a branch on this, just a UI progress-bar missing, I think)

I realize what I'm suggesting above regarding lobby is way more work, but it would really make this "unique", I think, but, yeah, main work is of course figuring out how to bend that code to this will.

I guess other's have to give feedback on how much work that might be. Logs say @vakhoir is the main Lobby-hacker.

Anyway, there is that bug I pointed out in my previous post that needs fixing on this PR.

impaktor avatar Jan 16 '20 09:01 impaktor

Is it possible to add options to the other items on the bulletin board with the question of the person you are looking for?

It's kind of hackish solution, but maybe less so than the current one, i.e. land and you "auto detect" people's presence.

Such a button would do best to e.g. engage the lobby-staff in a conversation, and get a box: ...

Or add a new tab view for a very simple bar e.g. only clickable faces

robothauler avatar Jan 18 '20 16:01 robothauler

@robothauler This is what I've been doing this morning: 2020-01-18-153251_1600x900_scrot

I need to replace that list with clickable names, that opens an interaction dialogue. Not sure I have the skill to do that, but I'll see how deep into pigui territory I can get. But my thinking was to move advice module, and illegal goods trader into the bar, plus assassination missions, which you get by talking to the people there, a bar would consist of random NPC visitors + permanent "fixers", and shady "Tony Soprano"-characters.

Downside with using a bar for finding missing people, is then they're always in the bar, and never found through the BBS. In the original Frontier the BBS adverts weren't modularised like we have it, so their "find missing person" mission worked across all characters in the station, which I guess is the "propper way" (not sure if we can/should do that even in the long run).

Today I realized it might make "the most" sense to have the previously described ask-lobby-for-missing-person in the police tab instead? That's not even in pigui, so even more work...

impaktor avatar Jan 18 '20 19:01 impaktor

It seems to me not very difficult to organize a dialogue with any character in the game. with the lobby, the police, the service man, the pilot of another ship. When a certain button is pressed, a communication window may appear, and an event is generated with the parameters of this character, which any script can catch, and add its own dialogue branches to this window. Maybe I'm too optimistic.

Gliese852 avatar Jan 18 '20 19:01 Gliese852

And I would like to clarify about the bar, does the player leave the ship at all? I ask because the entire menu of the station is accessible through the "comms" button.

Gliese852 avatar Jan 18 '20 20:01 Gliese852

OK, I cherry-picked the two detect missile commits, to avoid bitrot, as I suspect this PR might take a few weeks before merging, since:

  1. I'm slightly hopeful to impolement a "search for person" option in the police station
  2. With #4775, the dialouges will need to be re-done in pigui. I can see if I can help doing that, if you want

@robothauler could you please rebase to remove those two commits? Then rebase this PR to master, and force push?

# from PR-branch, assuming pioneerspacesim's master is your 'upstream':
git fetch --all -p            
git rebase upstream/master    
git push -f

impaktor avatar Jan 29 '20 10:01 impaktor

Hey, I thought this blast from the past was interesting, in how the missing person adverts worked in Elite II, Frontier (here on the Amiga, I believe): https://www.youtube.com/watch?v=KV81D4Oceh8&list=PL9E1E1F7AA6193498&index=4&t=1m58s

I.e. they were persistent to the BBS, and you didn't sign up to find the person, instead you had to keep an eye out, and if discovered, you return and say you'd found them, and get reward. As previously mentioned, we can't get the character names of other BBS adverts in Pioneer, due to the modularity of the missions.

impaktor avatar Feb 08 '20 14:02 impaktor

We're in the process of porting mission display code away from the old UI now, so this PR is going to be waiting a little while longer, sorry! If there's anything you need to do on your end before this PR is ready to merge / ready to rebase, please let us know.

sturnclaw avatar Feb 28 '20 01:02 sturnclaw

I think this needs rebasing, and need to work with the pigui BBS, @robothauler you can have a look at the modifications that were needed on the other mission modules with #4775, probably just a few lines regarding character face rendering, if memory serves me.

I'm still mulling over how this module can be made in a good way. I believe one of the main reasons Frontier were showing face + name everywhere, like in lobby, police, shipyard, BBS adverts, was for player to look for missing persons. Without a working missing person module there kind of isn't any reason for us to show faces in Lobby, that character doesn't serve a function.

Now: we do have the persistent character functionality, never used in pioneer so far. I wonder if e.g. deliver missions could create persistent characters that the find person module could check which characters are persistent in a system, or some similar functionality.

impaktor avatar Feb 28 '20 08:02 impaktor

Ok what's happening with this one?

fluffyfreak avatar May 03 '20 18:05 fluffyfreak

@fluffyfreak see my previous post. basically: I think it needs some integration / function with station for asking for missing persons or getting list of all people at base, or persistent character module, or something.

impaktor avatar May 05 '20 11:05 impaktor