mirror of
https://github.com/Aurorastation/Aurora-Old.git
synced 2026-08-26 06:06:18 +01:00
Squashed commit of the following:
commit9af16b9757Merge:3258c829a4d7b7Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 22:07:35 2015 +0200 Merge pull request #437 from Aurorastation/development Update, 08MAR2015 commit9a4d7b7dffAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 22:06:54 2015 +0200 Changelog Addendum, 08MAR2015 Missed some things! commit0a1740fcf3Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 21:56:41 2015 +0200 Map Update 2, 08MAR2015 * Adds the resource vendor into the game commit07f456558dAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 21:52:05 2015 +0200 Changelog, 08MAR2015 commit7a9e981486Merge:c461bfa6ec29dcAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 21:34:33 2015 +0200 Merge pull request #436 from skull132/master Master commit6ec29dcb51Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 21:29:42 2015 +0200 Map Update, 08MAR2015 * Fixes #422 * Adds a proper surgical gear to the roboticist * Covers a blindspot in the main hall for the AI commit51886224eeMerge:37dc607c461bfaAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 21:01:21 2015 +0200 Merge pull request #29 from Aurorastation/development Conflict Clearance commitc461bfa430Merge:fb726d437dc607Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 20:52:21 2015 +0200 Merge pull request #435 from skull132/master Skull's Things, 07MAR2015 commit37dc607491Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 18:37:47 2015 +0200 Item_defines.dm Clean-up * Fixes #429 * Fixes #394 * Removes Crimson's Webbing * Makes Janet Bellard's handkerchief more space efficient and less dumb * Modifications to make most of the old items more uniform in the way their code is written and presented commit831a457c25Merge:00b97c0fb726d4Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 15:02:30 2015 +0200 Merge pull request #28 from Aurorastation/development Conflict Clearance commitfb726d4645Merge:b6299cbdf99bfaAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 14:59:29 2015 +0200 Merge pull request #425 from Serveris/development Custom items commitb6299cb2c0Merge:04fed607416522Author: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 14:59:07 2015 +0200 Merge pull request #424 from Jamini/development Fixing EMT access to medical lockers commit04fed60c45Merge:dab11dcdecaf5dAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 14:58:51 2015 +0200 Merge pull request #426 from Meowykins/master Mostly new stuff. commitdf99bfa32dMerge:906e2efdab11dcAuthor: Serveris <blh1997@hotmail.com> Date: Sat Mar 7 19:23:45 2015 -0500 Merge pull request #3 from Aurorastation/development Conflict Clearance commitdab11dc481Merge:199371bba1cd8fAuthor: skull132 <erki.meinberg@gmail.com> Date: Sun Mar 8 01:26:35 2015 +0200 Merge pull request #427 from SoundScopes/master Scopes Updates commit00b97c04ccAuthor: skull132 <erki.meinberg@gmail.com> Date: Sat Mar 7 15:09:40 2015 +0200 Possible Fix #418 Adds a list of items of, initially empty, food holders into a blocked variable. This should stop empty food items from spawning, also empty food items with no icons as well. Works as tested. commitb83cdc9a3fAuthor: skull132 <erki.meinberg@gmail.com> Date: Sat Mar 7 14:46:19 2015 +0200 Chocolatebox commit09cbc8cc61Author: skull132 <erki.meinberg@gmail.com> Date: Sat Mar 7 14:30:34 2015 +0200 Weaponry.dm Updates * Fixes #431 by redoing the canesword (disguised sword). Makes you able to lock it by clicking on it, and unsheathe it by clicking on it with another hand. * Removes the old box-hack for having a canesword. * Swaps out references for the old canesword. * Modifies how deconversion with the null rod works, to be less ganky. commitba1cd8f0f1Author: SoundScopes <Musical.Flow@LIve.com> Date: Fri Mar 6 15:48:50 2015 +0000 Grammar commit05315a863fAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Fri Mar 6 15:48:37 2015 +0000 Sniper needs Zoom commit6f0135b2a9Author: SoundScopes <Musical.Flow@LIve.com> Date: Fri Mar 6 15:02:15 2015 +0000 Only aim when scoping commitc6a3bd8a8dAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Fri Mar 6 14:31:39 2015 +0000 JMP fix commit181d610c50Author: SoundScopes <Musical.Flow@LIve.com> Date: Fri Mar 6 14:07:21 2015 +0000 NanoUI Debug commitb6947e8b61Author: SoundScopes <Musical.Flow@LIve.com> Date: Fri Mar 6 14:07:05 2015 +0000 Closet Space commit863cea572aAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Mar 5 17:13:14 2015 +0200 Radios for Posibrains General communication device. Handed in for general testing, reference ehancement #400. Known bugs: * Mob's own speech scrubbed out with asterisks commit4a6da81963Author: skull132 <erki.meinberg@gmail.com> Date: Thu Mar 5 16:00:22 2015 +0200 Character Signatures * Adds the ability for players to have predefined signatures for specific characters * Should none be entered, it'll revent to the old style, until changed commit906e2ef445Author: Serveris <blh1997@hotmail.com> Date: Wed Mar 4 15:12:58 2015 -0500 Fixes #419 Fixes the crossbows not appearing on a mob's back. commitadbf99c092Merge:14e06004edae7bAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Wed Mar 4 14:50:37 2015 +0000 Merge branch 'master' of https://github.com/SoundScopes/Aurora commit14e060090aAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Wed Mar 4 14:50:29 2015 +0000 Rights check Dumb commit4edae7bb99Author: SoundScopes <Musical.Flow@live.com> Date: Wed Mar 4 05:42:46 2015 +0000 Re-enable the AI commite4b1db68b5Author: SoundScopes <Musical.Flow@LIve.com> Date: Tue Mar 3 14:04:35 2015 +0000 Player Memos commit84fd6a1a6cAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Tue Mar 3 13:58:53 2015 +0000 Armbands commitea83e9d5a5Author: SoundScopes <Musical.Flow@LIve.com> Date: Tue Mar 3 13:57:19 2015 +0000 Runtime I can stop it attacking Mice now commitdecaf5dc5eAuthor: Meowykins <meowness10@gmail.com> Date: Mon Mar 2 10:40:58 2015 -0600 Armor Changes Allows security armor to hold flashlights and badges. commit15275de5aaAuthor: Meowykins <meowness10@gmail.com> Date: Mon Mar 2 10:40:32 2015 -0600 New Storage For minerals. Used in RnD and Robotics. commit43276af346Merge:adb06293258c82Author: Meowykins <morgannhart@gmail.com> Date: Mon Mar 2 09:23:18 2015 -0600 Merge pull request #6 from Aurorastation/master Update commita27036eb35Author: Serveris <blh1997@hotmail.com> Date: Sun Mar 1 19:40:07 2015 -0500 Custom Items -Adds TheCritsyBear/Android's Language Board -Adds MasterZipZero/PARAGON's data chip -Adds NebulaFlare/Karima Mo'taki's data drive necklace -Adds Thundy/Charlie Dove's diamond necklace commit79d3b13838Merge:562abf5199371bAuthor: Serveris <blh1997@hotmail.com> Date: Sat Feb 28 16:49:28 2015 -0500 Merge pull request #2 from Aurorastation/development PR #3 commit086b3f574fAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Sat Feb 28 10:13:55 2015 +0000 Incorrect access commitfe333f320aAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Sat Feb 28 10:13:41 2015 +0000 Dsay runtime commit26b2d7418bAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Sat Feb 28 10:11:26 2015 +0000 A little change to logs Added prefixes for specific logs commit863af7bd00Author: SoundScopes <Musical.Flow@LIve.com> Date: Fri Feb 27 10:27:26 2015 +0000 Disposals hurt It was actually a bug, how about that. commit199371bc1bMerge:59e17f7a9b8154Author: SoundScopes <Musical.Flow@live.com> Date: Fri Feb 27 01:00:16 2015 +0000 Merge pull request #417 from SoundScopes/master Development commita9b8154c68Merge:293d7283258c82Author: SoundScopes <Musical.Flow@live.com> Date: Fri Feb 27 00:59:52 2015 +0000 Merge pull request #26 from Aurorastation/master Development commit562abf5071Merge:04761a059e17f7Author: Serveris <blh1997@hotmail.com> Date: Thu Feb 26 19:07:42 2015 -0500 Merge pull request #1 from Aurorastation/development PR #2 commit9d8349229fMerge:05319af3258c82Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 21:27:45 2015 +0200 Merge pull request #27 from Aurorastation/master Yesss. commit3258c82d16Merge:23631ec59e17f7Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 19:34:17 2015 +0200 Merge pull request #415 from Aurorastation/development Remove Emergency Physician commit59e17f7e91Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 19:33:30 2015 +0200 Remove Emergency Physician Title no longer necessary. Leave note to scrutinize pulls better. commit23631ec809Merge:8e71b762c8ee1eAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 19:26:14 2015 +0200 Merge pull request #414 from Aurorastation/development Map Hotfix, 26FEB2015 commit2c8ee1e4d7Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 19:25:03 2015 +0200 Map Hotfix 2, 26FEB2015 26FEB, the first one is meant to read. No clue why I'm being silly. commitc2ed125af2Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 19:07:22 2015 +0200 Map Hotfix, 18FEB2015 Tables. Always tables. Temporary bridge design in effect. commit8e71b76e11Merge:2f242fb2237cb2Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 17:21:55 2015 +0200 Merge pull request #412 from Aurorastation/development EMT Spawn Fix commit2237cb21cbAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 17:20:36 2015 +0200 EMT Spawn Fix Fixes the spawnpoints, a quick mistake. commit2f242fbfe5Merge:9e6d67842971d3Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 16:56:39 2015 +0200 Merge pull request #411 from Aurorastation/development Update, 26FEB2015 commit42971d38e6Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 16:49:22 2015 +0200 Removing Gravity.html Clean-up, basically. commit7520ac9cdaAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 16:48:18 2015 +0200 Changelog, 26FEB2015 commit7c69a6ceabAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 16:29:21 2015 +0200 Gitignore update Can we finally stop updating that file? I hope so. commit641e2eb6faAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 16:29:04 2015 +0200 Map Update, 26FEB2015 * Moves the bartender's back room light * Adds lockdown shutters to Arrivals, so that it may act as a checkpoint (head access) * Fixes the mining dock vents with correct IDs commit39ace47ad6Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 16:27:56 2015 +0200 Tidying Up: EMT commite6e9fdcc16Merge:be2469005319afAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 14:48:07 2015 +0200 Merge pull request #410 from skull132/master Body Colour for IPCs commit05319afafaAuthor: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 26 14:47:22 2015 +0200 Body Colour for IPCs Because we paint computers, so why not pain IPCs? Also, a bypass already exists, so might as well make it official. Body colour is linked to the hair colour, so you'll have a uniform coating. commitbe24690724Merge:6672368963bec0Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 21:22:40 2015 +0200 Merge pull request #403 from Jamini/development EMT job and assets added commit6672368180Merge:15ce683293d728Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 21:22:25 2015 +0200 Merge pull request #398 from SoundScopes/master Scopes Updates commit293d728ff2Author: SoundScopes <Musical.Flow@LIve.com> Date: Wed Feb 25 19:19:18 2015 +0000 It's your duty to change color commit15ce6832fdMerge:c04fc4cadb0629Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 21:13:37 2015 +0200 Merge pull request #402 from Meowykins/master Fixes commitc04fc4ca95Merge:ac562a46d5fa8dAuthor: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 21:13:15 2015 +0200 Merge pull request #407 from skull132/master Skull's Things, 25FEB2015 commitac562a4332Merge:04761a09e6d678Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 21:12:58 2015 +0200 Merge pull request #408 from Aurorastation/master Backtraced Update commit9e6d6780e1Merge:72500c42d37875Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 17:25:35 2015 +0200 Merge pull request #391 from Zuhayr/master Fixes #388 commit6d5fa8dd60Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 17:14:39 2015 +0200 Report a Bug Button Adds a button. Yup. commit0f9263aa51Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 16:59:26 2015 +0200 Fixes #405 pAIs can only use sign language with the translator *on* and in the mobile form. commitdf229eba31Author: skull132 <erki.meinberg@gmail.com> Date: Wed Feb 25 16:32:21 2015 +0200 Fixes #399 pAIs are no longer the ultimate hacking tool for getting into the HoP's office, or the warden's office. As in: they can no longer open windoors automatically. commitadb06297a4Author: Meowykins <meowness10@gmail.com> Date: Tue Feb 24 02:19:03 2015 -0600 #401 Bugfix for #401 commit3c10938352Merge:c970a4d72500c4Author: Meowykins <morgannhart@gmail.com> Date: Mon Feb 23 20:19:35 2015 -0600 Merge pull request #5 from Aurorastation/master Stuff commite0b83b59a4Author: SoundScopes <Musical.Flow@LIve.com> Date: Tue Feb 24 01:56:59 2015 +0000 #384 commitd3bbdb1f46Author: SoundScopes <Musical.Flow@LIve.com> Date: Tue Feb 24 00:12:01 2015 +0000 Color Changes commita967f7fffaAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Mon Feb 23 12:44:06 2015 +0000 Mouse cooldown commitbca631d622Author: SoundScopes <Musical.Flow@LIve.com> Date: Mon Feb 23 11:50:18 2015 +0000 Stealth Runtime commit72500c4472Merge:0739b2804761a0Author: SoundScopes <Musical.Flow@live.com> Date: Mon Feb 23 04:36:51 2015 +0000 Merge pull request #397 from Aurorastation/development Development commit04761a0791Merge:970dbfddee4363Author: SoundScopes <Musical.Flow@live.com> Date: Mon Feb 23 04:32:13 2015 +0000 Merge pull request #395 from SueTheCake/customitems Fixes missing icon states for custom items. commit970dbfdd9dMerge:1a116dbd2c523dAuthor: SoundScopes <Musical.Flow@live.com> Date: Mon Feb 23 04:30:13 2015 +0000 Merge pull request #396 from SoundScopes/master Damn runtimes commitd2c523de5aAuthor: SoundScopes <Musical.Flow@LIve.com> Date: Mon Feb 23 03:46:24 2015 +0000 Damn runtimes commitdee4363e63Author: suethecake <suethepyro@gmail.com> Date: Sun Feb 22 16:56:40 2015 -0600 Forgot to add item states for certain objects in the last pull. Durr. commit2d378755ffAuthor: Zuhayr <AGMogett@gmail.com> Date: Sat Feb 21 23:54:39 2015 +1030 Fixes #388 commitac250fac7fMerge:3a8084a41321a0Author: skull132 <erki.meinberg@gmail.com> Date: Thu Feb 19 18:15:36 2015 +0200 Merge pull request #26 from Aurorastation/master Hotfix pull
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
#define MEMOFILE "data/memo.sav" //where the memos are saved
|
||||
#define PLAYERMEMOFILE "data/pmemo.sav" //where the player memos are saved
|
||||
#define ENABLE_MEMOS 1 //using a define because screw making a config variable for it. This is more efficient and purty.
|
||||
|
||||
//switch verb so we don't spam up the verb lists with like, 3 verbs for this feature.
|
||||
/client/proc/admin_memo(task in list("write","show","delete"))
|
||||
set name = "Memo"
|
||||
set name = "Admin Memo"
|
||||
set category = "Server"
|
||||
if(!ENABLE_MEMOS) return
|
||||
if(!check_rights(0)) return
|
||||
@@ -50,5 +51,62 @@
|
||||
F.dir.Remove(ckey)
|
||||
src << "<b>Removed Memo created by [ckey].</b>"
|
||||
|
||||
//switch verb so we don't spam up the verb lists with like, 3 verbs for this feature.
|
||||
/client/verb/memo_player()
|
||||
set name = "Player Memo"
|
||||
set category = "OOC"
|
||||
if(!ENABLE_MEMOS) return
|
||||
admin_memo_player_show()
|
||||
|
||||
/client/proc/admin_memo_player(task in list("write","show","delete"))
|
||||
set name = "Player Memo"
|
||||
set category = "Server"
|
||||
|
||||
if(!ENABLE_MEMOS) return
|
||||
if(!check_rights(0)) return
|
||||
switch(task)
|
||||
if("write") admin_memo_player_write()
|
||||
if("show") admin_memo_player_show()
|
||||
if("delete") admin_memo_player_delete()
|
||||
|
||||
//write a message
|
||||
/client/proc/admin_memo_player_write()
|
||||
var/savefile/F = new(PLAYERMEMOFILE)
|
||||
if(F)
|
||||
var/memo = input(src,"Type your memo\n(Leaving it blank will delete your current memo):","Write Memo",null) as null|message
|
||||
switch(memo)
|
||||
if(null)
|
||||
return
|
||||
if("")
|
||||
F.dir.Remove(ckey)
|
||||
src << "<b>Memo removed</b>"
|
||||
return
|
||||
if( findtext(memo,"<script",1,0) )
|
||||
return
|
||||
F[ckey] << "[key] on [time2text(world.realtime,"(DDD) DD MMM hh:mm")]<br>[memo]"
|
||||
message_admins("[key] set an player memo:<br>[memo]")
|
||||
|
||||
//show all memos
|
||||
/client/proc/admin_memo_player_show()
|
||||
if(ENABLE_MEMOS)
|
||||
var/savefile/F = new(PLAYERMEMOFILE)
|
||||
if(F)
|
||||
for(var/ckey in F.dir)
|
||||
src << "<center><span class='motd'><b>Player Memo</b><i> by [F[ckey]]</i></span></center>"
|
||||
|
||||
//delete your own or somebody else's memo
|
||||
/client/proc/admin_memo_player_delete()
|
||||
var/savefile/F = new(PLAYERMEMOFILE)
|
||||
if(F)
|
||||
var/ckey
|
||||
if(check_rights(R_SERVER,0)) //high ranking admins can delete other admin's memos
|
||||
ckey = input(src,"Whose memo shall we remove?","Remove Memo",null) as null|anything in F.dir
|
||||
else
|
||||
ckey = src.ckey
|
||||
if(ckey)
|
||||
F.dir.Remove(ckey)
|
||||
src << "<b>Removed Memo created by [ckey].</b>"
|
||||
|
||||
#undef MEMOFILE
|
||||
#undef PLAYERMEMOFILE
|
||||
#undef ENABLE_MEMOS
|
||||
@@ -31,6 +31,7 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/
|
||||
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
|
||||
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
|
||||
/client/proc/admin_memo_player,
|
||||
/client/proc/alertlevels,
|
||||
/client/proc/allow_character_respawn, /* Allows a ghost to respawn */
|
||||
/client/proc/check_ai_laws, /*shows AI and borg laws*/
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
||||
if(!msg) return
|
||||
|
||||
log_admin("[key_name(src)] : [msg]")
|
||||
log_admin("ASAY: [key_name(src)] : [msg]")
|
||||
|
||||
if(check_rights(R_ADMIN,0))
|
||||
msg = "<span class='adminsay'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> (<a href='?_src_=holder;adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
|
||||
@@ -46,7 +46,7 @@
|
||||
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
||||
if(!msg) return
|
||||
|
||||
log_admin("[key_name(src)] : [msg]")
|
||||
log_admin("DEV: [key_name(src)] : [msg]")
|
||||
|
||||
if(check_rights(R_DEV,0))
|
||||
msg = "<span class='devsay'><span class='prefix'>DEV:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
|
||||
@@ -64,7 +64,7 @@
|
||||
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
||||
if(!msg) return
|
||||
|
||||
log_admin("[key_name(src)] : [msg]")
|
||||
log_admin("DOSAY: [key_name(src)] : [msg]")
|
||||
|
||||
if(check_rights(R_DUTYOFF,0))
|
||||
msg = "<span class='dutysay'><span class='prefix'>DOfficer:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
stafftype = "EVENT"
|
||||
|
||||
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
||||
log_admin("[key_name(src)] : [msg]")
|
||||
log_admin("DSAY: [key_name(src)] : [msg]")
|
||||
|
||||
if (!msg)
|
||||
return
|
||||
@@ -41,7 +41,12 @@
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
|
||||
if(!M.client)
|
||||
continue
|
||||
|
||||
if(M.client && M.client.holder && (M.client.prefs.toggles & CHAT_DEAD)) // show the message to admins who have deadchat toggled on
|
||||
if((M.client.holder.rights & R_DUTYOFF) && !(M.client.holder.rights & (R_ADMIN|R_MOD|R_DEV|R_FUN)))
|
||||
continue
|
||||
M.show_message(rendered, 2)
|
||||
|
||||
else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // show the message to regular ghosts who have deadchat toggled on
|
||||
|
||||
@@ -773,7 +773,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
W.icon_state = "centcom"
|
||||
W.item_state = "id_inv"
|
||||
W.access = get_all_accesses()
|
||||
W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer")
|
||||
W.access += get_all_centcom_access()
|
||||
W.assignment = "NanoTrasen Navy Representative"
|
||||
W.registered_name = M.real_name
|
||||
M.equip_if_possible(W, slot_wear_id)
|
||||
|
||||
@@ -151,6 +151,7 @@
|
||||
host = key
|
||||
world.update_status()
|
||||
|
||||
admin_memo_player_show()
|
||||
if(holder)
|
||||
add_admin_verbs()
|
||||
admin_memo_show()
|
||||
|
||||
@@ -125,10 +125,14 @@ datum/preferences
|
||||
|
||||
var/uplinklocation = "PDA"
|
||||
|
||||
// OOC Metadata:
|
||||
// OOC Metadata:
|
||||
var/metadata = ""
|
||||
var/slot_name = ""
|
||||
|
||||
//Signature information:
|
||||
var/signature
|
||||
var/signature_font
|
||||
|
||||
/datum/preferences/New(client/C)
|
||||
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
if(istype(C))
|
||||
@@ -139,6 +143,8 @@ datum/preferences
|
||||
return
|
||||
gender = pick(MALE, FEMALE)
|
||||
real_name = random_name(gender)
|
||||
signature = "<i>[real_name]</i>"
|
||||
signature_font = "Verdanta"
|
||||
|
||||
gear = list()
|
||||
|
||||
@@ -401,6 +407,11 @@ datum/preferences
|
||||
dat += "<a href='byond://?src=\ref[user];preference=pAI'><b>pAI Configuration</b></a><br>"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<b>Character's Signature</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=signature;task=input'>Edit</a> <a href='byond://?src=\ref[user];preference=signature;task=font'>Font</a> <a href='byond://?src=\ref[user];preference=signature;task=help'>Help</a><br>"
|
||||
dat += "<font face=\"[signature_font ? signature_font : "Verdanta"]\">[signature]</font><br>"
|
||||
|
||||
|
||||
dat += "<br><b>Hair</b><br>"
|
||||
dat += "<a href='?_src_=prefs;preference=hair;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]'><tr><td>__</td></tr></table></font> "
|
||||
dat += " Style: <a href='?_src_=prefs;preference=h_style;task=input'>[h_style]</a><br>"
|
||||
@@ -1017,11 +1028,34 @@ datum/preferences
|
||||
gear -= gear_name
|
||||
break
|
||||
|
||||
else if(href_list["preference"] == "signature")
|
||||
switch(href_list["task"])
|
||||
if("input")
|
||||
var/raw_signature = input(user, "Choose your character's signature:","Character Preference") as text
|
||||
if(!isnull(raw_signature))
|
||||
var/new_signature = checkhtml(raw_signature, signature_tag_whitelist)
|
||||
if(new_signature && !(length(new_signature) > MAX_NAME_LEN + 12))
|
||||
signature = new_signature
|
||||
else
|
||||
user << "<font color='red'>Invalid signature. Your character's signature should be at least 2 and at most [MAX_NAME_LEN + 12] characters long. For accepted formatting tags, please review the Help option.</font>"
|
||||
if("help")
|
||||
var/HTML
|
||||
HTML += "A character's signature can be augmented with the following tags:<br>"
|
||||
HTML += "<ul><li><i>Italics</i> - <i>Text</i></li>"
|
||||
HTML += "<li><b>Bold</b> - <b>Text</b></li>"
|
||||
HTML += "<li><small>Small size</small> - <small>Text</small></li>"
|
||||
HTML += "<li><big>Big size</big> - <big>Text</big></li></ul>"
|
||||
HTML += "<br><br>Beyond that, a maximum of [MAX_NAME_LEN + 12] characters are allowed for the signature text, including symbols."
|
||||
user << browse(HTML, "window=signaturehelp;size=350x300")
|
||||
if("font")
|
||||
signature_font = input(user, "Choose your character's signature:", "Character Preference") as null|anything in list("Times New Roman", "Verdana")
|
||||
|
||||
switch(href_list["task"])
|
||||
if("random")
|
||||
switch(href_list["preference"])
|
||||
if("name")
|
||||
real_name = random_name(gender)
|
||||
signature = "<i>[real_name]</i>"
|
||||
if("age")
|
||||
age = rand(AGE_MIN, AGE_MAX)
|
||||
if("hair")
|
||||
@@ -1176,6 +1210,8 @@ datum/preferences
|
||||
r_hair = hex2num(copytext(new_hair, 2, 4))
|
||||
g_hair = hex2num(copytext(new_hair, 4, 6))
|
||||
b_hair = hex2num(copytext(new_hair, 6, 8))
|
||||
else if (species == "Machine")
|
||||
alert("Please select the Body Color instead.")
|
||||
|
||||
if("h_style")
|
||||
var/list/valid_hairstyles = list()
|
||||
@@ -1250,12 +1286,16 @@ datum/preferences
|
||||
s_tone = 35 - max(min( round(new_s_tone), 220),1)
|
||||
|
||||
if("skin")
|
||||
if(species == "Unathi" || species == "Tajaran" || species == "Skrell")
|
||||
if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine")
|
||||
var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference") as color|null
|
||||
if(new_skin)
|
||||
r_skin = hex2num(copytext(new_skin, 2, 4))
|
||||
g_skin = hex2num(copytext(new_skin, 4, 6))
|
||||
b_skin = hex2num(copytext(new_skin, 6, 8))
|
||||
if(species == "Machine")
|
||||
r_hair = r_skin
|
||||
g_hair = g_skin
|
||||
b_hair = b_skin
|
||||
|
||||
if("ooccolor")
|
||||
var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null
|
||||
@@ -1408,6 +1448,7 @@ datum/preferences
|
||||
religion = sanitize(copytext(raw_choice,1,MAX_MESSAGE_LEN))
|
||||
return
|
||||
religion = choice
|
||||
|
||||
else
|
||||
switch(href_list["preference"])
|
||||
if("gender")
|
||||
@@ -1494,6 +1535,8 @@ datum/preferences
|
||||
/datum/preferences/proc/copy_to(mob/living/carbon/human/character, safety = 0)
|
||||
if(be_random_name)
|
||||
real_name = random_name(gender)
|
||||
signature = "<i>[real_name]</i>"
|
||||
signature_font = "Verdana"
|
||||
|
||||
if(config.humans_need_surnames)
|
||||
var/firstspace = findtext(real_name, " ")
|
||||
|
||||
@@ -179,6 +179,9 @@
|
||||
S["UI_style_color"] << UI_style_color
|
||||
S["UI_style_alpha"] << UI_style_alpha
|
||||
|
||||
S["signature"] >> signature
|
||||
S["signature_font"] >> signature_font
|
||||
|
||||
//Sanitize
|
||||
metadata = sanitize_text(metadata, initial(metadata))
|
||||
real_name = reject_bad_name(real_name)
|
||||
@@ -187,6 +190,8 @@
|
||||
if(isnull(spawnpoint)) spawnpoint = "Arrivals Shuttle"
|
||||
if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation)
|
||||
if(!real_name) real_name = random_name(gender)
|
||||
if(!signature) signature = "<i>[real_name]</i>"
|
||||
if(!signature_font) signature_font = "Times New Roman"
|
||||
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
|
||||
gender = sanitize_gender(gender)
|
||||
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
||||
@@ -319,6 +324,9 @@
|
||||
S["UI_style_color"] << UI_style_color
|
||||
S["UI_style_alpha"] << UI_style_alpha
|
||||
|
||||
S["signature"] << signature
|
||||
S["signature_font"] << signature_font
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
/obj/item/clothing/suit/armor
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/clothing/tie/holobadge,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS | THICKMATERIAL
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/clothing/tie/holobadge,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/flashlight)
|
||||
slowdown = 1
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
@@ -154,7 +154,7 @@
|
||||
item_state = "centcom"
|
||||
w_class = 4//bulky item
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/clothing/tie/holobadge,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/flashlight)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
|
||||
@@ -147,82 +147,22 @@
|
||||
item_state = null
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief //handkerchief - Janet Fisher - rustysh4ckleford - DONE
|
||||
name = "Handkerchief"
|
||||
name = "handkerchief"
|
||||
desc = "An ordinary handkerchief. It looks well used."
|
||||
w_class = 1
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "janet_handkerchief"
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list(5)
|
||||
volume = 5
|
||||
can_be_placed_into = null
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/attack_self(mob/user as mob)
|
||||
user.visible_message("[user] holds [src] up to her face.")
|
||||
if(do_after(user,30))
|
||||
user.visible_message("[user] moves [src] away from her face.")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/attack(atom/target as obj|turf|area, mob/user as mob , flag)
|
||||
if(ismob(target) && target.reagents && reagents.total_volume)
|
||||
user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
|
||||
src.reagents.reaction(target, TOUCH)
|
||||
spawn(5) src.reagents.clear_reagents()
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(istype(A) && src in user)
|
||||
user.visible_message("[user] starts to wipe down [A] with [src]!")
|
||||
attack_self(mob/user as mob)
|
||||
user.visible_message("[user] holds [src] up to \his face.")
|
||||
if(do_after(user,30))
|
||||
user.visible_message("[user] finishes wiping off the [A]!")
|
||||
A.clean_blood()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/examine()
|
||||
if (!usr)
|
||||
user.visible_message("[user] blows \his nose and moves the [src] away from \his face.")
|
||||
return
|
||||
usr << "That's \a [src]."
|
||||
usr << desc
|
||||
return
|
||||
|
||||
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness //A crimson harness - No assign character (Allyn "Crimson" Adema) - skull132 - DONE
|
||||
name = "a crimson harness"
|
||||
desc = "An Unathi ceremonial harness with two pieces of crimson cloth draped across the heart of the wearer."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "skull_harness2"
|
||||
item_color = "skull_harness2"
|
||||
item_state = "skull_harness2"
|
||||
slots = 2
|
||||
|
||||
/*
|
||||
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness/attackby(var/obj/item/O as obj, mob/user as mob)
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness/proc/updateskull()
|
||||
var/count = 0
|
||||
for(var/obj/item/I in hold)
|
||||
if(istype(I,/obj/item/weapon/hatchet/unathiknife))
|
||||
count++
|
||||
if(count>2) count = 2
|
||||
item_state = "skull_harness[count]"
|
||||
icon_state = item_state
|
||||
item_color = item_state
|
||||
|
||||
if(istype(loc, /obj/item/clothing))
|
||||
var/obj/item/clothing/U = loc
|
||||
if(istype(U.loc, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = U.loc
|
||||
H.update_inv_w_uniform()
|
||||
|
||||
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness/New()
|
||||
..()
|
||||
new /obj/item/weapon/hatchet/unathiknife(hold)
|
||||
new /obj/item/weapon/hatchet/unathiknife(hold)
|
||||
*/
|
||||
afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
|
||||
if(A == user)
|
||||
attack_self(user)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/disk/fluff/nebula_chip //data chip - Roxy Wallace - nebulaflare - DONE
|
||||
name = "data chip"
|
||||
@@ -231,59 +171,38 @@
|
||||
icon_state = "nebula_chip"
|
||||
w_class = 1
|
||||
|
||||
/obj/item/weapon/storage/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare - DONE
|
||||
name = "Chic Eyewear"
|
||||
desc = " A stylish pair of glasses. They look custom made."
|
||||
/obj/item/clothing/glasses/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare - DONE
|
||||
name = "chic eyewear"
|
||||
desc = "A stylish pair of glasses. They look custom made."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "nebula_glasses"
|
||||
item_state = "glasses"
|
||||
flags = FPRINT | GLASSESCOVERSEYES
|
||||
slot_flags = SLOT_EYES
|
||||
can_hold = list(
|
||||
"/obj/item/weapon/disk/fluff/nebula_chip")
|
||||
storage_slots = 1
|
||||
max_combined_w_class = 1
|
||||
max_w_class = 1
|
||||
w_class = 2
|
||||
item_state = "nebula_glasses"
|
||||
|
||||
var/chip
|
||||
|
||||
New()
|
||||
chip = new /obj/item/weapon/disk/fluff/nebula_chip()
|
||||
..()
|
||||
new /obj/item/weapon/disk/fluff/nebula_chip(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fluff/nebula_glasses/proc/can_use()
|
||||
if(!ismob(loc)) return 0
|
||||
var/mob/M = loc
|
||||
if(src in M.get_equipped_items())
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
attack_self(mob/user as mob)
|
||||
if(chip)
|
||||
user.put_in_hands(chip)
|
||||
user << "\blue You eject a small, concealed data chip from a small slot in the frames of the [src]."
|
||||
chip = null
|
||||
|
||||
/obj/item/weapon/storage/fluff/nebula_glasses/MouseDrop(obj/over_object as obj, src_location, over_location)
|
||||
var/mob/M = usr
|
||||
if(!istype(over_object, /obj/screen))
|
||||
return ..()
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
if (!M.restrained() && !M.stat && can_use())
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
M.u_equip(src)
|
||||
M.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
M.u_equip(src)
|
||||
M.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/disk/fluff/nebula_chip) && !chip)
|
||||
user.u_equip(W)
|
||||
W.loc = src
|
||||
chip = W
|
||||
W.dropped(user)
|
||||
W.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
user << "You slot the [W] back into its place in the frames of the [src]."
|
||||
|
||||
/obj/item/clothing/mask/cigarette/pipe/fluff/tool_pipe //Worn pipe - Michael Tool - mrimatool - DONE
|
||||
name = "worn pipe"
|
||||
desc = "A worn wooden pipe with the initials S.F. scratched into the base."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "toolpipeoff"
|
||||
item_state = "pipeoff"
|
||||
icon_on = "toolpipeon" //Note - these are in masks.dmi
|
||||
icon_off = "pipeoff"
|
||||
smoketime = 100
|
||||
can_hurt_mob = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/tool_flask //Worn flask - Michael Tool - mrimatool - DONE
|
||||
name = "worn flask"
|
||||
@@ -292,51 +211,6 @@
|
||||
icon_state = "tool_flask"
|
||||
volume = 60
|
||||
|
||||
/*
|
||||
/obj/item/weapon/melee/baton/fluff/omnivac_baton //Tiger Claw - Zander Moon - omnivac - DONE
|
||||
name = "Tiger Claw"
|
||||
desc = "A small energy dagger given to Golden Tigers meant to incapacitate people quickly."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "tigerclaw"
|
||||
item_state = "tigerclaw"
|
||||
|
||||
/obj/item/weapon/melee/baton/fluff/omnivac_baton/update_icon()
|
||||
if(status)
|
||||
icon_state = "tigerclaw_active"
|
||||
item_state = "tigerclaw_active"
|
||||
else
|
||||
icon_state = "tigerclaw"
|
||||
item_state = "tigerclaw"
|
||||
|
||||
/obj/item/weapon/melee/baton/fluff/omnivac_baton/attack_self(mob/user as mob)
|
||||
if(status && (CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You grab the [src] on the wrong side."
|
||||
user.Weaken(30)
|
||||
charges--
|
||||
if(charges < 1)
|
||||
status = 0
|
||||
update_icon()
|
||||
return
|
||||
if(charges > 0)
|
||||
status = !status
|
||||
user << "<span class='notice'>\The [src] is now [status ? "on" : "off"].</span>"
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
update_icon()
|
||||
else
|
||||
status = 0
|
||||
user << "<span class='warning'>\The [src] is out of charge.</span>"
|
||||
add_fingerprint(user)
|
||||
*/
|
||||
/*
|
||||
/obj/item/device/modkit/fluff/omnivac_modkit //Ornate box - Zander Moon - omnivac - SPRITE
|
||||
name = "ornate box"
|
||||
desc = "An ornate box, containing the handle of an energy blade."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "omni_modkit"
|
||||
parts = MODKIT_HELMET
|
||||
from_helmet = list(/obj/item/weapon/melee)
|
||||
to_helmet = list(/obj/item/weapon/melee/baton/fluff/omnivac_baton)
|
||||
*/
|
||||
|
||||
/obj/item/clothing/head/soft/fluff/nebula_cap //Black baseball cap - Roxy Wallace - nebulaflare - DONE
|
||||
name = "black baseball cap"
|
||||
@@ -410,20 +284,20 @@
|
||||
item_state = "pen"
|
||||
var/ink = 1
|
||||
|
||||
/obj/item/weapon/pen/fluff/eliza_pen/attack_self(mob/user)
|
||||
switch(ink)
|
||||
if(1)
|
||||
ink = 2
|
||||
colour = "blue"
|
||||
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
|
||||
if(2)
|
||||
ink = 3
|
||||
colour = "red"
|
||||
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
|
||||
if(3)
|
||||
ink = 1
|
||||
colour = "black"
|
||||
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
|
||||
attack_self(mob/user)
|
||||
switch(ink)
|
||||
if(1)
|
||||
ink = 2
|
||||
colour = "blue"
|
||||
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
|
||||
if(2)
|
||||
ink = 3
|
||||
colour = "red"
|
||||
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
|
||||
if(3)
|
||||
ink = 1
|
||||
colour = "black"
|
||||
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
|
||||
|
||||
/obj/item/device/fluff/amy_player //Music player - Amy Heris - gollee - DONE - Modding
|
||||
name = "music player"
|
||||
@@ -442,74 +316,66 @@
|
||||
"Affinity",
|
||||
"Dream Spark"
|
||||
)
|
||||
/obj/item/clothing/ears/headphone
|
||||
name = "Headphone"
|
||||
desc = "Headphones made for special players..."
|
||||
icon_state = "earmuffs"
|
||||
item_state = "earmuffs"
|
||||
slot_flags = SLOT_EARS //| SLOT_TWOEARS
|
||||
|
||||
|
||||
|
||||
//Totally damned surprised this worked on the first go. Huh, well, it works! Considering integration into main code as well. - Skull132
|
||||
/obj/item/device/fluff/amy_player/emp_act(severity)
|
||||
emped = 1
|
||||
icon_state = "amy_player_broken"
|
||||
playing = 0
|
||||
emp_act(severity)
|
||||
emped = 1
|
||||
icon_state = "amy_player_broken"
|
||||
playing = 0
|
||||
|
||||
/obj/item/device/fluff/amy_player/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (emped == 1)
|
||||
if(istype(O, /obj/item/weapon/screwdriver) && fixed == 0)
|
||||
fixed = 1
|
||||
user << "<span class='notice'>You unfasten the back panel.</span>"
|
||||
if(istype(O, /obj/item/device/multitool) && fixed == 1)
|
||||
fixed = 0
|
||||
user << "<span class='notice'>You quickly pulse a few fires, and reset the screen and device.</span>"
|
||||
emped = 0
|
||||
icon_state = "amy_player_off"
|
||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (emped == 1)
|
||||
if(istype(O, /obj/item/weapon/screwdriver) && fixed == 0)
|
||||
fixed = 1
|
||||
user << "<span class='notice'>You unfasten the back panel.</span>"
|
||||
if(istype(O, /obj/item/device/multitool) && fixed == 1)
|
||||
fixed = 0
|
||||
user << "<span class='notice'>You quickly pulse a few fires, and reset the screen and device.</span>"
|
||||
emped = 0
|
||||
icon_state = "amy_player_off"
|
||||
|
||||
|
||||
return
|
||||
// else
|
||||
// user << "<span class='notice'>You see little reason to start hacking into the player's wiring.</span>"
|
||||
return
|
||||
// else
|
||||
// user << "<span class='notice'>You see little reason to start hacking into the player's wiring.</span>"
|
||||
|
||||
/obj/item/device/fluff/amy_player/attack_self(mob/user)
|
||||
if(emped)
|
||||
user<< "<span class='notice'>The screen flickers and blinks with errors. It looks like it's about to give up the ghost.</span>"
|
||||
else if(playing == 0)
|
||||
var/mob/living/carbon/human/M = usr
|
||||
var/pickedsong = input("Select the song you want to play.","Songs", null, null) in songs
|
||||
if(istype(M.l_ear, /obj/item/clothing/ears/headphone) || istype(M.r_ear, /obj/item/clothing/ears/headphone))
|
||||
switch(pickedsong)
|
||||
if("Dream Spark")
|
||||
usr << sound('sound/mp3/dreamspark.ogg')
|
||||
if("Second Chance")
|
||||
usr << sound('sound/mp3/secondchance.ogg')
|
||||
if("Redoubt")
|
||||
usr << sound('sound/mp3/redoubt.ogg')
|
||||
if("Affinity")
|
||||
usr << sound('sound/mp3/affinity.ogg')
|
||||
if("Lord of Light")
|
||||
usr << sound('sound/mp3/lordoflight.ogg')
|
||||
else
|
||||
for(var/mob/I in view())
|
||||
attack_self(mob/user)
|
||||
if(emped)
|
||||
user<< "<span class='notice'>The screen flickers and blinks with errors. It looks like it's about to give up the ghost.</span>"
|
||||
else if(playing == 0)
|
||||
var/mob/living/carbon/human/M = usr
|
||||
var/pickedsong = input("Select the song you want to play.","Songs", null, null) in songs
|
||||
if(istype(M.l_ear, /obj/item/clothing/ears/headphone) || istype(M.r_ear, /obj/item/clothing/ears/headphone))
|
||||
switch(pickedsong)
|
||||
if("Dream Spark")
|
||||
I << sound('sound/mp3/dreamspark.ogg')
|
||||
usr << sound('sound/mp3/dreamspark.ogg')
|
||||
if("Second Chance")
|
||||
I << sound('sound/mp3/secondchance.ogg')
|
||||
usr << sound('sound/mp3/secondchance.ogg')
|
||||
if("Redoubt")
|
||||
I << sound('sound/mp3/redoubt.ogg')
|
||||
usr << sound('sound/mp3/redoubt.ogg')
|
||||
if("Affinity")
|
||||
I << sound('sound/mp3/affinity.ogg')
|
||||
usr << sound('sound/mp3/affinity.ogg')
|
||||
if("Lord of Light")
|
||||
I << sound('sound/mp3/lordoflight.ogg')
|
||||
user << "<span class='notice'>You turn on the music player, selecting a song. A song called '[pickedsong]' starts playing through the earbuds as the device sparks to life.</span>"
|
||||
icon_state = "amy_player_on"
|
||||
playing = 1
|
||||
else
|
||||
user << "<span class='notice'>You turn off the music player.</span>"
|
||||
playing = 0
|
||||
usr << sound('sound/mp3/lordoflight.ogg')
|
||||
else
|
||||
for(var/mob/I in view())
|
||||
switch(pickedsong)
|
||||
if("Dream Spark")
|
||||
I << sound('sound/mp3/dreamspark.ogg')
|
||||
if("Second Chance")
|
||||
I << sound('sound/mp3/secondchance.ogg')
|
||||
if("Redoubt")
|
||||
I << sound('sound/mp3/redoubt.ogg')
|
||||
if("Affinity")
|
||||
I << sound('sound/mp3/affinity.ogg')
|
||||
if("Lord of Light")
|
||||
I << sound('sound/mp3/lordoflight.ogg')
|
||||
user << "<span class='notice'>You turn on the music player, selecting a song. A song called '[pickedsong]' starts playing through the earbuds as the device sparks to life.</span>"
|
||||
icon_state = "amy_player_on"
|
||||
playing = 1
|
||||
else
|
||||
user << "<span class='notice'>You turn off the music player.</span>"
|
||||
playing = 0
|
||||
|
||||
|
||||
/* if(0)
|
||||
@@ -529,6 +395,13 @@
|
||||
/ "Dream Spark"
|
||||
*/
|
||||
|
||||
/obj/item/clothing/ears/headphone
|
||||
name = "Headphone"
|
||||
desc = "Headphones made for special players..."
|
||||
icon_state = "earmuffs"
|
||||
item_state = "earmuffs"
|
||||
slot_flags = SLOT_EARS //| SLOT_TWOEARS
|
||||
|
||||
/obj/item/device/fluff/sten_synth //VoiceOS.V2 - Sten Asval - vtol - DONE
|
||||
name = "VoiceOS.V2"
|
||||
desc = "A text-to-speech device with an appearance that is not too futuristic. It looks slim and light. On the back of it there are initials in silver: SA."
|
||||
@@ -669,20 +542,21 @@
|
||||
item_color = "cecillia_locket1"
|
||||
slots = 1
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/pill/cecillia_pill(hold)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/cecillia_pill
|
||||
name = "Cici's moonshine pill"
|
||||
desc = "Smells of home-made remedies."
|
||||
icon_state = "pill8"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 5)
|
||||
reagents.add_reagent("paroxetine", 5)
|
||||
|
||||
/obj/item/clothing/tie/storage/fluff/cecillia_locket/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/pill/cecillia_pill(hold)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/fluff/cecillia_satchel //Satchel-bag - Cecillia Lambert - casperf1 - SPRITE
|
||||
name = "satchel-bag"
|
||||
desc = "This looks old, is not yours and if you're wearing it, the original owner is probably dead."
|
||||
@@ -737,17 +611,6 @@
|
||||
icon_state = "leo_coat"
|
||||
item_state = "leo_coat"
|
||||
|
||||
/*
|
||||
/obj/item/device/modkit/fluff/leo_modkit //Weapon case - Leo Wyatt - keinto - DONE
|
||||
name = "weapon case"
|
||||
desc = "A sturdy leather case, with a velvet covered interior.."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "leo_mod"
|
||||
parts = MODKIT_HELMET
|
||||
from_helmet = list(/obj/item/weapon/gun/projectile/detective/semiauto)
|
||||
to_helmet = list(/obj/item/weapon/gun/projectile/detective/semiauto/fluff/leo_gun)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/gun/projectile/detective/semiauto/fluff/leo_gun //Instant Prosecutor - Leo Wyatt - keinto - DONE (stab)
|
||||
name = "\improper Instant Prosecutor"
|
||||
desc = "An original Colt 1911 pistol. Slightly worn on the edges, this gun has its name embedded on the side."
|
||||
@@ -859,15 +722,15 @@
|
||||
item_state = "ushanka_avadown"
|
||||
icon_state = "ushankadown"
|
||||
|
||||
/obj/item/clothing/head/ushanka/fluff/ava_ushanka/attack_self(mob/user as mob)
|
||||
if(src.icon_state == "ushankadown")
|
||||
src.icon_state = "ushankaup"
|
||||
src.item_state = "ushanka_avaup"
|
||||
user << "You raise the ear flaps on the ushanka."
|
||||
else
|
||||
src.icon_state = "ushankadown"
|
||||
src.item_state = "ushanka_avadown"
|
||||
user << "You lower the ear flaps on the ushanka."
|
||||
attack_self(mob/user as mob)
|
||||
if(src.icon_state == "ushankadown")
|
||||
src.icon_state = "ushankaup"
|
||||
src.item_state = "ushanka_avaup"
|
||||
user << "You raise the ear flaps on the ushanka."
|
||||
else
|
||||
src.icon_state = "ushankadown"
|
||||
src.item_state = "ushanka_avadown"
|
||||
user << "You lower the ear flaps on the ushanka."
|
||||
|
||||
/obj/item/clothing/tie/fluff/hamil_badge // Internal Investigations Badge - Muhammad Hamil - Jackboot - DONE
|
||||
name = "Internal Investigations Badge"
|
||||
@@ -875,13 +738,13 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
item_state = "hamil_badge"
|
||||
|
||||
/obj/item/clothing/tie/fluff/hamil_badge/attack_self(mob/user as mob)
|
||||
if(isliving(user))
|
||||
user.visible_message("\red [user] flashes their [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis..","\red You display the [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis.")
|
||||
attack_self(mob/user as mob)
|
||||
if(isliving(user))
|
||||
user.visible_message("\red [user] flashes their [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis..","\red You display the [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis.")
|
||||
|
||||
/obj/item/clothing/tie/fluff/hamil_badge/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(isliving(user))
|
||||
user.visible_message("\red [user] invades [M]'s personal space, thrusting [src] into their face insistently.","\red You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.")
|
||||
attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(isliving(user))
|
||||
user.visible_message("\red [user] invades [M]'s personal space, thrusting [src] into their face insistently.","\red You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.")
|
||||
|
||||
/obj/item/clothing/mask/gas/fluff/stefan_mask // Modified Gas Mask - Oliver Stefan - Nbielinski - DONE
|
||||
desc = "This odd looking gas mask is quite clearly not of NanoTrasen origin as it sports a black metal polish, as well as a reflective face plate that mirrors the view of the mask itself. This particular mask appears to breathe with the user, hissing when they exhale, and whining softly as they inhale."
|
||||
@@ -902,43 +765,43 @@
|
||||
force = 2
|
||||
var/on = 0
|
||||
|
||||
/obj/item/weapon/melee/fluff/balisong/attack_self(mob/user as mob)
|
||||
on = !on
|
||||
if(on)
|
||||
user.visible_message("\red With but a flashy twirl of their fingers, [user] flicks open the balisong.",\
|
||||
"\red You with a bit a flair, open the balisong. The metallic shine of the blade touching your gaze.",\
|
||||
"You hear an ominous click.")
|
||||
icon_state = "balisong_1"
|
||||
item_state = "balisong_m"
|
||||
w_class = 3
|
||||
force = 2
|
||||
attack_verb = list("prodded")
|
||||
else
|
||||
user.visible_message("\blue Without even looking, [user] casually flicks the balisong closed.",\
|
||||
"\blue You skilfully close the balisong.",\
|
||||
"You hear a click.")
|
||||
icon_state = "balisong_0"
|
||||
w_class = 2
|
||||
force = 2
|
||||
attack_verb = list("thumped")
|
||||
attack_self(mob/user as mob)
|
||||
on = !on
|
||||
if(on)
|
||||
user.visible_message("\red With but a flashy twirl of their fingers, [user] flicks open the balisong.",\
|
||||
"\red You with a bit a flair, open the balisong. The metallic shine of the blade touching your gaze.",\
|
||||
"You hear an ominous click.")
|
||||
icon_state = "balisong_1"
|
||||
item_state = "balisong_m"
|
||||
w_class = 3
|
||||
force = 2
|
||||
attack_verb = list("prodded")
|
||||
else
|
||||
user.visible_message("\blue Without even looking, [user] casually flicks the balisong closed.",\
|
||||
"\blue You skilfully close the balisong.",\
|
||||
"You hear a click.")
|
||||
icon_state = "balisong_0"
|
||||
w_class = 2
|
||||
force = 2
|
||||
attack_verb = list("thumped")
|
||||
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
|
||||
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
|
||||
add_fingerprint(user)
|
||||
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
|
||||
add_fingerprint(user)
|
||||
|
||||
if(blood_overlay && blood_DNA && (blood_DNA.len >= 1))
|
||||
var/icon/I = new /icon(src.icon, src.icon_state)
|
||||
I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD)
|
||||
I.Blend(new /icon('icons/effects/blood.dmi', "itemblood"),ICON_MULTIPLY)
|
||||
blood_overlay = I
|
||||
if(blood_overlay && blood_DNA && (blood_DNA.len >= 1))
|
||||
var/icon/I = new /icon(src.icon, src.icon_state)
|
||||
I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD)
|
||||
I.Blend(new /icon('icons/effects/blood.dmi', "itemblood"),ICON_MULTIPLY)
|
||||
blood_overlay = I
|
||||
|
||||
overlays += blood_overlay
|
||||
overlays += blood_overlay
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/chair/wheelchair/fluff/kit // Kit's Wheelchair - Cassidy Kit - Meowykins - DONE
|
||||
name = "Kit's Wheelchair"
|
||||
@@ -948,12 +811,12 @@
|
||||
anchored = 0
|
||||
movable = 1
|
||||
|
||||
obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
|
||||
overlays = null
|
||||
var/image/O = image(icon = 'icons/obj/custom_items.dmi', icon_state = "kit_w_overlay", layer = FLY_LAYER, dir = src.dir)
|
||||
overlays += O
|
||||
if(buckled_mob)
|
||||
buckled_mob.dir = dir
|
||||
handle_rotation()
|
||||
overlays = null
|
||||
var/image/O = image(icon = 'icons/obj/custom_items.dmi', icon_state = "kit_w_overlay", layer = FLY_LAYER, dir = src.dir)
|
||||
overlays += O
|
||||
if(buckled_mob)
|
||||
buckled_mob.dir = dir
|
||||
|
||||
/obj/item/weapon/storage/fluff/binder // Black Binder - Cassidy Kit - Meowykins - DONE
|
||||
name = "Black Binder"
|
||||
@@ -966,13 +829,13 @@ obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
|
||||
"/obj/item/weapon/pen"
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/fluff/binder/New()
|
||||
..()
|
||||
new /obj/item/weapon/folder/blue(src)
|
||||
new /obj/item/weapon/folder/red(src)
|
||||
new /obj/item/weapon/folder/white(src)
|
||||
new /obj/item/weapon/folder/yellow(src)
|
||||
new /obj/item/weapon/pen/fluff/kit_pen(src)
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/folder/blue(src)
|
||||
new /obj/item/weapon/folder/red(src)
|
||||
new /obj/item/weapon/folder/white(src)
|
||||
new /obj/item/weapon/folder/yellow(src)
|
||||
new /obj/item/weapon/pen/fluff/kit_pen(src)
|
||||
|
||||
/obj/item/weapon/pen/fluff/kit_pen // Fountain Pen - Cassidy Kit - Meowykins - DONE
|
||||
desc = "A small fountain pen. It has several spots to change the cartridge inside for another color, as well as a selector switch for ease of use."
|
||||
@@ -982,20 +845,20 @@ obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
|
||||
item_state = "pen"
|
||||
var/ink = 1
|
||||
|
||||
/obj/item/weapon/pen/fluff/kit_pen/attack_self(mob/user)
|
||||
switch(ink)
|
||||
if(1)
|
||||
ink = 2
|
||||
colour = "blue"
|
||||
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
|
||||
if(2)
|
||||
ink = 3
|
||||
colour = "red"
|
||||
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
|
||||
if(3)
|
||||
ink = 1
|
||||
colour = "black"
|
||||
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
|
||||
attack_self(mob/user)
|
||||
switch(ink)
|
||||
if(1)
|
||||
ink = 2
|
||||
colour = "blue"
|
||||
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
|
||||
if(2)
|
||||
ink = 3
|
||||
colour = "red"
|
||||
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
|
||||
if(3)
|
||||
ink = 1
|
||||
colour = "black"
|
||||
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
|
||||
|
||||
/obj/structure/sign/shaw_degree //Xenonuerology Doctorate - Alexis Shaw - Tenenza
|
||||
name = "\improper Xenonuerology degree"//Description trimmed down, summarized.
|
||||
@@ -1018,4 +881,39 @@ obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
|
||||
item_state = "rohitinjacket"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/fluff/language_processor //Advanced Language Processing Board - Android - TheCritsyBear
|
||||
name = "Advanced Language Processing Board"
|
||||
desc = "A slightly advanced, but not uncommon upgrade module considered to be the cheapest of its kind. It has the markings of an independent retailer- not standard NanoTrasen hardware."
|
||||
icon_state = "paragon_datachip"
|
||||
item_state = "dermal"
|
||||
slot_flags = SLOT_HEAD
|
||||
|
||||
/obj/item/fluff/paragon_datachip //Data Chip - PARAGON - MasterZipZero
|
||||
name = "data chip"
|
||||
desc = "A small bluespace data chip, marked with a tiny heart."
|
||||
icon_state = "paragon_datachip"
|
||||
item_state = "dermal"
|
||||
slot_flags = SLOT_HEAD
|
||||
w_class = 1
|
||||
|
||||
/obj/item/clothing/tie/fluff/karima_datadrive //Data Drive Pendant - Karima Mo'Taki - NebulaFlare
|
||||
name = "Data drive"
|
||||
desc = "A small necklace, the pendant flips open to reveal a data drive."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "motaki_datadrive"
|
||||
item_state = "holobadge-cord"
|
||||
item_color = "holobadge-cord"
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
|
||||
/obj/item/clothing/tie/fluff/dove_necklace //Diamond Necklace - Charlie Dove - Thundy
|
||||
name = "Diamond necklace"
|
||||
desc = "Small, gold chain with a diamond pendant. Looks expensive."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "dove_necklace"
|
||||
item_state = "dove_necklace"
|
||||
item_color = "dove_necklace"
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
@@ -1268,4 +1268,14 @@ I said no!
|
||||
reagents = list("sugar" = 5, "frostoil" = 5)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/mint
|
||||
|
||||
//////////////////////////////////////////
|
||||
// End of BS12 food port
|
||||
//////////////////////////////////////////
|
||||
|
||||
/datum/recipe/chocolatebox
|
||||
reagents = list("cream" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/chocolatebox
|
||||
@@ -14,6 +14,8 @@
|
||||
locked = 0
|
||||
mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
|
||||
var/obj/item/device/radio/radio = null//Let's give it a radio.
|
||||
|
||||
|
||||
/obj/item/device/mmi/posibrain/attack_self(mob/user as mob)
|
||||
if(brainmob && !brainmob.key && searching == 0)
|
||||
@@ -142,4 +144,33 @@
|
||||
// src.brainmob.brain_op_stage = 4.0
|
||||
dead_mob_list -= src.brainmob
|
||||
|
||||
radio = new(src)//Spawns a radio inside the MMI.
|
||||
radio.broadcasting = 0//So it's broadcasting from the start.
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/device/mmi/posibrain/verb/Toggle_Broadcasting() //totally not nicking from certain places. Yay.
|
||||
set name = "Toggle Broadcasting"
|
||||
set desc = "Toggle broadcasting channel on or off."
|
||||
set category = "Posi"
|
||||
set src = usr.loc//In user location, or in MMI in this case.
|
||||
set popup_menu = 0//Will not appear when right clicking.
|
||||
|
||||
if(brainmob.stat)//Only the brainmob will trigger these so no further check is necessary.
|
||||
brainmob << "Can't do that while incapacitated or dead."
|
||||
|
||||
radio.broadcasting = radio.broadcasting==1 ? 0 : 1
|
||||
brainmob << "\blue Radio is [radio.broadcasting==1 ? "now" : "no longer"] broadcasting."
|
||||
|
||||
/obj/item/device/mmi/posibrain/verb/Toggle_Listening()
|
||||
set name = "Toggle Listening"
|
||||
set desc = "Toggle listening channel on or off."
|
||||
set category = "Posi"
|
||||
set src = usr.loc
|
||||
set popup_menu = 0
|
||||
|
||||
if(brainmob.stat)
|
||||
brainmob << "Can't do that while incapacitated or dead."
|
||||
|
||||
radio.listening = radio.listening==1 ? 0 : 1
|
||||
brainmob << "\blue Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast."
|
||||
@@ -3,7 +3,7 @@
|
||||
if (silent)
|
||||
return
|
||||
|
||||
if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain))))
|
||||
if(!(container && (istype(container, /obj/item/device/mmi))))
|
||||
return //No MMI, can't speak, bucko./N
|
||||
else
|
||||
if(prob(emp_damage*4))
|
||||
@@ -15,4 +15,8 @@
|
||||
var/obj/item/device/mmi/radio_enabled/R = container
|
||||
if(R.radio)
|
||||
spawn(0) R.radio.hear_talk(src, sanitize(message))
|
||||
if(istype(container, /obj/item/device/mmi/posibrain))//For them posibrains that now get radios. Apparently.
|
||||
var/obj/item/device/mmi/posibrain/R = container
|
||||
if(R.radio)
|
||||
spawn(0) R.radio.hear_talk(src, sanitize(message))
|
||||
..()
|
||||
@@ -592,6 +592,11 @@ proc/get_damage_icon_part(damage_state, body_part)
|
||||
if(!tie_color) tie_color = w_uniform:hastie.icon_state
|
||||
standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]")
|
||||
|
||||
if(w_uniform:aband) //SAME THING AS ABOVE, WHY AM I TYPING LIKE THIS, BECAUSE ABOVE
|
||||
var/aband_color = w_uniform:aband.item_color
|
||||
if(!aband_color) aband_color = w_uniform:aband.icon_state
|
||||
standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[aband_color]")
|
||||
|
||||
overlays_standing[UNIFORM_LAYER] = standing
|
||||
else
|
||||
overlays_standing[UNIFORM_LAYER] = null
|
||||
|
||||
@@ -337,6 +337,10 @@
|
||||
card.forceMove(src)
|
||||
card.screen_loc = null
|
||||
|
||||
//Controlling the visibility of sign language.
|
||||
if(translator_on)
|
||||
add_language("Sign language", 0)
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T)) T.visible_message("<b>[src]</b> folds outwards, expanding into a mobile form.")
|
||||
|
||||
@@ -439,6 +443,9 @@
|
||||
card.forceMove(card.loc)
|
||||
canmove = 0
|
||||
|
||||
if(translator_on)
|
||||
remove_language("Sign language")
|
||||
|
||||
/mob/living/silicon/pai/start_pulling(var/atom/movable/AM)
|
||||
|
||||
if(istype(AM,/obj/item))
|
||||
|
||||
@@ -693,7 +693,6 @@
|
||||
if(translator_on)
|
||||
translator_on = 0
|
||||
|
||||
remove_language("Sign language")
|
||||
remove_language("Sinta'unathi")
|
||||
remove_language("Siik'Maas")
|
||||
remove_language("Skrellian")
|
||||
@@ -704,6 +703,9 @@
|
||||
remove_language("Tradeband")
|
||||
remove_language("Gutter")
|
||||
|
||||
if(canmove) //Easiest way to check whether or not the thing is actually deployed or not, for managing Sign Language.
|
||||
remove_language("Sign language")
|
||||
|
||||
src << "\blue Translator Module toggled OFF."
|
||||
|
||||
else
|
||||
@@ -718,6 +720,8 @@
|
||||
add_language("Sol Common")
|
||||
add_language("Tradeband")
|
||||
add_language("Gutter")
|
||||
add_language("Sign language", 0)
|
||||
|
||||
if(canmove)
|
||||
add_language("Sign language", 0)
|
||||
|
||||
src << "\blue Translator Module toggled ON."
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
response_harm = "kicks the"
|
||||
var/turns_since_scan = 0
|
||||
var/mob/living/simple_animal/mouse/movement_target
|
||||
var/ai_active = 1
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
@@ -25,15 +26,16 @@
|
||||
|
||||
/mob/living/simple_animal/cat/Life()
|
||||
//MICE!
|
||||
if((src.loc) && isturf(src.loc))
|
||||
if(!stat && !resting && !buckled)
|
||||
for(var/mob/living/simple_animal/mouse/M in view(1,src))
|
||||
if(!M.stat)
|
||||
M.splat()
|
||||
emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]"))
|
||||
movement_target = null
|
||||
stop_automated_movement = 0
|
||||
break
|
||||
if(ai_active)
|
||||
if((src.loc) && isturf(src.loc))
|
||||
if(!stat && !resting && !buckled)
|
||||
for(var/mob/living/simple_animal/mouse/M in view(1,src))
|
||||
if(!M.stat)
|
||||
M.splat()
|
||||
emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]"))
|
||||
movement_target = null
|
||||
stop_automated_movement = 0
|
||||
break
|
||||
|
||||
..()
|
||||
|
||||
@@ -42,7 +44,7 @@
|
||||
emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily."))
|
||||
break
|
||||
|
||||
if(!stat && !resting && !buckled)
|
||||
if(ai_active && !stat && !resting && !buckled)
|
||||
turns_since_scan++
|
||||
if(turns_since_scan > 5)
|
||||
walk_to(src,0)
|
||||
@@ -66,12 +68,11 @@
|
||||
|
||||
var/mob/living/carbon/H = over_object
|
||||
if(!istype(H)) return ..()
|
||||
if(in_range(usr, src))
|
||||
if(H.a_intent == "help")
|
||||
get_scooped(H)
|
||||
return
|
||||
|
||||
if(H.a_intent == "help")
|
||||
get_scooped(H)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
//RUNTIME IS ALIVE! SQUEEEEEEEE~
|
||||
/mob/living/simple_animal/cat/Runtime
|
||||
@@ -87,4 +88,4 @@
|
||||
icon_state = "kitten"
|
||||
icon_living = "kitten"
|
||||
icon_dead = "kitten_dead"
|
||||
gender = NEUTER
|
||||
gender = NEUTER
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
|
||||
var/mob/living/carbon/H = over_object
|
||||
if(!istype(H)) return ..()
|
||||
|
||||
if(H.a_intent == "help")
|
||||
get_scooped(H)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
if(in_range(usr, src))
|
||||
if(H.a_intent == "help")
|
||||
get_scooped(H)
|
||||
return
|
||||
|
||||
@@ -114,12 +114,10 @@
|
||||
|
||||
var/mob/living/carbon/H = over_object
|
||||
if(!istype(H)) return ..()
|
||||
|
||||
if(H.a_intent == "help")
|
||||
get_scooped(H)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
if(in_range(usr, src))
|
||||
if(H.a_intent == "help")
|
||||
get_scooped(H)
|
||||
return
|
||||
|
||||
/*
|
||||
* Mouse types
|
||||
@@ -150,4 +148,8 @@
|
||||
response_harm = "splats"
|
||||
|
||||
/mob/living/simple_animal/mouse/can_use_vents()
|
||||
return
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/mouse/ghost()
|
||||
client.time_died_as_mouse = world.time
|
||||
..()
|
||||
@@ -492,7 +492,7 @@ datum/preferences
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-med"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
if(EMT)
|
||||
if(DOCTOR)
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
if(prob(1))
|
||||
@@ -506,18 +506,15 @@ datum/preferences
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-med"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
if(DOCTOR)
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
||||
if(EMT)
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "emt_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
if(prob(1))
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "surgeon"), ICON_OVERLAY)
|
||||
else
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY)
|
||||
switch(backbag)
|
||||
if(2)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "medicalpack"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "emtpack"), ICON_OVERLAY)
|
||||
if(3)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-med"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-emt"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
if(GENETICIST)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
t = replacetext(t, "\[/u\]", "</U>")
|
||||
t = replacetext(t, "\[large\]", "<font size=\"4\">")
|
||||
t = replacetext(t, "\[/large\]", "</font>")
|
||||
t = replacetext(t, "\[sign\]", "<font face=\"[signfont]\"><i>[user ? user.real_name : "Anonymous"]</i></font>")
|
||||
t = replacetext(t, "\[sign\]", "<font face=\"[user ? user.mind.signature_font : signfont]\">[user ? user.mind.signature : "<i>Anonymous</i>"]</font>")
|
||||
t = replacetext(t, "\[field\]", "<span class=\"paper_field\"></span>")
|
||||
|
||||
if(!iscrayon)
|
||||
|
||||
@@ -142,6 +142,15 @@ Commenting out right now, due to a lack of sprites existing. I hate on-mob weapo
|
||||
user.client.view = world.view
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/rifle/sniperrifle/ready_to_fire()
|
||||
if(!zoom)
|
||||
return 0
|
||||
if(world.time >= last_fired + fire_delay)
|
||||
last_fired = world.time
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
///obj/item/weapon/gun/energy/rifle/sniperrifle/update_icon() //Currently only here to fuck with the on-mob icons.
|
||||
// icon_state = "sniper[wielded]"
|
||||
// return
|
||||
|
||||
@@ -1177,8 +1177,40 @@ datum
|
||||
required_container = /obj/item/slime_extract/silver
|
||||
required_other = 1
|
||||
on_reaction(var/datum/reagents/holder)
|
||||
var/blocked = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/burger,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/bar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/candycane,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cash,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cookie,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cotton,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/donut,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gum,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummybear,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummyworm,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jawbreaker,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jellybean,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/sucker,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/bread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/cake,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/donkpocket,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/jelly,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/kebab,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/pie,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/salad,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/waffles,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/soup,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cereal,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slimesoup)
|
||||
|
||||
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks
|
||||
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - blocked
|
||||
// BORK BORK BORK
|
||||
|
||||
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
@@ -3309,3 +3309,31 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebox
|
||||
name = "box of chocolates"
|
||||
desc = "A heart-shaped box of sweet, sweet chocolate-y goodness."
|
||||
icon_state = "chocolatebox-closed"
|
||||
wrapped = 1
|
||||
bitesize = 1
|
||||
trash = /obj/item/trash/chocolatebox
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
if(wrapped)
|
||||
open(user)
|
||||
|
||||
proc/open(mob/user as mob)
|
||||
wrapped = 0
|
||||
user << "You open the [src]."
|
||||
icon_state = "chocolatebox-open"
|
||||
update_icon()
|
||||
|
||||
attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
if(wrapped)
|
||||
user << "You should open the box, first."
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -499,6 +499,7 @@
|
||||
var/destinationTag = "" // changes if contains a delivery container
|
||||
var/tomail = 0 //changes if contains wrapped package
|
||||
var/hasmob = 0 //If it contains a mob
|
||||
var/contained_mobs = list()
|
||||
|
||||
var/partialTag = "" //set by a partial tagger the first time round, then put in destinationTag if it goes through again.
|
||||
|
||||
@@ -512,6 +513,7 @@
|
||||
for(var/mob/living/M in D)
|
||||
if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone))
|
||||
hasmob = 1
|
||||
contained_mobs += M
|
||||
|
||||
//Checks 1 contents level deep. This means that players can be sent through disposals...
|
||||
//...but it should require a second person to open the package. (i.e. person inside a wrapped locker)
|
||||
@@ -520,6 +522,7 @@
|
||||
for(var/mob/living/M in O.contents)
|
||||
if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone))
|
||||
hasmob = 1
|
||||
contained_mobs += M
|
||||
|
||||
// now everything inside the disposal gets put into the holder
|
||||
// note AM since can contain mobs or objs
|
||||
@@ -561,7 +564,7 @@
|
||||
var/obj/structure/disposalpipe/last
|
||||
while(active)
|
||||
if(hasmob && prob(3))
|
||||
for(var/mob/living/H in src)
|
||||
for(var/mob/living/H in contained_mobs)
|
||||
if(!istype(H,/mob/living/silicon/robot/drone)) //Drones use the mailing code to move through the disposal system,
|
||||
H.take_overall_damage(20, 0, "Blunt Trauma")//horribly maim any living creature jumping down disposals. c'est la vie
|
||||
|
||||
|
||||
Reference in New Issue
Block a user