Replaced a lot of stupid from the wardrobes and package wrap, they now use an afterattack call instead of specific code for them in EVERY OTHER ITEM.

Improved the admin panel.
Removed Karma.
This commit is contained in:
SkyMarshal
2012-02-28 00:11:15 -07:00
parent ed7c6d1259
commit b653c615be
17 changed files with 275 additions and 556 deletions

View File

@@ -729,7 +729,6 @@
#include "code\game\objects\tanks\oxygen.dm" #include "code\game\objects\tanks\oxygen.dm"
#include "code\game\player\news.dm" #include "code\game\player\news.dm"
#include "code\game\verbs\AI_status.dm" #include "code\game\verbs\AI_status.dm"
#include "code\game\verbs\checkkarma.dm"
#include "code\game\verbs\ooc.dm" #include "code\game\verbs\ooc.dm"
#include "code\game\verbs\sound.dm" #include "code\game\verbs\sound.dm"
#include "code\game\verbs\suicide.dm" #include "code\game\verbs\suicide.dm"
@@ -744,6 +743,7 @@
#include "code\modules\admin\create_turf.dm" #include "code\modules\admin\create_turf.dm"
#include "code\modules\admin\NewBan.dm" #include "code\modules\admin\NewBan.dm"
#include "code\modules\admin\newbanjob.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\adminhelp.dm"
#include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminjump.dm"
#include "code\modules\admin\verbs\adminsay.dm" #include "code\modules\admin\verbs\adminsay.dm"

View File

@@ -1,5 +1,5 @@
/obj/item/wardrobe /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." 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 = 'suits.dmi'
icon_state = "wardrobe_sealed" icon_state = "wardrobe_sealed"
@@ -37,14 +37,38 @@
user << "\red There's not enough space to fit that!" user << "\red There's not enough space to fit that!"
return return
examine() afterattack(atom/A as obj|turf, mob/user as mob)
set src in usr if(A in user)
..() return
usr << "It claims to contain [contents.len ? descriptor : descriptor + "... but it looks empty"]." if(!istype(A.loc,/turf))
if(seal_torn && !contents.len) user << "It's got to be on the ground to do that!"
usr << "The seal on the bag is broken." 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 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 return
update_icon() update_icon()
@@ -60,7 +84,7 @@
pixel_y = rand(0,4) -2 pixel_y = rand(0,4) -2
/obj/item/wardrobe/assistant /obj/item/wardrobe/assistant
name = "assistant wardrobe" name = "\improper Assistant Wardrobe"
descriptor = "clothing and basic equipment for an assistant" descriptor = "clothing and basic equipment for an assistant"
New() New()
@@ -74,7 +98,7 @@
new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src)
/obj/item/wardrobe/chief_engineer /obj/item/wardrobe/chief_engineer
name = "Chief Engineer wardrobe" name = "\improper Chief Engineer Wardrobe"
descriptor = "clothing and basic equipment for a Chief Engineer" descriptor = "clothing and basic equipment for a Chief Engineer"
New() New()
@@ -98,7 +122,7 @@
new /obj/item/clothing/under/rank/chief_engineer(src) new /obj/item/clothing/under/rank/chief_engineer(src)
/obj/item/wardrobe/engineer /obj/item/wardrobe/engineer
name = "Station Engineer wardrobe" name = "\improper Station Engineer Wardrobe"
descriptor = "clothing and basic equipment for a Station Engineer" descriptor = "clothing and basic equipment for a Station Engineer"
New() New()
@@ -119,7 +143,7 @@
new /obj/item/clothing/under/rank/engineer(src) new /obj/item/clothing/under/rank/engineer(src)
/obj/item/wardrobe/atmos /obj/item/wardrobe/atmos
name = "Atmospheric Technician wardrobe" name = "\improper Atmospheric Technician Wardrobe"
descriptor = "clothing and basic equipment for an Atmospheric Technician" descriptor = "clothing and basic equipment for an Atmospheric Technician"
New() New()
@@ -134,7 +158,7 @@
new /obj/item/clothing/under/rank/atmospheric_technician(src) new /obj/item/clothing/under/rank/atmospheric_technician(src)
/obj/item/wardrobe/roboticist /obj/item/wardrobe/roboticist
name = "Roboticist wardrobe" name = "\improper Roboticist Wardrobe"
descriptor = "clothing and basic equipment for a Roboticist" descriptor = "clothing and basic equipment for a Roboticist"
New() New()
@@ -151,7 +175,7 @@
new /obj/item/clothing/under/rank/roboticist(src) new /obj/item/clothing/under/rank/roboticist(src)
/obj/item/wardrobe/chaplain /obj/item/wardrobe/chaplain
name = "Chaplain wardrobe" name = "\improper Chaplain Wardrobe"
descriptor = "clothing and basic equipment for a Chaplain" descriptor = "clothing and basic equipment for a Chaplain"
New() New()
@@ -166,7 +190,7 @@
new /obj/item/clothing/under/rank/chaplain(src) new /obj/item/clothing/under/rank/chaplain(src)
/obj/item/wardrobe/captain /obj/item/wardrobe/captain
name = "Captain wardrobe" name = "\improper Captain Wardrobe"
descriptor = "clothing and basic equipment for a Captain" descriptor = "clothing and basic equipment for a Captain"
New() New()
@@ -189,7 +213,7 @@
new /obj/item/clothing/under/rank/captain(src) new /obj/item/clothing/under/rank/captain(src)
/obj/item/wardrobe/hop /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" descriptor = "clothing and basic equipment for a Head of Personnel"
New() New()
@@ -210,7 +234,7 @@
new /obj/item/clothing/under/rank/head_of_personnel(src) new /obj/item/clothing/under/rank/head_of_personnel(src)
/obj/item/wardrobe/cmo /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" descriptor = "clothing and basic equipment for a Chief Medical Officer"
New() New()
@@ -230,7 +254,7 @@
new /obj/item/clothing/under/rank/chief_medical_officer(src) new /obj/item/clothing/under/rank/chief_medical_officer(src)
/obj/item/wardrobe/doctor /obj/item/wardrobe/doctor
name = "Medical Doctor wardrobe" name = "\improper Medical Doctor Wardrobe"
descriptor = "clothing and basic equipment for a Medical Doctor" descriptor = "clothing and basic equipment for a Medical Doctor"
New() New()
@@ -250,7 +274,7 @@
new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/under/rank/medical(src)
/obj/item/wardrobe/geneticist /obj/item/wardrobe/geneticist
name = "Geneticist wardrobe" name = "\improper Geneticist Wardrobe"
descriptor = "clothing and basic equipment for a Geneticist" descriptor = "clothing and basic equipment for a Geneticist"
New() New()
@@ -266,7 +290,7 @@
new /obj/item/clothing/under/rank/geneticist(src) new /obj/item/clothing/under/rank/geneticist(src)
/obj/item/wardrobe/virologist /obj/item/wardrobe/virologist
name = "Virologist wardrobe" name = "\improper Virologist Wardrobe"
descriptor = "clothing and basic equipment for a Virologist" descriptor = "clothing and basic equipment for a Virologist"
New() New()
@@ -283,7 +307,7 @@
new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/under/rank/medical(src)
/obj/item/wardrobe/rd /obj/item/wardrobe/rd
name = "Research Director wardrobe" name = "\improper Research Director Wardrobe"
descriptor = "clothing and basic equipment for a Research Director" descriptor = "clothing and basic equipment for a Research Director"
New() New()
@@ -304,7 +328,7 @@
new /obj/item/clothing/under/rank/research_director(src) new /obj/item/clothing/under/rank/research_director(src)
/obj/item/wardrobe/scientist /obj/item/wardrobe/scientist
name = "Scientist wardrobe" name = "\improper Scientist Wardrobe"
descriptor = "clothing and basic equipment for a Scientist" descriptor = "clothing and basic equipment for a Scientist"
New() New()
@@ -321,7 +345,7 @@
new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src)
/obj/item/wardrobe/chemist /obj/item/wardrobe/chemist
name = "Chemist wardrobe" name = "\improper Chemist Wardrobe"
descriptor = "clothing and basic equipment for a Chemist" descriptor = "clothing and basic equipment for a Chemist"
New() New()
@@ -336,7 +360,7 @@
new /obj/item/clothing/suit/storage/labcoat/chemist(src) new /obj/item/clothing/suit/storage/labcoat/chemist(src)
/obj/item/wardrobe/hos /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" descriptor = "clothing and basic equipment for a Head of Security"
New() New()
@@ -359,7 +383,7 @@
new /obj/item/clothing/under/rank/head_of_security(src) new /obj/item/clothing/under/rank/head_of_security(src)
/obj/item/wardrobe/warden /obj/item/wardrobe/warden
name = "Warden wardrobe" name = "\improper Warden Wardrobe"
descriptor = "clothing and basic equipment for a Warden" descriptor = "clothing and basic equipment for a Warden"
New() New()
@@ -382,7 +406,7 @@
new /obj/item/clothing/under/rank/warden(src) new /obj/item/clothing/under/rank/warden(src)
/obj/item/wardrobe/detective /obj/item/wardrobe/detective
name = "Detective wardrobe" name = "\improper Detective Wardrobe"
descriptor = "clothing and basic equipment for a Detective" descriptor = "clothing and basic equipment for a Detective"
New() New()
@@ -404,7 +428,7 @@
new /obj/item/clothing/under/det(src) new /obj/item/clothing/under/det(src)
/obj/item/wardrobe/officer /obj/item/wardrobe/officer
name = "Security Officer wardrobe" name = "\improper Security Officer Wardrobe"
descriptor = "clothing and basic equipment for a Security Officer" descriptor = "clothing and basic equipment for a Security Officer"
New() New()
@@ -432,7 +456,7 @@
/obj/item/wardrobe/bartender /obj/item/wardrobe/bartender
name = "Bartender wardrobe" name = "\improper Bartender Wardrobe"
descriptor = "clothing and basic equipment for a Bartender" descriptor = "clothing and basic equipment for a Bartender"
New() New()
@@ -450,7 +474,7 @@
new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src)
/obj/item/wardrobe/chef /obj/item/wardrobe/chef
name = "Chef wardrobe" name = "\improper Chef Wardrobe"
descriptor = "clothing and basic equipment for a Chef" descriptor = "clothing and basic equipment for a Chef"
New() New()
@@ -465,7 +489,7 @@
new /obj/item/clothing/under/rank/chef(src) new /obj/item/clothing/under/rank/chef(src)
/obj/item/wardrobe/hydro /obj/item/wardrobe/hydro
name = "Botanist wardrobe" name = "\improper Botanist Wardrobe"
descriptor = "clothing and basic equipment for a Botanist" descriptor = "clothing and basic equipment for a Botanist"
New() New()
@@ -481,7 +505,7 @@
new /obj/item/clothing/under/rank/hydroponics(src) new /obj/item/clothing/under/rank/hydroponics(src)
/obj/item/wardrobe/qm /obj/item/wardrobe/qm
name = "Quartermaster wardrobe" name = "\improper Quartermaster Wardrobe"
descriptor = "clothing and basic equipment for a Quartermaster" descriptor = "clothing and basic equipment for a Quartermaster"
New() New()
@@ -497,7 +521,7 @@
new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/under/rank/cargo(src)
/obj/item/wardrobe/cargo_tech /obj/item/wardrobe/cargo_tech
name = "Cargo Technician wardrobe" name = "\improper Cargo Technician Wardrobe"
descriptor = "clothing and basic equipment for a Cargo Technician" descriptor = "clothing and basic equipment for a Cargo Technician"
New() New()
@@ -511,7 +535,7 @@
new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/under/rank/cargo(src)
/obj/item/wardrobe/mining /obj/item/wardrobe/mining
name = "Shaft Miner wardrobe" name = "\improper Shaft Miner Wardrobe"
descriptor = "clothing and basic equipment for a Shaft Miner" descriptor = "clothing and basic equipment for a Shaft Miner"
New() New()
@@ -531,7 +555,7 @@
new /obj/item/clothing/under/rank/miner(src) new /obj/item/clothing/under/rank/miner(src)
/obj/item/wardrobe/janitor /obj/item/wardrobe/janitor
name = "Janitor wardrobe" name = "\improper Janitor Wardrobe"
descriptor = "clothing and basic equipment for a Janitor" descriptor = "clothing and basic equipment for a Janitor"
New() New()
@@ -544,7 +568,7 @@
new /obj/item/clothing/under/rank/janitor(src) new /obj/item/clothing/under/rank/janitor(src)
/obj/item/wardrobe/librarian /obj/item/wardrobe/librarian
name = "Librarian wardrobe" name = "\improper Librarian Wardrobe"
descriptor = "clothing and basic equipment for a Librarian" descriptor = "clothing and basic equipment for a Librarian"
New() New()
@@ -557,7 +581,7 @@
new /obj/item/clothing/under/suit_jacket/red(src) new /obj/item/clothing/under/suit_jacket/red(src)
/obj/item/wardrobe/lawyer /obj/item/wardrobe/lawyer
name = "Lawyer wardrobe" name = "\improper Lawyer Wardrobe"
descriptor = "clothing and basic equipment for a Lawyer" descriptor = "clothing and basic equipment for a Lawyer"
New() New()

View File

@@ -27,8 +27,6 @@
var/played = 0 var/played = 0
var/team = null var/team = null
var/warned = 0 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_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 var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security

View File

@@ -256,6 +256,8 @@ the mob is also allowed to move without any sort of restriction. For instance, i
var/grav_delay = 0 var/grav_delay = 0
var/being_strangled = 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) /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]" // world << "Contract_disease called by [src] with virus [virus]"
if(stat >=2) return if(stat >=2) return

View File

@@ -46,75 +46,6 @@ proc/sql_report_round_end()
if(!sqllogging) if(!sqllogging)
return 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) proc/sql_report_death(var/mob/living/carbon/human/H)
if(!sqllogging) if(!sqllogging)
return return

View File

@@ -200,6 +200,7 @@
user.update_clothing() user.update_clothing()
return return
/*
/obj/item/attackby(obj/item/W as obj, mob/user as mob) /obj/item/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/detective_scanner)) if(istype(W, /obj/item/device/detective_scanner))
return return
@@ -222,32 +223,7 @@
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(location) var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(location)
P.wrapped = src P.wrapped = src
src.loc = P src.loc = P
O.amount -= 1 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()
/obj/item/attack_self(mob/user as mob) /obj/item/attack_self(mob/user as mob)
..() ..()

View File

@@ -923,7 +923,7 @@
return return
var/mob/M = locate(href_list["traitor"]) var/mob/M = locate(href_list["traitor"])
if (!istype(M)) if (!istype(M))
player() player_panel_new()
return return
if(isalien(M)) if(isalien(M))
alert("Is an [M.mind ? M.mind.special_role : "Alien"]!", "[M.key]") alert("Is an [M.mind ? M.mind.special_role : "Alien"]!", "[M.key]")
@@ -1863,312 +1863,6 @@
dat += "</body></html>" dat += "</body></html>"
usr << browse(dat, "window=adminplayerinfo;size=480x480") usr << browse(dat, "window=adminplayerinfo;size=480x480")
/obj/admins/proc/player()
if (!usr.client.holder)
return
var/dat = "<html><head><title>Player Panel</title></head>"
//javascript, the part that does most of the work~
dat += {"
<head>
<script type='text/javascript'>
var locked_tabs = new Array();
function updateSearch(){
var filter_text = document.getElementById('filter');
var filter = filter_text.value.toLowerCase();
if(complete_list != null && complete_list != ""){
var mtbl = document.getElementById("maintable_data_archive");
mtbl.innerHTML = complete_list;
}
if(filter.value == ""){
return;
}else{
var maintable_data = document.getElementById('maintable_data');
var ltr = maintable_data.getElementsByTagName("tr");
for ( var i = 0; i < ltr.length; ++i )
{
try{
var tr = ltr\[i\];
if(tr.getAttribute("id").indexOf("data") != 0){
continue;
}
var ltd = tr.getElementsByTagName("td");
var td = ltd\[0\];
var lsearch = td.getElementsByTagName("b");
var search = lsearch\[0\];
//var inner_span = li.getElementsByTagName("span")\[1\] //Should only ever contain one element.
//document.write("<p>"+search.innerText+"<br>"+filter+"<br>"+search.innerText.indexOf(filter))
if ( search.innerText.toLowerCase().indexOf(filter) == -1 )
{
//document.write("a");
//ltr.removeChild(tr);
td.innerHTML = "";
i--;
}
}catch(err) { }
}
}
var count = 0;
var index = -1;
var debug = document.getElementById("debug");
locked_tabs = new Array();
}
function expand(id,job,name,real_name,image,key,ip,antagonist,karma,ref){
clearAll();
var span = document.getElementById(id);
body = "<table><tr><td>";
body += "</td><td align='center'>";
body += "<font size='2'><b>"+job+" "+name+"</b><br><b>Real name "+real_name+"</b><br><b>Played by "+key+" ("+ip+")</b></font>"
body += "</td><td align='center'>";
body += "<a href='?src=\ref[src];adminplayeropts="+ref+"'>PP</a> - "
body += "<a href='?src=\ref[src];adminplayervars="+ref+"'>VV</a> - "
body += "<a href='?src=\ref[usr];priv_msg=\ref"+ref+"'>PM</a> - "
body += "<a href='?src=\ref[src];adminplayersubtlemessage="+ref+"'>SM</a> - "
body += "<a href='?src=\ref[src];adminplayerobservejump="+ref+"'>JMP</a><br>"
if(antagonist == 1)
body += "<font size='2'><a href='?src=\ref[src];secretsadmin=check_antagonist'><b><font color='red'>Antagonist</font></b></a> with "+karma+" karma</font>";
else
body += "<font size='2'>"+karma+" karma</font>";
body += "</td></tr></table>";
span.innerHTML = body
}
function clearAll(){
var spans = document.getElementsByTagName('span');
for(var i = 0; i < spans.length; i++){
var span = spans\[i\];
var id = span.getAttribute("id");
if(!(id.indexOf("item")==0))
continue;
var pass = 1;
for(var j = 0; j < locked_tabs.length; j++){
if(locked_tabs\[j\]==id){
pass = 0;
break;
}
}
if(pass != 1)
continue;
span.innerHTML = "";
}
}
function addToLocked(id,link_id,notice_span_id){
var link = document.getElementById(link_id);
var decision = link.getAttribute("name");
if(decision == "1"){
link.setAttribute("name","2");
}else{
link.setAttribute("name","1");
removeFromLocked(id,link_id,notice_span_id);
return;
}
var pass = 1;
for(var j = 0; j < locked_tabs.length; j++){
if(locked_tabs\[j\]==id){
pass = 0;
break;
}
}
if(!pass)
return;
locked_tabs.push(id);
var notice_span = document.getElementById(notice_span_id);
notice_span.innerHTML = "<font color='red'>Locked</font> ";
//link.setAttribute("onClick","attempt('"+id+"','"+link_id+"','"+notice_span_id+"');");
//document.write("removeFromLocked('"+id+"','"+link_id+"','"+notice_span_id+"')");
//document.write("aa - "+link.getAttribute("onClick"));
}
function attempt(ab){
return ab;
}
function removeFromLocked(id,link_id,notice_span_id){
//document.write("a");
var index = 0;
var pass = 0;
for(var j = 0; j < locked_tabs.length; j++){
if(locked_tabs\[j\]==id){
pass = 1;
index = j;
break;
}
}
if(!pass)
return;
locked_tabs\[index\] = "";
var notice_span = document.getElementById(notice_span_id);
notice_span.innerHTML = "";
//var link = document.getElementById(link_id);
//link.setAttribute("onClick","addToLocked('"+id+"','"+link_id+"','"+notice_span_id+"')");
}
function selectTextField(){
var filter_text = document.getElementById('filter');
filter_text.focus();
filter_text.select();
}
</script>
</head>
"}
//body tag start + onload and onkeypress (onkeyup) javascript event calls
dat += "<body onload='selectTextField(); updateSearch();' onkeyup='updateSearch();'>"
//title + search bar
dat += {"
<table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable'>
<tr id='title_tr'>
<td align='center'>
<font size='5'><b>Player panel</b></font><br>
Hover over a line to see more information
<p>
</td>
</tr>
<tr id='search_tr'>
<td align='center'>
<b>Search:</b> <input type='text' id='filter' value='' style='width:300px;'>
</td>
</tr>
</table>
"}
//player table header
dat += {"
<span id='maintable_data_archive'>
<table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable_data'>"}
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.<br>"
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 += {"
<tr id='data[i]' name='[i]' onClick="addToLocked('item[i]','data[i]','notice_span[i]')">
<td align='center' bgcolor='[color]'>
<span id='notice_span[i]'></span>
<a id='link[i]'
onmouseover='expand("item[i]","[job]","[M.name]","[M.real_name]","--unused--","[M.key]","[M.lastKnownIP]",[is_antagonist],"[karma]","\ref[M]")'
>
<b id='search[i]'>[M.name] - [M.real_name] - [M.key] ([job])</b>
</a>
<br><span id='item[i]'></span>
</td>
</tr>
"}
i++
//player table ending
dat += {"
</table>
</span>
<script type='text/javascript'>
var maintable = document.getElementById("maintable_data_archive");
var complete_list = maintable.innerHTML;
</script>
</body></html>
"}
usr << browse(dat, "window=players;size=600x480")
/obj/admins/proc/Jobbans() /obj/admins/proc/Jobbans()
if ((src.rank in list( "Game Admin", "Game Master" ))) if ((src.rank in list( "Game Admin", "Game Master" )))
var/dat = "<B>Job Bans!</B><HR><table>" var/dat = "<B>Job Bans!</B><HR><table>"

View File

@@ -261,7 +261,8 @@
verbs += /client/proc/admin_play verbs += /client/proc/admin_play
verbs += /client/proc/admin_observe verbs += /client/proc/admin_observe
verbs += /client/proc/game_panel 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/unban_panel
verbs += /client/proc/jobbans verbs += /client/proc/jobbans
verbs += /client/proc/playernotes verbs += /client/proc/playernotes
@@ -387,7 +388,8 @@
verbs -= /client/proc/admin_play verbs -= /client/proc/admin_play
verbs -= /client/proc/admin_observe verbs -= /client/proc/admin_observe
verbs -= /client/proc/game_panel 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/unban_panel
verbs -= /client/proc/jobbans verbs -= /client/proc/jobbans
verbs -= /client/proc/playernotes verbs -= /client/proc/playernotes
@@ -477,11 +479,18 @@
src << "[M.key] is undefined - [M.client.holder.state]" 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 name = "Player Panel"
set category = "Admin" set category = "Admin"
if (holder) if(holder)
holder.player() holder.player_panel_new()
return return
/client/proc/jobbans() /client/proc/jobbans()
@@ -720,7 +729,7 @@
verbs += /client/proc/admin_play verbs += /client/proc/admin_play
verbs += /client/proc/admin_observe verbs += /client/proc/admin_observe
verbs += /client/proc/game_panel 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_subtle_message
verbs += /client/proc/cmd_admin_pm verbs += /client/proc/cmd_admin_pm
verbs += /client/proc/cmd_admin_gib_self verbs += /client/proc/cmd_admin_gib_self

View File

@@ -0,0 +1,161 @@
/obj/admins/proc/player_panel_new()//The new one
if (!usr.client.holder)
return
var/dat = "<html><head><title>Player Menu</title></head>"
dat += "<body><table border=1 cellspacing=5><B><tr><th>Name/Real Name</th><th>Type</th><th>Assigned Job</th><th>Info</th><th>Options</th><th>Traitor?</th></tr></B>"
//add <th>IP:</th> to this if wanting to add back in IP checking
//add <td>(IP: [M.lastKnownIP])</td> 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 += "<tr align='center' bgcolor='[color]'><td>[M.name] \[[real]\] <br>[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])</td>" // Adds current name
if(isobserver(M))
dat += "<td>Ghost</td>"
if(isalien(M))
dat += "<td>Alien</td>"
if(islarva(M))
dat += "<td>Alien larva</td>"
if(ishuman(M))
dat += "<td>[M.job]</td>"
if(ismetroid(M))
dat += "<td>Metroid</td>"
if(ismonkey(M))
dat += "<td>Monkey</td>"
if(isAI(M))
dat += "<td>AI</td>"
if(ispAI(M))
dat += "<td>pAI</td>"
if(isrobot(M))
dat += "<td>Cyborg</td>"
if(isanimal(M))
dat += "<td>Animal</td>"
if(iscorgi(M))
dat += "<td>Corgi</td>"
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 += "<td>[M.mind.assigned_role] (No ID)</td>"
else if(isnull(id.assignment)) // Preventing runtime errors blocking the player panel
usr << "<font color=red>ERROR:</font> Inform the coders that an [id.name] was checked for its assignment variable, and it was null."
dat += "<td><font color=red>ERROR</font></td>"
else
if(M.mind.assigned_role == id.assignment) // Polymorph
dat += "<td>[M.mind.assigned_role]</td>"
else
dat += "<td>[M.mind.assigned_role] ([id.assignment])"
else
dat += "<td>[M.mind.assigned_role] (No ID)</td>"
else
dat += "<td>No Assigned Role</td>"
var/muting = "Mute unavailable - no client"
if(M.client)
muting = {"<A href='?src=\ref[src];mute2=\ref[M]'>Mute: [(M.client.muted ? "Muted" : "Voiced")]</A> |
<A href='?src=\ref[src];mute_complete=\ref[M]'>Complete mute: [(M.client.muted ? "Completely Muted" : "Voiced")]</A>
"}
dat += {"<td><A HREF='?src=\ref[src];player_info=[M.ckey]'>[player_has_info(M.ckey) ? "Info" : "N/A"] </A></td>
<td><A href='?src=\ref[src];boot2=\ref[M]'>Boot</A> | <A href='?src=\ref[src];newban=\ref[M]'>Ban</A> | <A href='?src=\ref[src];jobban2=\ref[M]'>Jobban</A>
<br><font size="2.5">[muting]</font><br>
<font size="2"><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A> |
<A HREF='?src=\ref[src];adminplayervars=\ref[M]'>VV</A> |
<A HREF='?src=\ref[src];adminplayersubtlemessage=\ref[M]'>SM</A> |
<A HREF='?src=\ref[src];adminplayerobservejump=\ref[M]'>JMP</A> |
<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A></font></td>
"}
switch(is_special_character(M))
if(0)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
if(1)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
if(2)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
dat += "</table></body></html>"
usr << browse(dat, "window=players;size=905x480")
//The old one
/obj/admins/proc/player_panel_old()
if (!usr.client.holder)
return
var/dat = "<html><head><title>Player Menu</title></head>"
dat += "<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th><th>Traitor?</th></tr></B>"
//add <th>IP:</th> to this if wanting to add back in IP checking
//add <td>(IP: [M.lastKnownIP])</td> 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 += "<tr><td>[M.name]</td>"
if(isAI(M))
dat += "<td>AI</td>"
else if(isrobot(M))
dat += "<td>Cyborg</td>"
else if(ishuman(M))
dat += "<td>[M.real_name]</td>"
else if(istype(M, /mob/living/silicon/pai))
dat += "<td>pAI</td>"
else if(istype(M, /mob/new_player))
dat += "<td>New Player</td>"
else if(isobserver(M))
dat += "<td>Ghost</td>"
else if(ismonkey(M))
dat += "<td>Monkey</td>"
else if(isalien(M))
dat += "<td>Alien</td>"
else
dat += "<td>Unknown</td>"
if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.mind && H.mind.assigned_role)
dat += "<td>[H.mind.assigned_role]</td>"
else
dat += "<td>NA</td>"
dat += {"<td>[(M.client ? "[M.client]" : "No client")]</td>
<td align=center><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>X</A></td>
<td align=center><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>
"}
switch(is_special_character(M))
if(0)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
if(1)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
if(2)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
dat += "</table></body></html>"
usr << browse(dat, "window=players;size=640x480")

View File

@@ -29,7 +29,6 @@
attackby(var/obj/item/weapon/W, var/mob/user) attackby(var/obj/item/weapon/W, var/mob/user)
wrap(W,user)
if(path || !active) if(path || !active)
switch(active) switch(active)
if(0) if(0)
@@ -398,7 +397,6 @@
usr << "\blue [grenades] / [max_grenades] Grenades." usr << "\blue [grenades] / [max_grenades] Grenades."
attackby(obj/item/I as obj, mob/user as mob) 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((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) if(grenades.len < max_grenades)
user.drop_item() user.drop_item()
@@ -498,7 +496,6 @@
usr << "\blue [syringes] / [max_syringes] Syringes." usr << "\blue [syringes] / [max_syringes] Syringes."
attackby(obj/item/I as obj, mob/user as mob) attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
if(istype(I, /obj/item/weapon/reagent_containers/syringe)) if(istype(I, /obj/item/weapon/reagent_containers/syringe))
if(syringes.len < max_syringes) if(syringes.len < max_syringes)
user.drop_item() user.drop_item()
@@ -577,7 +574,6 @@
usr << "\blue [syringes] / [max_syringes] Syringes." usr << "\blue [syringes] / [max_syringes] Syringes."
attackby(obj/item/I as obj, mob/user as mob) attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
if(istype(I, /obj/item/weapon/reagent_containers/syringe)) if(istype(I, /obj/item/weapon/reagent_containers/syringe))
if(syringes.len < max_syringes) if(syringes.len < max_syringes)
user.drop_item() user.drop_item()
@@ -731,16 +727,10 @@
reagents = R reagents = R
R.my_atom = src 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) attack_self(mob/user as mob)
return return
attack(mob/M as mob, mob/user as mob, def_zone) attack(mob/M as mob, mob/user as mob, def_zone)
return return
attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
return
afterattack(obj/target, mob/user , flag) afterattack(obj/target, mob/user , flag)
return return
@@ -1138,10 +1128,6 @@
attack_paw() attack_paw()
return attack_hand() return attack_hand()
attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
return
afterattack(obj/target, mob/user , flag) afterattack(obj/target, mob/user , flag)
if(!target.reagents) return if(!target.reagents) return
@@ -1346,7 +1332,6 @@
return return
attackby(obj/item/weapon/W as obj, mob/user as mob) attackby(obj/item/weapon/W as obj, mob/user as mob)
wrap(W,user)
return return
attack_self(mob/user as mob) attack_self(mob/user as mob)
return return
@@ -1475,7 +1460,6 @@
return 0 return 0
attackby(obj/item/I as obj, mob/user as mob) attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
return return
afterattack(obj/target, mob/user , flag) afterattack(obj/target, mob/user , flag)
return return
@@ -1498,8 +1482,6 @@
var/slices_num var/slices_num
attackby(obj/item/weapon/W as obj, mob/user as mob) attackby(obj/item/weapon/W as obj, mob/user as mob)
wrap(W,user)
if((slices_num <= 0 || !slices_num) || !slice_path) if((slices_num <= 0 || !slices_num) || !slice_path)
return 1 return 1
var/inaccurate = 0 var/inaccurate = 0
@@ -1704,9 +1686,6 @@
if(!icon_state) if(!icon_state)
icon_state = "pill[rand(1,20)]" 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) attack_self(mob/user as mob)
return return
attack(mob/M as mob, mob/user as mob, def_zone) attack(mob/M as mob, mob/user as mob, def_zone)
@@ -1747,10 +1726,6 @@
return 0 return 0
attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
return
afterattack(obj/target, mob/user , flag) afterattack(obj/target, mob/user , flag)
if(target.is_open_container() == 1 && target.reagents) if(target.is_open_container() == 1 && target.reagents)
@@ -2367,7 +2342,6 @@
volume = 50 volume = 50
attackby(obj/item/weapon/W as obj, mob/user as mob) attackby(obj/item/weapon/W as obj, mob/user as mob)
wrap(W,user)
return return
attack_self(mob/user as mob) attack_self(mob/user as mob)
return return
@@ -2409,7 +2383,6 @@
return 0 return 0
attackby(obj/item/I as obj, mob/user as mob) attackby(obj/item/I as obj, mob/user as mob)
wrap(I,user)
return return
afterattack(obj/target, mob/user , flag) afterattack(obj/target, mob/user , flag)

View File

@@ -12,8 +12,9 @@
else//Safety, in case a turf cannot be found. else//Safety, in case a turf cannot be found.
loc = pick(latejoin) loc = pick(latejoin)
if(!istype(body,/mob)) return//This needs to be recoded sometime so it has loc as its first arg if(!istype(body,/mob)) return//This needs to be recoded sometime so it has loc as its first arg
real_name = body.real_name real_name = body.name
name = body.real_name original_name = body.original_name
name = body.original_name
if(!safety) if(!safety)
corpse = body corpse = body
verbs += /mob/dead/observer/proc/reenter_corpse 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 L+=T
usr.loc = pick(L) 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. <One use only>"
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() /mob/dead/observer/verb/toggle_alien_candidate()
set name = "Toggle Be Alien Candidate" set name = "Toggle Be Alien Candidate"
set category = "Ghost" set category = "Ghost"

View File

@@ -208,6 +208,7 @@
preferences.randomize_name() preferences.randomize_name()
observer.name = preferences.real_name observer.name = preferences.real_name
observer.real_name = observer.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) del(src)
return 1 return 1

View File

@@ -827,6 +827,7 @@ datum/preferences
if(be_random_name) if(be_random_name)
randomize_name() randomize_name()
character.real_name = real_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 character.flavor_text = flavor_text

View File

@@ -23,14 +23,10 @@
var/name = src.real_name var/name = src.real_name
var/alt_name = "" var/alt_name = ""
if (istype(src, /mob/living/carbon/human) && src.name != src.real_name) if(original_name) //Original name is only used in ghost chat! It is not to be edited by anything!
var/mob/living/carbon/human/H = src name = src.original_name
alt_name = " (as [H.get_authentification_name()])" if( original_name != real_name )
else if (istype(src, /mob/dead/observer)) alt_name = " (died as [src.real_name])"
name = "Ghost"
alt_name = " ([src.real_name])"
else if (!istype(src, /mob/living/carbon/human))
name = src.name
message = src.say_quote(message) message = src.say_quote(message)

View File

@@ -58,6 +58,7 @@
M.apply_damage(75, BRUTE, "head", used_weapon = "Suicide attempt with a gun") M.apply_damage(75, BRUTE, "head", used_weapon = "Suicide attempt with a gun")
M.apply_damage(85, BRUTE, "chest") M.apply_damage(85, BRUTE, "chest")
M.visible_message("\red [user] pulls the trigger. Ow.") M.visible_message("\red [user] pulls the trigger. Ow.")
del(src.in_chamber)
return return
else else
return ..() return ..()

View File

@@ -38,7 +38,6 @@
attackby(var/obj/item/A as obj, mob/user as mob) attackby(var/obj/item/A as obj, mob/user as mob)
wrap(A, user)
var/num_loaded = 0 var/num_loaded = 0
if(istype(A, /obj/item/ammo_magazine)) if(istype(A, /obj/item/ammo_magazine))
if((load_method == 2) && loaded.len) return if((load_method == 2) && loaded.len) return

View File

@@ -79,11 +79,11 @@
return return
examine() examine()
set src in oview(4) if(src in oview(4))
if(sortTag) if(sortTag)
usr << "\blue It is labeled \"[sortTag]\"" usr << "\blue It is labeled \"[sortTag]\""
if(examtext) if(examtext)
usr << examtext usr << examtext
..() ..()
return return
@@ -155,11 +155,11 @@
return return
examine() examine()
set src in oview(4) if(src in oview(4))
if(sortTag) if(sortTag)
usr << "\blue It is labeled \"[sortTag]\"" usr << "\blue It is labeled \"[sortTag]\""
if(examtext) if(examtext)
usr << examtext usr << examtext
..() ..()
return return
@@ -171,14 +171,19 @@
var/amount = 25.0 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()]\] <font color='blue'>Has used [src.name] on \ref[target]</font>") user.attack_log += text("\[[time_stamp()]\] <font color='blue'>Has used [src.name] on \ref[target]</font>")
/* if (istype(target, /obj/item)) if (istype(target, /obj/item))
var/obj/item/O = target var/obj/item/O = target
if (src.amount > 1) if (src.amount > 1)
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! 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 P.wrapped = O
O.loc = P O.loc = P
src.amount -= 1 src.amount -= 1
@@ -201,9 +206,8 @@
O.loc = P O.loc = P
src.amount -= 3 src.amount -= 3
else else
user << "\blue You need more paper." */ user << "\blue You need more paper."
else
if(!(istype (target, /obj/structure/closet) || istype(target, /obj/structure/closet/crate) || istype(target, /obj/item)))
user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!" user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!"
if (src.amount <= 0) if (src.amount <= 0)
new /obj/item/weapon/c_tube( src.loc ) new /obj/item/weapon/c_tube( src.loc )
@@ -213,12 +217,12 @@
return return
examine() examine()
set src in usr if(src in usr)
usr << "\blue There are [amount] units of package wrap left!" usr << "\blue There are [amount] units of package wrap left!"
..() ..()
return 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)) if(istype(I, /obj/item/weapon/packageWrap))
var/obj/item/weapon/packageWrap/C = I var/obj/item/weapon/packageWrap/C = I
if(anchored) if(anchored)
@@ -231,7 +235,7 @@
if (C.amount <= 0) if (C.amount <= 0)
new /obj/item/weapon/c_tube( C.loc ) new /obj/item/weapon/c_tube( C.loc )
del(C) del(C)
return return*/
/obj/item/device/destTagger /obj/item/device/destTagger
name = "destination tagger" name = "destination tagger"