From 058ddea1b6ea1cd143da103ab65d0e2b6cf681fe Mon Sep 17 00:00:00 2001 From: "vageyenaman@gmail.com" Date: Sun, 9 Oct 2011 03:45:25 +0000 Subject: [PATCH] =?UTF-8?q?Bugfixes:=20=20=20=20=20=20=E2=97=A6=20Some=20h?= =?UTF-8?q?ead=20gear=20(nurse=20masks,=20kitty=20ears...)=20no=20longer?= =?UTF-8?q?=20block=20CPR.=20(Issue=20167)=20=20=20=20=20=20=E2=97=A6=20DN?= =?UTF-8?q?A=20Scanners=20no=20longer=20attempt=20to=20empty=20their=20con?= =?UTF-8?q?tents=20whenever=20something=20enters=20them.=20This=20fixes=20?= =?UTF-8?q?the=20issue=20with=20constructed=20scanners=20puking=20out=20th?= =?UTF-8?q?e=20circuitry=20they=20were=20made=20with.=20(Issue=20169)=20?= =?UTF-8?q?=20=20=20=20=20=E2=97=A6=20You=20can=20longer=20/me=20emote=20w?= =?UTF-8?q?hen=20you've=20been=20paralyzed=20by=20Zombie=20Powder.=20(Issu?= =?UTF-8?q?e=20168)=20=20=20=20=20=20=E2=97=A6=20Fixed=20some=20problems?= =?UTF-8?q?=20with=20MMIs=20/=20Robots=20/=20pAIs=20being=20able=20to=20un?= =?UTF-8?q?derstand=20eachother.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ◦ You can put items, that are not clothing/under or clothing/suit, on food trays. How it works is it loops through all acceptable items in the location and adds them to its overlays and a special list variable. I had to change the way mob/drop_item() works a bit. Trays have a maximum capacity, and items of a larger w_class take up more capacity. ◦ Slippery items like banana peels and soap have been nerfed significantly. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2335 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/clothing/gimmick.dm | 4 +- code/defines/obj/clothing/head.dm | 6 +- code/defines/obj/weapon.dm | 6 ++ code/game/dna.dm | 8 +- .../game/objects/items/weapons/clown_items.dm | 12 +-- code/game/objects/items/weapons/kitchen.dm | 93 +++++++++++++++++-- code/game/objects/storage/storage.dm | 16 +++- code/game/objects/tables_racks.dm | 16 ++-- code/modules/mob/living/carbon/brain/brain.dm | 4 + code/modules/mob/living/carbon/human/emote.dm | 4 + code/modules/mob/mob.dm | 7 +- icons/changelog.html | 16 ++++ 12 files changed, 162 insertions(+), 30 deletions(-) diff --git a/code/defines/obj/clothing/gimmick.dm b/code/defines/obj/clothing/gimmick.dm index cdfce897d11..c795cb0ebcd 100644 --- a/code/defines/obj/clothing/gimmick.dm +++ b/code/defines/obj/clothing/gimmick.dm @@ -2,13 +2,13 @@ name = "Rabbit Ears" desc = "Wearing these makes you looks useless, and only good for your sex appeal." icon_state = "bunny" - flags = FPRINT | TABLEPASS | HEADSPACE + flags = FPRINT | TABLEPASS /obj/item/clothing/head/kitty name = "Kitty Ears" desc = "A pair of kitty ears. Meow!" icon_state = "kitty" - flags = FPRINT | TABLEPASS | HEADSPACE + flags = FPRINT | TABLEPASS var/icon/mob var/icon/mob2 diff --git a/code/defines/obj/clothing/head.dm b/code/defines/obj/clothing/head.dm index 72c3165928f..d8e873497be 100644 --- a/code/defines/obj/clothing/head.dm +++ b/code/defines/obj/clothing/head.dm @@ -261,7 +261,7 @@ desc = "An amish looking helmet" icon_state = "tophat" item_state = "that" - flags = FPRINT|TABLEPASS|HEADSPACE + flags = FPRINT|TABLEPASS armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/helmet/greenbandana @@ -269,7 +269,7 @@ desc = "A green bandana with some fine nanotech lining." icon_state = "greenbandana" item_state = "greenbandana" - flags = FPRINT|TABLEPASS|HEADSPACE + flags = FPRINT|TABLEPASS armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15) /obj/item/clothing/head/helmet/riot @@ -303,4 +303,4 @@ name = "Nurse Hat" desc = "Smokin'" icon_state = "nursehat" - flags = FPRINT|TABLEPASS|HEADSPACE \ No newline at end of file + flags = FPRINT|TABLEPASS \ No newline at end of file diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 5a1cf01c9d8..74cb097fb68 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1249,6 +1249,7 @@ w_class = 3.0 flags = FPRINT | TABLEPASS | CONDUCT m_amt = 3000 + /* // NOPE var/food_total= 0 var/burger_amt = 0 var/cheese_amt = 0 @@ -1262,6 +1263,11 @@ var/meatbreadslice_amt = 0 var/salad_amt = 0 var/miscfood_amt = 0 + */ + var/list/carrying = list() // List of things on the tray. - Doohl + var/max_carry = 10 // w_class = 1 -- takes up 1 + // w_class = 2 -- takes up 3 + // w_class = 3 -- takes up 5 /obj/item/weapon/kitchen/utensil diff --git a/code/game/dna.dm b/code/game/dna.dm index e60e84a4eeb..d6594aed8c9 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -546,10 +546,12 @@ usr.loc = src src.occupant = usr src.icon_state = "scanner_1" - for(var/obj/O in src) + /* + for(var/obj/O in src) // THIS IS P. STUPID -- LOVE, DOOHL //O = null del(O) //Foreach goto(124) + */ src.add_fingerprint(usr) return @@ -569,9 +571,11 @@ M.loc = src src.occupant = M src.icon_state = "scanner_1" - for(var/obj/O in src) + /* + for(var/obj/O in src) // this is stupid too O.loc = src.loc //Foreach goto(154) + */ src.add_fingerprint(user) //G = null diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 208af3efd51..f8dd6391141 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -16,8 +16,8 @@ BIKE HORN M.pulling = null M << "\blue You slipped on the [name]!" playsound(src.loc, 'slip.ogg', 50, 1, -3) - M.stunned = 8 - M.weakened = 5 + M.stunned = 4 + M.weakened = 2 /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/HasEntered(AM as mob|obj) if (istype(AM, /mob/living/carbon)) @@ -28,8 +28,8 @@ BIKE HORN M.pulling = null M << "\blue You slipped on the [name]!" playsound(src.loc, 'slip.ogg', 50, 1, -3) - M.stunned = 10 - M.weakened = 7 + M.stunned = 8 + M.weakened = 5 /obj/item/weapon/soap/HasEntered(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist if (istype(AM, /mob/living/carbon)) @@ -40,8 +40,8 @@ BIKE HORN M.pulling = null M << "\blue You slipped on the [name]!" playsound(src.loc, 'slip.ogg', 50, 1, -3) - M.stunned = 8 - M.weakened = 5 + M.stunned = 3 + M.weakened = 2 /obj/item/weapon/soap/afterattack(atom/target, mob/user as mob) if(istype(target,/obj/effect/decal/cleanable)) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index b8c126dbb5b..937e256bbb8 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -93,6 +93,20 @@ KNIFE ///////////////////////////////// TRAY -Agouri :3 /////////////////////////////////////////////// /obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + + // Drop all the things. All of them. + overlays = null + for(var/obj/item/I in carrying) + I.loc = M.loc + carrying.Remove(I) + if(isturf(I.loc)) + spawn() + for(var/i = 1, i <= rand(1,2), i++) + if(I) + step(I, pick(NORTH,SOUTH,EAST,WEST)) + sleep(rand(2,4)) + + if((user.mutations & CLOWN) && prob(50)) //What if he's a clown? M << "\red You accidentally slam yourself with the [src]!" M.weakened += 1 @@ -123,12 +137,12 @@ KNIFE else M.take_organ_damage(5) if(prob(50)) - //playsound(M, 'trayhit1.wav', 50, 1) + playsound(M, 'trayhit1.ogg', 50, 1) for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] slams [] with the tray!", user, M), 1) return else - //playsound(M, 'trayhit2.wav', 50, 1) //we applied the damage, we played the sound, we showed the appropriate messages. Time to return and stop the proc + playsound(M, 'trayhit2.ogg', 50, 1) //we applied the damage, we played the sound, we showed the appropriate messages. Time to return and stop the proc for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] slams [] with the tray!", user, M), 1) return @@ -151,11 +165,11 @@ KNIFE location.add_blood(H) if(prob(50)) - //playsound(M, 'trayhit1.wav', 50, 1) + playsound(M, 'trayhit1.ogg', 50, 1) for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] slams [] with the tray!", user, M), 1) else - //playsound(M, 'trayhit2.wav', 50, 1) //sound playin' + playsound(M, 'trayhit2.ogg', 50, 1) //sound playin' for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] slams [] with the tray!", user, M), 1) if(prob(10)) @@ -175,11 +189,11 @@ KNIFE location.add_blood(H) if(prob(50)) - // playsound(M, 'trayhit1.ogg', 50, 1) + playsound(M, 'trayhit1.ogg', 50, 1) for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] slams [] in the face with the tray!", user, M), 1) else - //playsound(M, 'trayhit2.ogg', 50, 1) //sound playin' again + playsound(M, 'trayhit2.ogg', 50, 1) //sound playin' again for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] slams [] in the face with the tray!", user, M), 1) if(prob(30)) @@ -193,6 +207,73 @@ KNIFE return return + +/* +===============~~~~~================================~~~~~==================== += = += Code for trays carrying things. By Doohl for Doohl erryday Doohl Doohl~ = += = +===============~~~~~================================~~~~~==================== +*/ +/obj/item/weapon/tray/proc/calc_carry() + // calculate the weight of the items on the tray + var/val = 0 // value to return + + for(var/obj/item/I in carrying) + if(I.w_class == 1.0) + val ++ + else if(I.w_class == 2.0) + val += 3 + else + val += 5 + + return val + +/obj/item/weapon/tray/pickup(mob/user) + overlays = null + + if(!isturf(loc)) + return + + for(var/obj/item/I in loc) + if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) ) + var/add = 0 + if(I.w_class == 1.0) + add = 1 + else if(I.w_class == 2.0) + add = 3 + else + add = 5 + if(calc_carry() + add >= max_carry) + break + + I.loc = src + carrying.Add(I) + overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer) + +/obj/item/weapon/tray/dropped(mob/user) + var/foundtable = 0 + for(var/obj/structure/table/T in loc) + foundtable = 1 + break + + overlays = null + + for(var/obj/item/I in carrying) + I.loc = loc + carrying.Remove(I) + if(!foundtable && isturf(loc)) + // if no table, presume that the person just shittily dropped the tray on the ground and made a mess everywhere! + spawn() + for(var/i = 1, i <= rand(1,2), i++) + if(I) + step(I, pick(NORTH,SOUTH,EAST,WEST)) + sleep(rand(2,4)) + + + + + ///////////////////////////////////////////////////////////////////////////////////////// //Enough with the violent stuff, here's what happens if you try putting food on it ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm index 5b2797b1f69..b7186cc3f3d 100644 --- a/code/game/objects/storage/storage.dm +++ b/code/game/objects/storage/storage.dm @@ -129,6 +129,20 @@ user << "\red This [W] is too big for this [src]" return + if(istype(W, /obj/item/weapon/tray)) + var/obj/item/weapon/tray/T = W + if(T.calc_carry() > 0) + if(prob(85)) + user << "\red The tray won't fit in [src]." + return + else + + W.loc = user.loc + if ((user.client && user.s_active != src)) + user.client.screen -= W + W.dropped(user) + user << "\red God damnit!" + var/sum_w_class = W.w_class for(var/obj/item/I in contents) sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. @@ -138,7 +152,7 @@ return if ( W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) - user << "\red The [src] cannot hold [W] as it's a storage item of the same size." + user << "\red The [src] cannot hold [W] as it's a storage item of the same size." return //To prevent the stacking of the same sized items. user.u_equip(W) diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm index ce9d17d4116..db9eaf1de38 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -155,8 +155,8 @@ TABLE AND RACK OBJECT INTERATIONS del(src) return - user.drop_item() - if(W && W.loc) W.loc = src.loc + user.drop_item(src) + //if(W && W.loc) W.loc = src.loc // Unnecessary - see: mob/proc/drop_item(atom) - Doohl return @@ -197,8 +197,8 @@ TABLE AND RACK OBJECT INTERATIONS del(src) return - user.drop_item() - if(W && W.loc) W.loc = src.loc + user.drop_item(src) + //if(W && W.loc) W.loc = src.loc return @@ -239,8 +239,8 @@ TABLE AND RACK OBJECT INTERATIONS return if(isrobot(user)) return - user.drop_item() - if(W && W.loc) W.loc = src.loc + user.drop_item(src) + //if(W && W.loc) W.loc = src.loc return if (istype(W, /obj/item/weapon/wrench)) @@ -267,8 +267,8 @@ TABLE AND RACK OBJECT INTERATIONS del(src) return - user.drop_item() - if(W && W.loc) W.loc = src.loc + user.drop_item(src) + //if(W && W.loc) W.loc = src.loc return //RACKS diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 7e5c54ca85c..2642edc7914 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -20,8 +20,12 @@ return 1 if (istype(other, /mob/living/silicon/decoy)) return 1 + if (istype(other, /mob/living/silicon/pai)) + return 1 if (istype(other, /mob/living/silicon/robot)) return 1 if (istype(other, /mob/living/carbon/human)) return 1 + if (istype(other, /mob/living/carbon/metroid)) + return 1 return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index d539cb00fe2..44b21d75147 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -62,6 +62,10 @@ message = "[src] [input]" if ("me") + if (muted || silent) + return + if (stat) + return if(!(message)) return else diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 8ae52a1764a..3dce0a8a6dd 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -159,7 +159,7 @@ T.Entered(item) return -/mob/proc/drop_item() +/mob/proc/drop_item(var/atom/target) var/obj/item/W = equipped() if (W) @@ -178,7 +178,10 @@ if (client) client.screen -= W if (W) - W.loc = loc + if(target) + W.loc = target.loc + else + W.loc = loc W.dropped(src) if (W) W.layer = initial(W.layer) diff --git a/icons/changelog.html b/icons/changelog.html index 1db66672792..4adb0bc90f9 100644 --- a/icons/changelog.html +++ b/icons/changelog.html @@ -54,6 +54,22 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit tho. Thanks. --> +8 October 2011: +
    +
  • Doohl updated: +
      +
    • You can put things on trays and mass-transport them now. To put stuff on trays, simply pick up a tray with items underneath/on top of it and they'll be automatically carried on top of the tray. Be careful not to make a mess~!
    • +
    +
  • +
  • Mport updated: +
      +
    • Telekenesis now only allows you to pick up objects.
    • +
    • Stun gloves ignore intent.
    • +
    • Moved the loyalty implants to the HoS' locker.
    • +
    +
  • +
+ 2 October 2011:
  • Petethegoat updated: