Squashed commit of the following:

commit 9af16b9757
Merge: 3258c82 9a4d7b7
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 22:07:35 2015 +0200

    Merge pull request #437 from Aurorastation/development

    Update, 08MAR2015

commit 9a4d7b7dff
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 22:06:54 2015 +0200

    Changelog Addendum, 08MAR2015

    Missed some things!

commit 0a1740fcf3
Author: 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

commit 07f456558d
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 21:52:05 2015 +0200

    Changelog, 08MAR2015

commit 7a9e981486
Merge: c461bfa 6ec29dc
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 21:34:33 2015 +0200

    Merge pull request #436 from skull132/master

    Master

commit 6ec29dcb51
Author: 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

commit 51886224ee
Merge: 37dc607 c461bfa
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 21:01:21 2015 +0200

    Merge pull request #29 from Aurorastation/development

    Conflict Clearance

commit c461bfa430
Merge: fb726d4 37dc607
Author: 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

commit 37dc607491
Author: 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

commit 831a457c25
Merge: 00b97c0 fb726d4
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 15:02:30 2015 +0200

    Merge pull request #28 from Aurorastation/development

    Conflict Clearance

commit fb726d4645
Merge: b6299cb df99bfa
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 14:59:29 2015 +0200

    Merge pull request #425 from Serveris/development

    Custom items

commit b6299cb2c0
Merge: 04fed60 7416522
Author: 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

commit 04fed60c45
Merge: dab11dc decaf5d
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 14:58:51 2015 +0200

    Merge pull request #426 from Meowykins/master

    Mostly new stuff.

commit df99bfa32d
Merge: 906e2ef dab11dc
Author: Serveris <blh1997@hotmail.com>
Date:   Sat Mar 7 19:23:45 2015 -0500

    Merge pull request #3 from Aurorastation/development

    Conflict Clearance

commit dab11dc481
Merge: 199371b ba1cd8f
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sun Mar 8 01:26:35 2015 +0200

    Merge pull request #427 from SoundScopes/master

    Scopes Updates

commit 00b97c04cc
Author: 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.

commit b83cdc9a3f
Author: skull132 <erki.meinberg@gmail.com>
Date:   Sat Mar 7 14:46:19 2015 +0200

    Chocolatebox

commit 09cbc8cc61
Author: 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.

commit ba1cd8f0f1
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Mar 6 15:48:50 2015 +0000

    Grammar

commit 05315a863f
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Mar 6 15:48:37 2015 +0000

    Sniper needs Zoom

commit 6f0135b2a9
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Mar 6 15:02:15 2015 +0000

    Only aim when scoping

commit c6a3bd8a8d
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Mar 6 14:31:39 2015 +0000

    JMP fix

commit 181d610c50
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Mar 6 14:07:21 2015 +0000

    NanoUI Debug

commit b6947e8b61
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Mar 6 14:07:05 2015 +0000

    Closet Space

commit 863cea572a
Author: 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

commit 4a6da81963
Author: 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

commit 906e2ef445
Author: 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.

commit adbf99c092
Merge: 14e0600 4edae7b
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Wed Mar 4 14:50:37 2015 +0000

    Merge branch 'master' of https://github.com/SoundScopes/Aurora

commit 14e060090a
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Wed Mar 4 14:50:29 2015 +0000

    Rights check Dumb

commit 4edae7bb99
Author: SoundScopes <Musical.Flow@live.com>
Date:   Wed Mar 4 05:42:46 2015 +0000

    Re-enable the AI

commit e4b1db68b5
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Tue Mar 3 14:04:35 2015 +0000

    Player Memos

commit 84fd6a1a6c
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Tue Mar 3 13:58:53 2015 +0000

    Armbands

commit ea83e9d5a5
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Tue Mar 3 13:57:19 2015 +0000

    Runtime

    I can stop it attacking Mice now

commit decaf5dc5e
Author: Meowykins <meowness10@gmail.com>
Date:   Mon Mar 2 10:40:58 2015 -0600

    Armor Changes

    Allows security armor to hold flashlights and badges.

commit 15275de5aa
Author: Meowykins <meowness10@gmail.com>
Date:   Mon Mar 2 10:40:32 2015 -0600

    New Storage

    For minerals. Used in RnD and Robotics.

commit 43276af346
Merge: adb0629 3258c82
Author: Meowykins <morgannhart@gmail.com>
Date:   Mon Mar 2 09:23:18 2015 -0600

    Merge pull request #6 from Aurorastation/master

    Update

commit a27036eb35
Author: 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

commit 79d3b13838
Merge: 562abf5 199371b
Author: Serveris <blh1997@hotmail.com>
Date:   Sat Feb 28 16:49:28 2015 -0500

    Merge pull request #2 from Aurorastation/development

    PR #3

commit 086b3f574f
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Sat Feb 28 10:13:55 2015 +0000

    Incorrect access

commit fe333f320a
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Sat Feb 28 10:13:41 2015 +0000

    Dsay runtime

commit 26b2d7418b
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Sat Feb 28 10:11:26 2015 +0000

    A little change to logs

    Added prefixes for specific logs

commit 863af7bd00
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Fri Feb 27 10:27:26 2015 +0000

    Disposals hurt

    It was actually a bug, how about that.

commit 199371bc1b
Merge: 59e17f7 a9b8154
Author: SoundScopes <Musical.Flow@live.com>
Date:   Fri Feb 27 01:00:16 2015 +0000

    Merge pull request #417 from SoundScopes/master

    Development

commit a9b8154c68
Merge: 293d728 3258c82
Author: SoundScopes <Musical.Flow@live.com>
Date:   Fri Feb 27 00:59:52 2015 +0000

    Merge pull request #26 from Aurorastation/master

    Development

commit 562abf5071
Merge: 04761a0 59e17f7
Author: Serveris <blh1997@hotmail.com>
Date:   Thu Feb 26 19:07:42 2015 -0500

    Merge pull request #1 from Aurorastation/development

    PR #2

commit 9d8349229f
Merge: 05319af 3258c82
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 21:27:45 2015 +0200

    Merge pull request #27 from Aurorastation/master

    Yesss.

commit 3258c82d16
Merge: 23631ec 59e17f7
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 19:34:17 2015 +0200

    Merge pull request #415 from Aurorastation/development

    Remove Emergency Physician

commit 59e17f7e91
Author: 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.

commit 23631ec809
Merge: 8e71b76 2c8ee1e
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 19:26:14 2015 +0200

    Merge pull request #414 from Aurorastation/development

    Map Hotfix, 26FEB2015

commit 2c8ee1e4d7
Author: 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.

commit c2ed125af2
Author: 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.

commit 8e71b76e11
Merge: 2f242fb 2237cb2
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 17:21:55 2015 +0200

    Merge pull request #412 from Aurorastation/development

    EMT Spawn Fix

commit 2237cb21cb
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 17:20:36 2015 +0200

    EMT Spawn Fix

    Fixes the spawnpoints, a quick mistake.

commit 2f242fbfe5
Merge: 9e6d678 42971d3
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 16:56:39 2015 +0200

    Merge pull request #411 from Aurorastation/development

    Update, 26FEB2015

commit 42971d38e6
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 16:49:22 2015 +0200

    Removing Gravity.html

    Clean-up, basically.

commit 7520ac9cda
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 16:48:18 2015 +0200

    Changelog, 26FEB2015

commit 7c69a6ceab
Author: 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.

commit 641e2eb6fa
Author: 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

commit 39ace47ad6
Author: skull132 <erki.meinberg@gmail.com>
Date:   Thu Feb 26 16:27:56 2015 +0200

    Tidying Up: EMT

commit e6e9fdcc16
Merge: be24690 05319af
Author: 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

commit 05319afafa
Author: 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.

commit be24690724
Merge: 6672368 963bec0
Author: 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

commit 6672368180
Merge: 15ce683 293d728
Author: skull132 <erki.meinberg@gmail.com>
Date:   Wed Feb 25 21:22:25 2015 +0200

    Merge pull request #398 from SoundScopes/master

    Scopes Updates

commit 293d728ff2
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Wed Feb 25 19:19:18 2015 +0000

    It's your duty to change color

commit 15ce6832fd
Merge: c04fc4c adb0629
Author: skull132 <erki.meinberg@gmail.com>
Date:   Wed Feb 25 21:13:37 2015 +0200

    Merge pull request #402 from Meowykins/master

    Fixes

commit c04fc4ca95
Merge: ac562a4 6d5fa8d
Author: 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

commit ac562a4332
Merge: 04761a0 9e6d678
Author: skull132 <erki.meinberg@gmail.com>
Date:   Wed Feb 25 21:12:58 2015 +0200

    Merge pull request #408 from Aurorastation/master

    Backtraced Update

commit 9e6d6780e1
Merge: 72500c4 2d37875
Author: skull132 <erki.meinberg@gmail.com>
Date:   Wed Feb 25 17:25:35 2015 +0200

    Merge pull request #391 from Zuhayr/master

    Fixes #388

commit 6d5fa8dd60
Author: skull132 <erki.meinberg@gmail.com>
Date:   Wed Feb 25 17:14:39 2015 +0200

    Report a Bug Button

    Adds a button. Yup.

commit 0f9263aa51
Author: 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.

commit df229eba31
Author: 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.

commit adb06297a4
Author: Meowykins <meowness10@gmail.com>
Date:   Tue Feb 24 02:19:03 2015 -0600

    #401

    Bugfix for #401

commit 3c10938352
Merge: c970a4d 72500c4
Author: Meowykins <morgannhart@gmail.com>
Date:   Mon Feb 23 20:19:35 2015 -0600

    Merge pull request #5 from Aurorastation/master

    Stuff

commit e0b83b59a4
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Tue Feb 24 01:56:59 2015 +0000

    #384

commit d3bbdb1f46
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Tue Feb 24 00:12:01 2015 +0000

    Color Changes

commit a967f7fffa
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Mon Feb 23 12:44:06 2015 +0000

    Mouse cooldown

commit bca631d622
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Mon Feb 23 11:50:18 2015 +0000

    Stealth Runtime

commit 72500c4472
Merge: 0739b28 04761a0
Author: SoundScopes <Musical.Flow@live.com>
Date:   Mon Feb 23 04:36:51 2015 +0000

    Merge pull request #397 from Aurorastation/development

    Development

commit 04761a0791
Merge: 970dbfd dee4363
Author: 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.

commit 970dbfdd9d
Merge: 1a116db d2c523d
Author: SoundScopes <Musical.Flow@live.com>
Date:   Mon Feb 23 04:30:13 2015 +0000

    Merge pull request #396 from SoundScopes/master

    Damn runtimes

commit d2c523de5a
Author: SoundScopes <Musical.Flow@LIve.com>
Date:   Mon Feb 23 03:46:24 2015 +0000

    Damn runtimes

commit dee4363e63
Author: 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.

commit 2d378755ff
Author: Zuhayr <AGMogett@gmail.com>
Date:   Sat Feb 21 23:54:39 2015 +1030

    Fixes #388

commit ac250fac7f
Merge: 3a8084a 41321a0
Author: 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:
Jamini
2015-03-29 11:01:50 -04:00
parent 6e174bed90
commit 65ade0cd1f
64 changed files with 10881 additions and 10548 deletions
+59 -1
View File
@@ -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*/
+3 -3
View File
@@ -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>"
+6 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1
View File
@@ -151,6 +151,7 @@
host = key
world.update_status()
admin_memo_player_show()
if(holder)
add_admin_verbs()
admin_memo_show()
+45 -2
View File
@@ -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> - &lt;i&gt;Text&lt;/i&gt;</li>"
HTML += "<li><b>Bold</b> - &lt;b&gt;Text&lt;/b&gt;</li>"
HTML += "<li><small>Small size</small> - &lt;small&gt;Text&lt;/small&gt;</li>"
HTML += "<li><big>Big size</big> - &lt;big&gt;Text&lt;/big&gt;</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
+3 -3
View File
@@ -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
+216 -318
View File
@@ -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
+10
View File
@@ -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."
+5 -1
View File
@@ -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)
+1 -1
View File
@@ -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
+33 -1
View File
@@ -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
..()
+4 -1
View File
@@ -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