Page 1 of 2

'Please murder me slowly' pieces of code

PostPosted: Sun Sep 14, 2014 10:38 pm
by Aranclanos
Image

Each time that any object moves to a floor turf, is checks if it's a human. If it's a human, it checks if they're wearing clown shoes, just to make the clown step sound.

Each time that any object moves.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Sep 14, 2014 11:08 pm
by Scott
Why isn't the sound reproduced by the clown shoes instead?

I like how the only comment on that mess is not helpful at all.

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Sep 15, 2014 1:11 am
by MisterPerson
That code is old. I think it was in r4407. Lemme pull out my favorite though:

Code: Select all
proc/time_stamp(var/format = "hh:mm:ss")
   return time2text(world.timeofday, format)

proc/gameTimestamp(var/format = "hh:mm:ss") // Get the game time in text
   return time2text(world.time - timezoneOffset + 432000, format)

/* Preserving this so future generations can see how fucking retarded some people are
proc/time_stamp()
   var/hh = text2num(time2text(world.timeofday, "hh")) // Set the hour
   var/mm = text2num(time2text(world.timeofday, "mm")) // Set the minute
   var/ss = text2num(time2text(world.timeofday, "ss")) // Set the second
   var/ph
   var/pm
   var/ps
   if(hh < 10) ph = "0"
   if(mm < 10) pm = "0"
   if(ss < 10) ps = "0"
   return"[ph][hh]:[pm][mm]:[ps][ss]"
*/

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Sep 15, 2014 1:29 am
by Stickymayhem
Aranclanos wrote:Image

Each time that any object moves to a floor turf, is checks if it's a human. If it's a human, it checks if they're wearing clown shoes, just to make the clown step sound.

Each time that any object moves.


Does that code mean clown shoes don't squeak on unsimulated turf?

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Sep 15, 2014 3:04 am
by Jordie0608
Apparently not.

The old SSU update_icon proc was great.

Code: Select all
/obj/machinery/suit_storage_unit/update_icon()
   var/hashelmet = 0
   var/hassuit = 0
   var/hashuman = 0
   if(HELMET)
      hashelmet = 1
   if(SUIT)
      hassuit = 1
   if(OCCUPANT)
      hashuman = 1
   icon_state = text("suitstorage[][][][][][][][][]",hashelmet,hassuit,hashuman,src.isopen,src.islocked,src.isUV,src.ispowered,src.isbroken,src.issuperUV)

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Sep 17, 2014 5:10 pm
by Miauw
brb digging around in my saycode pr

  • Anyway, saycode used to loop through all hearers, see if they could understand the speaker through a bunch of istypes, then loop through each list seperately to tell them the message.
    This was even worse for radio code, where there were seperate lists for people who heard the message garbled, heard it when the speaker was wearing a voice-changer, heard it normally and people who didnt understand it.
  • Also, people using show_message(message, 2) on dead players (2 means "dont send the message if the hearer is deaf")
  • Code: Select all
           if(!radio_controller)
              sleep(30) // Waiting for the radio_controller to be created.
           if(!radio_controller)
              src.name = "broken radio headset"
              return

    probably the most hilarious code i've ever seen
  • There's also silent being checked by every mob seperately for some reason, and say() in general being a monolith so all the overrides were really really shitty.
    Code: Select all
     /mob/living/carbon/slime/say(var/message)
       if (silent)
          return
       else
          return ..()

    Yeah, this could have been checked once at the carbon() level, but instead of doing the sane thing it checks everywhere.
  • Anything involving istype(src)
  • Code: Select all
       if (length(message) >= 2)
          if ((copytext(message, 1, 3) == ":b") || (copytext(message, 1, 3) == ":B") || \
             (copytext(message, 1, 3) == "#b") || (copytext(message, 1, 3) == "#B") || \
             (copytext(message, 1, 3) == ".b") || (copytext(message, 1, 3) == ".B"))
             if(istype(src, /mob/living/silicon/pai))
                return ..(message, "R")
             message = copytext(message, 3)
             message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
             robot_talk(message)
          else if ((copytext(message, 1, 3) == ":h") || (copytext(message, 1, 3) == ":H") || \
                (copytext(message, 1, 3) == "#h") || (copytext(message, 1, 3) == "#H") || \
                (copytext(message, 1, 3) == ".h") || (copytext(message, 1, 3) == ".H"))
             if(isAI(src)&&client)//For patching directly into AI holopads.
                var/mob/living/silicon/ai/U = src
                message = copytext(message, 3)
                message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
                U.holopad_talk(message)
             else//Will not allow anyone by an active AI to use this function.
                src << "This function is not available to you."
                return

    Do I need to explain?


E:
Almost forgot the best of them all:
Image
This proc always cracks me up.

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Sep 17, 2014 9:13 pm
by Cheridan
Miauw wrote:
E:
Almost forgot the best of them all:
Image
This proc always cracks me up.


>no indication what "yes" means
>that parent call after the return

beat me to death with hitler's brain

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Sep 21, 2014 1:41 pm
by Miauw
Code: Select all
/datum/game_mode/proc/random_radio_frequency()
   return 1337 // WHY??? -- Doohl

Just found this while browsing through nuke code.

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Sep 25, 2014 10:18 am
by MisterPerson
Not /tg/station related, but I just have to share for anyone who hasn't seen it yet.

https://www.daniweb.com/software-develo ... my-program

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Sep 25, 2014 3:44 pm
by Remie Richards
MisterPerson wrote:Not /tg/station related, but I just have to share for anyone who hasn't seen it yet.

https://www.daniweb.com/software-develo ... my-program



float x;
float xx;
float xxx;
float xxxx;
float xxxxx;
etc.

Wow.

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Sep 25, 2014 4:46 pm
by Lo6a4evskiy
I mean, why not do something like x0, x1, x2, even if you do that kind of thing? I suppose something should be said about how stubborn this guy is, copypasting all that code.
Miauw wrote:
Code: Select all
/datum/game_mode/proc/random_radio_frequency()
   return 1337 // WHY??? -- Doohl

Just found this while browsing through nuke code.

It's not actually called anywhere in the code, probably something that was never finished.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sat Sep 27, 2014 2:18 am
by paprika
Maybe this is why clowns were removed from bay

Re: 'Please murder me slowly' pieces of code

PostPosted: Tue Oct 07, 2014 8:54 am
by MisterPerson
This isn't wrong or even that expensive but it's incredibly ugly. Behold, the old code that was called every time someone clicked the limb targetter on the bottom right corner of the screen.

Code: Select all
/obj/screen/zone_sel/Click(location, control,params)
   var/list/PL = params2list(params)
   var/icon_x = text2num(PL["icon-x"])
   var/icon_y = text2num(PL["icon-y"])

   if(icon_y < 2)
      return
   if(icon_y < 4)
      if(icon_x > 9 && icon_x < 16)
         selecting = "r_leg"
      else if(icon_x > 15 && icon_x < 23)
         selecting = "l_leg"
      else
         return
   else if(icon_y < 11)
      if(icon_x > 11 && icon_x < 21)
         if(icon_x < 16)
            selecting = "r_leg"
         else
            selecting = "l_leg"
      else
         return
   else if(icon_y < 12)
      if(icon_x > 7 && icon_x < 12)
         selecting = "r_arm"
      else if(icon_x > 11 && icon_x < 14)
         selecting = "r_leg"
      else if(icon_x < 19)
         selecting = "groin"
      else if(icon_x > 18 && icon_x < 21)
         selecting = "l_leg"
      else if(icon_x > 20 && icon_x < 25)
         selecting = "l_arm"
      else
         return
   else if(icon_y < 13)
      if(icon_x > 7 && icon_x < 25)
         if(icon_x < 13)
            selecting = "r_leg"
         else if(icon_x < 20)
            selecting = "groin"
         else if(icon_x < 21)
            selecting = "l_leg"
      else
         return
   else if(icon_y < 14)
      if(icon_x > 11 && icon_x < 21)
         selecting = "groin"
      else if(icon_x > 7 && icon_x < 12)
         selecting = "r_arm"
      else if(icon_x > 20 && icon_x < 25)
         selecting = "l_arm"
      else
         return
   else if(icon_y < 16)
      if(icon_x > 7 && icon_x < 25)
         if(icon_x < 20)
            selecting = "chest"
      else
         return
   else if(icon_y < 23)
      if(icon_x > 7 && icon_x < 25)
         if(icon_x < 12)
            selecting = "r_arm"
         else if(icon_x < 21)
            selecting = "chest"
         else
            selecting = "l_arm"
      else
         return
   else if(icon_y < 24)
      if(icon_x > 11 && icon_x < 21)
         selecting = "chest"
      else
         return
   else if(icon_y < 25)
      if(icon_x > 11 && icon_x < 21)
         if(icon_x < 16)
            selecting = "head"
         else if(icon_x < 17)
            selecting = "mouth"
         else
            selecting = "head"
      else
         return
   else if(icon_y < 26)
      if(icon_x > 11 && icon_x < 21)
         if(icon_x < 15)
            selecting = "head"
         else if(icon_x < 18)
            selecting = "mouth"
         else
            selecting = "head"
      else
         return
   else if(icon_y < 27)
      if(icon_x > 11 && icon_x < 21)
         if(icon_x < 15)
            selecting = "head"
         else if(icon_x < 16)
            selecting = "eyes"
         else if(icon_x < 17)
            selecting = "mouth"
         else if(icon_x < 18)
            selecting = "eyes"
         else
            selecting = "head"
      else
         return
   else if(icon_y < 28)
      if(icon_x > 11 && icon_x < 21)
         if(icon_x < 14)
            selecting = "head"
         else if(icon_x < 19)
            selecting = "eyes"
         else
            selecting = "head"
      else
         return
   else if(icon_y < 29)
      if(icon_x > 11 && icon_x < 21)
         if(icon_x < 15)
            selecting = "head"
         else if(icon_x < 16)
            selecting = "eyes"
         else if(icon_x < 17)
            selecting = "head"
         else if(icon_x < 18)
            selecting = "eyes"
         else
            selecting = "head"
      else
         return
   else if(icon_y < 31)
      if(icon_x > 11 && icon_x < 21)
         selecting = "head"

   update_icon()


For reference sake here's what it is now:

Code: Select all
/obj/screen/zone_sel/Click(location, control,params)
   var/list/PL = params2list(params)
   var/icon_x = text2num(PL["icon-x"])
   var/icon_y = text2num(PL["icon-y"])
   var/old_selecting = selecting //We're only going to update_icon() if there's been a change

   switch(icon_y)
      if(1 to 9) //Legs
         switch(icon_x)
            if(10 to 15)
               selecting = "r_leg"
            if(17 to 22)
               selecting = "l_leg"
            else
               return 1
      if(10 to 13) //Hands and groin
         switch(icon_x)
            if(8 to 11)
               selecting = "r_arm"
            if(12 to 20)
               selecting = "groin"
            if(21 to 24)
               selecting = "l_arm"
            else
               return 1
      if(14 to 22) //Chest and arms to shoulders
         switch(icon_x)
            if(8 to 11)
               selecting = "r_arm"
            if(12 to 20)
               selecting = "chest"
            if(21 to 24)
               selecting = "l_arm"
            else
               return 1
      if(23 to 30) //Head, but we need to check for eye or mouth
         if(icon_x in 12 to 20)
            selecting = "head"
            switch(icon_y)
               if(23 to 24)
                  if(icon_x in 15 to 17)
                     selecting = "mouth"
               if(26) //Eyeline, eyes are on 15 and 17
                  if(icon_x in 14 to 18)
                     selecting = "eyes"
               if(25 to 27)
                  if(icon_x in 15 to 17)
                     selecting = "eyes"

   if(old_selecting != selecting)
      update_icon()
   return 1

Re: 'Please murder me slowly' pieces of code

PostPosted: Tue Oct 07, 2014 4:04 pm
by Remie Richards
switch()s and the "to" keyword, friends of us all.

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Oct 08, 2014 1:52 am
by MisterPerson
Bonus content. Behold, the oldish Click() code. I say oldish because we used to have code even older than this which was even worse, but I'm not digging for it right now.

700 lines of madness. This shit was ran every time anyone clicked on (almost) anything.

Code: Select all
/atom/Click(location,control,params)
   //world << "atom.Click() on [src] by [usr] : src.type is [src.type]"
   if(usr.client.buildmode)
      build_click(usr, usr.client.buildmode, location, control, params, src)
      return
//   if(using_new_click_proc)  //TODO ERRORAGE (see message below)
//      return DblClickNew()
   return DblClick(location, control, params)

var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblClickNew() proc is being tested)

/atom/proc/DblClickNew()
   if(!usr)   return
// TODO DOOHL: Intergrate params to new proc. Saved for another time because var/valid_place is a fucking brainfuck

   //Spamclick server-overloading prevention delay... THING
   if (world.time <= usr:lastDblClick+1)
      return
   else
      usr:lastDblClick = world.time

   //paralysis and critical condition
   if(usr.stat == 1)   //Death is handled in attack_ghost()
      return

   if(!istype(usr, /mob/living/silicon/ai))
      if (usr.paralysis || usr.stunned || usr.weakened)
         return

   //handle the hud separately
   if(istype(src,/obj/screen))
      if( usr.restrained() )
         if(ishuman(usr))
            src.attack_hand(usr)
         else if(isAI(usr))
            src.attack_ai(usr)
         else if(isrobot(usr))
            src.attack_ai(usr)
         else if(isobserver(usr))
            src.attack_ghost(usr)
         else if(ismonkey(usr))
            src.attack_paw(usr)
         else if(isalienadult(usr))
            src.attack_alien(usr)
         else if(isslime(usr))
            src.attack_slime(usr)
         else if(isanimal(usr))
            src.attack_animal(usr)
         else
            usr << "This mob type does not support clicks to the HUD. Contact a coder."
      else
         if(ishuman(usr))
            src.hand_h(usr, usr.hand)
         else if(isAI(usr))
            src.hand_a(usr, usr.hand)
         else if(isrobot(usr))
            src.hand_a(usr, usr.hand)
         else if(isobserver(usr))
            return
         else if(ismonkey(usr))
            src.hand_p(usr, usr.hand)
         else if(isalienadult(usr))
            src.hand_al(usr, usr.hand)
         else if(isslime(usr))
            return
         else if(isanimal(usr))
            return
         else
            usr << "This mob type does not support restrained clicks to the HUD. Contact a coder."
      return

   //Gets equipped item or used module of robots
   var/obj/item/W = usr.get_active_hand()

   //Attack self
   if (W == src && usr.stat == 0)
//      spawn (0)      //causes runtimes under heavy lag
      W.attack_self(usr)
      return

   //Attackby, attack_hand, afterattack, etc. can only be done once every 1 second, unless an object has the NODELAY or USEDELAY flags set
   //This segment of code determins this.
   if(W)
      if( !( (src.loc && src.loc == usr) || (src.loc.loc && src.loc.loc == usr) ) )
         //The check above checks that you are not targeting an item which you are holding.
         //If you are, (example clicking a backpack), the delays are ignored.
         if(W.flags & USEDELAY)
            //Objects that use the USEDELAY flag can only attack once every 2 seconds
            if (usr.next_move < world.time)
               usr.prev_move = usr.next_move
               usr.next_move = world.time + 20
            else
               return   //A click has recently been handled already, you need to wait until the anti-spam delay between clicks passes
         else if(!(W.flags & NODELAY))
            //Objects with NODELAY don't have a delay between uses, while most objects have the standard 1 second delay.
            if (usr.next_move < world.time)
               usr.prev_move = usr.next_move
               usr.next_move = world.time + 10
            else
               return   //A click has recently been handled already, you need to wait until the anti-spam delay between clicks passes
   else
      //Empty hand
      if (usr.next_move < world.time)
         usr.prev_move = usr.next_move
         usr.next_move = world.time + 10
      else
         return   //A click has recently been handled already, you need to wait until the anti-spam delay between clicks passes

   //Is the object in a valid place?
   var/valid_place = 0
   if ( isturf(src) || ( src.loc && isturf(src.loc) ) || ( src.loc.loc && isturf(src.loc.loc) ) )
      //Object is either a turf of placed on a turf, thus valid.
      //The third one is that it is in a container, which is on a turf, like a box,
      //which you mouse-drag opened. Also a valid location.
      valid_place = 1

   if ( ( src.loc && (src.loc == usr) ) || ( src.loc.loc && (src.loc.loc == usr) ) )
      //User has the object on them (in their inventory) and it is thus valid
      valid_place = 1

   //Afterattack gets performed every time you click, no matter if it's in range or not. It's used when
   //clicking targets for guns and such. If you are clicking on a target that's not in range
   //with an item in your hands only afterattack() needs to be performed.
   //If the range is valid, afterattack() will be handled in the separate mob-type
   //sections below, however only after attackby(). Attack_hand and simmilar procs are handled
   //in the mob-type sections below, as some require you to be in range to work (human, monkey..) while others don't (ai, cyborg)
   //Also note that afterattack does not differentiate between the holder/attacker's mob-type.
   if( W && !valid_place)
      W.afterattack(src, usr, (valid_place ? 1 : 0))
      return

   if(ishuman(usr))
      var/mob/living/carbon/human/human = usr
      //-human stuff-

      if(human.stat)
         return

      if(human.in_throw_mode)
         return human.throw_item(src)

      var/in_range = in_range(src, human) || src.loc == human

      if (in_range)
         if (!( human.restrained() || human.lying ))
            if (W)
               attackby(W,human)
               if (W)
                  W.afterattack(src, human)
            else
               attack_hand(human)
         else
            hand_h(human, human.hand)
      else
         if ( (W) && !human.restrained() )
            W.afterattack(src, human)


   else if(isAI(usr))
      var/mob/living/silicon/ai/ai = usr
      //-ai stuff-

      if(ai.stat)
         return

      if (ai.control_disabled)
         return

      if( !ai.restrained() )
         attack_ai(ai)
      else
         hand_a(ai, ai.hand)

   else if(isrobot(usr))
      var/mob/living/silicon/robot/robot = usr
      //-cyborg stuff-

      if(robot.stat)
         return

      if (robot.lockcharge)
         return



      if(W)
         var/in_range = in_range(src, robot) || src.loc == robot
         if(in_range)
            attackby(W,robot)
         if (W)
            W.afterattack(src, robot)
      else
         if( !robot.restrained() )
            attack_robot(robot)
         else
            hand_r(robot, robot.hand)

   else if(isobserver(usr))
      var/mob/dead/observer/ghost = usr
      //-ghost stuff-

      if(ghost)
         if(W)
            if(usr.client && usr.client.holder)
               src.attackby(W, ghost)            //This is so admins can interact with things ingame.
            else
               src.attack_ghost(ghost)            //Something's gone wrong, non-admin ghosts shouldn't be able to hold things.
         else
            if(usr.client && usr.client.holder)
               src.attack_admin(ghost)            //This is so admins can interact with things ingame.
            else
               src.attack_ghost(ghost)            //Standard click as ghost


   else if(ismonkey(usr))
      var/mob/living/carbon/monkey/monkey = usr
      //-monkey stuff-

      if(monkey.stat)
         return

      if(monkey.in_throw_mode)
         return monkey.throw_item(src)

      var/in_range = in_range(src, monkey) || src.loc == monkey

      if (in_range)
         if ( !monkey.restrained() )
            if (W)
               attackby(W,monkey)
               if (W)
                  W.afterattack(src, monkey)
            else
               attack_paw(monkey)
         else
            hand_p(monkey, monkey.hand)
      else
         if ( (W) && !monkey.restrained() )
            W.afterattack(src, monkey)

   else if(isalienadult(usr))
      var/mob/living/carbon/alien/humanoid/alien = usr
      //-alien stuff-

      if(alien.stat)
         return

      var/in_range = in_range(src, alien) || src.loc == alien

      if (in_range)
         if ( !alien.restrained() )
            if (W)
               attackby(W,alien)
               if (W)
                  W.afterattack(src, alien)
            else
               attack_alien(alien)
         else
            hand_al(alien, alien.hand)
      else
         if ( (W) && !alien.restrained() )
            W.afterattack(src, alien)

   else if(islarva(usr))
      var/mob/living/carbon/alien/larva/alien = usr
      if(alien.stat)
         return

      var/in_range = in_range(src, alien) || src.loc == alien

      if (in_range)
         if ( !alien.restrained() )
            attack_larva(alien)

   else if(isslime(usr))
      var/mob/living/carbon/slime/slime = usr
      //-slime stuff-

      if(slime.stat)
         return

      var/in_range = in_range(src, slime) || src.loc == slime

      if (in_range)
         if ( !slime.restrained() )
            if (W)
               attackby(W,slime)
               if (W)
                  W.afterattack(src, slime)
            else
               attack_slime(slime)
         else
            hand_m(slime, slime.hand)
      else
         if ( (W) && !slime.restrained() )
            W.afterattack(src, slime)


   else if(isanimal(usr))
      var/mob/living/simple_animal/animal = usr
      //-simple animal stuff-

      if(animal.stat)
         return

      var/in_range = in_range(src, animal) || src.loc == animal

      if (in_range)
         if ( !animal.restrained() )
            attack_animal(animal)

/atom/DblClick(location, control, params) //TODO: DEFERRED: REWRITE
   if(!usr)   return

   // ------- TIME SINCE LAST CLICK -------
   if (world.time <= usr:lastDblClick+1)
//      world << "BLOCKED atom.DblClick() on [src] by [usr] : src.type is [src.type]"
      return
   else
//      world << "atom.DblClick() on [src] by [usr] : src.type is [src.type]"
      usr:lastDblClick = world.time

   //Putting it here for now. It diverts stuff to the mech clicking procs. Putting it here stops us drilling items in our inventory Carn
   if(istype(usr.loc,/obj/mecha))
      if(usr.client && (src in usr.client.screen))
         return
      var/obj/mecha/Mech = usr.loc
      Mech.click_action(src,usr)
      return

   // ------- DIR CHANGING WHEN CLICKING ------
   if( iscarbon(usr) && !usr.buckled )
      if( src.x && src.y && usr.x && usr.y )
         var/dx = src.x - usr.x
         var/dy = src.y - usr.y

         if(dy || dx)
            if(abs(dx) < abs(dy))
               if(dy > 0)   usr.dir = NORTH
               else      usr.dir = SOUTH
            else
               if(dx > 0)   usr.dir = EAST
               else      usr.dir = WEST
         else
            if(pixel_y > 16)      usr.dir = NORTH
            else if(pixel_y < -16)   usr.dir = SOUTH
            else if(pixel_x > 16)   usr.dir = EAST
            else if(pixel_x < -16)   usr.dir = WEST




   // ------- AI -------
   else if (istype(usr, /mob/living/silicon/ai))
      var/mob/living/silicon/ai/ai = usr
      if (ai.control_disabled)
         return

   // ------- CYBORG -------
   else if (istype(usr, /mob/living/silicon/robot))
      var/mob/living/silicon/robot/bot = usr
      if (bot.lockcharge) return
   ..()


   // ------- SHIFT-CLICK -------

   if(params)
      var/parameters = params2list(params)

      if(parameters["shift"]){
         if(!isAI(usr))
            ShiftClick(usr)
         else
            AIShiftClick(usr)
         return
      }

      // ------- ALT-CLICK -------

      if(parameters["alt"]){
         if(!isAI(usr))
            AltClick(usr)
         else
            AIAltClick(usr)
         return
      }

      // ------- CTRL-CLICK -------

      if(parameters["ctrl"]){
         if(!isAI(usr))
            CtrlClick(usr)
         else
            AICtrlClick(usr)
         return
      }

      // ------- MIDDLE-CLICK -------

      if(parameters["middle"]){
         if(!isAI(usr))
            MiddleClick(usr)
            return
      }

   // ------- THROW -------
   if(usr.in_throw_mode)
      return usr:throw_item(src)

   // ------- ITEM IN HAND DEFINED -------
   var/obj/item/W = usr.get_active_hand()
/*   Now handled by get_active_hand()
   // ------- ROBOT -------
   if(istype(usr, /mob/living/silicon/robot))
      if(!isnull(usr:module_active))
         W = usr:module_active
      else
         W = null
*/
   // ------- ATTACK SELF -------
   if (W == src && usr.stat == 0)
      W.attack_self(usr)
      if(usr.hand)
         usr.update_inv_l_hand(0)   //update in-hand overlays
      else
         usr.update_inv_r_hand(0)
      return

   // ------- PARALYSIS, STUN, WEAKENED, DEAD, (And not AI) -------
   if (((usr.paralysis || usr.stunned || usr.weakened) && !istype(usr, /mob/living/silicon/ai)) || usr.stat != 0)
      return

   // ------- CLICKING STUFF IN CONTAINERS -------
   if ((!( src in usr.contents ) && (((!( isturf(src) ) && (!( isturf(src.loc) ) && (src.loc && !( isturf(src.loc.loc) )))) || !( isturf(usr.loc) )) && (src.loc != usr.loc && (!( istype(src, /obj/screen) ) && !( usr.contents.Find(src.loc) ))))))
      if (istype(usr, /mob/living/silicon/ai))
         var/mob/living/silicon/ai/ai = usr
         if (ai.control_disabled || ai.malfhacking)
            return
      else
         return

   // ------- 1 TILE AWAY -------
   var/t5
   // ------- AI CAN CLICK ANYTHING -------
   if(istype(usr, /mob/living/silicon/ai))
      t5 = 1
   // ------- CYBORG CAN CLICK ANYTHING WHEN NOT HOLDING STUFF -------
   else if(istype(usr, /mob/living/silicon/robot) && !W)
      t5 = 1
   else
      t5 = in_range(src, usr) || src.loc == usr

//   world << "according to dblclick(), t5 is [t5]"

   // ------- ACTUALLY DETERMINING STUFF -------
   if (((t5 || (W && (W.flags & USEDELAY))) && !( istype(src, /obj/screen) )))

      // ------- ( CAN USE ITEM OR HAS 1 SECOND USE DELAY ) AND NOT CLICKING ON SCREEN -------

      if (usr.next_move < world.time)
         usr.prev_move = usr.next_move
         usr.next_move = world.time + 10
      else
         // ------- ALREADY USED ONE ITEM WITH USE DELAY IN THE PREVIOUS SECOND -------
         return

      // ------- DELAY CHECK PASSED -------

      if ((src.loc && (get_dist(src, usr) < 2 || src.loc == usr.loc)))

         // ------- CLICKED OBJECT EXISTS IN GAME WORLD, DISTANCE FROM PERSON TO OBJECT IS 1 SQUARE OR THEY'RE ON THE SAME SQUARE -------

         var/direct = get_dir(usr, src)
         var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( usr.loc )
         var/ok = 0
         if ( (direct - 1) & direct)

            // ------- CLICKED OBJECT IS LOCATED IN A DIAGONAL POSITION FROM THE PERSON -------

            var/turf/Step_1
            var/turf/Step_2
            switch(direct)
               if(5.0)
                  Step_1 = get_step(usr, NORTH)
                  Step_2 = get_step(usr, EAST)

               if(6.0)
                  Step_1 = get_step(usr, SOUTH)
                  Step_2 = get_step(usr, EAST)

               if(9.0)
                  Step_1 = get_step(usr, NORTH)
                  Step_2 = get_step(usr, WEST)

               if(10.0)
                  Step_1 = get_step(usr, SOUTH)
                  Step_2 = get_step(usr, WEST)

               else
            if(Step_1 && Step_2)

               // ------- BOTH CARDINAL DIRECTIONS OF THE DIAGONAL EXIST IN THE GAME WORLD -------

               var/check_1 = 0
               var/check_2 = 0
               if(step_to(D, Step_1))
                  check_1 = 1
                  for(var/obj/border_obstacle in Step_1)
                     if(border_obstacle.flags & ON_BORDER)
                        if(!border_obstacle.CheckExit(D, src))
                           check_1 = 0
                           // ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON ONE OF THE DIRECITON TILES -------
                  for(var/obj/border_obstacle in get_turf(src))
                     if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
                        if(!border_obstacle.CanPass(D, D.loc, 1, 0))
                           // ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON THE TILE YOU'RE ON -------
                           check_1 = 0

               D.loc = usr.loc
               if(step_to(D, Step_2))
                  check_2 = 1

                  for(var/obj/border_obstacle in Step_2)
                     if(border_obstacle.flags & ON_BORDER)
                        if(!border_obstacle.CheckExit(D, src))
                           check_2 = 0
                  for(var/obj/border_obstacle in get_turf(src))
                     if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
                        if(!border_obstacle.CanPass(D, D.loc, 1, 0))
                           check_2 = 0


               if(check_1 || check_2)
                  ok = 1
                  // ------- YOU CAN REACH THE ITEM THROUGH AT LEAST ONE OF THE TWO DIRECTIONS. GOOD. -------

               /*
                  More info:
                     If you're trying to click an item in the north-east of your mob, the above section of code will first check if tehre's a tile to the north or you and to the east of you
                     These two tiles are Step_1 and Step_2. After this, a new dummy object is created on your location. It then tries to move to Step_1, If it succeeds, objects on the turf you're on and
                     the turf that Step_1 is are checked for items which have the ON_BORDER flag set. These are itmes which limit you on only one tile border. Windows, for the most part.
                     CheckExit() and CanPass() are use to determine this. The dummy object is then moved back to your location and it tries to move to Step_2. Same checks are performed here.
                     If at least one of the two checks succeeds, it means you can reach the item and ok is set to 1.
               */
         else
            // ------- OBJECT IS ON A CARDINAL TILE (NORTH, SOUTH, EAST OR WEST OR THE TILE YOU'RE ON) -------
            if(loc == usr.loc)
               ok = 1
               // ------- OBJECT IS ON THE SAME TILE AS YOU -------
            else
               ok = 1

               //Now, check objects to block exit that are on the border
               for(var/obj/border_obstacle in usr.loc)
                  if(border_obstacle.flags & ON_BORDER)
                     if(!border_obstacle.CheckExit(D, src))
                        ok = 0

               //Next, check objects to block entry that are on the border
               for(var/obj/border_obstacle in get_turf(src))
                  if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
                     if(!border_obstacle.CanPass(D, D.loc, 1, 0))
                        ok = 0
            /*
               See the previous More info, for... more info...
            */

         //del(D)
         // Garbage Collect Dummy
         D.loc = null
         D = null

         // ------- DUMMY OBJECT'S SERVED IT'S PURPOSE, IT'S REWARDED WITH A SWIFT DELETE -------
         if (!( ok ))
            // ------- TESTS ABOVE DETERMINED YOU CANNOT REACH THE TILE -------
            return 0

      if (!( usr.restrained() || (usr.lying && usr.buckled!=src) ))
         // ------- YOU ARE NOT REASTRAINED -------

         if (W)
            // ------- YOU HAVE AN ITEM IN YOUR HAND - HANDLE ATTACKBY AND AFTERATTACK -------
            var/ignoreAA = 0 //Ignore afterattack(). Surgery uses this.
            if (t5)
               ignoreAA = src.attackby(W, usr)
            if (W && !ignoreAA)
               W.afterattack(src, usr, (t5 ? 1 : 0), params)

         else
            // ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND -------
            if (istype(usr, /mob/living/carbon/human))
               // ------- YOU ARE HUMAN -------
               src.attack_hand(usr, usr.hand)
            else
               // ------- YOU ARE NOT HUMAN. WHAT ARE YOU - DETERMINED HERE AND PROPER ATTACK_MOBTYPE CALLED -------
               if (istype(usr, /mob/living/carbon/monkey))
                  src.attack_paw(usr, usr.hand)
               else if (istype(usr, /mob/living/carbon/alien/humanoid))
                  if(usr.m_intent == "walk" && istype(usr, /mob/living/carbon/alien/humanoid/hunter))
                     usr.m_intent = "run"
                     usr.hud_used.move_intent.icon_state = "running"
                     usr.update_icons()
                  src.attack_alien(usr, usr.hand)
               else if (istype(usr, /mob/living/carbon/alien/larva))
                  src.attack_larva(usr)
               else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot))
                  src.attack_ai(usr, usr.hand)
               else if(istype(usr, /mob/living/carbon/slime))
                  src.attack_slime(usr)
               else if(istype(usr, /mob/living/simple_animal))
                  src.attack_animal(usr)
      else
         // ------- YOU ARE RESTRAINED. DETERMINE WHAT YOU ARE AND ATTACK WITH THE PROPER HAND_X PROC -------
         if (istype(usr, /mob/living/carbon/human))
            src.hand_h(usr, usr.hand)
         else if (istype(usr, /mob/living/carbon/monkey))
            src.hand_p(usr, usr.hand)
         else if (istype(usr, /mob/living/carbon/alien/humanoid))
            src.hand_al(usr, usr.hand)
         else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot))
            src.hand_a(usr, usr.hand)

   else
      // ------- ITEM INACESSIBLE OR CLICKING ON SCREEN -------
      if (istype(src, /obj/screen))
         // ------- IT'S THE HUD YOU'RE CLICKING ON -------
         usr.prev_move = usr.next_move
         usr:lastDblClick = world.time + 2
         if (usr.next_move < world.time)
            usr.next_move = world.time + 2
         else
            return

         // ------- 2 DECISECOND DELAY FOR CLICKING PASSED -------

         if (!( usr.restrained() ))

            // ------- YOU ARE NOT RESTRAINED -------
            if ((W && !( istype(src, /obj/screen) )))
               // ------- IT SHOULD NEVER GET TO HERE, DUE TO THE ISTYPE(SRC, /OBJ/SCREEN) FROM PREVIOUS IF-S - I TESTED IT WITH A DEBUG OUTPUT AND I COULDN'T GET THIST TO SHOW UP. -------
               src.attackby(W, usr)
               if (W)
                  W.afterattack(src, usr,, params)
            else
               // ------- YOU ARE NOT RESTRAINED, AND ARE CLICKING A HUD OBJECT -------
               if (istype(usr, /mob/living/carbon/human))
                  src.attack_hand(usr, usr.hand)
               else if (istype(usr, /mob/living/carbon/monkey))
                  src.attack_paw(usr, usr.hand)
               else if (istype(usr, /mob/living/carbon/alien/humanoid))
                  src.attack_alien(usr, usr.hand)
         else
            // ------- YOU ARE RESTRAINED CLICKING ON A HUD OBJECT -------
            if (istype(usr, /mob/living/carbon/human))
               src.hand_h(usr, usr.hand)
            else if (istype(usr, /mob/living/carbon/monkey))
               src.hand_p(usr, usr.hand)
            else if (istype(usr, /mob/living/carbon/alien/humanoid))
               src.hand_al(usr, usr.hand)
      else
         // ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD -------
         if((LASER in usr:mutations) && usr:a_intent == "harm" && world.time >= usr.next_move)
            // ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED -------

            var/turf/T = get_turf(usr)
            var/turf/U = get_turf(src)


            if(istype(usr, /mob/living/carbon/human))
               usr:nutrition -= rand(1,5)
               usr:handle_regular_hud_updates()

            var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( usr.loc )
            A.icon = 'icons/effects/genetics.dmi'
            A.icon_state = "eyelasers"
            playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1)

            A.firer = usr
            A.def_zone = usr:get_organ_target()
            A.original = src
            A.current = T
            A.yo = U.y - T.y
            A.xo = U.x - T.x
            spawn( 1 )
               A.process()

            usr.next_move = world.time + 6
   return


For easier readability, here's a pastebin: http://pastebin.com/qSqVPh6V

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Oct 08, 2014 8:22 pm
by oranges
I submit the washing machine code.

Especially the start proc
Code: Select all
/obj/machinery/washing_machine/verb/start()
    set name = "Start Washing"
    set category = "Object"
    set src in oview(1)

    if( state != 4 )
        usr << "The washing machine cannot run in this state."
        return                                                                                                                                                                                               

    if( locate(/mob,contents) )
        state = 8
    else
        state = 5
    update_icon()
    sleep(200)
    for(var/atom/A in contents)
        A.clean_blood()

    //Tanning!
    for(var/obj/item/stack/sheet/hairlesshide/HH in contents)
        var/obj/item/stack/sheet/wetleather/WL = new(src)
        WL.amount = HH.amount
        qdel(HH)


    if(crayon)
        var/wash_color
        if(istype(crayon,/obj/item/toy/crayon))
            var/obj/item/toy/crayon/CR = crayon
            wash_color = CR.colourName
        else if(istype(crayon,/obj/item/weapon/stamp))
            var/obj/item/weapon/stamp/ST = crayon
            wash_color = ST.item_color
        if(wash_color)
            var/new_jumpsuit_icon_state = ""
            var/new_jumpsuit_item_state = ""
            var/new_jumpsuit_name = ""
            var/new_glove_icon_state = ""
            var/new_glove_item_state = ""
            var/new_glove_name = ""
            var/new_shoe_icon_state = ""
            var/new_shoe_name = ""
            var/new_sheet_icon_state = ""
            var/new_sheet_name = ""
            var/new_softcap_icon_state = ""
            var/new_softcap_name = ""
            var/new_desc = "The colors are a bit dodgy."
            for(var/T in typesof(/obj/item/clothing/under/color))
                var/obj/item/clothing/under/color/J = new T
                //world << "DEBUG: [wash_color] == [J.item_color]"
                if(wash_color == J.item_color)
                    new_jumpsuit_icon_state = J.icon_state
                    new_jumpsuit_item_state = J.item_state
                    new_jumpsuit_name = J.name
                    qdel(J)
                    //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]"
                    break
                qdel(J)
            for(var/T in typesof(/obj/item/clothing/gloves))
                var/obj/item/clothing/gloves/G = new T
                //world << "DEBUG: [wash_color] == [J.item_color]"
                if(wash_color == G.item_color)
                    new_glove_icon_state = G.icon_state
                    new_glove_item_state = G.item_state
                    new_glove_name = G.name
                    qdel(G)
                    //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]"
                    break
                qdel(G)
            for(var/T in typesof(/obj/item/clothing/shoes/sneakers))
                var/obj/item/clothing/shoes/sneakers/S = new T
                //world << "DEBUG: [wash_color] == [J.item_color]"
                if(wash_color == S.item_color)
                    new_shoe_icon_state = S.icon_state
                    new_shoe_name = S.name
                    qdel(S)
                    //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]"
                    break                                                                                                                                                                                   
                qdel(S)
            for(var/T in typesof(/obj/item/weapon/bedsheet))
                var/obj/item/weapon/bedsheet/B = new T
                //world << "DEBUG: [wash_color] == [J.item_color]"
                if(wash_color == B.item_color)
                    new_sheet_icon_state = B.icon_state
                    new_sheet_name = B.name
                    qdel(B)
                    //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]"
                    break
                qdel(B)
            for(var/T in typesof(/obj/item/clothing/head/soft))
                var/obj/item/clothing/head/soft/H = new T
                //world << "DEBUG: [wash_color] == [J.item_color]"
                if(wash_color == H.item_color)
                    new_softcap_icon_state = H.icon_state
                    new_softcap_name = H.name
                    qdel(H)
                    //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]"
                    break
                qdel(H)
            if(new_jumpsuit_icon_state && new_jumpsuit_item_state && new_jumpsuit_name)
                for(var/obj/item/clothing/under/color/J in contents)
                    //world << "DEBUG: YUP! FOUND IT!"
                    J.item_state = new_jumpsuit_item_state
                    J.icon_state = new_jumpsuit_icon_state
                    J.item_color = wash_color
                    J.name = new_jumpsuit_name
                    J.desc = new_desc
            if(new_glove_icon_state && new_glove_item_state && new_glove_name)
                for(var/obj/item/clothing/gloves/G in contents)
                    //world << "DEBUG: YUP! FOUND IT!"
                    G.item_state = new_glove_item_state
                    G.icon_state = new_glove_icon_state
                    G.item_color = wash_color
                    G.name = new_glove_name
                    G.desc = new_desc
            if(new_shoe_icon_state && new_shoe_name)
                for(var/obj/item/clothing/shoes/sneakers/S in contents)
                    //world << "DEBUG: YUP! FOUND IT!"
                    if (S.chained == 1)
                        S.chained = 0
                        S.slowdown = SHOES_SLOWDOWN
                        new /obj/item/weapon/handcuffs( src )
                    S.icon_state = new_shoe_icon_state
                    S.item_color = wash_color
                    S.name = new_shoe_name
                    S.desc = new_desc
            if(new_sheet_icon_state && new_sheet_name)
                for(var/obj/item/weapon/bedsheet/B in contents)
                    //world << "DEBUG: YUP! FOUND IT!"
                    B.icon_state = new_sheet_icon_state
                    B.item_color = wash_color
                    B.name = new_sheet_name
                    B.desc = new_desc
            if(new_softcap_icon_state && new_softcap_name)                                                                                                                                                   
                for(var/obj/item/clothing/head/soft/H in contents)
                    //world << "DEBUG: YUP! FOUND IT!"
                    H.icon_state = new_softcap_icon_state
                    H.item_color = wash_color
                    H.name = new_softcap_name
                    H.desc = new_desc
        qdel(crayon)
        crayon = null
    if( locate(/mob,contents) )
        state = 7
        gibs_ready = 1
    else
        state = 4
    update_icon()

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Oct 08, 2014 11:31 pm
by paprika
don't remind me please

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Oct 09, 2014 12:20 am
by MisterPerson
Oh my god that's awful.

Re: 'Please murder me slowly' pieces of code

PostPosted: Fri Oct 10, 2014 2:55 pm
by Perakp
Sometimes our sanity checks are insane:

Code: Select all
for (var/mob/living/silicon/robot/robo in mob_list)
   if (!robo.connected_ai && robo.mind)
      if (robo.stat != 2)
         world << "<b>[robo.name] (Played by: [robo.mind.key]) survived as an AI-less borg! Its laws were:</b>"
      else
         world << "<b>[robo.name] (Played by: [robo.mind.key]) was unable to survive the rigors of being a cyborg without an AI. Its laws were:</b>"

      if(robo) //How the hell do we lose robo between here and the world messages directly above this?
         robo.laws.show_laws(world)


And apparently it was necessary to add that there? How the hell...

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Oct 15, 2014 9:20 pm
by oranges
Code: Select all
/obj/item/weapon/bombcore/training/proc/reset()
     var/obj/machinery/syndicatebomb/holder = src.loc
     if(istype(holder))
          holder.open_panel = 0
          if(holder.wires)
              holder.wires.Shuffle()
          holder.defused = 0
          holder.update_icon()
          holder.updateDialog()

Lets call a method that waits for user input during the MC machine processing loop :(

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Oct 26, 2014 9:32 pm
by paprika
Code: Select all
usr << browse(body, "window=adminplayeropts;size=550x515")
   feedback_add_details("admin_verb","SPP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

      feedback_add_details("admin_verb","R") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

   feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

   feedback_add_details("admin_verb","SAN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

   feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!


Image

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Oct 27, 2014 7:05 am
by Ikarrus
Which is fine as long as the second parameter is unique. But that's errocode and we don't have a way to look up game statistics any more

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Oct 27, 2014 11:11 pm
by JJRcop
What is object oriented programming?

Code: Select all
/turf/simulated/floor/proc/MakeDirty()
   if(prob(66))   //fastest possible exit 2/3 of the time
      return

   // These look weird if you make them dirty
   if(istype(src, /turf/simulated/floor/carpet) || istype(src, /turf/simulated/floor/grass) || istype(src, /turf/simulated/floor/beach) || istype(src, /turf/simulated/floor/holofloor) || istype(src, /turf/simulated/floor/plating/snow) || istype(src, /turf/simulated/floor/plating/ironsand))
      return

   if(locate(/obj/structure/grille) in contents)
      return

   var/area/A = loc

            //zero dirt
   if(!istype(A) || istype(A, /area/centcom) || istype(A, /area/holodeck) || istype(A, /area/library) || istype(A, /area/janitor) || istype(A, /area/chapel) || istype(A, /area/mine/explored) || istype(A, /area/mine/unexplored) || istype(A, /area/solar) || istype(A, /area/atmos) || istype(A, /area/medical/virology))
      return

            //high dirt - 1/3
   if(istype(A, /area/toxins/test_area) || istype(A, /area/mine/production) || istype(A, /area/mine/living_quarters) || istype(A, /area/mine/north_outpost) || istype(A, /area/mine/west_outpost) || istype(A, /area/wreck) || istype(A, /area/derelict) || istype(A, /area/djstation))
      new /obj/effect/decal/cleanable/dirt(src)   //vanilla, but it works
      return


   if(prob(80))   //mid dirt  - 1/15
      return


   if(istype(A, /area/engine) || istype(A,/area/assembly) || istype(A,/area/maintenance) || istype(A,/area/construction))
       //Blood, sweat, and oil.  Oh, and dirt.
      if(prob(3))
         new /obj/effect/decal/cleanable/blood/old(src)
      else
         if(prob(35))
            if(prob(4))
               new /obj/effect/decal/cleanable/robot_debris/old(src)
            else
               new /obj/effect/decal/cleanable/oil(src)
         else
            new /obj/effect/decal/cleanable/dirt(src)
      return

   if(istype(A, /area/crew_quarters/toilet) || istype(A, /area/crew_quarters/locker/locker_toilet) || istype(A, /area/crew_quarters/bar))
      if(prob(40))
         if(prob(90))
            new /obj/effect/decal/cleanable/vomit/old(src)
         else
            new /obj/effect/decal/cleanable/blood/old(src)
      else
         new /obj/effect/decal/cleanable/dirt(src)
      return

   if(istype(A, /area/quartermaster))
      if(prob(75))
         new /obj/effect/decal/cleanable/dirt(src)
      else
         new /obj/effect/decal/cleanable/oil(src)
      return



   if(prob(75))   //low dirt  - 1/60
      return



   if(istype(A, /area/turret_protected) || istype(A, /area/security))   //chance of incident
      if(prob(20))
         if(prob(5))
            new /obj/effect/decal/cleanable/blood/gibs/old(src)
         else
            new /obj/effect/decal/cleanable/blood/old(src)
      else
         new /obj/effect/decal/cleanable/dirt(src)
      return


   if(istype(A, /area/crew_quarters/kitchen))   //Kitchen messes
      if(prob(60))
         if(prob(50))
            new /obj/effect/decal/cleanable/egg_smudge(src)
         else
            new /obj/effect/decal/cleanable/flour(src)
      else if(prob(33))
         new /obj/effect/decal/cleanable/dirt(src)
      return

   if(istype(A, /area/medical))   //Kept clean, but chance of blood
      if(prob(66))
         if(prob(5))
            new /obj/effect/decal/cleanable/blood/gibs/old(src)
         else
            new /obj/effect/decal/cleanable/blood/old(src)
      else
         if(prob(30))
            if(istype(A, /area/medical/morgue))
               new /obj/item/weapon/ectoplasm(src)
            else
               new /obj/effect/decal/cleanable/vomit/old(src)
      return

   if(istype(A, /area/toxins))
      if(prob(80))
         new /obj/effect/decal/cleanable/dirt(src)
      else
         new /obj/effect/decal/cleanable/greenglow(src)   //this cleans itself up but it might startle you when you see it.
      return

   //default
   new /obj/effect/decal/cleanable/dirt(src)
   return


code/game/turfs/simulated/dirtystation.dm Line 38

Re: 'Please murder me slowly' pieces of code

PostPosted: Fri Jan 16, 2015 7:22 am
by Jordie0608
Code: Select all
///proc/UpdateTime() //No idea why i made this a proc.
//   CMinutes = (world.realtime / 10) / 60
//   return 1

Re: 'Please murder me slowly' pieces of code

PostPosted: Fri Jun 26, 2015 4:26 pm
by Thunder11
Code: Select all
/obj/item/weapon/gun/projectile/automatic/c20r/update_icon()
   ..()
   icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
   return

Re: 'Please murder me slowly' pieces of code

PostPosted: Fri Jun 26, 2015 6:40 pm
by Scott
Jordie0608 wrote:
Code: Select all
///proc/UpdateTime() //No idea why i made this a proc.
//   CMinutes = (world.realtime / 10) / 60
//   return 1


that return though

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Jun 28, 2015 12:54 am
by mosquitoman
just found this:

Code: Select all
/obj/item/robot_parts/robot_suit/proc/check_completion()
   if(src.l_arm && src.r_arm)
      if(src.l_leg && src.r_leg)
         if(src.chest && src.head)
            feedback_inc("cyborg_frames_built",1)
            return 1
   return 0

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Jun 28, 2015 12:59 am
by DemonFiren
This is more funny than anything else.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Jun 28, 2015 2:53 am
by Remie Richards
mosquitoman wrote:just found this:

Code: Select all
/obj/item/robot_parts/robot_suit/proc/check_completion()
   if(src.l_arm && src.r_arm)
      if(src.l_leg && src.r_leg)
         if(src.chest && src.head)
            feedback_inc("cyborg_frames_built",1)
            return 1
   return 0


Eh, you can't really fix that much.
you could move the 3 ifs onto one if, that's about it.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Jun 28, 2015 4:20 am
by Scott
It's a matter of opinion, I think those ifs look better than one long if. It's organization.

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Sep 12, 2016 10:01 pm
by oranges
Code: Select all
dat += text("<HR>\n>[]<BR>\n<A href='?src=\ref[];type=1'>1</A>-<A href='?src=\ref[];type=2'>2</A>-<A href='?src=\ref[];type=3'>3</A><BR>\n<A href='?src=\ref[];type=4'>4</A>-<A href='?src=\ref[];type=5'>5</A>-<A href='?src=\ref[];type=6'>6</A><BR>\n<A href='?src=\ref[];type=7'>7</A>-<A href='?src=\ref[];type=8'>8</A>-<A href='?src=\ref[];type=9'>9</A><BR>\n<A href='?src=\ref[];type=R'>R</A>-<A href='?src=\ref[];type=0'>0</A>-<A href='?src=\ref[];type=E'>E</A><BR>\n</TT>", message, src, src, src, src, src, src, src, src, src, src, src, src)


This master piece from the secure safe was especially hilarious.

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Sep 12, 2016 10:21 pm
by PKPenguin321
those 12 src-es at the end lmao

Re: 'Please murder me slowly' pieces of code

PostPosted: Mon Sep 12, 2016 10:33 pm
by Thunder11
I feel like just seeing that has forever tainted me

Re: 'Please murder me slowly' pieces of code

PostPosted: Tue Sep 13, 2016 12:09 am
by phil235
Some code I fixed recently in the dismember PR, in the proc /obj/item/weapon/storage/book/bible/attack(mob/living/M, mob/living/carbon/human/user)

Code: Select all
   if (M.stat !=2)
      if(M.mind && (M.mind.assigned_role == "Chaplain"))
         user << "<span class='warning'>You can't heal yourself!</span>"
         return
      if ((istype(M, /mob/living/carbon/human) && prob(60)))
         bless(M)
         if(ishuman(M))
            var/mob/living/carbon/human/H = M
            var/message_halt = 0
            for(var/obj/item/bodypart/affecting in H.bodyparts)
               if(affecting.status == ORGAN_ORGANIC)
                  if(message_halt == 0)
                     M.visible_message("<span class='notice'>[user] heals [M] with the power of [src.deity_name]!</span>")
                     M << "<span class='boldnotice'>May the power of [src.deity_name] compel you to be healed!</span>"
                     playsound(src.loc, "punch", 25, 1, -1)
                     message_halt = 1
               else
                  user << "<span class='warning'>[src.deity_name] refuses to heal this metallic taint!</span>"
                  return
      else
         if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet))
            M.adjustBrainLoss(10)
            M << "<span class='danger'>You feel dumber.</span>"
         M.visible_message("<span class='danger'>[user] beats [M] over the head with [src]!</span>", \
               "<span class='userdanger'>[user] beats [M] over the head with [src]!</span>")
         playsound(src.loc, "punch", 25, 1, -1)
         add_logs(user, M, "attacked", src)

   else if(M.stat == 2)
      M.visible_message("<span class='danger'>[user] smacks [M]'s lifeless corpse with [src].</span>")
      playsound(src.loc, "punch", 25, 1, -1)
   return



Checking THREE times whether M is a human, checking twice that M is dead, and a "M:head" for good measure. All in a single proc.

Re: 'Please murder me slowly' pieces of code

PostPosted: Tue Sep 13, 2016 8:08 am
by MrStonedOne
This entire file:

https://github.com/tgstation/tgstation/ ... tumvars.dm


but, more importantly, this chunk of code from mass modify:

Code: Select all
   switch(class)
      if("restore to default")
         O.vars[variable] = initial(O.vars[variable])
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("edit referenced object")
         return .(O.vars[variable])

      if("text")
         var/new_value = input("Enter new text:","Text",O.vars[variable]) as message|null
         if(new_value == null) return

         var/process_vars = 0
         var/unique = 0
         if(findtext(new_value,"\["))
            process_vars = alert(usr,"\[] detected in string, process as variables?","Process Variables?","Yes","No")
            if(process_vars == "Yes")
               process_vars = 1
               unique = alert(usr,"Process vars unique to each instance, or same for all?","Variable Association","Unique","Same")
               if(unique == "Unique")
                  unique = 1
               else
                  unique = 0
            else
               process_vars = 0

         var/pre_processing = new_value
         var/list/varsvars = list()

         if(process_vars)
            varsvars = string2listofvars(new_value, O)
            if(varsvars.len)
               for(var/V in varsvars)
                  new_value = replacetext(new_value,"\[[V]]","[O.vars[V]]")

         O.vars[variable] = new_value

         //Convert the string vars for anything that's not O
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     new_value = pre_processing //reset new_value, ready to convert it uniquely for the next iteration

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[M.vars[V]]")
                        else
                           new_value = O.vars[variable] //We already processed the non-unique form for O, reuse it

                     M.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK
         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[M.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     M.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK

      if("num")
         var/new_value = input("Enter new number:","Num",\
               O.vars[variable]) as num|null
         if(new_value == null) return

         if(variable=="luminosity")
            O.SetLuminosity(new_value)
         else
            O.vars[variable] = new_value

         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     if(variable=="luminosity")
                        M.SetLuminosity(new_value)
                     else
                        M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     if(variable=="luminosity")
                        M.SetLuminosity(new_value)
                     else
                        M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("type")
         var/new_value
         new_value = input("Enter type:","Type",O.vars[variable]) as null|anything in typesof(/obj,/mob,/area,/turf)
         if(new_value == null) return
         O.vars[variable] = new_value
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("file")
         var/new_value = input("Pick file:","File",O.vars[variable]) as null|file
         if(new_value == null) return
         O.vars[variable] = new_value

         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O.type, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O.type, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK
         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("icon")
         var/new_value = input("Pick icon:","Icon",O.vars[variable]) as null|icon
         if(new_value == null) return
         O.vars[variable] = new_value
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

   if(method)
      if(istype(O,/mob))
         for(var/mob/M in mob_list)
            if(istype(M,O.type))
               M.on_varedit(variable)
            CHECK_TICK

      else if(istype(O,/obj))
         for(var/obj/A in world)
            if(istype(A,O.type))
               A.on_varedit(variable)
            CHECK_TICK

      else if(istype(O,/turf))
         for(var/turf/A in block(locate(1,1,1),locate(world.maxx,world.maxy,world.maxz)))
            if(istype(A,O.type))
               A.on_varedit(variable)
            CHECK_TICK

   else
      if(istype(O, /mob))
         for(var/mob/M in mob_list)
            if(M.type == O.type)
               M.on_varedit(variable)
            CHECK_TICK

      else if(istype(O, /obj))
         for(var/obj/A in world)
            if(A.type == O.type)
               A.on_varedit(variable)
            CHECK_TICK

      else if(istype(O, /turf))
         for(var/turf/A in world)
            if(A.type == O.type)
               A.on_varedit(variable)
            CHECK_TICK


Re: 'Please murder me slowly' pieces of code

PostPosted: Tue Sep 13, 2016 10:46 am
by Remie Richards
MrStonedOne wrote:This entire file:

https://github.com/tgstation/tgstation/ ... tumvars.dm


but, more importantly, this chunk of code from mass modify:

Code: Select all
   switch(class)
      if("restore to default")
         O.vars[variable] = initial(O.vars[variable])
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("edit referenced object")
         return .(O.vars[variable])

      if("text")
         var/new_value = input("Enter new text:","Text",O.vars[variable]) as message|null
         if(new_value == null) return

         var/process_vars = 0
         var/unique = 0
         if(findtext(new_value,"\["))
            process_vars = alert(usr,"\[] detected in string, process as variables?","Process Variables?","Yes","No")
            if(process_vars == "Yes")
               process_vars = 1
               unique = alert(usr,"Process vars unique to each instance, or same for all?","Variable Association","Unique","Same")
               if(unique == "Unique")
                  unique = 1
               else
                  unique = 0
            else
               process_vars = 0

         var/pre_processing = new_value
         var/list/varsvars = list()

         if(process_vars)
            varsvars = string2listofvars(new_value, O)
            if(varsvars.len)
               for(var/V in varsvars)
                  new_value = replacetext(new_value,"\[[V]]","[O.vars[V]]")

         O.vars[variable] = new_value

         //Convert the string vars for anything that's not O
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     new_value = pre_processing //reset new_value, ready to convert it uniquely for the next iteration

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[M.vars[V]]")
                        else
                           new_value = O.vars[variable] //We already processed the non-unique form for O, reuse it

                     M.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK
         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[M.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     M.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     new_value = pre_processing

                     if(process_vars)
                        if(unique)
                           for(var/V in varsvars)
                              new_value = replacetext(new_value,"\[[V]]","[A.vars[V]]")
                        else
                           new_value = O.vars[variable]

                     A.vars[variable] = new_value
                  CHECK_TICK

      if("num")
         var/new_value = input("Enter new number:","Num",\
               O.vars[variable]) as num|null
         if(new_value == null) return

         if(variable=="luminosity")
            O.SetLuminosity(new_value)
         else
            O.vars[variable] = new_value

         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     if(variable=="luminosity")
                        M.SetLuminosity(new_value)
                     else
                        M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     if(variable=="luminosity")
                        M.SetLuminosity(new_value)
                     else
                        M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     if(variable=="luminosity")
                        A.SetLuminosity(new_value)
                     else
                        A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("type")
         var/new_value
         new_value = input("Enter type:","Type",O.vars[variable]) as null|anything in typesof(/obj,/mob,/area,/turf)
         if(new_value == null) return
         O.vars[variable] = new_value
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("file")
         var/new_value = input("Pick file:","File",O.vars[variable]) as null|file
         if(new_value == null) return
         O.vars[variable] = new_value

         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O.type, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O.type, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK
         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

      if("icon")
         var/new_value = input("Pick icon:","Icon",O.vars[variable]) as null|icon
         if(new_value == null) return
         O.vars[variable] = new_value
         if(method)
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if ( istype(M , O.type) )
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if ( istype(A , O.type) )
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

         else
            if(istype(O, /mob))
               for(var/mob/M in mob_list)
                  if (M.type == O.type)
                     M.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /obj))
               for(var/obj/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

            else if(istype(O, /turf))
               for(var/turf/A in world)
                  if (A.type == O.type)
                     A.vars[variable] = O.vars[variable]
                  CHECK_TICK

   if(method)
      if(istype(O,/mob))
         for(var/mob/M in mob_list)
            if(istype(M,O.type))
               M.on_varedit(variable)
            CHECK_TICK

      else if(istype(O,/obj))
         for(var/obj/A in world)
            if(istype(A,O.type))
               A.on_varedit(variable)
            CHECK_TICK

      else if(istype(O,/turf))
         for(var/turf/A in block(locate(1,1,1),locate(world.maxx,world.maxy,world.maxz)))
            if(istype(A,O.type))
               A.on_varedit(variable)
            CHECK_TICK

   else
      if(istype(O, /mob))
         for(var/mob/M in mob_list)
            if(M.type == O.type)
               M.on_varedit(variable)
            CHECK_TICK

      else if(istype(O, /obj))
         for(var/obj/A in world)
            if(A.type == O.type)
               A.on_varedit(variable)
            CHECK_TICK

      else if(istype(O, /turf))
         for(var/turf/A in world)
            if(A.type == O.type)
               A.on_varedit(variable)
            CHECK_TICK



Hey! don't include the custom var embed section, I wrote that and it's -fine-

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Sep 14, 2016 2:42 am
by MrStonedOne
No it's not, You do the same code inside like 4 loops for shortcutting the type, when that could be done once and added to a list
Code: Select all
var/list/typecache = list(D.type = 1)
if (method)
    typecache = typecacheof(typecache)
var/list/items
if(istype(O, /turf))
    for(var/turf/T in world)
        if(typecache[T.type])
            items += T
else if(istype(O, /mob))
    for(var/mob/M in mob_list)
        if(typecache[M.type])
            items += M
...

switch (class)
...
    if ("text")
...
    for(var/thing in items)
        var/datum/D = thing
        D.vars[variable] = newvalue



By using a type cache (that we only expand to all subtypes if method is true) we can remove the if(method) thats repeated all over the place.
By using a pre-calculated list, we can prevent having to repeat that else if of istypes()

By repeating your ifs for calculated vars across all the types, you contributed to the mess. =P

Not that you had much of a choice, we didn't know about typecaches then.

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Sep 14, 2016 2:55 am
by Remie Richards
It's a lot funnier knowing that it was me who came up with typecaches, and you who was my rubber duck at the time.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sat Sep 17, 2016 2:08 am
by MimicFaux
I am grateful for the work you guys do. This is all sorcery to me, and I am but peering into the arcane.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sat Sep 24, 2016 6:41 pm
by TwitchTail13
Aranclanos wrote:Image

Each time that any object moves to a floor turf, is checks if it's a human. If it's a human, it checks if they're wearing clown shoes, just to make the clown step sound.

Each time that any object moves.

No wonder this game is laggy. Yanderedev must have programmed it.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Sep 25, 2016 3:32 pm
by Scott
Our scapegoat here is "old coders".

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Sep 25, 2016 6:40 pm
by The Ultimate Chimera
What is the point of this thread?

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Sep 25, 2016 7:08 pm
by Scott
To have a laugh.

Re: 'Please murder me slowly' pieces of code

PostPosted: Sun Sep 25, 2016 8:05 pm
by Supermichael777
from CM
Code: Select all
/obj/item/weapon/katana
   name = "katana"
   desc = "A finely made Japanese sword, expertly crafted by a dedicated weaponsmith. It has some foreign letters carved into the hilt."
   icon_state = "katana"
   item_state = "katana"
   flags = FPRINT | CONDUCT
   slot_flags = SLOT_BELT | SLOT_BACK
force = 40


a slightly op weeb sword
wait too many serch results

Code: Select all
/obj/item/weapon/butterfly/katana
   name = "katana"
   desc = "A ancient weapon from Japan."
   icon_state = "samurai"
force = 50


Wait what does butterfly do?

Code: Select all
/obj/item/weapon/butterfly
   name = "butterfly knife"
   desc = "A basic metal blade concealed in a lightweight plasteel grip. Small enough when folded to fit in a pocket."
   icon_state = "butterflyknife"
   item_state = null
   hitsound = null
   var/active = 0
   w_class = 2
   force = 8
   sharp = 0
   edge = 0
   throw_speed = 3
   throw_range = 4
   throwforce = 7
   attack_verb = list("patted", "tapped")
   attack_speed = 4

Code: Select all
/obj/item/weapon/butterfly/attack_self(mob/user)
   active = !active
   if(active)
      user << "<span class='notice'>You flip out your [src].</span>"
      playsound(user, 'sound/weapons/flipblade.ogg', 15, 1)
      force = 15 //bay adjustments
      throwforce = 12
      edge = 1
      sharp = 1
      hitsound = 'sound/weapons/bladeslice.ogg'
      icon_state += "_open"
      w_class = 3
      attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
   else
      user << "<span class='notice'>The butterfly knife can now be concealed.</span>"
      force = initial(force)
      edge = 0
      sharp = 0
      hitsound = initial(hitsound)
      icon_state = initial(icon_state)
      w_class = initial(w_class)
      attack_verb = initial(attack_verb)
add_fingerprint(user)


oh

TLDR; CM has a katana that is literal a folded knife

Re: 'Please murder me slowly' pieces of code

PostPosted: Wed Oct 05, 2016 7:59 pm
by Ikarrus
I fear that one of these days one of my abortions will show up here

Re: 'Please murder me slowly' pieces of code

PostPosted: Sat Nov 26, 2016 12:32 am
by Mervill
This is code that I added a few days ago to ai status displays

Code: Select all
/obj/machinery/ai_status_display/attack_ai(mob/living/silicon/ai/user)
   if(isAI(user))
      user.ai_statuschange()


Originally the `if(isAI(user))` was not there ... I stupidly assumed that `attack_ai` would only every be called by the AI but that's not the case.

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Jan 05, 2017 1:16 am
by oranges
Code: Select all
/datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume)
   if(!..())
      return
   if(!M.has_dna())
      return  //No robots, AIs, aliens, Ians or other mobs should be affected by this.
   if((method==VAPOR && prob(min(33, reac_volume))) || method==INGEST || method==PATCH || method==INJECT)
      M.randmuti()
      if(prob(98))
         M.randmutb()
      else
         M.randmutg()
      M.updateappearance()
      M.domutcheck()
..()

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Jan 05, 2017 2:37 am
by lzimann
Code: Select all
/proc/is_revolutionary(mob/M)
   return M && istype(M) && M.mind && ticker && ticker.mode && M.mind in ticker.mode.revolutionaries

/proc/is_head_revolutionary(mob/M)
   return M && istype(M) && M.mind && ticker && ticker.mode && M.mind in ticker.mode.head_revolutionaries

/proc/is_revolutionary_in_general(mob/M)
   return is_revolutionary(M) || is_head_revolutionary(M)


Not totally bad but damn, the entire gamemode code is not fun to read.

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Jan 05, 2017 6:09 am
by PKPenguin321
oranges wrote:
Code: Select all
/datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume)
   if(!..())
      return
   if(!M.has_dna())
      return  //No robots, AIs, aliens, Ians or other mobs should be affected by this.
   if((method==VAPOR && prob(min(33, reac_volume))) || method==INGEST || method==PATCH || method==INJECT)
      M.randmuti()
      if(prob(98))
         M.randmutb()
      else
         M.randmutg()
      M.updateappearance()
      M.domutcheck()
..()

What's so bad about this? I usually get these but this one's readable and not awful

Re: 'Please murder me slowly' pieces of code

PostPosted: Thu Jan 05, 2017 6:33 pm
by oranges
PKPenguin321 wrote:
oranges wrote:
Code: Select all
/datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume)
   if(!..())
      return
   ...
   ..()

What's so bad about this? I usually get these but this one's readable and not awful