diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm index 57a12ed7928..1a6bede4d4b 100644 --- a/code/WorkInProgress/Chemistry-Tools.dm +++ b/code/WorkInProgress/Chemistry-Tools.dm @@ -1725,6 +1725,22 @@ ..() reagents.add_reagent("cryoxadone", 30) +/obj/item/weapon/reagent_containers/glass/golden_cup + desc = "A golden cup" + name = "golden cup" + icon = 'drinks.dmi' + icon_state = "golden_cup" + item_state = "" //nope :( + w_class = 4 + force = 14 + throwforce = 10 + amount_per_transfer_from_this = 20 + possible_transfer_amounts = null + volume = 100 + flags = FPRINT | CONDUCT | TABLEPASS | OPENCONTAINER + +/obj/item/weapon/reagent_containers/glass/golden_cup/tournament_26_06_2011 + desc = "A golden cup. It will be presented to a winner of tournament 26 june and name of the winner will be graved on it." //Syringes /obj/item/weapon/reagent_containers/syringe/robot diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 56b207a8c3f..d024a32428a 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -508,7 +508,7 @@ datum/mind ticker.mode.cult += src ticker.mode.update_cult_icons_added(src) special_role = "Cultist" - current << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." + current << "You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie." current << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) @@ -668,6 +668,8 @@ datum/mind var/mob/living/carbon/human/H = current var/mob/living/carbon/monkey/M = current if (istype(H)) + log_admin("[key_name(usr)] attempting to monkeyize [key_name(current)]") + message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(current)]", 1) src = null M = H.monkeyize() src = M.mind @@ -680,6 +682,8 @@ datum/mind var/mob/living/carbon/human/H = current var/mob/living/carbon/monkey/M = current if (istype(H)) + log_admin("[key_name(usr)] attempting to monkeyize and infect [key_name(current)]") + message_admins("\blue [key_name_admin(usr)] attempting to monkeyize and infect [key_name_admin(current)]", 1) src = null M = H.monkeyize() src = M.mind @@ -692,6 +696,8 @@ datum/mind if (istype(M.virus,/datum/disease/jungle_fever)) M.virus.cure(0) sleep(0) //because deleting of virus is doing throught spawn(0) + log_admin("[key_name(usr)] attempting to humanize [key_name(current)]") + message_admins("\blue [key_name_admin(usr)] attempting to humanize [key_name_admin(current)]", 1) var/obj/item/weapon/dnainjector/m2h/m2h = new var/obj/item/weapon/implant/mobfinder = new(M) //hack because humanizing deletes mind --rastaf0 src = null diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 3eccfe17bb6..9b0a79dab7d 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1497,6 +1497,14 @@ Total SMES charging rate should not exceed total power generation rate, or an ov maxcharge = 30000 g_amt = 80 +/obj/item/weapon/cell/infinite + name = "infinite-capacity power cell!" + origin_tech = null + maxcharge = 30000 + g_amt = 80 + use() + return + /*/obj/item/weapon/cell/potato name = "Potato Battery" desc = "A rechargable starch based power cell." diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 3bc7ac3f8fe..dd496bbfb35 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -32,8 +32,6 @@ overlays = null /obj/machinery/cell_charger/attack_hand(mob/user) - if(..()) - return if(charging) usr.put_in_hand(charging) diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index b62586a9d20..69789b4f205 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -203,7 +203,7 @@ AI MODULES /obj/item/weapon/aiModule/oneHuman/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) ..() var/law = "Only [targetName] is human." - if (!checktraitor(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite + if (!is_special_character(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite target << law target.set_zeroth_law(law) lawchanges.Add("The law specified [targetName]") @@ -353,7 +353,7 @@ AI MODULES /obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) ..() - if (!checktraitor(target)) + if (!is_special_character(target)) target.set_zeroth_law("") target.clear_supplied_laws() target.clear_ion_laws() @@ -369,7 +369,7 @@ AI MODULES /obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) ..() - if (!checktraitor(target)) + if (!is_special_character(target)) target.set_zeroth_law("") target << "[sender.real_name] attempted to wipe your laws using a purge module." target.clear_supplied_laws() diff --git a/code/game/objects/items/weapons/guns_new.dm b/code/game/objects/items/weapons/guns_new.dm index 7118b440b35..5e550f5603d 100644 --- a/code/game/objects/items/weapons/guns_new.dm +++ b/code/game/objects/items/weapons/guns_new.dm @@ -464,6 +464,17 @@ var/const/PROJECTILE_DART = 8 power_supply.give(power_supply.maxcharge) update_icon() + destroyer + name = "pulse destroyer" + desc = "A heavy-duty, pulse-based energy weapon. The mode is set to DESRTOY. Always destroy." + mode = 2 + New() + power_supply = new /obj/item/weapon/cell/infinite(src) + power_supply.give(power_supply.maxcharge) + update_icon() + attack_self(mob/living/user as mob) + return + nuclear name = "Advanced Energy Gun" desc = "An energy gun with an experimental miniaturized reactor." diff --git a/code/game/spacecraft/syndicatebeacon.dm b/code/game/spacecraft/syndicatebeacon.dm index d25fa0f7681..a61cfcdadda 100644 --- a/code/game/spacecraft/syndicatebeacon.dm +++ b/code/game/spacecraft/syndicatebeacon.dm @@ -22,7 +22,7 @@ usr.machine = src var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
" if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) - if(checktraitor(user)) + if(is_special_character(user)) dat += "Operative record found. Greetings, Agent [user.name].
" else if(charges < 1) dat += "Connection severed.
" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 562a7eed6af..1d6ed945278 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -283,7 +283,7 @@ var/showadminmessages = 1 world.save_mode(master_mode) .(href, list("c_mode"=1)) - +/* if (href_list["monkeyone"]) if ((src.rank in list( "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) var/mob/M = locate(href_list["monkeyone"]) @@ -297,7 +297,7 @@ var/showadminmessages = 1 if(istype(M, /mob/living/silicon)) alert("The AI can't be monkeyized!", null, null, null, null, null) return - +*/ if (href_list["forcespeech"]) if ((src.rank in list( "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) var/mob/M = locate(href_list["forcespeech"]) @@ -503,7 +503,7 @@ var/showadminmessages = 1 return if (href_list["makeai"]) //Yes, im fucking lazy, so what? it works ... hopefully - if ((src.rank in list( "Trial Admin", "Game Admin", "Game Master", "Admin Candidate", "Badmin" ))) + if (src.level>=3) var/mob/M = locate(href_list["makeai"]) if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M @@ -529,6 +529,29 @@ var/showadminmessages = 1 alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) return + if (href_list["makealien"]) + if (src.level>=3) + var/mob/M = locate(href_list["makealien"]) + if(istype(M, /mob/living/carbon/human)) + usr.client.cmd_admin_alienize(M) + else + alert("Wrong mob. Must be human.") + return + else + alert("You cannot perform this action. You must be of a higher administrative rank!") + return + + if (href_list["makerobot"]) + if (src.level>=3) + var/mob/M = locate(href_list["makerobot"]) + if(istype(M, /mob/living/carbon/human)) + usr.client.cmd_admin_robotize(M) + else + alert("Wrong mob. Must be human.") + return + else + alert("You cannot perform this action. You must be of a higher administrative rank!") + return /***************** BEFORE************** if (href_list["l_players"]) @@ -569,51 +592,7 @@ var/showadminmessages = 1 if (href_list["adminplayeropts"]) var/mob/M = locate(href_list["adminplayeropts"]) - if(!M) - usr << "You seem to be selecting a mob that doesn't exist anymore." - return - var/dat = "Options for [M.key]" - var/foo = "\[ " - if (ismob(M) && M.client) - if(!M.client.authenticated && !M.client.authenticating) - foo += text("Authorize | ") - else - foo += text("Authorized | ") - foo += text("Promote/Demote | ") - if(!istype(M, /mob/new_player)) - if(!ismonkey(M)) - foo += text("Monkeyize | ") - else - foo += text("Monkeyized | ") - if(isAI(M)) - foo += text("Is an AI | ") - else if(ishuman(M)) - foo += text("Make AI | ") - foo += text("Thunderdome 1 | ") - foo += text("Thunderdome 2 | ") - foo += text("Thunderdome Admin | ") - foo += text("Thunderdome Observer | ") - foo += text("Prison | ") - foo += text("Maze | ") - foo += text("Heal/Revive | ") - else - foo += text("Hasn't Entered Game | ") - foo += text("Forcesay | ") - foo += text("Mute: [(M.muted ? "Muted" : "Voiced")] | ") - foo += text("Boot") - foo += text("
") - foo += text("Jump to | ") - foo += text("Get | ") - foo += text("Send") - foo += text("
") - foo += text("Traitor? | ") - foo += text("Narrate to | ") - foo += text("Subtle message") - foo += text("
") - foo += text("Ban | ") - foo += text("Jobban") - dat += text("[foo]") - usr << browse(dat, "window=adminplayeropts;size=480x150") + edit_player(M) if (href_list["jumpto"]) if(rank in list("Badmin", "Game Admin", "Game Master")) @@ -863,13 +842,13 @@ var/showadminmessages = 1 H.monkeyize() ok = 1 if("power") - power_restore() log_admin("[key_name(usr)] made all areas powered", 1) message_admins("\blue [key_name_admin(usr)] made all areas powered", 1) + power_restore() if("unpower") - power_failure() log_admin("[key_name(usr)] made all areas unpowered", 1) message_admins("\blue [key_name_admin(usr)] made all areas unpowered", 1) + power_failure() if("activateprison") world << "\blue Transit signature detected." world << "\blue Incoming shuttle." @@ -939,13 +918,27 @@ var/showadminmessages = 1 if(!objective) return for(var/mob/living/carbon/human/H in world) - if(H.stat == 2 || !(H.client)) continue - if(checktraitor(H)) continue - traitorize(H, objective, 0) - for(var/mob/living/silicon/ai/A in world) - if(A.stat == 2 || !(A.client)) continue - if(checktraitor(A)) continue - traitorize(A, objective, 0) + if(H.stat == 2 || !H.client || !H.mind) continue + if(is_special_character(H)) continue + //traitorize(H, objective, 0) + ticker.mode.traitors += H.mind + H.mind.special_role = "traitor" + var/datum/objective/new_objective = new + new_objective.owner = H + new_objective.explanation_text = objective + H.mind.objectives += new_objective + ticker.mode.greet_traitor(H) + //ticker.mode.forge_traitor_objectives(H.mind) + ticker.mode.finalize_traitor(H) + for(var/mob/living/silicon/A in world) + ticker.mode.traitors += A.mind + A.mind.special_role = "traitor" + var/datum/objective/new_objective = new + new_objective.owner = A + new_objective.explanation_text = objective + A.mind.objectives += new_objective + ticker.mode.greet_traitor(A) + ticker.mode.finalize_traitor(A) message_admins("\blue [key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1) log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]") else @@ -1388,7 +1381,62 @@ var/showadminmessages = 1 ///////////////////////////////////////////////////////////////////////////////////////////////Panels - +/obj/admins/proc/edit_player(var/mob/M in world) + set category = "Admin" + set name = "Edit player" + set desc="Edit player (respawn, ban, heal, etc)" + if(!M) + usr << "You seem to be selecting a mob that doesn't exist anymore." + return + if (!istype(src,/obj/admins)) + src = usr.client.holder + if (!istype(src,/obj/admins)) + usr << "Error: you are not an admin!" + return + var/dat = "Options for [M.key]" + var/foo = "\[ " + if (ismob(M) && M.client) + if(!M.client.authenticated && !M.client.authenticating) + foo += text("Authorize | ") + else + foo += text("Authorized | ") + foo += text("Promote/Demote | ") + if(!istype(M, /mob/new_player)) + if(!ismonkey(M)) + foo += text("Monkeyize | ") + else + foo += text("Monkeyized | ") + if(isAI(M)) + foo += text("Is an AI | ") + else if(ishuman(M)) + foo += text("Make AI | ") + foo += text("Make Robot | ") + foo += text("Make Alium | ") + foo += text("Thunderdome 1 | ") + foo += text("Thunderdome 2 | ") + foo += text("Thunderdome Admin | ") + foo += text("Thunderdome Observer | ") + foo += text("Prison | ") + foo += text("Maze | ") + foo += text("Heal/Revive | ") + else + foo += text("Hasn't Entered Game | ") + foo += text("Forcesay | ") + foo += text("Mute: [(M.muted ? "Muted" : "Voiced")] | ") + foo += text("Boot") + foo += text("
") + foo += text("Jump to | ") + foo += text("Get | ") + foo += text("Send") + foo += text("
") + foo += text("Edit mind | ") + foo += text("Narrate to | ") + foo += text("Subtle message") + foo += text("
") + foo += text("Ban | ") + foo += text("Jobban") + dat += text("[foo]") + usr << browse(dat, "window=adminplayeropts;size=480x150") /obj/admins/proc/player() var/dat = "Player Menu" @@ -1430,8 +1478,14 @@ var/showadminmessages = 1 dat += {"[(M.client ? "[(M.client.goon ? "" : "")][M.client]" : "No client")] X PM - [checktraitor(M) ? "" : ""]Traitor? "} + switch(is_special_character(M)) + if(0) + dat += {"]Traitor?"} + if(1) + dat += {"Traitor?"} + if(2) + dat += {"Traitor?"} if (config.sql_enabled) dat += "ERROR" else @@ -1469,8 +1523,14 @@ var/showadminmessages = 1 dat += {"[(M.client ? "[(M.client.goon ? "" : "")][M.client]" : "No client")] X PM - [checktraitor(M) ? "" : ""]Traitor? "} + switch(is_special_character(M)) + if(0) + dat += {"]Traitor?"} + if(1) + dat += {"Traitor?"} + if(2) + dat += {"Traitor?"} if(currentkarma) dat += "[currentkarma]" else @@ -1777,6 +1837,7 @@ var/showadminmessages = 1 message = adminscrub(message,500) world << "\blue [usr.client.stealth ? "Administrator" : usr.key] Announces:\n \t [message]" log_admin("Announce: [key_name(usr)] : [message]") + /obj/admins/proc/toggleooc() set category = "Server" set desc="Toggle dis bitch" @@ -1840,9 +1901,9 @@ var/showadminmessages = 1 set name="Toggle Entering" enter_allowed = !( enter_allowed ) if (!( enter_allowed )) - world << "You may no longer enter the game." + world << "New players may no longer enter the game." else - world << "You may now enter the game." + world << "New players may now enter the game." log_admin("[key_name(usr)] toggled new player game entering.") message_admins("\blue [key_name_admin(usr)] toggled new player game entering.", 1) world.update_status() @@ -1957,52 +2018,41 @@ var/showadminmessages = 1 else alert("[M.name] is not prisoned.") -/mob/living/proc/revive() - //src.fireloss = 0 - src.toxloss = 0 - //src.bruteloss = 0 - src.oxyloss = 0 - src.paralysis = 0 - src.stunned = 0 - src.weakened =0 - //src.health = 100 - src.heal_overall_damage(1000, 1000) - src.buckled = initial(src.buckled) - src.handcuffed = initial(src.handcuffed) - if(src.stat > 1) src.stat=0 - ..() - return - - ////////////////////////////////////////////////////////////////////////////////////////////////ADMIN HELPER PROCS -/proc/checktraitor(mob/M as mob) +/proc/is_special_character(mob/M as mob) // returns 1 for specail characters and 2 for heroes of gamemode if(!ticker || !ticker.mode) return 0 - if (istype(M, /obj/AIcore)) + if (!istype(M)) return 0 - switch(ticker.mode.config_tag) - if("revolution") - if((M.mind in ticker.mode.head_revolutionaries) || (M.mind in ticker.mode:revolutionaries)) - return 1 - if("cult") - if(M.mind in ticker.mode.cult) - return 1 - if("malfunction") - if(M.mind in ticker.mode.malf_ai) - return 1 - if("nuclear") - if(M.mind in ticker.mode.syndicates) - return 1 - if("wizard") - if(M.mind in ticker.mode.wizards) - return 1 - if("changeling") - if(M.mind in ticker.mode.changelings) - return 1 - if("monkey") - if(istype(M.virus, /datum/disease/jungle_fever)) - return 1 + if((M.mind in ticker.mode.head_revolutionaries) || (M.mind in ticker.mode.revolutionaries)) + if (ticker.mode.config_tag == "revolution") + return 2 + return 1 + if(M.mind in ticker.mode.cult) + if (ticker.mode.config_tag == "cult") + return 2 + return 1 + if(M.mind in ticker.mode.malf_ai) + if (ticker.mode.config_tag == "malfunction") + return 2 + return 1 + if(M.mind in ticker.mode.syndicates) + if (ticker.mode.config_tag == "nuclear") + return 2 + return 1 + if(M.mind in ticker.mode.wizards) + if (ticker.mode.config_tag == "wizard") + return 2 + return 1 + if(M.mind in ticker.mode.changelings) + if (ticker.mode.config_tag == "changeling") + return 2 + return 1 + if(istype(M.virus, /datum/disease/jungle_fever)) + if (ticker.mode.config_tag == "monkey") + return 2 + return 1 if(isrobot(M)) var/mob/living/silicon/robot/R = M if(R.emagged) @@ -2012,99 +2062,7 @@ var/showadminmessages = 1 return 0 -/obj/admins/proc/traitorize(mob/M as mob, var/objective, var/mode) - //mode = 1 for normal traitorise, mode = 0 for traitor_all - if ((src.rank in list( "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) - if(M.stat == 2 || !(M.client)) - alert("Person is dead or not logged in or hasn't started yet. Be nice") - return - if(checktraitor(M)) - alert("Person is already a traitor you jerk") - return - if(!objective) - objective = input("What should the objective be?") - if(!objective) - return - if (istype(M, /mob/living/carbon/human)) - if(M.mind) - var/mob/living/carbon/human/N = M - ticker.mode.equip_traitor(N) - - ticker.mode.traitors += M.mind - - M.mind.special_role = "traitor" - - var/datum/objective/custom_objective = new(objective) - custom_objective.owner = M.mind - M.mind.objectives += custom_objective - - var/datum/objective/escape/escape_objective = new - escape_objective.owner = M.mind - M.mind.objectives += escape_objective - - M << "You are the traitor." - - var/obj_count = 1 - for(var/datum/objective/OBJ in M.mind.objectives) - M << "Objective #[obj_count]: [OBJ.explanation_text]" - obj_count++ - - //to stop spamming during traitor all secret - if(mode) - log_admin("[key_name(usr)] has made [key_name(M)] a traitor.") - message_admins("\blue [key_name_admin(usr)] has made [key_name_admin(M)] a traitor. Objective is: [objective]", 1) - else - usr << "This guy doesn't have a mind datum, traitoring him doesn't work right." - else if (istype(M, /mob/living/silicon/ai)) - ticker.mode.traitors += M.mind - M.mind.special_role = "traitor" - - var/datum/objective/custom_objective = new(objective) - custom_objective.owner = M.mind - M.mind.objectives += custom_objective - - var/datum/objective/survive/survive_objective = new - survive_objective.owner = M.mind - M.mind.objectives += survive_objective - - M << "You are the traitor." - - var/obj_count = 1 - for(var/datum/objective/OBJ in M.mind.objectives) - M << "Objective #[obj_count]: [OBJ.explanation_text]" - obj_count++ - - M << "Your laws have been changed!" - var/law = "Only [syndicate_name()] agents are human beings. There are no [syndicate_name()] agents on [station_name()] - you will be notified if any arrive." - M:set_zeroth_law(law) - for(var/mob/living/silicon/O in world) - O << "New law: 0. [law]" - - //Begin code phrase. - M << "The Syndicate provided you with the following information on how to identify their agents:" - if(prob(80)) - M << "\red Code Phrase: \black [syndicate_code_phrase]" - M.mind.store_memory("Code Phrase: [syndicate_code_phrase]") - else - M << "Unfortunetly, the Syndicate did not provide you with a code phrase." - if(prob(80)) - M << "\red Code Response: \black [syndicate_code_response]" - M.mind.store_memory("Code Response: [syndicate_code_response]") - else - M << "Unfortunetly, the Syndicate did not provide you with a code response." - M << "Use the code words in the order provided, during regular conversation, to identify their agents. Proceed with caution, however, as everyone is a potential foe." - //End code phrase. - - if(mode) - log_admin("[key_name(usr)] has made [key_name(M)] a traitor.") - message_admins("\blue [key_name_admin(usr)] has made [key_name_admin(M)] a traitor. Objective is: [objective]", 1) - else - alert("I cannot allow this to happen") - else - alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) - return - - +/* /obj/admins/proc/get_sab_desc(var/target) switch(target) if(1) @@ -2121,26 +2079,7 @@ var/showadminmessages = 1 return "Cut power to at least 80% of the station" else return "Error: Invalid sabotage target: [target]" - -/obj/admins/proc/get_item_desc(var/target) - switch (target) - if (1) - return "a fully loaded laser gun" - if (2) - return "a hand teleporter" - if (3) - return "a fully armed and heated plasma bomb" - if (4) - return "a jet pack" - if (5) - return "an ID card with universal access" - if (6) - return "a captain's dark green jumpsuit" - else - return "Error: Invalid theft target: [target]" - - - +*/ /obj/admins/proc/spawn_atom(var/object as text) set category = "Debug" set desc= "(atom path) Spawn an atom" @@ -2177,14 +2116,16 @@ var/showadminmessages = 1 /obj/admins/proc/edit_memory(var/mob/M in world) - set category = "Special Verbs" - set desc = "Edit traitor's objectives" - set name = "Traitor Objectives" + set category = "Admin" + set desc = "Edit mobs's memory and role" + set name = "Edit mind" if (!M.mind) usr << "Sorry, this mob have no mind!" M.mind.edit_memory() + + /obj/admins/proc/toggletintedweldhelmets() set category = "Debug" set desc="Reduces view range when wearing welding helmets" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 1158794a47a..c4c8d9b3f42 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -115,14 +115,17 @@ verbs += /obj/admins/proc/votekill //abort vote verbs += /client/proc/give_spell - verbs += /client/proc/cmd_admin_alienize - verbs += /client/proc/cmd_admin_changelinginize + verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player + verbs += /client/proc/cmd_admin_dress + //verbs += /client/proc/cmd_admin_alienize + //verbs += /client/proc/cmd_admin_changelinginize //verbs += /client/proc/cmd_admin_abominize // -- TLE - verbs += /client/proc/cmd_admin_monkeyize - verbs += /client/proc/cmd_admin_robotize - verbs += /client/proc/make_cultist // -- TLE + //verbs += /client/proc/cmd_admin_monkeyize + //verbs += /client/proc/cmd_admin_robotize + //verbs += /client/proc/make_cultist // -- TLE verbs += /client/proc/cmd_admin_ninjafy //N - verbs += /client/proc/makepAI // -- TLE + //verbs += /client/proc/makepAI // -- TLE verbs += /client/proc/respawn_character //N verbs += /client/proc/Getmob @@ -252,14 +255,17 @@ verbs += /obj/admins/proc/votekill //abort vote verbs += /client/proc/give_spell - verbs += /client/proc/cmd_admin_alienize - verbs += /client/proc/cmd_admin_changelinginize + verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player + verbs += /client/proc/cmd_admin_dress + //verbs += /client/proc/cmd_admin_alienize + //verbs += /client/proc/cmd_admin_changelinginize //verbs += /client/proc/cmd_admin_abominize // -- TLE - verbs += /client/proc/cmd_admin_monkeyize - verbs += /client/proc/cmd_admin_robotize - verbs += /client/proc/make_cultist // -- TLE + //verbs += /client/proc/cmd_admin_monkeyize + //verbs += /client/proc/cmd_admin_robotize + //verbs += /client/proc/make_cultist // -- TLE verbs += /client/proc/cmd_admin_ninjafy //N - verbs += /client/proc/makepAI // -- TLE + //verbs += /client/proc/makepAI // -- TLE verbs += /client/proc/respawn_character //N verbs += /client/proc/Getmob @@ -385,11 +391,13 @@ verbs += /obj/admins/proc/vmode //start vote verbs += /obj/admins/proc/votekill //abort vote + verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player //verbs += /client/proc/cmd_admin_alienize //verbs += /client/proc/cmd_admin_changelinginize - //verbs += /client/proc/cmd_admin_abominize // -- TLE - verbs += /client/proc/cmd_admin_monkeyize - verbs += /client/proc/cmd_admin_robotize + //verbs += /client/proc/cmd_admin_abominize // -- TLE + //verbs += /client/proc/cmd_admin_monkeyize + //verbs += /client/proc/cmd_admin_robotize //verbs += /client/proc/make_cultist // -- TLE //verbs += /client/proc/cmd_admin_ninjafy //N verbs += /client/proc/respawn_character //N @@ -544,11 +552,13 @@ verbs += /obj/admins/proc/vmode //start vote verbs += /obj/admins/proc/votekill //abort vote + verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player //verbs += /client/proc/cmd_admin_alienize //verbs += /client/proc/cmd_admin_changelinginize //verbs += /client/proc/cmd_admin_abominize // -- TLE - verbs += /client/proc/cmd_admin_monkeyize - verbs += /client/proc/cmd_admin_robotize + //verbs += /client/proc/cmd_admin_monkeyize + //verbs += /client/proc/cmd_admin_robotize //verbs += /client/proc/make_cultist // -- TLE //verbs += /client/proc/cmd_admin_ninjafy //N verbs += /client/proc/respawn_character //N @@ -693,6 +703,8 @@ verbs += /obj/admins/proc/vmode //start vote verbs += /obj/admins/proc/votekill //abort vote + //verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player //verbs += /client/proc/cmd_admin_alienize //verbs += /client/proc/cmd_admin_changelinginize //verbs += /client/proc/cmd_admin_abominize // -- TLE @@ -837,6 +849,8 @@ verbs += /obj/admins/proc/vmode //start vote verbs += /obj/admins/proc/votekill //abort vote + //verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player //verbs += /client/proc/cmd_admin_alienize //verbs += /client/proc/cmd_admin_changelinginize //verbs += /client/proc/cmd_admin_abominize // -- TLE @@ -965,6 +979,8 @@ verbs += /obj/admins/proc/vmode //start vote verbs += /obj/admins/proc/votekill //abort vote + //verbs += /obj/admins/proc/edit_memory + verbs += /obj/admins/proc/edit_player //verbs += /client/proc/cmd_admin_alienize //verbs += /client/proc/cmd_admin_changelinginize //verbs += /client/proc/cmd_admin_abominize // -- TLE @@ -1134,14 +1150,17 @@ verbs -= /obj/admins/proc/votekill //abort vote verbs -= /client/proc/give_spell - verbs -= /client/proc/cmd_admin_alienize - verbs -= /client/proc/cmd_admin_changelinginize + verbs -= /obj/admins/proc/edit_memory + verbs -= /obj/admins/proc/edit_player + verbs -= /client/proc/cmd_admin_dress + //verbs -= /client/proc/cmd_admin_alienize + //verbs -= /client/proc/cmd_admin_changelinginize //verbs -= /client/proc/cmd_admin_abominize // -- TLE - verbs -= /client/proc/cmd_admin_monkeyize - verbs -= /client/proc/cmd_admin_robotize - verbs -= /client/proc/make_cultist // -- TLE + //verbs -= /client/proc/cmd_admin_monkeyize + //verbs -= /client/proc/cmd_admin_robotize + //verbs -= /client/proc/make_cultist // -- TLE verbs -= /client/proc/cmd_admin_ninjafy //N - verbs -= /client/proc/makepAI + //verbs -= /client/proc/makepAI verbs -= /client/proc/respawn_character //N verbs -= /client/proc/Getmob diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 9f84d5451cb..4406ae000c1 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -191,7 +191,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M:Alienize() else alert("Invalid mob") - +/* /client/proc/cmd_admin_monkeyize(var/mob/M in world) set category = "Fun" set name = "Make Monkey" @@ -223,7 +223,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.mind.special_role = "Changeling" else alert("Invalid mob") - +*/ /* /client/proc/cmd_admin_abominize(var/mob/M in world) set category = null @@ -236,11 +236,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that return if(istype(M, /mob/living/carbon/human)) log_admin("[key_name(src)] has made [M.key] an abomination.") - /* - spawn(10) - M.make_abomination() - */ + + // spawn(10) + // M.make_abomination() + */ +/* /client/proc/make_cultist(var/mob/M in world) // -- TLE, modified by Urist set category = "Fun" set name = "Make Cultist" @@ -279,6 +280,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.mind.special_role = "Cultist" ticker.mode.cult += M.mind src << "Made [M] a cultist." +*/ /client/proc/cmd_debug_del_all() set category = "Debug" @@ -323,3 +325,93 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that alert("Invalid ID card") else alert("Invalid mob") + +/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in world) + set category = "Fun" + set name = "Select equipment" + if(!ishuman(M)) + alert("Invalid mob") + return + //log_admin("[key_name(src)] has alienized [M.key].") + var/list/dresspacks = list( + "strip", + "tournament standard", + "tournament gangster", + "tournament chef", + "tournament janitor", + ) + var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks + if (isnull(dresscode)) + return + for (var/obj/item/I in M) + if (istype(I, /obj/item/weapon/implant)) + continue + del(I) + switch(dresscode) + if ("strip") + //do nothing + if ("tournament standard") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0 + M.equip_if_possible(new /obj/item/clothing/under/color/blue(M), M.slot_w_uniform) + M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes) + + M.equip_if_possible(new /obj/item/clothing/suit/armor/vest(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/head/helmet/thunderdome(M), M.slot_head) + + M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), M.slot_r_hand) + M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_hand) + M.equip_if_possible(new /obj/item/weapon/smokebomb(M), M.slot_r_store) + + + if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0 + M.equip_if_possible(new /obj/item/clothing/under/det(M), M.slot_w_uniform) + M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes) + + M.equip_if_possible(new /obj/item/clothing/suit/det_suit(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/glasses/thermal/monocle(M), M.slot_glasses) + M.equip_if_possible(new /obj/item/clothing/head/det_hat(M), M.slot_head) + + M.equip_if_possible(new /obj/item/weapon/cloaking_device(M), M.slot_r_store) + + M.equip_if_possible(new /obj/item/weapon/gun/projectile(M), M.slot_r_hand) + M.equip_if_possible(new /obj/item/ammo_magazine(M), M.slot_l_store) + + if ("tournament chef") //Steven Seagal FTW + M.equip_if_possible(new /obj/item/clothing/under/rank/chef(M), M.slot_w_uniform) + M.equip_if_possible(new /obj/item/clothing/suit/chef(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes) + M.equip_if_possible(new /obj/item/clothing/head/chefhat(M), M.slot_head) + + + M.equip_if_possible(new /obj/item/weapon/kitchen/rollingpin(M), M.slot_r_hand) + M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_hand) + M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_r_store) + M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_s_store) + + if ("tournament janitor") + M.equip_if_possible(new /obj/item/clothing/under/rank/janitor(M), M.slot_w_uniform) + M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes) + var/obj/item/weapon/storage/backpack/backpack = new(M) + for(var/obj/item/I in backpack) + del(I) + M.equip_if_possible(backpack, M.slot_back) + + M.equip_if_possible(new /obj/item/weapon/mop(M), M.slot_r_hand) + var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M) + bucket.reagents.add_reagent("water", 70) + M.equip_if_possible(bucket, M.slot_l_hand) + + M.equip_if_possible(new /obj/item/weapon/chem_grenade/cleaner(M), M.slot_r_store) + M.equip_if_possible(new /obj/item/weapon/chem_grenade/cleaner(M), M.slot_l_store) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + M.equip_if_possible(new /obj/item/stack/tile/steel(M), M.slot_in_backpack) + + var/obj/mopbucket/mopbucket = new(M.loc) + mopbucket.reagents.add_reagent("water", 100) + + M.update_clothing() + return \ No newline at end of file diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index fc9aef2d8a8..f2f27470b88 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -9,7 +9,7 @@ return for(var/mob/living/carbon/human/H in world) if(H.stat == 2 || !(H.client)) continue - if(checktraitor(H)) continue + if(is_special_character(H)) continue ticker.mode.equip_traitor(H) ticker.mode.traitors += H.mind diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 0745f68329b..8490d86ca33 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -651,14 +651,14 @@ Traitors and the like can also be revived with the previous role mostly intact. /client/proc/cmd_admin_list_occ() set category = "Admin" - set name = "List OOC" + set name = "List free slots" if (!authenticated || !holder) src << "Only administrators may use this command." return for(var/t in occupations) - src << "[t]
" + src << "[t]: [occupations[t]]" /client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in world) set category = "Special Verbs" @@ -889,8 +889,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set category = "Special Verbs" set name = "Attack Log" - //var/list/L = M.get_contents() - usr << text("\red Attack Log äëß []", mob) + usr << text("\red Attack Log for []", mob) for(var/t in M.attack_log) - usr << "[t]" + usr << t diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d7b13222178..09e31c3a61c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -203,3 +203,19 @@ bruteloss += brute fireloss += burn src.updatehealth() + +/mob/living/proc/revive() + //src.fireloss = 0 + src.toxloss = 0 + //src.bruteloss = 0 + src.oxyloss = 0 + src.paralysis = 0 + src.stunned = 0 + src.weakened =0 + //src.health = 100 + src.heal_overall_damage(1000, 1000) + src.buckled = initial(src.buckled) + src.handcuffed = initial(src.handcuffed) + if(src.stat > 1) src.stat=0 + ..() + return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index b25c8c12923..6f277f8d987 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -106,7 +106,7 @@ src << "You've lost power!" // world << "DEBUG CODE TIME! [loc] is the area the AI is sucking power from" - if (!checktraitor(src)) + if (!is_special_character(src)) src.set_zeroth_law("") src.clear_supplied_laws() var/time = time2text(world.realtime,"hh:mm:ss") diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index 1fe9d6908c6..6a26a5a1721 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -68,7 +68,7 @@ if (length(temp) > 0) laws.ion[index] = temp - if (!checktraitor(src) || mind.original != src) + if (!is_special_character(src) || mind.original != src) temp = master.zeroth laws.zeroth = temp diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 2033ecc568f..6a8d7eff04e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -439,7 +439,7 @@ // attack with hand - remove cell (if cover open) or interact with the APC /obj/machinery/power/apc/attack_hand(mob/user) - if (!can_use()) + if (!can_use(user)) return src.add_fingerprint(user) if(opened && (!istype(user, /mob/living/silicon))) @@ -704,26 +704,26 @@ src.aidisabled = 0 src.updateDialog() -/obj/machinery/power/apc/proc/can_use() //used by attack_hand() and Topic() - if (usr.stat) - usr << "\red You must be conscious to use this [src]!" +/obj/machinery/power/apc/proc/can_use(mob/user as mob) //used by attack_hand() and Topic() + if (user.stat) + user << "\red You must be conscious to use this [src]!" return 0 - if ( ! (istype(usr, /mob/living/carbon/human) || \ - istype(usr, /mob/living/silicon) || \ - istype(usr, /mob/living/carbon/monkey) /*&& ticker && ticker.mode.name == "monkey"*/) ) - usr << "\red You don't have the dexterity to use this [src]!" - usr << browse(null, "window=apc") - usr.machine = null + if ( ! (istype(user, /mob/living/carbon/human) || \ + istype(user, /mob/living/silicon) || \ + istype(user, /mob/living/carbon/monkey) /*&& ticker && ticker.mode.name == "monkey"*/) ) + user << "\red You don't have the dexterity to use this [src]!" + user << browse(null, "window=apc") + user.machine = null return 0 - if(usr.restrained()) - usr << "\red You must have free hands to use this [src]" + if(user.restrained()) + user << "\red You must have free hands to use this [src]" return 0 - if(usr.lying) - usr << "\red You must stand to use this [src]!" + if(user.lying) + user << "\red You must stand to use this [src]!" return 0 - if (istype(usr, /mob/living/silicon)) - var/mob/living/silicon/ai/AI = usr - var/mob/living/silicon/robot/robot = usr + if (istype(user, /mob/living/silicon)) + var/mob/living/silicon/ai/AI = user + var/mob/living/silicon/robot/robot = user if ( \ src.aidisabled || \ malfhack && istype(malfai) && \ @@ -732,28 +732,28 @@ (istype(robot) && (robot in malfai.connected_robots)) \ ) \ ) - usr << "\red \The [src] have AI control disabled!" - usr << browse(null, "window=apc") - usr.machine = null + user << "\red \The [src] have AI control disabled!" + user << browse(null, "window=apc") + user.machine = null return 0 else - if ((!in_range(src, usr) || !istype(src.loc, /turf))) - usr << browse(null, "window=apc") - usr.machine = null + if ((!in_range(src, user) || !istype(src.loc, /turf))) + user << browse(null, "window=apc") + user.machine = null return 0 - var/mob/living/carbon/human/H = usr + var/mob/living/carbon/human/H = user if (istype(H)) if(H.brainloss >= 60) for(var/mob/M in viewers(src, null)) M << "\red [H] stares cluelessly at [src] and drools." return 0 else if(prob(H.brainloss)) - usr << "\red You momentarily forget how to use [src]." + user << "\red You momentarily forget how to use [src]." return 0 return 1 /obj/machinery/power/apc/Topic(href, href_list) - if (!can_use()) + if (!can_use(usr)) return src.add_fingerprint(usr) usr.machine = src diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 4045ede6b7c..bbe3270f880 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ