diff --git a/code/WorkInProgress/ZomgPonies/karma.dm b/code/WorkInProgress/ZomgPonies/karma.dm index 45a8fcd60be..084b00b9b6a 100644 --- a/code/WorkInProgress/ZomgPonies/karma.dm +++ b/code/WorkInProgress/ZomgPonies/karma.dm @@ -30,20 +30,20 @@ proc/sql_report_karma(var/mob/spender, var/mob/receiver) query = dbcon.NewQuery("SELECT * FROM karmatotals WHERE byondkey='[receiver.key]'") query.Execute() - var/karma + var/dbkarma 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])") + dbkarma = text2num(query.item[3]) + if(dbkarma == null) + dbkarma = 1 + query = dbcon.NewQuery("INSERT INTO karmatotals (byondkey, karma) VALUES ('[receiver.key]', [dbkarma])") 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]") + dbkarma += 1 + query = dbcon.NewQuery("UPDATE karmatotals SET karma=[dbkarma] WHERE id=[id]") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during karmatotal logging (updating existing entry). Error : \[[err]\]\n") @@ -51,7 +51,7 @@ proc/sql_report_karma(var/mob/spender, var/mob/receiver) var/list/karma_spenders = list() -/mob/verb/spend_karma(var/mob/M in player_list) // Karma system -- TLE +/client/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" @@ -62,7 +62,7 @@ var/list/karma_spenders = list() if(!M.client) usr << "\red That mob has no client connected at the moment." return - if(src.client.karma_spent) + if(src.karma_spent) usr << "\red You've already spent your karma for the round." return for(var/a in karma_spenders) @@ -72,7 +72,7 @@ var/list/karma_spenders = list() if(M.key == src.key) usr << "\red You can't spend karma on yourself!" return - if(M.client.address == src.client.address) + if(M.client.address == src.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." @@ -82,7 +82,7 @@ var/list/karma_spenders = list() if(choice == "Good") M.client.karma += 1 usr << "[choice] karma spent on [M.name]." - src.client.karma_spent = 1 + src.karma_spent = 1 karma_spenders.Add(src.key) if(M.client.karma <= -2 || M.client.karma >= 2) var/special_role = "None" @@ -100,11 +100,17 @@ var/list/karma_spenders = list() -mob/verb/check_karma() +/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 @@ -117,11 +123,141 @@ mob/verb/check_karma() while(query.NextRow()) totalkarma = query.item[1] karmaspent = query.item[2] - var/currentkarma = (text2num(totalkarma) - text2num(karmaspent)) - if(totalkarma) + 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
" + 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 Greys -- 30KP
+ Unlock Vox -- 45KP
+ + "} + +// 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 + 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 + 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 + 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 + 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 + message_admins("[key_name(usr)] has been charged [cost].") + return diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 45e38499101..ed9a144395c 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -49,6 +49,45 @@ if(config && config.log_hrefs && href_logfile) href_logfile << "[time2text(world.timeofday,"hh:mm")] [src] (usr:[usr]) || [hsrc ? "[hsrc] " : ""][href]
" + if(href_list["KarmaBuy"]) + var/karma=verify_karma() + switch(href_list["KarmaBuy"]) + if("1") + if(karma <15) + usr << "You do not have enough karma!" + else + src.DB_job_unlock("Nanotrasen Representative",15) + if("2") + if(karma <30) + usr << "You do not have enough karma!" + else + src.DB_job_unlock("Customs Officer",30) + if("3") + if(karma <30) + usr << "You do not have enough karma!" + else + src.DB_job_unlock("Blueshield",30) + if("4") + if(karma <30) + usr << "You do not have enough karma!" + else + src.DB_species_unlock("Kidan",30) + if("5") + if(karma <30) + usr << "You do not have enough karma!" + else + src.DB_species_unlock("Greys",30) + if("6") + if(karma <45) + usr << "You do not have enough karma!" + else + src.DB_species_unlock("Vox",45) + if("7") + if(karma <45) + usr << "You do not have enough karma!" + else + src.DB_species_unlock("Slime People",45) + switch(href_list["_src_"]) if("holder") hsrc = holder if("usr") hsrc = mob diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3e1513a8d72..b794cfb5df1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -489,6 +489,7 @@ var/list/slot_equipment_priority = list( \ if(href_list["flavor_change"]) update_flavor_text() + // ..() return diff --git a/interface/interface.dm b/interface/interface.dm index af471cca129..d6b5f4c8eb2 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -22,7 +22,7 @@ src << link(CHANGELOG) return #undef CHANGELOG - +/* #define KARMA "http://192.241.230.212/phpBB3/viewtopic.php?f=10&t=52" /client/verb/karmashop() set name = "karmashop" @@ -34,6 +34,7 @@ src << link(KARMA) return #undef KARMA +*/ /client/verb/forum() set name = "forum"