diff --git a/baystation12.dme b/baystation12.dme index 5dc235aaed7..e4c8cc0ca79 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -729,7 +729,6 @@ #include "code\game\objects\tanks\oxygen.dm" #include "code\game\player\news.dm" #include "code\game\verbs\AI_status.dm" -#include "code\game\verbs\checkkarma.dm" #include "code\game\verbs\ooc.dm" #include "code\game\verbs\sound.dm" #include "code\game\verbs\suicide.dm" @@ -744,6 +743,7 @@ #include "code\modules\admin\create_turf.dm" #include "code\modules\admin\NewBan.dm" #include "code\modules\admin\newbanjob.dm" +#include "code\modules\admin\player_panel.dm" #include "code\modules\admin\verbs\adminhelp.dm" #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminsay.dm" diff --git a/code/WorkInProgress/SkyMarshal/wardrobes.dm b/code/WorkInProgress/SkyMarshal/wardrobes.dm index 3dd9bb2837b..c20b69da825 100755 --- a/code/WorkInProgress/SkyMarshal/wardrobes.dm +++ b/code/WorkInProgress/SkyMarshal/wardrobes.dm @@ -1,5 +1,5 @@ /obj/item/wardrobe - name = "wardrobe" + name = "\improper Wardrobe" desc = "A standard-issue bag for clothing and equipment. Usually comes sealed, stocked with everything you need for a particular job." icon = 'suits.dmi' icon_state = "wardrobe_sealed" @@ -37,14 +37,38 @@ user << "\red There's not enough space to fit that!" return - examine() - set src in usr - ..() - usr << "It claims to contain [contents.len ? descriptor : descriptor + "... but it looks empty"]." - if(seal_torn && !contents.len) - usr << "The seal on the bag is broken." + afterattack(atom/A as obj|turf, mob/user as mob) + if(A in user) + return + if(!istype(A.loc,/turf)) + user << "It's got to be on the ground to do that!" + return + var/could_fill = 1 + for (var/obj/O in locate(A.x,A.y,A.z)) + if (contents.len < 20) + if(istype(O,/obj/item/wardrobe)) + continue + if(O.anchored || O.density || istype(O,/obj/structure)) + continue + contents += O; + else + could_fill = 0 + break + if(could_fill) + user << "\blue You pick up all the items." else - usr << "The seal on the bag is[seal_torn ? ", however, not intact" : " intact"]." + user << "\blue You try to pick up all of the items, but run out of space in the bag." + user.visible_message("\blue [user] gathers up[could_fill ? " " : " most of "]the pile of items and puts it into [src].") + update_icon() + + examine() + ..() + if(src in usr) + usr << "It claims to contain [contents.len ? descriptor : descriptor + "... but it looks empty"]." + if(seal_torn && !contents.len) + usr << "The seal on the bag is broken." + else + usr << "The seal on the bag is[seal_torn ? ", however, not intact" : " intact"]." return update_icon() @@ -60,7 +84,7 @@ pixel_y = rand(0,4) -2 /obj/item/wardrobe/assistant - name = "assistant wardrobe" + name = "\improper Assistant Wardrobe" descriptor = "clothing and basic equipment for an assistant" New() @@ -74,7 +98,7 @@ new /obj/item/clothing/under/color/grey(src) /obj/item/wardrobe/chief_engineer - name = "Chief Engineer wardrobe" + name = "\improper Chief Engineer Wardrobe" descriptor = "clothing and basic equipment for a Chief Engineer" New() @@ -98,7 +122,7 @@ new /obj/item/clothing/under/rank/chief_engineer(src) /obj/item/wardrobe/engineer - name = "Station Engineer wardrobe" + name = "\improper Station Engineer Wardrobe" descriptor = "clothing and basic equipment for a Station Engineer" New() @@ -119,7 +143,7 @@ new /obj/item/clothing/under/rank/engineer(src) /obj/item/wardrobe/atmos - name = "Atmospheric Technician wardrobe" + name = "\improper Atmospheric Technician Wardrobe" descriptor = "clothing and basic equipment for an Atmospheric Technician" New() @@ -134,7 +158,7 @@ new /obj/item/clothing/under/rank/atmospheric_technician(src) /obj/item/wardrobe/roboticist - name = "Roboticist wardrobe" + name = "\improper Roboticist Wardrobe" descriptor = "clothing and basic equipment for a Roboticist" New() @@ -151,7 +175,7 @@ new /obj/item/clothing/under/rank/roboticist(src) /obj/item/wardrobe/chaplain - name = "Chaplain wardrobe" + name = "\improper Chaplain Wardrobe" descriptor = "clothing and basic equipment for a Chaplain" New() @@ -166,7 +190,7 @@ new /obj/item/clothing/under/rank/chaplain(src) /obj/item/wardrobe/captain - name = "Captain wardrobe" + name = "\improper Captain Wardrobe" descriptor = "clothing and basic equipment for a Captain" New() @@ -189,7 +213,7 @@ new /obj/item/clothing/under/rank/captain(src) /obj/item/wardrobe/hop - name = "Head of Personnel wardrobe" + name = "\improper Head of Personnel Wardrobe" descriptor = "clothing and basic equipment for a Head of Personnel" New() @@ -210,7 +234,7 @@ new /obj/item/clothing/under/rank/head_of_personnel(src) /obj/item/wardrobe/cmo - name = "Chief Medical Officer wardrobe" + name = "\improper Chief Medical Officer Wardrobe" descriptor = "clothing and basic equipment for a Chief Medical Officer" New() @@ -230,7 +254,7 @@ new /obj/item/clothing/under/rank/chief_medical_officer(src) /obj/item/wardrobe/doctor - name = "Medical Doctor wardrobe" + name = "\improper Medical Doctor Wardrobe" descriptor = "clothing and basic equipment for a Medical Doctor" New() @@ -250,7 +274,7 @@ new /obj/item/clothing/under/rank/medical(src) /obj/item/wardrobe/geneticist - name = "Geneticist wardrobe" + name = "\improper Geneticist Wardrobe" descriptor = "clothing and basic equipment for a Geneticist" New() @@ -266,7 +290,7 @@ new /obj/item/clothing/under/rank/geneticist(src) /obj/item/wardrobe/virologist - name = "Virologist wardrobe" + name = "\improper Virologist Wardrobe" descriptor = "clothing and basic equipment for a Virologist" New() @@ -283,7 +307,7 @@ new /obj/item/clothing/under/rank/medical(src) /obj/item/wardrobe/rd - name = "Research Director wardrobe" + name = "\improper Research Director Wardrobe" descriptor = "clothing and basic equipment for a Research Director" New() @@ -304,7 +328,7 @@ new /obj/item/clothing/under/rank/research_director(src) /obj/item/wardrobe/scientist - name = "Scientist wardrobe" + name = "\improper Scientist Wardrobe" descriptor = "clothing and basic equipment for a Scientist" New() @@ -321,7 +345,7 @@ new /obj/item/clothing/under/rank/scientist(src) /obj/item/wardrobe/chemist - name = "Chemist wardrobe" + name = "\improper Chemist Wardrobe" descriptor = "clothing and basic equipment for a Chemist" New() @@ -336,7 +360,7 @@ new /obj/item/clothing/suit/storage/labcoat/chemist(src) /obj/item/wardrobe/hos - name = "Head of Security wardrobe" + name = "\improper Head of Security Wardrobe" descriptor = "clothing and basic equipment for a Head of Security" New() @@ -359,7 +383,7 @@ new /obj/item/clothing/under/rank/head_of_security(src) /obj/item/wardrobe/warden - name = "Warden wardrobe" + name = "\improper Warden Wardrobe" descriptor = "clothing and basic equipment for a Warden" New() @@ -382,7 +406,7 @@ new /obj/item/clothing/under/rank/warden(src) /obj/item/wardrobe/detective - name = "Detective wardrobe" + name = "\improper Detective Wardrobe" descriptor = "clothing and basic equipment for a Detective" New() @@ -404,7 +428,7 @@ new /obj/item/clothing/under/det(src) /obj/item/wardrobe/officer - name = "Security Officer wardrobe" + name = "\improper Security Officer Wardrobe" descriptor = "clothing and basic equipment for a Security Officer" New() @@ -432,7 +456,7 @@ /obj/item/wardrobe/bartender - name = "Bartender wardrobe" + name = "\improper Bartender Wardrobe" descriptor = "clothing and basic equipment for a Bartender" New() @@ -450,7 +474,7 @@ new /obj/item/clothing/under/rank/bartender(src) /obj/item/wardrobe/chef - name = "Chef wardrobe" + name = "\improper Chef Wardrobe" descriptor = "clothing and basic equipment for a Chef" New() @@ -465,7 +489,7 @@ new /obj/item/clothing/under/rank/chef(src) /obj/item/wardrobe/hydro - name = "Botanist wardrobe" + name = "\improper Botanist Wardrobe" descriptor = "clothing and basic equipment for a Botanist" New() @@ -481,7 +505,7 @@ new /obj/item/clothing/under/rank/hydroponics(src) /obj/item/wardrobe/qm - name = "Quartermaster wardrobe" + name = "\improper Quartermaster Wardrobe" descriptor = "clothing and basic equipment for a Quartermaster" New() @@ -497,7 +521,7 @@ new /obj/item/clothing/under/rank/cargo(src) /obj/item/wardrobe/cargo_tech - name = "Cargo Technician wardrobe" + name = "\improper Cargo Technician Wardrobe" descriptor = "clothing and basic equipment for a Cargo Technician" New() @@ -511,7 +535,7 @@ new /obj/item/clothing/under/rank/cargo(src) /obj/item/wardrobe/mining - name = "Shaft Miner wardrobe" + name = "\improper Shaft Miner Wardrobe" descriptor = "clothing and basic equipment for a Shaft Miner" New() @@ -531,7 +555,7 @@ new /obj/item/clothing/under/rank/miner(src) /obj/item/wardrobe/janitor - name = "Janitor wardrobe" + name = "\improper Janitor Wardrobe" descriptor = "clothing and basic equipment for a Janitor" New() @@ -544,7 +568,7 @@ new /obj/item/clothing/under/rank/janitor(src) /obj/item/wardrobe/librarian - name = "Librarian wardrobe" + name = "\improper Librarian Wardrobe" descriptor = "clothing and basic equipment for a Librarian" New() @@ -557,7 +581,7 @@ new /obj/item/clothing/under/suit_jacket/red(src) /obj/item/wardrobe/lawyer - name = "Lawyer wardrobe" + name = "\improper Lawyer Wardrobe" descriptor = "clothing and basic equipment for a Lawyer" New() diff --git a/code/defines/client.dm b/code/defines/client.dm index d246ad89521..177ae1dcdd5 100644 --- a/code/defines/client.dm +++ b/code/defines/client.dm @@ -27,8 +27,6 @@ var/played = 0 var/team = null var/warned = 0 - var/karma = 0 - var/karma_spent = 0 var/STFU_ghosts //80+ people rounds are fun to admin when text flies faster than airport security var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 1b1466769d7..6bc1b6de22d 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -256,6 +256,8 @@ the mob is also allowed to move without any sort of restriction. For instance, i var/grav_delay = 0 var/being_strangled = 0 + var/original_name = null //Original name is only used in ghost chat! It is not to be edited by anything! + /mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1) // world << "Contract_disease called by [src] with virus [virus]" if(stat >=2) return diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm index 824f8ac57d8..5cb93676266 100644 --- a/code/defines/procs/statistics.dm +++ b/code/defines/procs/statistics.dm @@ -46,75 +46,6 @@ proc/sql_report_round_end() if(!sqllogging) return -proc/sql_report_karma(var/mob/spender, var/mob/receiver, var/isnegative = 1) - if(!sqllogging) - return - var/sqlspendername = spender.name - var/sqlspenderkey = spender.key - var/sqlreceivername = receiver.name - var/sqlreceiverkey = receiver.key - var/sqlreceiverrole = "None" - var/sqlreceiverspecial = "None" - var/sqlisnegative = "TRUE" - - if(isnegative) - sqlisnegative = "TRUE" - else - sqlisnegative = "FALSE" - - 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 - - var/DBConnection/dbcon = new() - dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") - 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, isnegative, spenderip, time) VALUES ('[sqlspendername]', '[sqlspenderkey]', '[sqlreceivername]', '[sqlreceiverkey]', '[sqlreceiverrole]', '[sqlreceiverspecial]', [sqlisnegative], '[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) - if(isnegative) - karma = -1 - else - 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 - if(isnegative && sqlreceiverspecial != "None") // Toss out negative karma applied to traitors/wizards/etc. - dbcon.Disconnect() - return - if(isnegative) - karma -= 1 - 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") - dbcon.Disconnect() - - proc/sql_report_death(var/mob/living/carbon/human/H) if(!sqllogging) return diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index f077dc9b5a1..e058b359845 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -43,8 +43,10 @@ agent_number = possible_syndicates.len var/n_players = num_players() - if(agent_number > n_players) - agent_number = n_players/2 + if(agent_number > (n_players - agent_number)) + agent_number = (n_players - agent_number)/2 + if(agent_number < required_enemies) + agent_number = required_enemies while(agent_number > 0) var/datum/mind/new_syndicate = pick(possible_syndicates) diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index 0cd654e7ba7..7b7b0ff1b8b 100755 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -200,6 +200,7 @@ user.update_clothing() return +/* /obj/item/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/device/detective_scanner)) return @@ -222,32 +223,7 @@ var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(location) P.wrapped = src src.loc = P - O.amount -= 1 - else if(istype(W,/obj/item/wardrobe)) - if(src in user) - return - if(!istype(src.loc,/turf)) - user << "It's got to be on the ground to do that!" - return - var/obj/item/wardrobe/I = W - var/could_fill = 1 - for (var/obj/O in locate(src.x,src.y,src.z)) - if (I.contents.len < 20) - if(istype(O,/obj/item/wardrobe)) - continue - if(O.anchored || O.density || istype(O,/obj/structure)) - continue - I.contents += O; - else - could_fill = 0 - break - - if(could_fill) - user << "\blue You pick up all the items." - else - user << "\blue You try to pick up all of the items, but run out of space in the bag." - user.visible_message("\blue [user] gathers up[could_fill ? " " : " most of "]the pile of items and puts it into the [W].") - I.update_icon() + O.amount -= 1*/ /obj/item/attack_self(mob/user as mob) ..() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 7ba2f17de5c..4cb7a48f3ea 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -923,7 +923,7 @@ return var/mob/M = locate(href_list["traitor"]) if (!istype(M)) - player() + player_panel_new() return if(isalien(M)) alert("Is an [M.mind ? M.mind.special_role : "Alien"]!", "[M.key]") @@ -1863,312 +1863,6 @@ dat += "" usr << browse(dat, "window=adminplayerinfo;size=480x480") -/obj/admins/proc/player() - if (!usr.client.holder) - return - var/dat = "Player Panel" - - //javascript, the part that does most of the work~ - dat += {" - - - - - - - "} - - //body tag start + onload and onkeypress (onkeyup) javascript event calls - dat += "" - - //title + search bar - dat += {" - - - - - - - - -
- Player panel
- Hover over a line to see more information -

-

- Search: -
- - "} - - //player table header - dat += {" - - "} - - var/list/mobs = sortmobs() - var/i = 1 - var/show_karma = 0 - var/DBConnection/dbcon - if(config.sql_enabled) // SQL is enabled in config.txt - dbcon = new() // Setting up connection - dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") - if(dbcon.IsConnected()) - show_karma = 1 - else - usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
" - - - for(var/mob/M in mobs) - if(M.ckey) - var/color = "#e6e6e6" - if(i%2 == 0) - color = "#f2f2f2" - var/is_antagonist = is_special_character(M) - - var/karma = "DC" - - if(show_karma) - - var/DBQuery/query = dbcon.NewQuery("SELECT karma FROM karmatotals WHERE byondkey='[M.key]'") - query.Execute() - - while(query.NextRow()) - karma = query.item[1] - - var/job = "" - - if(istype(M,/mob/new_player)) - job = "New player" - if(isliving(M)) - job = "Living" - if(isobserver(M)) - job = "Ghost" - if(isalien(M)) - job = "Alien" - if(islarva(M)) - job = "Alien larva" - if(ishuman(M)) - job = M.job - if(ismetroid(M)) - job = "Metroid" - if(ismonkey(M)) - job = "Moneky" - if(isAI(M)) - job = "AI" - if(ispAI(M)) - job = "pAI" - if(isrobot(M)) - job = "Cyborg" - if(isanimal(M)) - job = "Animal" - if(iscorgi(M)) - job = "Corgi" - - //output for each mob - dat += {" - - - - - - "} - - i++ - - - //player table ending - dat += {" -
- - - [M.name] - [M.real_name] - [M.key] ([job]) - -
-
-
- - - - "} - - usr << browse(dat, "window=players;size=600x480") - /obj/admins/proc/Jobbans() if ((src.rank in list( "Game Admin", "Game Master" ))) var/dat = "Job Bans!
" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index d280cc98c43..663a015f8c6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -262,7 +262,8 @@ verbs += /client/proc/admin_play verbs += /client/proc/admin_observe verbs += /client/proc/game_panel - verbs += /client/proc/player_panel +// verbs += /client/proc/player_panel + verbs += /client/proc/player_panel_new verbs += /client/proc/unban_panel verbs += /client/proc/jobbans verbs += /client/proc/playernotes @@ -388,7 +389,8 @@ verbs -= /client/proc/admin_play verbs -= /client/proc/admin_observe verbs -= /client/proc/game_panel - verbs -= /client/proc/player_panel +// verbs -= /client/proc/player_panel + verbs -= /client/proc/player_panel_new verbs -= /client/proc/unban_panel verbs -= /client/proc/jobbans verbs -= /client/proc/playernotes @@ -479,11 +481,18 @@ src << "[M.key] is undefined - [M.client.holder.state]" -/client/proc/player_panel() +///client/proc/player_panel() +// set name = "Player Panel-Old" +// set category = "Admin" +// if(holder) +// holder.player_panel_old() +// return + +/client/proc/player_panel_new() set name = "Player Panel" set category = "Admin" - if (holder) - holder.player() + if(holder) + holder.player_panel_new() return /client/proc/jobbans() @@ -722,7 +731,7 @@ verbs += /client/proc/admin_play verbs += /client/proc/admin_observe verbs += /client/proc/game_panel - verbs += /client/proc/player_panel +// verbs += /client/proc/player_panel verbs += /client/proc/cmd_admin_subtle_message verbs += /client/proc/cmd_admin_pm verbs += /client/proc/cmd_admin_gib_self diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm new file mode 100644 index 00000000000..c317f9f7073 --- /dev/null +++ b/code/modules/admin/player_panel.dm @@ -0,0 +1,161 @@ +/obj/admins/proc/player_panel_new()//The new one + if (!usr.client.holder) + return + var/dat = "Player Menu" + dat += "
" + //add to this if wanting to add back in IP checking + //add if you want to know their ip to the lists below + var/list/mobs = sortmobs() + var/i = 1 + + for(var/mob/M in mobs) + if(M.ckey) + var/color = "#e6e6e6" + if(i%2 == 0) + color = "#f2f2f2" + var/real = (M.real_name == M.original_name ? M.real_name : "[M.original_name] (as [M.real_name])") + var/turf/T = get_turf(M) + var/client_key = (M.key? M.key : "No key") + dat += "" // Adds current name + if(isobserver(M)) + dat += "" + if(isalien(M)) + dat += "" + if(islarva(M)) + dat += "" + if(ishuman(M)) + dat += "" + if(ismetroid(M)) + dat += "" + if(ismonkey(M)) + dat += "" + if(isAI(M)) + dat += "" + if(ispAI(M)) + dat += "" + if(isrobot(M)) + dat += "" + if(isanimal(M)) + dat += "" + if(iscorgi(M)) + dat += "" + + if(M.mind && M.mind.assigned_role && istype(M, /mob/living/carbon/human)) // Adds a column to Player Panel that shows their current job. + var/mob/living/carbon/human/H = M + + if (H.wear_id) + var/obj/item/weapon/card/id/id + + if(istype(H.wear_id, /obj/item/device/pda)) + var/obj/item/device/pda/PDA = H.wear_id + if(!isnull(PDA.id)) // The PDA may contain no ID + id = PDA.id // The ID is contained inside the PDA + + else + id = H.wear_id // The ID was on the ID slot + + if(!id) // Happens when there's no ID in the PDA located on the wear_id slot + dat += "" + + else if(isnull(id.assignment)) // Preventing runtime errors blocking the player panel + usr << "ERROR: Inform the coders that an [id.name] was checked for its assignment variable, and it was null." + dat += "" + + else + if(M.mind.assigned_role == id.assignment) // Polymorph + dat += "" + + else + dat += "" + + else + dat += "" + + var/muting = "Mute unavailable - no client" + if(M.client) + muting = {"Mute: [(M.client.muted ? "Muted" : "Voiced")] | + Complete mute: [(M.client.muted ? "Completely Muted" : "Voiced")] + "} + + dat += {" + + "} + + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} + + dat += "
Name/Real NameTypeAssigned JobInfoOptionsTraitor?
IP:(IP: [M.lastKnownIP])
[M.name] \[[real]\]
[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])
GhostAlienAlien larva[M.job]MetroidMonkeyAIpAICyborgAnimalCorgi[M.mind.assigned_role] (No ID)ERROR[M.mind.assigned_role][M.mind.assigned_role] ([id.assignment])" + + else + dat += "[M.mind.assigned_role] (No ID)No Assigned Role[player_has_info(M.ckey) ? "Info" : "N/A"] Boot | Ban | Jobban +
[muting]
+ PP | + VV | + SM | + JMP | + CA
Traitor?Traitor?Traitor?
" + + usr << browse(dat, "window=players;size=905x480") + +//The old one +/obj/admins/proc/player_panel_old() + if (!usr.client.holder) + return + var/dat = "Player Menu" + dat += "" + //add to this if wanting to add back in IP checking + //add if you want to know their ip to the lists below + var/list/mobs = sortmobs() + + for(var/mob/M in mobs) + if(!M.ckey) continue + + dat += "" + if(isAI(M)) + dat += "" + else if(isrobot(M)) + dat += "" + else if(ishuman(M)) + dat += "" + else if(istype(M, /mob/living/silicon/pai)) + dat += "" + else if(istype(M, /mob/new_player)) + dat += "" + else if(isobserver(M)) + dat += "" + else if(ismonkey(M)) + dat += "" + else if(isalien(M)) + dat += "" + else + dat += "" + + + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.mind && H.mind.assigned_role) + dat += "" + else + dat += "" + + + dat += {" + + + "} + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} + + dat += "
NameReal NameAssigned JobKeyOptionsPMTraitor?
IP:(IP: [M.lastKnownIP])
[M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown[H.mind.assigned_role]NA[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?
" + + usr << browse(dat, "window=players;size=640x480") \ No newline at end of file diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index b2b1a58a488..568f291e2d2 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -29,7 +29,6 @@ attackby(var/obj/item/weapon/W, var/mob/user) - wrap(W,user) if(path || !active) switch(active) if(0) @@ -398,7 +397,6 @@ usr << "\blue [grenades] / [max_grenades] Grenades." attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) if((istype(I, /obj/item/weapon/chem_grenade)) || (istype(I, /obj/item/weapon/flashbang)) || (istype(I, /obj/item/weapon/smokebomb)) || (istype(I, /obj/item/weapon/mustardbomb)) || (istype(I, /obj/item/weapon/empgrenade))) if(grenades.len < max_grenades) user.drop_item() @@ -498,7 +496,6 @@ usr << "\blue [syringes] / [max_syringes] Syringes." attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) if(istype(I, /obj/item/weapon/reagent_containers/syringe)) if(syringes.len < max_syringes) user.drop_item() @@ -577,7 +574,6 @@ usr << "\blue [syringes] / [max_syringes] Syringes." attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) if(istype(I, /obj/item/weapon/reagent_containers/syringe)) if(syringes.len < max_syringes) user.drop_item() @@ -731,16 +727,10 @@ reagents = R R.my_atom = src - attackby(obj/item/weapon/W as obj, mob/user as mob) - wrap(W,user) - return attack_self(mob/user as mob) return attack(mob/M as mob, mob/user as mob, def_zone) return - attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) - return afterattack(obj/target, mob/user , flag) return @@ -1138,10 +1128,6 @@ attack_paw() return attack_hand() - attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) - return - afterattack(obj/target, mob/user , flag) if(!target.reagents) return @@ -1346,7 +1332,6 @@ return attackby(obj/item/weapon/W as obj, mob/user as mob) - wrap(W,user) return attack_self(mob/user as mob) return @@ -1475,7 +1460,6 @@ return 0 attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) return afterattack(obj/target, mob/user , flag) return @@ -1498,8 +1482,6 @@ var/slices_num attackby(obj/item/weapon/W as obj, mob/user as mob) - wrap(W,user) - if((slices_num <= 0 || !slices_num) || !slice_path) return 1 var/inaccurate = 0 @@ -1701,9 +1683,6 @@ if(!icon_state) icon_state = "pill[rand(1,20)]" - attackby(obj/item/weapon/W as obj, mob/user as mob) - wrap(W,user) - return attack_self(mob/user as mob) return attack(mob/M as mob, mob/user as mob, def_zone) @@ -1744,10 +1723,6 @@ return 0 - attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) - return - afterattack(obj/target, mob/user , flag) if(target.is_open_container() == 1 && target.reagents) @@ -2364,7 +2339,6 @@ volume = 50 attackby(obj/item/weapon/W as obj, mob/user as mob) - wrap(W,user) return attack_self(mob/user as mob) return @@ -2406,7 +2380,6 @@ return 0 attackby(obj/item/I as obj, mob/user as mob) - wrap(I,user) return afterattack(obj/target, mob/user , flag) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 4c901101262..5be108c5524 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -12,8 +12,9 @@ else//Safety, in case a turf cannot be found. loc = pick(latejoin) if(!istype(body,/mob)) return//This needs to be recoded sometime so it has loc as its first arg - real_name = body.real_name - name = body.real_name + real_name = body.name + original_name = body.original_name + name = body.original_name if(!safety) corpse = body verbs += /mob/dead/observer/proc/reenter_corpse @@ -157,58 +158,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp L+=T usr.loc = pick(L) -var/list/karma_spenders = list() - -/mob/dead/observer/verb/spend_karma(var/mob/M in world) // Karma system -- TLE - set name = "Spend Karma" - set category = "Ghost" - set desc = "Let the gods know whether someone's been naughty or nice. " - if(!istype(M, /mob)) - usr << "\red That's not a mob. You shouldn't have even been able to specify that. Please inform your server administrator post haste." - return - - if(!M.client) - usr << "\red That mob has no client connected at the moment." - return - if(client.karma_spent) - usr << "\red You've already spent your karma for the round." - return - for(var/a in karma_spenders) - if(a == key) - usr << "\red You've already spent your karma for the round." - return - if(M.key == key) - usr << "\red You can't spend karma on yourself!" - return - var/choice = input("Give [M.name] good karma or bad karma?", "Karma") in list("Good", "Bad", "Cancel") - client.karma_spent = 1 - if(!choice || choice == "Cancel") - return - client.karma_spent = 0 - if(choice == "Good") - M.client.karma += 1 - if(choice == "Bad") - M.client.karma -= 1 - usr << "[choice] karma spent on [M.name]." - client.karma_spent = 1 - karma_spenders.Add(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")]" - var/isnegative = 1 - if(choice == "Good") - isnegative = 0 - else - isnegative = 1 - sql_report_karma(src, M, isnegative) - /mob/dead/observer/verb/toggle_alien_candidate() set name = "Toggle Be Alien Candidate" set category = "Ghost" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 9e9d52bc227..65086efef59 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -208,6 +208,7 @@ preferences.randomize_name() observer.name = preferences.real_name observer.real_name = observer.name + observer.original_name = observer.name //Original name is only used in ghost chat! It is not to be edited by anything! del(src) return 1 diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 55963f75891..2505bee7dbe 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -828,6 +828,7 @@ datum/preferences if(be_random_name) randomize_name() character.real_name = real_name + character.original_name = real_name //Original name is only used in ghost chat! It is not to be edited by anything! character.flavor_text = flavor_text diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 465c5738d4b..e923cb459a9 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -23,14 +23,10 @@ var/name = src.real_name var/alt_name = "" - if (istype(src, /mob/living/carbon/human) && src.name != src.real_name) - var/mob/living/carbon/human/H = src - alt_name = " (as [H.get_authentification_name()])" - else if (istype(src, /mob/dead/observer)) - name = "Ghost" - alt_name = " ([src.real_name])" - else if (!istype(src, /mob/living/carbon/human)) - name = src.name + if(original_name) //Original name is only used in ghost chat! It is not to be edited by anything! + name = src.original_name + if( original_name != real_name ) + alt_name = " (died as [src.real_name])" message = src.say_quote(message) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 71f4ed2678e..084002946f1 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -58,6 +58,7 @@ M.apply_damage(75, BRUTE, "head", used_weapon = "Suicide attempt with a gun") M.apply_damage(85, BRUTE, "chest") M.visible_message("\red [user] pulls the trigger. Ow.") + del(src.in_chamber) return else return ..() diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index fa65e654ee9..9d17671303f 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -38,7 +38,6 @@ attackby(var/obj/item/A as obj, mob/user as mob) - wrap(A, user) var/num_loaded = 0 if(istype(A, /obj/item/ammo_magazine)) if((load_method == 2) && loaded.len) return diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 220d5add65a..7812fe4bff3 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -12,9 +12,13 @@ process() main = 1 ID = rand(0,1000) - var/lets_not_be_a_derp = 1 + var/first = 1 + var/obj/effect/effect/laserdealer/lasor = new /obj/effect/effect/laserdealer(null) + spawn(0) + lasor.setup(ID) spawn(0) while(!bumped) + step_towards(src, current) for(var/mob/living/M in loc) Bump(M) if((!( current ) || loc == current)) @@ -22,25 +26,27 @@ if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) del(src) return - if(!lets_not_be_a_derp) + if(!first) var/obj/item/projectile/beam/new_beam = new src.type(loc) processing_objects.Remove(new_beam) - new_beam.dir = dir + new_beam.dir = get_dir(src, current) new_beam.ID = ID + new_beam.icon_state = icon_state else - lets_not_be_a_derp = 0 - step_towards(src, current) + first = 0 processing_objects.Remove(src) return - Del() - if(main) - sleep(3) - for(var/obj/item/projectile/beam/beam in world) - if(beam.ID == ID) - del(beam) - ..() +/obj/effect/effect/laserdealer + name = "laserdealio" + proc/setup(var/ID = 0) + sleep(5) + for(var/obj/item/projectile/beam/beam in world) + if(ID == beam.ID) + del(beam) + spawn(0) + del(src) /obj/item/projectile/beam/heavylaser name = "heavy laser" diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 63b96a09cea..88a9d68f806 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -79,11 +79,11 @@ return examine() - set src in oview(4) - if(sortTag) - usr << "\blue It is labeled \"[sortTag]\"" - if(examtext) - usr << examtext + if(src in oview(4)) + if(sortTag) + usr << "\blue It is labeled \"[sortTag]\"" + if(examtext) + usr << examtext ..() return @@ -155,11 +155,11 @@ return examine() - set src in oview(4) - if(sortTag) - usr << "\blue It is labeled \"[sortTag]\"" - if(examtext) - usr << examtext + if(src in oview(4)) + if(sortTag) + usr << "\blue It is labeled \"[sortTag]\"" + if(examtext) + usr << examtext ..() return @@ -171,14 +171,19 @@ var/amount = 25.0 - attack(target as obj, mob/user as mob) + afterattack(target as obj, mob/user as mob) + if(istype(target, /obj/structure/table) || istype(target, /obj/structure/rack)) + return user.attack_log += text("\[[time_stamp()]\] Has used [src.name] on \ref[target]") -/* if (istype(target, /obj/item)) + if (istype(target, /obj/item)) var/obj/item/O = target if (src.amount > 1) var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! + if(!istype(O.loc, /turf)) + if(user.client) + user.client.screen -= O P.wrapped = O O.loc = P src.amount -= 1 @@ -201,9 +206,8 @@ O.loc = P src.amount -= 3 else - user << "\blue You need more paper." */ - - if(!(istype (target, /obj/structure/closet) || istype(target, /obj/structure/closet/crate) || istype(target, /obj/item))) + user << "\blue You need more paper." + else user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!" if (src.amount <= 0) new /obj/item/weapon/c_tube( src.loc ) @@ -213,12 +217,12 @@ return examine() - set src in usr - usr << "\blue There are [amount] units of package wrap left!" + if(src in usr) + usr << "\blue There are [amount] units of package wrap left!" ..() return -/obj/item/proc/wrap(obj/item/I as obj, mob/user as mob) +/*/obj/item/proc/wrap(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/packageWrap)) var/obj/item/weapon/packageWrap/C = I if(anchored) @@ -231,7 +235,7 @@ if (C.amount <= 0) new /obj/item/weapon/c_tube( C.loc ) del(C) - return + return*/ /obj/item/device/destTagger name = "destination tagger"