proc/sql_report_karma(var/mob/spender, var/mob/receiver) var/sqlspendername = spender.name var/sqlspenderkey = spender.key var/sqlreceivername = receiver.name var/sqlreceiverkey = receiver.key var/sqlreceiverrole = "None" var/sqlreceiverspecial = "None" var/sqlspenderip = spender.client.address if(receiver.mind) if(receiver.mind.special_role) sqlreceiverspecial = receiver.mind.special_role if(receiver.mind.assigned_role) sqlreceiverrole = receiver.mind.assigned_role if(!dbcon.IsConnected()) log_game("SQL ERROR during karma logging. Failed to connect.") else var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss") var/DBQuery/query = dbcon.NewQuery("INSERT INTO karma (spendername, spenderkey, receivername, receiverkey, receiverrole, receiverspecial, spenderip, time) VALUES ('[sqlspendername]', '[sqlspenderkey]', '[sqlreceivername]', '[sqlreceiverkey]', '[sqlreceiverrole]', '[sqlreceiverspecial]', '[sqlspenderip]', '[sqltime]')") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during karma logging. Error : \[[err]\]\n") query = dbcon.NewQuery("SELECT * FROM karmatotals WHERE byondkey='[receiver.key]'") query.Execute() var/karma var/id while(query.NextRow()) id = query.item[1] karma = text2num(query.item[3]) if(karma == null) karma = 1 query = dbcon.NewQuery("INSERT INTO karmatotals (byondkey, karma) VALUES ('[receiver.key]', [karma])") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during karmatotal logging (adding new key). Error : \[[err]\]\n") else karma += 1 query = dbcon.NewQuery("UPDATE karmatotals SET karma=[karma] WHERE id=[id]") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during karmatotal logging (updating existing entry). Error : \[[err]\]\n") var/list/karma_spenders = list() /mob/verb/spend_karma(var/mob/M in player_list) // Karma system -- TLE set name = "Award Karma" set desc = "Let the gods know whether someone's been nice. " set category = "Special Verbs" if(!istype(M, /mob)) usr << "\red That's not a mob. You shouldn't have even been able to specify that. Please inform TLE post haste." return if(!M.client) usr << "\red That mob has no client connected at the moment." return if(src.client.karma_spent) usr << "\red You've already spent your karma for the round." return for(var/a in karma_spenders) if(a == src.key) usr << "\red You've already spent your karma for the round." return if(M.key == src.key) usr << "\red You can't spend karma on yourself!" return if(M.client.address == src.client.address) message_admins("\red Illegal karma spending detected from [src.key] to [M.key]. Using the same IP!") log_game("\red Illegal karma spending detected from [src.key] to [M.key]. Using the same IP!") usr << "\red The karma system is not available to multi-accounters." var/choice = input("Give [M.name] good karma?", "Karma") in list("Good", "Cancel") if(!choice || choice == "Cancel") return if(choice == "Good") M.client.karma += 1 usr << "[choice] karma spent on [M.name]." src.client.karma_spent = 1 karma_spenders.Add(src.key) if(M.client.karma <= -2 || M.client.karma >= 2) var/special_role = "None" var/assigned_role = "None" var/karma_diary = file("data/logs/karma_[time2text(world.realtime, "YYYY/MM-Month/DD-Day")].log") if(M.mind) if(M.mind.special_role) special_role = M.mind.special_role if(M.mind.assigned_role) assigned_role = M.mind.assigned_role karma_diary << "[M.name] ([M.key]) [assigned_role]/[special_role]: [M.client.karma] - [time2text(world.timeofday, "hh:mm:ss")] given by [src.key]" sql_report_karma(src, M) /client/verb/check_karma() set name = "Check Karma" set category = "Special Verbs" set desc = "Reports how much karma you have accrued" var/currentkarma=verify_karma() usr << {"
You have [currentkarma] available."} return /client/proc/verify_karma() var/currentkarma=0 if(!dbcon.IsConnected()) usr << "\red Unable to connect to karma database. Please try again later.
" return else var/DBQuery/query = dbcon.NewQuery("SELECT karma, karmaspent FROM karmatotals WHERE byondkey='[src.key]'") query.Execute() var/totalkarma var/karmaspent while(query.NextRow()) totalkarma = query.item[1] karmaspent = query.item[2] currentkarma = (text2num(totalkarma) - text2num(karmaspent)) /* if(totalkarma) usr << {"
You have [currentkarma] available.
You've gained [totalkarma] total karma in your time here.
"} else usr << "Your total karma is: 0
"*/ return currentkarma /client/verb/karmashop() set name = "karmashop" set desc = "Spend your hard-earned karma here" set hidden = 1 karmashopmenu() return /client/proc/karmashopmenu() var/dat = {"Karma Shop
Unlock Nanotrasen Representative -- 15KP
Unlock Customs Officer -- 30KP
Unlock BlueShield -- 30KP
Unlock Kidan -- 30KP
Unlock Grey -- 30KP
Unlock Vox -- 45KP
PLEASE NOTE THAT PEOPLE WHO TRY TO GAME THE KARMA SYSTEM WILL END UP ON THE WALL OF SHAME. THIS INCLUDES BUT IS NOT LIMITED TO TRADES, OOC KARMA BEGGING, CODE EXPLOITS, ETC. "} // Unlock Slime People -- 45KP
var/datum/browser/popup = new(usr, "karmashop", "
Karma Shop
", 400, 400) popup.set_content(dat) popup.open(0) return /client/proc/DB_job_unlock(var/job,var/cost) var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'") query.Execute() var/dbjob var/dbckey while(query.NextRow()) dbckey = query.item[2] dbjob = query.item[3] if(!dbckey) query = dbcon.NewQuery("INSERT INTO whitelist (ckey, job) VALUES ('[usr.key]','[job]')") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n") message_admins("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n") return else usr << "You have unlocked [job]." message_admins("[key_name(usr)] has unlocked [job].") karmacharge(cost) if(dbckey) var/list/joblist = text2list(dbjob,",") if(!(job in joblist)) joblist += job var/newjoblist = dd_list2text(joblist,",") query = dbcon.NewQuery("UPDATE whitelist SET job='[newjoblist]' WHERE ckey='[dbckey]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n") message_admins("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n") return else usr << "You have unlocked [job]." message_admins("[key_name(usr)] has unlocked [job].") karmacharge(cost) else usr << "You already have this job unlocked!" return /client/proc/DB_species_unlock(var/species,var/cost) var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'") query.Execute() var/dbspecies var/dbckey while(query.NextRow()) dbckey = query.item[2] dbspecies = query.item[4] if(!dbckey) query = dbcon.NewQuery("INSERT INTO whitelist (ckey, species) VALUES ('[usr.key]','[species]')") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n") message_admins("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n") return else usr << "You have unlocked [species]." message_admins("[key_name(usr)] has unlocked [species].") karmacharge(cost) if(dbckey) var/list/specieslist = text2list(dbspecies,",") if(!(species in specieslist)) specieslist += species var/newspecieslist = dd_list2text(specieslist,",") query = dbcon.NewQuery("UPDATE whitelist SET species='[newspecieslist]' WHERE ckey='[dbckey]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n") message_admins("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n") return else usr << "You have unlocked [species]." message_admins("[key_name(usr)] has unlocked [species].") karmacharge(cost) else usr << "You already have this species unlocked!" return /client/proc/karmacharge(var/cost) var/DBQuery/query = dbcon.NewQuery("SELECT * FROM karmatotals WHERE byondkey='[usr.key]'") query.Execute() while(query.NextRow()) var/spent = text2num(query.item[4]) spent += cost query = dbcon.NewQuery("UPDATE karmatotals SET karmaspent=[spent] WHERE byondkey='[usr.key]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during karmaspent updating (updating existing entry). Error : \[[err]\]\n") message_admins("SQL ERROR during karmaspent updating (updating existing entry). Error : \[[err]\]\n") return else usr << "You have been charged [cost]." message_admins("[key_name(usr)] has been charged [cost].") return