Drain Vore code (Done... probably)

Screw up game balance and fix bugs by creating more bugs. Now you too can join the discussion. This is where the magic happens. Sometimes actual magic.

Regarding the weight system and draining...

Poll ended at Wed Apr 13, 2016 8:05 pm

Draining should drain nutrients and nutrients alone, leave weight unaffected.
0
No votes
Draining should drain both nutrients and weight at the same time.
0
No votes
Draining should drain nutrients first, then weight.
3
60%
Draining nutrients and draining weight should be their own, seperate modes.
2
40%
Other (Please post what you think).
0
No votes
 
Total votes : 5

Re: Drain Vore code

Postby rikaru19 » Sun Apr 03, 2016 6:21 pm

Wickedtemp wrote:I like this. I like this a lot.

As a pred, I don't do digestion at all. And as for my prey character, I'm indifferent.

So yeah, this would be excellent! It's awesome :3


I tend to do digestion sometimes, usually in Reika's case she has to be talked into it.

She's too innocent as a pred.

This method works loads better for her.
User avatar
rikaru19
 
Posts: 141
Joined: Sun Feb 14, 2016 4:18 pm

Re: Drain Vore code

Postby Mech__Warrior » Sun Apr 03, 2016 6:58 pm

I like this a lot as well, but I think there should also be an option for unbirth called regression that does the same thing as drain. What do you guys think?
On again/off again coder/mapper.
Mech__Warrior
 
Posts: 87
Joined: Sat Aug 08, 2015 2:07 am

Re: Drain Vore code

Postby antsnap2 » Sun Apr 03, 2016 7:34 pm

Good for slime chars and succubi :3
Antsy Coder. Characters: Muffy (drider), Jaslene (naga), Susan (slime), Miki (oni), Alythess (Demon)
User avatar
antsnap2
 
Posts: 97
Joined: Mon Oct 12, 2015 2:25 pm

Re: Drain Vore code

Postby Daisy » Sun Apr 03, 2016 7:48 pm

Scree wrote:As long as weakening them doesn't spam the message box.


I've tested it on prey, but I've never actually tested it when I was the prey being weakened... I might have to see if there is a spam or not. There shouldn't be, at least to my knowledge.
Daisy
 
Posts: 22
Joined: Sat Apr 02, 2016 11:05 pm

Re: Drain Vore code

Postby rikaru19 » Sun Apr 03, 2016 7:51 pm

Daisy wrote:
Scree wrote:As long as weakening them doesn't spam the message box.


I've tested it on prey, but I've never actually tested it when I was the prey being weakened... I might have to see if there is a spam or not. There shouldn't be, at least to my knowledge.


I can get on the test server you're using tomorrow to test that if you want.
User avatar
rikaru19
 
Posts: 141
Joined: Sun Feb 14, 2016 4:18 pm

Re: Drain Vore code

Postby Daisy » Sun Apr 03, 2016 8:24 pm

Well, I tested it, and there is no text spam... or any notification really. The only real sign someone has been completely drained is that they can no longer wiggle around inside by moving. Hmm, I could make a message that pops up once when they're weakened and put a condition that is impossible to have more than one in a single drain... unless they turn it off and turn it back on (But then it would be another instance, so... I dunno). I'll try to tinker a bit and see what I can do.

Another thing I notice is that draining someone by 3 points per tick would probably be a very slow process to drain someone to the point of weakening. I could turn it up to 5 or 10 where it can fairly easily be reached in a matter of minutes instead of what seems to be a quarter of an hour.

Edit: And I did it! I should probably update the post's code now. Anyway, here is the new drain code. As for 10 nutrients per tick, I think it's a pretty good number for feeding the predator fairly quick while giving enough ample time for the pred to react before it hits the threshold.
Code: Select all
      //STOMACH DRAIN
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_DRAIN && M.stat != DEAD)
         if(air_master.current_cycle%3==1)
            if(!(M.status_flags & GODMODE))
               if(M.nutrition > 90)
                  owner.nutrition += 10            // I took it from the womb code because I'm SOOOO clever... Edit the values and the code to your heart's content. -Daisy
                  M.nutrition -= 10
               else if (M.nutrition <= 90)
                  if (M.weakened == 0)                  // If they were weakened before and they're that hungry, both of you are probably not going to notice a difference.
                     owner << "<span class='notice'>You feel [M]'s struggles dying down as their body is drained almost completely to the point of exaustion.</span>"   //Pred's message.
                     M << "<span class='notice'>Your body feels too weak to offer any significant resistance inside of [owner]'s stomach.</span>"   //Prey's message.
                     M.Weaken(10)
                  else      
                     M.Weaken(10)                  // Knocked down, but still able to talk and emote clearly.Keeps resetting to 10 until free.

If anyone has a better message when they become weakened via draining, I'd like to hear it... really! I don't think mine are that good and a better message would be appreciated. Anyway, there it is!
Daisy
 
Posts: 22
Joined: Sat Apr 02, 2016 11:05 pm

Re: Drain Vore code

Postby cameron653 » Sun Apr 03, 2016 11:17 pm

Looking at the code, it looks like everything would work.
You should probably go and make it so all vore organs can absorb, instead of just the stomach, if you haven't done so already. But other than that, good job.
cameron653
 
Posts: 52
Joined: Sat Jan 30, 2016 5:13 pm
Location: https://github.com/cameron653/

Re: Drain Vore code

Postby Daisy » Mon Apr 04, 2016 12:10 am

I guess I could do that, sure. Would be a simple process. I'll post the bits of code here when I get to it.

Edit: Well, while I got the code for all the belly rooms to drain (I just need to test it now), my question is SHOULD every belly room be able to drain? I can see the stomach and tail doing it, and maybe the womb (and I've put some thought into making a process that does the opposite and force-feeds people inside the womb using your nutrition, which will feed people much better and quicker than womb heal... maybe.), but it's kind of silly to put it in the balls and breasts if all they do is cummify/milkify people; I don't see how someone could feed through their balls or breasts but I could maybe see them using their nutrition to make more fluids, maybe just make it where it drains nutrition and it doesn't feed the pred?... I'd also imagine it may make it easier to insert different types of processing inside of someone, like shrinking people inside the balls or somethin. Should I put up a vote for this?

On a slightly unrelated note, I wonder if it is possible to slap on a code to the dog bots to use someone's nutrition for fuel instead of the prey's whole body? Hmm...

Edit numbero 2: Alright, I tested and after fixing a few simple problems, I got every belly room to drain. I'll post all the other belly codes under here while the drain code for the stomach as well as belly.dm remains on the front page. As a slight note, while I think 10 units per tick is fast enough for testing, I think it may be a little too fast for roleplaying after thinking about it for a while. It might be better at a value somewhere between 5 and 7.
[+]
belly_tail.dm
Code: Select all
//
//   Implementation of Tail Vore via the "Tail" belly type
//

/datum/belly/tail
   belly_type = "Tail"
   belly_name = "tail"
   inside_flavor = "Generic tail description"

// @Override
/datum/belly/tail/get_examine_msg(t_He, t_his, t_him, t_has, t_is)
   if (internal_contents.len || is_full == 1)
      return "[t_He] has a lump in their tail!\n"

// @Override
/datum/belly/tail/toggle_digestion()
   digest_mode = input("Tail Mode") in list("Hold", "Drain", "Digest")
   switch (digest_mode)
      if("Drain")
         owner << "<span class='notice'>You will now drain nutrition from people in your tail.</span>"
      if("Digest")
         owner << "<span class='notice'>You will now digest people in your tail.</span>"
      if("Hold")
         owner << "<span class='notice'>You will now harmlessly hold people in your tail.</span>"

// @Override

// @Override
/datum/belly/tail/process_Life()
   for (var/mob/living/M in internal_contents)

      //TAIL DRAIN
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_DRAIN && M.stat != DEAD)
         if(air_master.current_cycle%3==1)
            if(!(M.status_flags & GODMODE))
               if(M.nutrition > 90)
                  owner.nutrition += 10
                  M.nutrition -= 10
               else if (M.nutrition <= 90)
                  if (M.weakened == 0)
                     owner << "<span class='notice'>You feel [M]'s squirming dying down inside your tail as their body is drained almost completely to the point of exaustion.</span>"   //Pred's message.
                     M << "<span class='notice'>Your body feels too weak to offer any significant resistance inside of [owner]'s tail.</span>"   //Prey's message.
                     M.Weaken(10)
                  else
                     M.Weaken(10)

      //TAIL DIGEST
      if(owner.stat != DEAD && digest_mode == DM_DIGEST) // For some reason this can't be checked in the if statement below.
         if(iscarbon(M) || isanimal(M)) // If human or simple mob and you're set to digest.
            if(M.stat == DEAD)
               owner << "<span class='notice'>You feel [M] melt away inside of your tail, making it a tad thicker.</span>"
               M << "<span class='notice'>You melt away inside of [owner]'s tail, leaving it a tad thicker.</span>"
               digestion_death(M)
               continue

            // Deal digestion damage
            if(air_master.current_cycle%3==1)
               if(!(M.status_flags & GODMODE))
                  M.adjustBruteLoss(2)
                  M.adjustFireLoss(3)

belly_womb.dm (I cut this one short because the code on this file is way too big. It covers what I did though.)
Code: Select all
//
//   Implementation of Unbirthing Vore via the "womb" belly type
//

/datum/belly/womb
   belly_type = "Womb"
   belly_name = "womb"
   inside_flavor = "Generic womb description"

// @Override
/datum/belly/womb/get_examine_msg(t_He, t_his, t_him, t_has, t_is)
   if(internal_contents.len || is_full == 1)
      return "[t_He] [t_has] something in [t_his] lower belly!\n"

// @Override
/datum/belly/womb/toggle_digestion()
   digest_mode = input("Womb Mode") in list("Hold", "Heal", "Drain", "Transform (Male)", "Transform (Female)", "Transform (Keep Gender)", "Transform (Change Species)", "Digest", "Transform (Change Species) (EGG)", "Transform (Keep Gender) (EGG)", "Transform (Male) (EGG)", "Transform (Female) (EGG)")
   switch (digest_mode)
      if("Heal")
         owner << "<span class='notice'>You will now heal people you've unbirthed.</span>"
      if ("Drain")
         owner << "<span class='notice'>You will now drain nutrition from people you've unbirthed.</span>"
      if("Digest")
         owner << "<span class='notice'>You will now digest people you've unbirthed.</span>"
      if("Hold")
         owner << "<span class='notice'>You will now harmlessly hold people you've unbirthed.</span>"
      if("Transform (Male)")
         owner << "<span class='notice'>You will now transform people you've unbirthed into your son.</span>"
      if("Transform (Female)")
         owner << "<span class='notice'>You will now transform people you've unbirthed into your daughter.</span>"
      if("Transform (Keep Gender)")
         owner << "<span class='notice'>You will now transform people you've unbirthed, but they will keep their gender.</span>"
      if("Transform (Change Species)")
         owner << "<span class='notice'>You will now transform people you've unbirthed to look similar to your species.</span>"
      if("Transform (Change Species) (EGG)")
         owner << "<span class='notice'>You will now transform people you've unbirthed to look similar to your species, and surround them with an egg.</span>"
      if("Transform (Keep Gender) (EGG)")
         owner << "<span class='notice'>You will now transform people you've unbirthed to look similar to you and surround them with an egg, but they will keep their gender.</span>"
      if("Transform (Male) (EGG)")
         owner << "<span class='notice'>You will now transform people you've unbirthed into your son, and will surround them with an egg.</span>"
      if("Transform (Female) (EGG)")
         owner << "<span class='notice'>You will now transform people you've unbirthed into your daughter.</span>"
// @Override
/datum/belly/womb/process_Life()
   for(var/mob/living/M in internal_contents)
      //WOMB HEAL
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_HEAL && M.stat != DEAD)
         if(air_master.current_cycle%3==1)
            if(!(M.status_flags & GODMODE))
               if(owner.nutrition > 90)
                  M.adjustBruteLoss(-5)
                  M.adjustFireLoss(-5)
                  owner.nutrition -= 2
                  if(M.nutrition <= 400)
                     M.nutrition += 1

      //WOMB DRAIN
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_DRAIN && M.stat != DEAD)
         if(air_master.current_cycle%3==1)
            if(!(M.status_flags & GODMODE))
               if(M.nutrition > 90)
                  owner.nutrition += 10
                  M.nutrition -= 10
               else if (M.nutrition <= 90)
                  if (M.weakened == 0)
                     owner << "<span class='notice'>You feel [M]'s squirming dying down inside your womb as their body is drained almost completely to the point of exaustion.</span>"   //Pred's message.
                     M << "<span class='notice'>Your body feels too weak to offer any significant resistance inside of [owner]'s womb.</span>"   //Prey's message.
                     M.Weaken(10)
                  else
                     M.Weaken(10)

      //WOMB DIGEST
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_DIGEST)
         if(istype(M, /mob/living/carbon/human))
            var/mob/living/carbon/human/R = M
            if(R.digestable == 0)
               continue

//I'm ending the code right here, while I could post it all it would be unnecessarily WAAAAY too long.

belly_boobs.dm
Code: Select all
//
//   Implementation of Breast Vore via the "Boob" belly type
//

/datum/belly/boob
   belly_type = "Boob"
   belly_name = "breast"
   inside_flavor = "Generic boob description"

// @Override
/datum/belly/boob/get_examine_msg(t_He, t_his, t_him, t_has, t_is)
   if (internal_contents.len || is_full == 1)
      return "[t_He] has a swollen pair of breasts!\n"

/datum/belly/boob/toggle_digestion()
   digest_mode = input("Breast Mode") in list("Hold", "Drain", "Digest")
   switch (digest_mode)
      if("Drain")
         owner << "<span class='notice'>You will now drain nutrition from people in your breasts.</span>"
      if("Digest")
         owner << "<span class='notice'>You will now milkify people inside your breasts.</span>"
      if("Hold")
         owner << "<span class='notice'>You will now harmlessly hold people in your breasts.</span>"

// @Override

// @Override
/datum/belly/boob/process_Life()
   for (var/mob/living/M in internal_contents)

      //BREAST DRAIN
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_DRAIN && M.stat != DEAD)
         if(air_master.current_cycle%3==1)
            if(!(M.status_flags & GODMODE))
               if(M.nutrition > 90)
                  owner.nutrition += 10            // I took it from the womb code because I'm SOOOO clever... Edit the values and the code to your heart's content. -Daisy
                  M.nutrition -= 10
               else if (M.nutrition <= 90)
                  if (M.weakened == 0)                  // If they were weakened before and they're that hungry, both of you are probably not going to notice a difference.
                     owner << "<span class='notice'>You feel [M]'s struggles dying down as their body is drained almost completely to the point of exaustion.</span>"   //Pred's message.
                     M << "<span class='notice'>Your body feels too weak to offer any significant resistance inside of [owner]'s boobs.</span>"   //Prey's message.
                     M.Weaken(10)
                  else
                     M.Weaken(10)                  // Knocked down, but still able to talk and emote clearly.Keeps resetting to 10 until free.

      //BREAST DIGEST
      if(owner.stat != DEAD && digest_mode == DM_DIGEST) // For some reason this can't be checked in the if statement below.
         if(iscarbon(M) || isanimal(M)) // If human or simple mob and you're set to digest.
            if(M.stat == DEAD)
               owner << "<span class='notice'>You feel [M] melt into creamy milk, leaving your breasts full and jiggling.</span>"
               M << "<span class='notice'>You melt into creamy milk, leaving [owner]'s breasts full and jiggling.</span>"
               digestion_death(M)
               continue

            // Deal digestion damage
            if(air_master.current_cycle%3==1)
               if(!(M.status_flags & GODMODE))
                  M.adjustBruteLoss(2)
                  M.adjustFireLoss(3)


belly_balls.dm
Code: Select all
//
// Implementation of Cock vore via "cock" belly type
//

/datum/belly/cock
   belly_type = "Cock"
   belly_name = "balls"
   inside_flavor = "Generic sac description"

// @Override
/datum/belly/cock/get_examine_msg(t_He, t_his, t_him, t_has, t_is)
   if(internal_contents.len || is_full == 1)
      return "[t_He] has a throbbing large sack below [t_his] hips!\n"

/datum/belly/cock/toggle_digestion()
   digest_mode = input("Stomach Mode") in list("Hold", "Drain", "Digest")
   switch (digest_mode)
      if("Drain")
         owner << "<span class='notice'>You will now drain nutrition from people in your balls.</span>"
      if("Digest")
         owner << "<span class='notice'>You will now cummify people in your balls.</span>"
      if("Hold")
         owner << "<span class='notice'>You will now harmlessly hold people in your balls.</span>"

// @Override

// @Override
/datum/belly/cock/process_Life()
   for (var/mob/living/M in internal_contents)

      //BALL DRAIN
      if(iscarbon(M) && owner.stat != DEAD && digest_mode == DM_DRAIN && M.stat != DEAD)
         if(air_master.current_cycle%3==1)
            if(!(M.status_flags & GODMODE))
               if(M.nutrition > 90)
                  owner.nutrition += 10            // I took it from the womb code because I'm SOOOO clever... Edit the values and the code to your heart's content. -Daisy
                  M.nutrition -= 10
               else if (M.nutrition <= 90)
                  if (M.weakened == 0)                  // If they were weakened before and they're that hungry, both of you are probably not going to notice a difference.
                     owner << "<span class='notice'>You feel [M]'s struggles dying down as their body is drained almost completely to the point of exaustion.</span>"   //Pred's message.
                     M << "<span class='notice'>Your body feels too weak to offer any significant resistance inside of [owner]'s balls.</span>"   //Prey's message.
                     M.Weaken(10)
                  else
                     M.Weaken(10)                  // Knocked down, but still able to talk and emote clearly.Keeps resetting to 10 until free.

      //BALL DIGEST
      if(owner.stat != DEAD && digest_mode == DM_DIGEST) // For some reason this can't be checked in the if statement below.
         if(iscarbon(M) || isanimal(M)) // If human or simple mob and you're set to digest.
            if(M.stat == DEAD)
               owner << "<span class='notice'>You feel [M] dissolve into hot cum in your throbbing, swollen groin.</span>"
               M << "<span class='notice'>You dissolve into hot cum in [owner]'s throbbing, swollen groin.</span>"
               digestion_death(M)
               continue

            // Deal digestion damage
            if(air_master.current_cycle%3==1)
               if(!(M.status_flags & GODMODE))
                  M.adjustBruteLoss(2)
                  M.adjustFireLoss(3)
Daisy
 
Posts: 22
Joined: Sat Apr 02, 2016 11:05 pm

Re: Drain Vore code

Postby Aces » Fri Apr 08, 2016 2:47 pm

With the new weight gain / loss feature, could we make this absorb weight instead of nutrients? Or convert weight into nutrients? Or potentially do either?
User avatar
Aces
 
Posts: 1700
Joined: Thu Aug 06, 2015 4:13 pm

Re: Drain Vore code

Postby Daisy » Fri Apr 08, 2016 7:14 pm

Aces wrote:With the new weight gain / loss feature, could we make this absorb weight instead of nutrients? Or convert weight into nutrients? Or potentially do either?


I could make it once nutrients are burned through and enters the weak phase, it starts to drain weight from the prey and convert that to nutrients, but I don't know what the ratio should be. Right now weight gain and loss seems to take forever to go up or down a category (I've been over-satiated a whole round at 100% and didn't go from chubby to fat, though I may of gained a few pounds, unless weight is persistent between rounds and I haven't been noticing it.) and left alone the low nutrients should cause weight loss... I guess I could try for a VERY small drain after that, something that converts very little amounts of fat into a small amount of nutrients (maybe .01 weight into .5 nutrients?) until it hits the absolute minimum amount of weight (Which I think is 70), but I doubt any obese character can go from a rolling ball of pudge to a rail over the course of the round (though that may be the point... I dunno).

If I do start working on this, my plan is to make it once nutrient is siphoned to the limit, it weakens someone and moves on to draining the fat, and if all the fat is gone, it makes a slightly longer weaken and prompts that the prey is absolutely DRAINED, then the pred can move on to the next victim/digest the rest of them/keep them forever in their tummy dungeon. After all of that is done, I'll post the drain code with the modification added to it, so adding it to other parts is a simple matter of copy and paste. I'll have to dig into the weight code and see.

I wonder if there will be a treatment for being underweight for such an occasion, like the opposite of lipozine...nutrazine? lipopro?
Daisy
 
Posts: 22
Joined: Sat Apr 02, 2016 11:05 pm

PreviousNext

Return to Coding

Who is online

Users browsing this forum: No registered users and 3 guests

cron