-
Notifications
You must be signed in to change notification settings - Fork 200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Script to commute the prison sentence of a convicted criminal #1200
Changes from all commits
782ea3d
613c3ec
622b711
7d7baca
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
justice | ||
======= | ||
|
||
.. dfhack-tool:: | ||
:summary: Commands related to the justice system. | ||
:tags: fort armok units | ||
|
||
This tool allows control over aspects of the justice system, such as the | ||
ability to pardon criminals. | ||
|
||
Usage | ||
----- | ||
|
||
:: | ||
justice pardon [--unit <id>] | ||
|
||
Pardon the selected unit or the one specified by unit id (if provided). | ||
Currently only applies to prison time and doesn't cancel beatings or | ||
hammerings. | ||
|
||
|
||
Options | ||
------- | ||
|
||
``-u``, ``--unit <id>`` | ||
Specifies the unit id of the target of the command. |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,42 @@ | ||||||
|
||||||
local argparse = require('argparse') | ||||||
|
||||||
local function pardon_unit(unit) | ||||||
for _,punishment in ipairs(df.global.plotinfo.punishments) do | ||||||
if punishment.criminal == unit.id then | ||||||
punishment.prison_counter = 0 | ||||||
return | ||||||
end | ||||||
end | ||||||
qerror('Unit is not currently serving a sentence!') | ||||||
end | ||||||
|
||||||
local function command_pardon(unit_id) | ||||||
local unit = nil | ||||||
if not unit_id then | ||||||
unit = dfhack.gui.getSelectedUnit() | ||||||
if not unit then qerror("No unit selected!") end | ||||||
else | ||||||
unit = df.unit.find(unit_id) | ||||||
if not unit then qerror(("No unit with id %i"):format(unit_id)) end | ||||||
end | ||||||
if unit then pardon_unit(unit) end | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we still need this check because There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if a unit was not found in either of the if branches above, then |
||||||
end | ||||||
|
||||||
local unit_id = nil | ||||||
|
||||||
local args = {...} | ||||||
|
||||||
local positionals = argparse.processArgsGetopt(args, | ||||||
{'u', 'unit', hasArg=true, handler=function(optarg) unit_id = optarg end} | ||||||
) | ||||||
|
||||||
local command = positionals[1] | ||||||
|
||||||
if command == "pardon" then | ||||||
command_pardon(unit_id) | ||||||
elseif not command then | ||||||
qerror('Missing command') | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
else | ||||||
qerror(("Unrecognised command: %s"):format(command)) | ||||||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.