endless-sky / endless-sky

Space exploration, trading, and combat game.
https://endless-sky.github.io/
GNU General Public License v3.0
5.77k stars 1.02k forks source link

Smuggling/Illegal Outfits overhaul #6314

Open Galaucus opened 2 years ago

Galaucus commented 2 years ago

Problem Description

The existing system of scanning for illegal outfits is fairly brute force and doesn't give the player much control over avoiding or dealing with it. Increasing player agency can be resolved by taking a comprehensive set of changes, as outlined below:

This issue will also document related changes to smuggling gameplay to help make it more robust and flavorful.

Related Issue Links

Issue #4240 Change Incoming Scan Notification, opened by @Zitchas

6456 - "Alerts" feature to make fleeing from the ISP more interesting.

Related PRs:

Desired Solution

1) The Navy should no longer scan ships.

Because Navy ships constitute a large set of all traffic, and all navy ships have the scanning personality, it's an overwhelming blockade. Removing the scanning personality from the Navy will make scanning less "force of nature that you can only brace yourself for" and more "sometimes surprising event that creates interesting choices and gameplay".

2) Rather, an Interstellar Police (ISP) faction should be implemented that monitors Republic territory for smugglers.

It would spawn comparatively rarely to the Navy, and use lighter craft more suitable for interception and interdiction. The benefit of this faction being distinct from the Navy is that we can still use Navy fleets to occupy combat roles while reducing the overall scan density in any given system. Likewise, certain systems can have disproportionately high scan density by making it more heavily patrolled by police.

Finally, reputation with the ISP (so long as it's greater than -100) should tick back towards zero every week, representing the heat dying down. Between -100 and -10, fleets will spawn that attempt to track the player and scan them.

3) When scanned and found in violation, a hailing panel should be opened up. (#6376 )

Here's a mockup of what I think the pop-up should look like, mimicking the existing hailing panel.

Police Cruiser "Big Iron" is hailing you
--------------------------------------------------------------------------------------------------------------
You've been detected carrying illegal cargo and have been issued a fine of <fine> credits.
Dump your cargo immediately or we'll be forced to disable and board your ship.

[Dump Cargo] [Offer Bribe] [Flee!]

Dumping cargo purges all illegal cargo from your hold and incurs a fine, as well as minor reputation loss with the ISP. Bribery allows you to keep your cargo, and makes ISP fleets currently in-system ignore you. No fine is issued. Fleeing immediately renders ISP and Navy ships in the system hostile, and incurs a decent reputation loss with ISP and the Republic. No fine is issued.

4) Fines should be calculated by [outfit quantity] x [illegal value] (#6376 )

This is needed so that you can't still make a profit by simply pilling on inordinate amounts of contraband and taking a fine for a single unit of said contraband

5) Illegality should be tracked by government and defined in the government's data block. (#6314 )

An example syntax for data could be:

government "ISP"
    bribe 0.6
    illegal
        "designer drugs" 1200
        "counterfeit credsticks" 30
        "coreshine" 500
    atrocity
        "chemical warhead"

government "Remnant"
    bribe 0
    illegal
        "chemical warhead" 0

Under this example the ISP requires 60% of the fine value as a bribe to ignore your crime, and will attack on sight if you're found carrying chemical warheads. The Remnant, meanwhile, accept no bribes, and simply require that you dump any chemical warheads at their border or be fired upon - but they won't issue a fine if you comply. This has the benefit of not cluttering the outfitter panel with legal information, and runs no risk of spoiling the existence of factions beyond those discovered. Rather, a list of customs laws can simply be added to the logbook upon discovery of a new faction.

Alternative Approaches

Rather than have an entirely new government and attendant fleets, we could create some sort of "Subfleet" or "Fleet variant" mechanic. When a fleet is spawned, the game would check to see if there are any variant fleets with that same name and spawn them with some sort of weighting.

Under such a system not all Navy fleets would have the Scanning personality, but only a subset of them, and which exact fleet (and personalities) are spawned when a Navy fleet is created would be random.

This has the benefit of being much more flexible for future content - like creating merchants that spawn from the same pool but belong to different factions - though one of the main benefits of a dedicated police faction is visual seperation so that you know exactly which ships in a system might scan you.

Additional Context

This is supporting an expanded smuggling system to be implemented as part of the pirate campaign. Smuggling system branch can be found here @quyykk has expressed interest in implementing the necessary code changes once their schedule opens up a bit.

tehhowch commented 2 years ago

5141 should have appeared in your research

Galaucus commented 2 years ago

5141 should have appeared in your research

Sweet, looks like that's half the work already done.

Galaucus commented 2 years ago

We've got a working scan/hailing rework here.

Galaucus commented 2 years ago

image I'd also like to see scan chance overhauled like this. Edit: Quyykk's got a fork going where scans work this way, so testing time!

Chopliver19 commented 2 years ago

I like the idea of the ISP. Also bribing should have a high chance of not working, maybe depending on what the cargo is. Could you also get it in good with the ISP by reporting illegal smuggling and the like? Just a thought ;).

Galaucus commented 2 years ago

image image Police Splinter

Red-57 commented 2 years ago

just thought I'd post the ISP ships that i've been working on ISDGunboartexture ISDflivverthumb ISDSplinterthumb

yafflehk commented 2 years ago

I really like those, a real Euro police vibe, can we have flashing lights?

Galaucus commented 2 years ago

I really like those, a real Euro police vibe, can we have flashing lights?

Ideally, yes! I'd have to ask a coder for help, but it would be great if we could have a "shipstates" tracker that can toggle sprites depending on aggro state, among other things.

I don't want them to have flashing lights just by default.

Galaucus commented 2 years ago

Here are some example logbook entries for illegal goods and the missions which trigger them.

mission "Legal Code: Chemical Warheads"
    invisible
    landing
    source "Smuggler's Den"
    on offer
        log "Republic Law" "Chemical Warheads" `Excerpted from Republic customs code, Section A: Absolutely Forbidden Cargo`
        log "Republic Law" "Chemical Warheads" `... possession of items defined under Article 2, including but not limited to CHEMICAL WARHEADS, cobalt-doped THERMONUCLEAR DEVICES, and other WEAPONS OF MASS DESTRUCTION shall be considered grounds for immediate seizure by Naval Forces, warranting actions including but not limited to the full destruction of transporting vessel(s) and personnel.`

mission "Legal Code: Coreshine"
    invisible
    landing
    source
        attributes "smuggling port"
    on offer
        log "Republic Law" "Coreshine" `Excerpted from Republic customs code, Section D: Tax Evasion and Fraud`
        log "Republic Law" "Coreshine" `Upon failure to provide proof of payment for duties on cargo, inspecting officers are authorized to immediately collect UNPAID TAXES and issue a FINE of up to TWENTY TIMES the value of UNPAID TAXES. If the purchase price of the cargo is unknown, officers are authorized to collect taxes according to prices as detailed in TABLE IV.`
        log "Republic Law" "Coreshine" `    Table IV: Taxes to be levied on bulk commodities`
        log "Republic Law" "Coreshine" `        ...`
        log "Republic Law" "Coreshine" `        Alcohol, Ethyl: 400c/ton`
        log "Republic Law" "Coreshine" `        ...`
        log "Republic Law" "Coreshine" `(I should expect to pay 8400 credits per ton if I'm caught smuggling untaxed liquor.)`

mission "Legal Code: Dragon's Teeth"
    invisible
    landing
    source "Skymoot"
    on offer
        log "Republic Law" "Dragon's Teeth" `Excerpted from Republic customs code, Section C: Objects of Illegal Provenance`
        log "Republic Law" "Dragon's Teeth" `TRANSPORT, USE, or POSSESSION of body parts from critically PROTECTED or ENDANGERED ANIMALS shall warrant fines as detailed in TABLE I. Items on TABLE II may be considered EXEMPT and GRANDFATHERED provided the accused can provide proof of production prior to the ratification of P.R.6298.`
        log "Republic Law" "Dragon's Teeth" `   Table I: Fines to be imposed on poached animal parts`
        log "Republic Law" "Dragon's Teeth" `       ...`
        log "Republic Law" "Dragon's Teeth" `       Widow Antelope, Horns: 200c/rack`
        log "Republic Law" "Dragon's Teeth" `       Widow Antelope, Fangs: 10,000c/tooth`
        log "Republic Law" "Dragon's Teeth" `       Widow Antelope, misc: 500c/ton`
        log "Republic Law" "Dragon's Teeth" `       Kornepheran Beaversquid, Appendages: 400c`
        log "Republic Law" "Dragon's Teeth" `       Kornepheran Beaversquid, misc: 1000c/ton`
        log "Republic Law" "Dragon's Teeth" `       Skymoot Dragon, Teeth (intact): 3000c/tooth`
        log "Republic Law" "Dragon's Teeth" `       Skymoot Dragon, Teeth (powdered): 150,000c/ton`
        log "Republic Law" "Dragon's Teeth" `       ...`
        log "Republic Law" "Dragon's Teeth" `(Powdered dragon teeth are usually sold in tenth-tons, so I should expect to pay 15,000c per jar I'm caught with.)`
Galaucus commented 7 months ago

Had a discussion with @Amazinite and @Saugia, general ideas are: