diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index 12924560685..0b97d51c8b3 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -52,42 +52,42 @@ var/list/karma_spenders = list() set name = "Award Karma" set desc = "Let the gods know whether someone's been nice. Can only be used once per round." set category = "Special Verbs" - + if(!ticker || !player_list.len) usr << "\red You can't award karma until the game has started." return - + if(ticker.current_state == GAME_STATE_PREGAME) usr << "\red You can't award karma until the game has started." - return + return var/list/karma_list = list("Cancel") - for(var/mob/M in player_list) if(M.client && M.mind) + for(var/mob/M in player_list) if(M.client && M.mind) var/special_role = M.mind.special_role if (special_role == "Wizard" || special_role == "Ninja" || special_role == "Syndicate" || special_role == "Syndicate Commando" || special_role == "Vox Raider" || special_role == "Alien") // Don't include special roles, because players use it to meta continue karma_list += M - + if(!karma_list.len || karma_list.len == 1) usr << "\red There's no-one to spend your karma on." return - + var/pickedmob = input("Who would you like to award Karma to?", "Award Karma", "Cancel") as null|mob in karma_list - + if(isnull(pickedmob)) return - + if(!istype(pickedmob, /mob)) usr << "\red That's not a mob." - return - + return + spend_karma(pickedmob) - -/mob/verb/spend_karma(var/mob/M) + +/mob/verb/spend_karma(var/mob/M) set name = "Award Karma to Player" set desc = "Let the gods know whether someone's been nice. Can only be used once per round." set category = "Special Verbs" - + if(!M) usr << "Please right click a mob to award karma directly, or use the 'Award Karma' verb to select a player from the player listing." return @@ -115,6 +115,9 @@ var/list/karma_spenders = list() if(!choice || choice == "Cancel") return if(choice == "Good" && !(src.client.karma_spent)) + if(src.client.karma_spent) + usr << "\red You've already spent your karma for the round." + return M.client.karma += 1 usr << "[choice] karma spent on [M.name]." src.client.karma_spent = 1 @@ -199,7 +202,7 @@ You've gained [totalkarma] total karma in your time here.
"} Unlock Vox -- 45KP
Unlock Slime People -- 45KP
"} - + if (2) // Karma Refunds var/list/refundable = list() var/list/purchased = checkpurchased() @@ -208,31 +211,31 @@ You've gained [totalkarma] total karma in your time here.
"} dat += "Refund Tajaran Ambassador -- 30KP
" if("Unathi Ambassador" in purchased) refundable += "Unathi Ambassador" - dat += "Refund Unathi Ambassador -- 30KP
" + dat += "Refund Unathi Ambassador -- 30KP
" if("Skrell Ambassador" in purchased) refundable += "Skrell Ambassador" - dat += "Refund Skrell Ambassador -- 30KP
" + dat += "Refund Skrell Ambassador -- 30KP
" if("Diona Ambassador" in purchased) refundable += "Diona Ambassador" - dat += "Refund Diona Ambassador -- 30KP
" + dat += "Refund Diona Ambassador -- 30KP
" if("Kidan Ambassador" in purchased) refundable += "Kidan Ambassador" - dat += "Refund Kidan Ambassador -- 30KP
" + dat += "Refund Kidan Ambassador -- 30KP
" if("Slime People Ambassador" in purchased) refundable += "Slime People Ambassador" - dat += "Refund Slime People Ambassador -- 30KP
" + dat += "Refund Slime People Ambassador -- 30KP
" if("Grey Ambassador" in purchased) refundable += "Grey Ambassador" - dat += "Refund Grey Ambassador -- 30KP
" + dat += "Refund Grey Ambassador -- 30KP
" if("Vox Ambassador" in purchased) refundable += "Vox Ambassador" dat += "Refund Vox Ambassador -- 30KP
" if("Customs Officer" in purchased) refundable += "Customs Officer" - dat += "Refund Customs Officer -- 30KP
" + dat += "Refund Customs Officer -- 30KP
" if("Nanotrasen Recruiter" in purchased) refundable += "Nanotrasen Recruiter" - dat += "Refund Nanotrasen Recruiter -- 10KP
" + dat += "Refund Nanotrasen Recruiter -- 10KP
" if(!refundable.len) dat += "You do not have any refundable karma purchases.
" @@ -345,7 +348,7 @@ You've gained [totalkarma] total karma in your time here.
"} usr << "You have been charged [cost] karma." message_admins("[key_name(usr)] has been charged [cost] karma.") return - + /client/proc/karmarefund(var/type,var/name,var/cost) if(name == "Tajaran Ambassador") cost = 30 @@ -368,12 +371,12 @@ You've gained [totalkarma] total karma in your time here.
"} else if(name == "Nanotrasen Recruiter") cost = 10 else - usr << "\red That job is not refundable." + usr << "\red That job is not refundable." return - + var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'") query.Execute() - + var/dbjob var/dbspecies var/dbckey @@ -381,7 +384,7 @@ You've gained [totalkarma] total karma in your time here.
"} dbckey = query.item[2] dbjob = query.item[3] dbspecies = query.item[4] - + if(dbckey) var/list/typelist = list() if(type == "job") @@ -389,8 +392,8 @@ You've gained [totalkarma] total karma in your time here.
"} else if(type == "species") typelist = text2list(dbspecies,",") else - usr << "\red Type [type] is not a valid column." - + usr << "\red Type [type] is not a valid column." + if(name in typelist) typelist -= name var/newtypelist = list2text(typelist,",") @@ -406,14 +409,14 @@ You've gained [totalkarma] total karma in your time here.
"} karmacharge(text2num(cost),1) else usr << "\red You have not bought [name]." - + else - usr << "\red Your ckey ([dbckey]) was not found." - + usr << "\red Your ckey ([dbckey]) was not found." + /client/proc/checkpurchased(var/name = null) // If the first parameter is null, return a full list of purchases var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'") - query.Execute() - + query.Execute() + var/dbjob var/dbspecies var/dbckey @@ -421,7 +424,7 @@ You've gained [totalkarma] total karma in your time here.
"} dbckey = query.item[2] dbjob = query.item[3] dbspecies = query.item[4] - + if(dbckey) var/list/joblist = text2list(dbjob,",") var/list/specieslist = text2list(dbspecies,",") @@ -434,4 +437,4 @@ You've gained [totalkarma] total karma in your time here.
"} else return combinedlist else - return 0 + return 0