diff --git a/baystation12.dme b/baystation12.dme index efd2374b2e8..98a48664579 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -203,6 +203,7 @@ #include "code\game\gamemodes\gameticker.dm" #include "code\game\gamemodes\intercept_report.dm" #include "code\game\gamemodes\objective.dm" +#include "code\game\gamemodes\scoreboard.dm" #include "code\game\gamemodes\setupgame.dm" #include "code\game\gamemodes\autotraitor\autotraitor.dm" #include "code\game\gamemodes\blob\blob.dm" @@ -318,6 +319,7 @@ #include "code\game\machinery\seed_extractor.dm" #include "code\game\machinery\shieldgen.dm" #include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\slotmachine.dm" #include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\status_display.dm" #include "code\game\machinery\suit_storage_unit.dm" diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index ae7accd056d..9592aa30c9c 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -394,28 +394,8 @@ var/global/datum/controller/gameticker/ticker mode.declare_job_completion() - //calls auto_declare_completion_* for all modes - for(var/handler in typesof(/datum/game_mode/proc)) - if (findtext("[handler]","auto_declare_completion_")) - call(mode, handler)() - - //Print a list of antagonists to the server log - var/list/total_antagonists = list() - //Look into all mobs in world, dead or alive - for(var/datum/mind/Mind in minds) - var/temprole = Mind.special_role - if(temprole) //if they are an antagonist of some sort. - if(temprole in total_antagonists) //If the role exists already, add the name to it - total_antagonists[temprole] += ", [Mind.name]([Mind.key])" - else - total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob - total_antagonists[temprole] += ": [Mind.name]([Mind.key])" - - //Now print them all into the log! - log_game("Antagonists at round end were...") - for(var/i in total_antagonists) - log_game("[i]s[total_antagonists[i]].") - + scoreboard() karmareminder() return 1 + diff --git a/code/game/gamemodes/scoreboard.dm b/code/game/gamemodes/scoreboard.dm new file mode 100644 index 00000000000..53da3463c70 --- /dev/null +++ b/code/game/gamemodes/scoreboard.dm @@ -0,0 +1,351 @@ +/datum/controller/gameticker/proc/scoreboard() + + //calls auto_declare_completion_* for all modes + for(var/handler in typesof(/datum/game_mode/proc)) + if (findtext("[handler]","auto_declare_completion_")) + call(mode, handler)() + + //Print a list of antagonists to the server log + var/list/total_antagonists = list() + //Look into all mobs in world, dead or alive + for(var/datum/mind/Mind in minds) + var/temprole = Mind.special_role + if(temprole) //if they are an antagonist of some sort. + if(temprole in total_antagonists) //If the role exists already, add the name to it + total_antagonists[temprole] += ", [Mind.name]([Mind.key])" + else + total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob + total_antagonists[temprole] += ": [Mind.name]([Mind.key])" + + //Now print them all into the log! + log_game("Antagonists at round end were...") + for(var/i in total_antagonists) + log_game("[i]s[total_antagonists[i]].") + + // Score Calculation and Display + + // Who is alive/dead, who escaped + for (var/mob/living/silicon/ai/I in mob_list) + if (I.stat == 2 && I.z == 1) + score_deadaipenalty = 1 + score_deadcrew += 1 +/* for (var/mob/living/carbon/human/I in mob_list) + for (var/datum/ailment/disease/V in I.ailments) + if (!V.vaccine && !V.spread != "Remissive") score_disease++ + if (I.stat == 2 && I.z == 1) score_deadcrew += 1*/ + for(var/mob/living/player in mob_list) + if (player.client) + if (player.stat != 2) + var/turf/location = get_turf(player.loc) + var/area/escape_zone = locate(/area/shuttle/escape/centcom) + if (location in escape_zone) + score_escapees += 1 +// player.unlock_medal("100M Dash", 1) +// player.unlock_medal("Survivor", 1) +// for (var/obj/item/weapon/gnomechompski/G in player.get_contents()) +// player.unlock_medal("Guardin' gnome", 1) + + + var/cashscore = 0 + var/dmgscore = 0 + for(var/mob/living/carbon/human/E in mob_list) + cashscore = 0 + dmgscore = 0 + var/turf/location = get_turf(E.loc) + var/area/escape_zone = locate(/area/shuttle/escape/centcom) + if(E.stat != 2 && location in escape_zone) // Escapee Scores + for (var/obj/item/weapon/card/id/C1 in E.contents) cashscore += C1.money + for (var/obj/item/weapon/spacecash/C2 in E.contents) cashscore += C2.worth + for (var/obj/item/weapon/storage/S in E.contents) + for (var/obj/item/weapon/card/id/C3 in S.contents) cashscore += C3.money + for (var/obj/item/weapon/spacecash/C4 in S.contents) cashscore += C4.worth +// for(var/datum/data/record/Ba in data_core.bank) +// if(Ba.fields["name"] == E.real_name) cashscore += Ba.fields["current_money"] + if (cashscore > score_richestcash) + score_richestcash = cashscore + score_richestname = E.real_name + score_richestjob = E.job + score_richestkey = E.key + dmgscore = E.bruteloss + E.fireloss + E.toxloss + E.oxyloss + if (dmgscore > score_dmgestdamage) + score_dmgestdamage = dmgscore + score_dmgestname = E.real_name + score_dmgestjob = E.job + score_dmgestkey = E.key + + var/nukedpenalty = 1000 + if (ticker.mode.config_tag == "nuclear") + var/foecount = 0 + for(var/datum/mind/M in ticker.mode:syndicates) + foecount++ + if (!M || !M.current) + score_opkilled++ + continue + var/turf/T = M.current.loc + if (T && istype(T.loc, /area/security/brig)) score_arrested += 1 + else if (M.current.stat == 2) score_opkilled++ + if(foecount == score_arrested) score_allarrested = 1 + +/* + score_disc = 1 + for(var/obj/item/weapon/disk/nuclear/A in world) + if(A.loc != /mob/living/carbon) continue + var/turf/location = get_turf(A.loc) + var/area/bad_zone1 = locate(/area) + var/area/bad_zone2 = locate(/area/syndicate_station) + var/area/bad_zone3 = locate(/area/wizard_station) + if (location in bad_zone1) score_disc = 0 + if (location in bad_zone2) score_disc = 0 + if (location in bad_zone3) score_disc = 0 + if (A.loc.z != 1) score_disc = 0 +*/ + if (score_nuked) + for (var/obj/machinery/nuclearbomb/NUKE in machines) + if (NUKE.r_code == "Nope") continue + var/turf/T = NUKE.loc + if (istype(T,/area/syndicate_station) || istype(T,/area/wizard_station) || istype(T,/area/solar)) nukedpenalty = 1000 + else if (istype(T,/area/security/main) || istype(T,/area/security/brig) || istype(T,/area/security/armoury) || istype(T,/area/security/checkpoint2)) nukedpenalty = 50000 + else if (istype(T,/area/engine)) nukedpenalty = 100000 + else nukedpenalty = 10000 + + if (ticker.mode.config_tag == "revolution") + var/foecount = 0 + for(var/datum/mind/M in ticker.mode:head_revolutionaries) + foecount++ + if (!M || !M.current) + score_opkilled++ + continue + var/turf/T = M.current.loc + if (istype(T.loc, /area/security/brig)) score_arrested += 1 + else if (M.current.stat == 2) score_opkilled++ + if(foecount == score_arrested) score_allarrested = 1 + for(var/mob/living/carbon/human/player in world) + if(player.mind) + var/role = player.mind.assigned_role + if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director")) + if (player.stat == 2) score_deadcommand++ + + // Check station's power levels + for (var/obj/machinery/power/apc/A in machines) + if (A.z != 1) continue + for (var/obj/item/weapon/cell/C in A.contents) + if (C.charge < 2300) score_powerloss += 1 // 200 charge leeway + + // Check how much uncleaned mess is on the station + for (var/obj/effect/decal/cleanable/M in world) + if (M.z != 1) continue + if (istype(M, /obj/effect/decal/cleanable/blood/gibs/)) score_mess += 3 + if (istype(M, /obj/effect/decal/cleanable/blood/)) score_mess += 1 +// if (istype(M, /obj/effect/decal/cleanable/greenpuke)) score_mess += 1 + if (istype(M, /obj/effect/decal/cleanable/poop)) score_mess += 1 +// if (istype(M, /obj/decal/cleanable/urine)) score_mess += 1 + if (istype(M, /obj/effect/decal/cleanable/vomit)) score_mess += 1 + + // Bonus Modifiers + //var/traitorwins = score_traitorswon + var/deathpoints = score_deadcrew * 25 + var/researchpoints = score_researchdone * 30 + var/eventpoints = score_eventsendured * 50 + var/borgpoints = score_cyborgsmade * 50 + var/escapoints = score_escapees * 25 + var/harvests = score_stuffharvested * 5 + var/shipping = score_stuffshipped * 5 + var/mining = score_oremined * 2 + var/meals = score_meals * 5 + var/power = score_powerloss * 20 + var/messpoints + if (score_mess != 0) messpoints = score_mess + var/plaguepoints = score_disease * 30 + + // Mode Specific + if (ticker.mode.config_tag == "nuclear") + if (score_disc) score_crewscore += 500 + var/killpoints = score_opkilled * 250 + var/arrestpoints = score_arrested * 1000 + score_crewscore += killpoints + score_crewscore += arrestpoints + if (score_nuked) score_crewscore -= nukedpenalty + + if (ticker.mode.config_tag == "revolution") + var/arrestpoints = score_arrested * 1000 + var/killpoints = score_opkilled * 500 + var/comdeadpts = score_deadcommand * 500 + if (score_traitorswon) score_crewscore -= 10000 + score_crewscore += arrestpoints + score_crewscore += killpoints + score_crewscore -= comdeadpts + + // Good Things + score_crewscore += shipping + score_crewscore += harvests + score_crewscore += mining + score_crewscore += borgpoints + score_crewscore += researchpoints + score_crewscore += eventpoints + score_crewscore += escapoints + + if (power == 0) + score_crewscore += 2500 + score_powerbonus = 1 + if (score_mess == 0) + score_crewscore += 3000 + score_messbonus = 1 + score_crewscore += meals + if (score_allarrested) score_crewscore *= 3 // This needs to be here for the bonus to be applied properly + + // Bad Things + score_crewscore -= deathpoints + if (score_deadaipenalty) score_crewscore -= 250 + score_crewscore -= power + //if (score_crewscore != 0) // Dont divide by zero! + // while (traitorwins > 0) + // score_crewscore /= 2 + // traitorwins -= 1 + score_crewscore -= messpoints + score_crewscore -= plaguepoints + + // Show the score - might add "ranks" later + world << "The crew's final score is:" + world << "[score_crewscore]" + for(var/mob/E in player_list) + if(E.client) E.scorestats() + return + + + +/mob/proc/scorestats() + var/dat = {"Round Statistics and Score

"} + if (ticker.mode.name == "nuclear emergency") + var/foecount = 0 + var/crewcount = 0 + var/diskdat = "" + var/bombdat = null + for(var/datum/mind/M in ticker.mode:syndicates) + foecount++ + for(var/mob/living/C in world) + if (!istype(C,/mob/living/carbon/human) || !istype(C,/mob/living/silicon/robot) || !istype(C,/mob/living/silicon/ai)) continue + if (C.stat == 2) continue + if (!C.client) continue + crewcount++ + + for(var/obj/item/weapon/disk/nuclear/N in world) + if(!N) continue + var/atom/disk_loc = N.loc + while(!istype(disk_loc, /turf)) + if(istype(disk_loc, /mob)) + var/mob/M = disk_loc + diskdat += "Carried by [M.real_name] " + if(istype(disk_loc, /obj)) + var/obj/O = disk_loc + diskdat += "in \a [O.name] " + disk_loc = disk_loc.loc + diskdat += "in [disk_loc.loc]" + break // Should only need one go-round, probably + var/nukedpenalty = 0 + for(var/obj/machinery/nuclearbomb/NUKE in world) + if (NUKE.r_code == "Nope") continue + var/turf/T = NUKE.loc + bombdat = T.loc + if (istype(T,/area/syndicate_station) || istype(T,/area/wizard_station) || istype(T,/area/solar/) || istype(T,/area)) nukedpenalty = 1000 + else if (istype(T,/area/security/main) || istype(T,/area/security/brig) || istype(T,/area/security/armoury) || istype(T,/area/security/checkpoint2)) nukedpenalty = 50000 + else if (istype(T,/area/engine)) nukedpenalty = 100000 + else nukedpenalty = 10000 + break + if (!diskdat) diskdat = "Uh oh. Something has fucked up! Report this." + dat += {"MODE STATS
+ Number of Operatives: [foecount]
+ Number of Surviving Crew: [crewcount]
+ Final Location of Nuke: [bombdat]
+ Final Location of Disk: [diskdat]

+ Operatives Arrested: [score_arrested] ([score_arrested * 1000] Points)
+ Operatives Killed: [score_opkilled] ([score_opkilled * 250] Points)
+ Station Destroyed: [score_nuked ? "Yes" : "No"] (-[nukedpenalty] Points)
+ All Operatives Arrested: [score_allarrested ? "Yes" : "No"] (Score tripled)
+
"} +// Nuclear Disk Secure: [score_disc ? "Yes" : "No"] ([score_disc * 500] Points)
+ if (ticker.mode.name == "revolution") + var/foecount = 0 + var/comcount = 0 + var/revcount = 0 + var/loycount = 0 + for(var/datum/mind/M in ticker.mode:head_revolutionaries) + if (M.current && M.current.stat != 2) foecount++ + for(var/datum/mind/M in ticker.mode:revolutionaries) + if (M.current && M.current.stat != 2) revcount++ + for(var/mob/living/carbon/human/player in world) + if(player.mind) + var/role = player.mind.assigned_role + if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director")) + if (player.stat != 2) comcount++ + else + if(player.mind in ticker.mode:revolutionaries) continue + loycount++ + for(var/mob/living/silicon/X in world) + if (X.stat != 2) loycount++ + var/revpenalty = 10000 + dat += {"MODE STATS
+ Number of Surviving Revolution Heads: [foecount]
+ Number of Surviving Command Staff: [comcount]
+ Number of Surviving Revolutionaries: [revcount]
+ Number of Surviving Loyal Crew: [loycount]

+ Revolution Heads Arrested: [score_arrested] ([score_arrested * 1000] Points)
+ Revolution Heads Slain: [score_opkilled] ([score_opkilled * 500] Points)
+ Command Staff Slain: [score_deadcommand] (-[score_deadcommand * 500] Points)
+ Revolution Successful: [score_traitorswon ? "Yes" : "No"] (-[score_traitorswon * revpenalty] Points)
+ All Revolution Heads Arrested: [score_allarrested ? "Yes" : "No"] (Score tripled)
+
"} +// var/totalfunds = wagesystem.station_budget + wagesystem.research_budget + wagesystem.shipping_budget + dat += {"GENERAL STATS
+ THE GOOD:
+ Useful Items Shipped: [score_stuffshipped] ([score_stuffshipped * 5] Points)
+ Hydroponics Harvests: [score_stuffharvested] ([score_stuffharvested * 5] Points)
+ Ore Mined: [score_oremined] ([score_oremined * 2] Points)
+ Refreshments Prepared: [score_meals] ([score_meals * 5] Points)
+ Research Completed: [score_researchdone] ([score_researchdone * 30] Points)
+ Cyborgs Constructed: [score_cyborgsmade] ([score_cyborgsmade * 50] Points)
"} + if (emergency_shuttle.location == 2) dat += "Shuttle Escapees: [score_escapees] ([score_escapees * 25] Points)
" + dat += {"Random Events Endured: [score_eventsendured] ([score_eventsendured * 50] Points)
+ Whole Station Powered: [score_powerbonus ? "Yes" : "No"] ([score_powerbonus * 2500] Points)
+ Ultra-Clean Station: [score_mess ? "No" : "Yes"] ([score_messbonus * 3000] Points)

+ THE BAD:
+ Dead Bodies on Station: [score_deadcrew] (-[score_deadcrew * 25] Points)
+ Uncleaned Messes: [score_mess] (-[score_mess] Points)
+ Station Power Issues: [score_powerloss] (-[score_powerloss * 20] Points)
+ Rampant Diseases: [score_disease] (-[score_disease * 30] Points)
+ AI Destroyed: [score_deadaipenalty ? "Yes" : "No"] (-[score_deadaipenalty * 250] Points)

+ THE WEIRD
"} +/* Final Station Budget: $[num2text(totalfunds,50)]
"} + var/profit = totalfunds - 100000 + if (profit > 0) dat += "Station Profit: +[num2text(profit,50)]
" + else if (profit < 0) dat += "Station Deficit: [num2text(profit,50)]
"}*/ + dat += {"Food Eaten: [score_foodeaten]
+ Times a Clown was Abused: [score_clownabuse]

"} + if (score_escapees) + dat += {"Richest Escapee: [score_richestname], [score_richestjob]: $[num2text(score_richestcash,50)] ([score_richestkey])
+ Most Battered Escapee: [score_dmgestname], [score_dmgestjob]: [score_dmgestdamage] damage ([score_dmgestkey])
"} + else + if (emergency_shuttle.location != 2) dat += "The station wasn't evacuated!
" + else dat += "No-one escaped!
" + dat += {"

+ FINAL SCORE: [score_crewscore]
"} + var/score_rating = "The Aristocrats!" + switch(score_crewscore) + if(-99999 to -50000) score_rating = "Even the Singularity Deserves Better" + if(-49999 to -5000) score_rating = "Singularity Fodder" + if(-4999 to -1000) score_rating = "You're All Fired" + if(-999 to -500) score_rating = "A Waste of Perfectly Good Oxygen" + if(-499 to -250) score_rating = "A Wretched Heap of Scum and Incompetence" + if(-249 to -100) score_rating = "Outclassed by Lab Monkeys" + if(-99 to -21) score_rating = "The Undesirables" + if(-20 to 20) score_rating = "Ambivalently Average" + if(21 to 99) score_rating = "Not Bad, but Not Good" + if(100 to 249) score_rating = "Skillful Servants of Science" + if(250 to 499) score_rating = "Best of a Good Bunch" + if(500 to 999) score_rating = "Lean Mean Machine Thirteen" + if(1000 to 4999) score_rating = "Promotions for Everyone" + if(5000 to 9999) score_rating = "Ambassadors of Discovery" + if(10000 to 49999) score_rating = "The Pride of Science Itself" + if(50000 to INFINITY) score_rating = "NanoTrasen's Finest" + dat += "RATING: [score_rating]" + src << browse(dat, "window=roundstats;size=500x600") + return \ No newline at end of file diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index a635507a160..57826586435 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -767,6 +767,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(!S.can_be_inserted(G)) return S.handle_item_insertion(G, 1) + score_stuffharvested++ else if ( istype(O, /obj/item/weapon/pestspray) ) var/obj/item/pestkiller/myPKiller = O @@ -850,6 +851,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) t_prod.potency = potency t_prod.plant_type = plant_type t_amount++ + score_stuffharvested++ parent.update_tray() diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm new file mode 100644 index 00000000000..16c66a8506e --- /dev/null +++ b/code/game/machinery/slotmachine.dm @@ -0,0 +1,104 @@ +/obj/machinery/slot_machine + name = "Slot Machine" + desc = "Gambling for the antisocial." + icon = 'icons/obj/objects.dmi' + icon_state = "slots-off" + anchored = 1 + density = 1 +// mats = 10 + var/money = 2500000 + var/plays = 0 + var/working = 0 + var/obj/item/weapon/card/id/scan = null + + attackby(var/obj/item/I as obj, user as mob) + if(istype(I, /obj/item/weapon/card/id)) + if(src.scan) + user << "\red There is a card already in the slot machine." + else + user << "\blue You insert your ID card." + usr.drop_item() + I.loc = src + src.scan = I + else src.attack_hand(user) + return + + attack_hand(var/mob/user as mob) + user.machine = src + if (!src.scan) + var/dat = {"Slot Machine
+

+ Please insert card!
"} + user << browse(dat, "window=slotmachine;size=450x500") + onclose(user, "slotmachine") + else if (src.working) + var/dat = {"Slot Machine
+

+ Please wait!
"} + user << browse(dat, "window=slotmachine;size=450x500") + onclose(user, "slotmachine") + else + var/dat = {"Slot Machine
+

+ Five credits to play!
+ Prize Money Available: [src.scan.money]
+ Your Card: [src.scan]
+ Credits Remaining: [src.scan.money]
+ [src.plays] players have tried their luck today!
+

+ Play!
+
Eject card"} + user << browse(dat, "window=slotmachine;size=400x500") + onclose(user, "slotmachine") + + Topic(href, href_list) + if(href_list["ops"]) + var/operation = text2num(href_list["ops"]) + if(operation == 1) // Play + if (src.scan.money < 5) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Insufficient money to play!'", src), 1) + return + src.scan.money -= 5 + src.money += 5 + src.plays += 1 + src.working = 1 + src.icon_state = "slots-on" + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Let's roll!'", src), 1) + var/roll = rand(1,10000) + spawn(100) + if (roll == 1) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'JACKPOT! You win [src.money]!'", src), 1) + command_alert("Congratulations [src.scan.registered_name] on winning the Jackpot!", "Jackpot Winner") + src.scan.money += src.money + src.money = 0 + else if (roll > 1 && roll <= 10) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Big Winner! You win five thousand credits!'", src), 1) + src.scan.money += 5000 + src.money -= 5000 + else if (roll > 10 && roll <= 100) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Winner! You win five hundred credits!'", src), 1) + src.scan.money += 500 + src.money -= 500 + else if (roll > 100 && roll <= 1000) + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'You win a free game!'", src), 1) + src.scan.money += 5 + src.money -= 5 + else + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'No luck!'", src), 1) + src.working = 0 + src.icon_state = "slots-off" + if(operation == 2) // Eject Card + src.scan.loc = src.loc + src.scan = null + for(var/mob/O in hearers(src, null)) + O.show_message(text("[] says, 'Thank you for playing!'", src), 1) + src.add_fingerprint(usr) + src.updateUsrDialog() + return \ No newline at end of file diff --git a/code/global.dm b/code/global.dm index c81f9c4ab75..7e4071f3b73 100644 --- a/code/global.dm +++ b/code/global.dm @@ -248,3 +248,41 @@ var/custom_event_msg = null //A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.). var/DBConnection/dbcon = new() //Feedback database (New database) var/DBConnection/dbcon_old = new() //Tgstation database (Old database) - See the files in the SQL folder for information what goes where. + + +//Goonstyle scoreboard +var/score_crewscore = 0 // this is the overall var/score for the whole round +var/score_stuffshipped = 0 // how many useful items have cargo shipped out? +var/score_stuffharvested = 0 // how many harvests have hydroponics done? +var/score_oremined = 0 // obvious +var/score_cyborgsmade = 0 +var/score_researchdone = 0 +var/score_eventsendured = 0 // how many random events did the station survive? +var/score_powerloss = 0 // how many APCs have poor charge? +var/score_escapees = 0 // how many people got out alive? +var/score_deadcrew = 0 // dead bodies on the station, oh no +var/score_mess = 0 // how much poo, puke, gibs, etc went uncleaned +var/score_meals = 0 +var/score_disease = 0 // how many rampant, uncured diseases are on board the station +var/score_deadcommand = 0 // used during rev, how many command staff perished +var/score_arrested = 0 // how many traitors/revs/whatever are alive in the brig +var/score_traitorswon = 0 // how many traitors were successful? +var/score_allarrested = 0 // did the crew catch all the enemies alive? +var/score_opkilled = 0 // used during nuke mode, how many operatives died? +var/score_disc = 0 // is the disc safe and secure? +var/score_nuked = 0 // was the station blown into little bits? + + // these ones are mainly for the stat panel +var/score_powerbonus = 0 // if all APCs on the station are running optimally, big bonus +var/score_messbonus = 0 // if there are no messes on the station anywhere, huge bonus +var/score_deadaipenalty = 0 // is the AI dead? if so, big penalty +var/score_foodeaten = 0 // nom nom nom +var/score_clownabuse = 0 // how many times a clown was punched, struck or otherwise maligned +var/score_richestname = null // this is all stuff to show who was the richest alive on the shuttle +var/score_richestjob = null // kinda pointless if you dont have a money system i guess +var/score_richestcash = 0 +var/score_richestkey = null +var/score_dmgestname = null // who had the most damage on the shuttle (but was still alive) +var/score_dmgestjob = null +var/score_dmgestdamage = 0 +var/score_dmgestkey = null \ No newline at end of file diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index a15b0aa12bd..ea7f04877b3 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ