mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 21:12:24 +01:00
Security Fines (#4634)
Allows security to fine criminals with the sentencing console Prints a human readable copy of the charges and the applied sentence
This commit is contained in:
@@ -13,6 +13,12 @@
|
||||
NEW_SS_GLOBAL(SSlaw)
|
||||
|
||||
/datum/controller/subsystem/law/Initialize(timeofday)
|
||||
if(config.sql_enabled)
|
||||
load_from_sql()
|
||||
else
|
||||
load_from_code()
|
||||
|
||||
/datum/controller/subsystem/law/proc/load_from_code()
|
||||
for (var/L in subtypesof(/datum/law/low_severity))
|
||||
low_severity += new L
|
||||
|
||||
@@ -23,3 +29,64 @@
|
||||
high_severity += new L
|
||||
|
||||
laws = low_severity + med_severity + high_severity
|
||||
|
||||
/datum/controller/subsystem/law/proc/load_from_sql()
|
||||
if(!establish_db_connection(dbcon))
|
||||
log_debug("SSlaw: SQL ERROR - Failed to connect.")
|
||||
return load_from_code()
|
||||
|
||||
var/DBQuery/law_query = dbcon.NewQuery("SELECT law_id, name, description, min_fine, max_fine, min_brig_time, max_brig_time, severity, felony FROM ss13_law WHERE deleted_at IS NULL ORDER BY law_id ASC")
|
||||
law_query.Execute()
|
||||
while(law_query.NextRow())
|
||||
CHECK_TICK
|
||||
try
|
||||
var/datum/law/L = new
|
||||
L.id = law_query.item[1]
|
||||
L.name = law_query.item[2]
|
||||
L.desc = law_query.item[3]
|
||||
L.min_fine = text2num(law_query.item[4])
|
||||
L.max_fine = text2num(law_query.item[5])
|
||||
L.min_brig_time = text2num(law_query.item[6])
|
||||
L.max_brig_time = text2num(law_query.item[7])
|
||||
L.severity = text2num(law_query.item[8])
|
||||
L.felony = text2num(law_query.item[9])
|
||||
|
||||
if(L.severity == 1)
|
||||
low_severity += L
|
||||
else if(L.severity == 2)
|
||||
med_severity += L
|
||||
else if(L.severity == 3)
|
||||
high_severity += L
|
||||
else
|
||||
throw("Law with id: [L.id] deleted due to invalid severity: [L.severity]")
|
||||
qdel(L)
|
||||
catch(var/exception/el)
|
||||
log_debug("SSlaw: Error when loading law: [el]")
|
||||
|
||||
laws = low_severity + med_severity + high_severity
|
||||
if(!laws.len)
|
||||
log_debug("SSlaw: No laws loaded. Loading from code and migrating to SQL")
|
||||
load_from_code()
|
||||
migrate_to_sql()
|
||||
|
||||
/datum/controller/subsystem/law/proc/migrate_to_sql()
|
||||
for(var/datum/law/L in laws)
|
||||
log_debug("SSlaw: Migrating law [L.id] to SQL")
|
||||
var/DBQuery/law_update_query = dbcon.NewQuery({"
|
||||
INSERT IGNORE INTO ss13_law
|
||||
(law_id, name, description, min_fine, max_fine, min_brig_time, max_brig_time, severity, felony)
|
||||
VALUES
|
||||
(:law_id:, :name:, :desc:, :min_fine:, :max_fine:, :min_brig_time:, :max_brig_time:, :severity:, :felony:)
|
||||
"})
|
||||
law_update_query.Execute(list(
|
||||
"law_id"=L.id,
|
||||
"name"=L.name,
|
||||
"desc"=L.desc,
|
||||
"min_fine"=L.min_fine,
|
||||
"max_fine"=L.max_fine,
|
||||
"min_brig_time"=L.min_brig_time,
|
||||
"max_brig_time"=L.max_brig_time,
|
||||
"severity"=L.severity,
|
||||
"felony"=L.felony
|
||||
))
|
||||
return
|
||||
Reference in New Issue
Block a user