diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm
index cccf9977ad6..f7d8b12f80c 100644
--- a/code/modules/karma/karma.dm
+++ b/code/modules/karma/karma.dm
@@ -4,9 +4,9 @@
proc/sql_report_karma(var/mob/spender, var/mob/receiver)
var/sqlspendername = sanitizeSQL(spender.name)
- var/sqlspenderkey = spender.ckey
+ var/sqlspenderkey = sanitizeSQL(spender.ckey)
var/sqlreceivername = sanitizeSQL(receiver.name)
- var/sqlreceiverkey = receiver.ckey
+ var/sqlreceiverkey = sanitizeSQL(receiver.ckey)
var/sqlreceiverrole = "None"
var/sqlreceiverspecial = "None"
@@ -28,7 +28,7 @@ proc/sql_report_karma(var/mob/spender, var/mob/receiver)
log_game("SQL ERROR during karma logging. Error : \[[err]\]\n")
- query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("karmatotals")] WHERE byondkey='[receiver.ckey]'")
+ query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("karmatotals")] WHERE byondkey='[sqlreceiverkey]'")
query.Execute()
var/karma
@@ -38,7 +38,7 @@ proc/sql_report_karma(var/mob/spender, var/mob/receiver)
karma = text2num(query.item[3])
if(karma == null)
karma = 1
- query = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("karmatotals")] (byondkey, karma) VALUES ('[receiver.ckey]', [karma])")
+ query = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("karmatotals")] (byondkey, karma) VALUES ('[sqlreceiverkey]', [karma])")
if(!query.Execute())
var/err = query.ErrorMsg()
log_game("SQL ERROR during karmatotal logging (adding new key). Error : \[[err]\]\n")
@@ -168,11 +168,12 @@ GLOBAL_LIST_EMPTY(karma_spenders)
/client/proc/verify_karma()
var/currentkarma = 0
+ var/sanitzedkey = sanitizeSQL(src.ckey)
if(!GLOB.dbcon.IsConnected())
to_chat(usr, "Unable to connect to karma database. Please try again later.
")
return
else
- var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT karma, karmaspent FROM [format_table_name("karmatotals")] WHERE byondkey='[src.ckey]'")
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT karma, karmaspent FROM [format_table_name("karmatotals")] WHERE byondkey='[sanitzedkey]'")
query.Execute()
var/totalkarma
@@ -195,6 +196,24 @@ GLOBAL_LIST_EMPTY(karma_spenders)
karmashopmenu()
/client/proc/karmashopmenu()
+ var/sanitzedkey = sanitizeSQL(usr.ckey)
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[sanitzedkey]'")
+ query.Execute()
+
+ var/list/joblist
+ var/list/specieslist
+ var/dbjob
+ var/dbspecies
+ var/dbckey
+ while(query.NextRow())
+ dbckey = query.item[2]
+ dbjob = query.item[3]
+ dbspecies = query.item[4]
+
+ if(dbckey)
+ joblist = splittext(dbjob,",")
+ specieslist = splittext(dbspecies,",")
+
var/dat = "
"
dat += "Job Unlocks"
dat += "Species Unlocks"
@@ -202,28 +221,69 @@ GLOBAL_LIST_EMPTY(karma_spenders)
dat += ""
dat += "
"
+ var/currentkarma = verify_karma()
+ dat += "You have [currentkarma] available.
"
+
switch(karma_tab)
if(0) // Job Unlocks
- dat += {"
- Unlock Barber -- 5KP
- Unlock Brig Physician -- 5KP
- Unlock Nanotrasen Representative -- 30KP
- Unlock Blueshield -- 30KP
- Unlock Security Pod Pilot -- 30KP
- Unlock Mechanic -- 30KP
- Unlock Magistrate -- 45KP
- "}
+ if(!("Barber" in joblist))
+ dat += "Unlock Barber -- 5KP
"
+ else
+ dat += "Barber - Unlocked
"
+ if(!("Brig Physican" in joblist))
+ dat += "Unlock Brig Physician -- 5KP
"
+ else
+ dat += "Brig Physician - Unlocked
"
+ if(!("Nanotrasen Representative" in joblist))
+ dat += "Unlock Nanotrasen Representative -- 30KP
"
+ else
+ dat += "Nanotrasen Representative - Unlocked
"
+ if(!("Blueshield" in joblist))
+ dat += "Unlock Blueshield -- 30KP
"
+ else
+ dat += "Blueshield - Unlocked
"
+ if(!("Security Pod Pilot" in joblist))
+ dat += "Unlock Security Pod Pilot -- 30KP
"
+ else
+ dat += "Security Pod Pilot - Unlocked
"
+ if(!("Mechanic" in joblist))
+ dat += "Unlock Mechanic -- 30KP
"
+ else
+ dat += "Mechanic - Unlocked
"
+ if(!("Magistrate" in joblist))
+ dat += "Unlock Magistrate -- 45KP
"
+ else
+ dat+= "Magistrate - Unlocked
"
if(1) // Species Unlocks
- dat += {"
- Unlock Machine People -- 15KP
- Unlock Kidan -- 30KP
- Unlock Grey -- 30KP
- Unlock Drask -- 30KP
- Unlock Vox -- 45KP
- Unlock Slime People -- 45KP
- Unlock Plasmaman -- 45KP
- "}
+ if(!("Machine" in specieslist))
+ dat += "Unlock Machine People -- 15KP
"
+ else
+ dat += "Machine People - Unlocked
"
+ if(!("Kidan" in specieslist))
+ dat += "Unlock Kidan -- 30KP
"
+ else
+ dat += "Kidan - Unlocked
"
+ if(!("Grey" in specieslist))
+ dat += "Unlock Grey -- 30KP
"
+ else
+ dat += "Grey - Unlocked
"
+ if(!("Drask" in specieslist))
+ dat += "Unlock Drask -- 30KP
"
+ else
+ dat += "Drask - Unlocked
"
+ if(!("Vox" in specieslist))
+ dat += "Unlock Vox -- 45KP
"
+ else
+ dat += "Vox - Unlocked
"
+ if(!("Slime People" in specieslist))
+ dat += "Unlock Slime People -- 45KP
"
+ else
+ dat += "Slime People - Unlocked
"
+ if(!("Plasmaman" in specieslist))
+ dat += "Unlock Plasmaman -- 45KP
"
+ else
+ dat += "Plasmaman - Unlocked
"
if(2) // Karma Refunds
var/list/refundable = list()
@@ -283,11 +343,14 @@ GLOBAL_LIST_EMPTY(karma_spenders)
name = DBname
if(category == "job")
DB_job_unlock(name,price)
+ karmashopmenu()
else if(category == "species")
DB_species_unlock(name,price)
+ karmashopmenu()
/client/proc/DB_job_unlock(var/job,var/cost)
- var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.ckey]'")
+ var/sanitzedkey = sanitizeSQL(usr.ckey)
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[sanitzedkey]'")
query.Execute()
var/dbjob
@@ -296,7 +359,7 @@ GLOBAL_LIST_EMPTY(karma_spenders)
dbckey = query.item[2]
dbjob = query.item[3]
if(!dbckey)
- query = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("whitelist")] (ckey, job) VALUES ('[usr.ckey]','[job]')")
+ query = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("whitelist")] (ckey, job) VALUES ('[sanitzedkey]','[job]')")
if(!query.Execute())
queryErrorLog(query.ErrorMsg(),"adding new key")
return
@@ -323,7 +386,8 @@ GLOBAL_LIST_EMPTY(karma_spenders)
return
/client/proc/DB_species_unlock(var/species,var/cost)
- var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.ckey]'")
+ var/sanitzedkey = sanitizeSQL(usr.ckey)
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[sanitzedkey]'")
query.Execute()
var/dbspecies
@@ -332,7 +396,7 @@ GLOBAL_LIST_EMPTY(karma_spenders)
dbckey = query.item[2]
dbspecies = query.item[4]
if(!dbckey)
- query = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("whitelist")] (ckey, species) VALUES ('[usr.ckey]','[species]')")
+ query = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("whitelist")] (ckey, species) VALUES ('[sanitzedkey]','[species]')")
if(!query.Execute())
queryErrorLog(query.ErrorMsg(),"adding new key")
return
@@ -359,7 +423,8 @@ GLOBAL_LIST_EMPTY(karma_spenders)
return
/client/proc/karmacharge(var/cost,var/refund = FALSE)
- var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("karmatotals")] WHERE byondkey='[usr.ckey]'")
+ var/sanitzedkey = sanitizeSQL(usr.ckey)
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("karmatotals")] WHERE byondkey='[sanitzedkey]'")
query.Execute()
while(query.NextRow())
@@ -368,7 +433,7 @@ GLOBAL_LIST_EMPTY(karma_spenders)
spent -= cost
else
spent += cost
- query = GLOB.dbcon.NewQuery("UPDATE [format_table_name("karmatotals")] SET karmaspent=[spent] WHERE byondkey='[usr.ckey]'")
+ query = GLOB.dbcon.NewQuery("UPDATE [format_table_name("karmatotals")] SET karmaspent=[spent] WHERE byondkey='[sanitzedkey]'")
if(!query.Execute())
queryErrorLog(query.ErrorMsg(),"updating existing entry")
return
@@ -378,6 +443,7 @@ GLOBAL_LIST_EMPTY(karma_spenders)
return
/client/proc/karmarefund(var/type,var/name,var/cost)
+ var/sanitzedkey = sanitizeSQL(usr.ckey)
switch(name)
if("Tajaran Ambassador","Unathi Ambassador","Skrell Ambassador","Diona Ambassador","Kidan Ambassador",
"Slime People Ambassador","Grey Ambassador","Vox Ambassador","Customs Officer")
@@ -388,7 +454,7 @@ GLOBAL_LIST_EMPTY(karma_spenders)
to_chat(usr, "That job is not refundable.")
return
- var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.ckey]'")
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[sanitzedkey]'")
query.Execute()
var/dbjob
@@ -431,7 +497,8 @@ GLOBAL_LIST_EMPTY(karma_spenders)
message_admins("SQL ERROR during whitelist logging ([errType]]). Error : \[[err]\]\n")
/client/proc/checkpurchased(var/name = null) // If the first parameter is null, return a full list of purchases
- var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.ckey]'")
+ var/sanitzedkey = sanitizeSQL(usr.ckey)
+ var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[sanitzedkey]'")
query.Execute()
var/dbjob