Wolf TF

From SkyCorp Global
Note - this Transformation is a modification for The Underworld. Visit the new Mods Portal for more mods, mods on the wiki are no longer maintained. You can put it in-game by visiting the Debug Mod Control Panel in the debug rooms and browse to this mod or copy/paste the JSON below into the program window.

Transformation Details

This transformation allows you to become a wolf. It demonstrates a transformation into a quadrupedal form, as well as a form with useless hands (paws). It comes in two parts: the Wolf TF (a species), and a Wolf Collar (a cursed clothing item). Please install both JSON codes into the mod panel in order to try out the transformation.

Required version: r30 or higher

Author: SkyCorp

Transformation JSON Code

Wolf Species

{
	"type": "SPECIES",
	"id": "WolfTF",
	"transformedBodyPartDescriptions":
	{
		"Feet": "claw-tipped, padded paws",
		"Legs": "grey fur-covered legs",
		"Torso": "grey fur-covered chest",
		"Arms": "grey fur-covered arms",		
		"Hands": "claw-tipped, padded paws",
		"LBack_Attach": "one foot, fluffy tail",
		"Eyes": "dark wolf eyes",
		"Teeth": "sharp wolf teeth",
		"Nose": "wet nose",
		"Mouth": "muzzle",
		"Ears": "triangular ears"
	},
	"causeTF":
	{
		"programVoid": true
	},
	"getIsFullyTransformed":
	{
		"programBoolean": true
	},
	"hasUselessHands":
	{
		"programBoolean": true
	},
	"getIsBipedal":
	{
		"programBoolean": true
	},
	"getHeightDescription":
	{
		"programString": true
	},
	"getPostureDescription":
	{
		"literalString": "stand"
	},
	"luac": "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"
}

Wolf Collar

{
	"type": "CLOTHING",
	"name":
	{
		"literalString": "Wolf Collar"
	},
	"description":
	{
		"literalString": "A collar made out of a sturdy fabric."
	},
	"getSlot":
	{
		"literalString": "neck"
	},
	"playerAttemptPickupCheck":
	{
		"programBoolean": true
	},
	"playerAttemptDropCheck":
	{
		"programBoolean": true
	},
	"inInventoryTick":
	{
		"programVoid": true
	},
	"luac": "G0x1YVEAAQQEBAgAEAAAAEB3b2xmQ29sbGFyLmx1YQAAAAAAAAAAAAAAAgIKAAAAJAAAAAcAAAAkQAAAB0AAACSAAAAHgAAABcAAAAYAQQAcQIAAHgCAAAUAAAAEGQAAAHBsYXllckF0dGVtcHRQaWNrdXBDaGVjawAEFwAAAHBsYXllckF0dGVtcHREcm9wQ2hlY2sABBAAAABpbkludmVudG9yeVRpY2sABAUAAAB0aGlzAAQLAAAAbWFrZUN1cnNlZAADAAAAAAAAAAIAAAAMAAAAAAAABBUAAAAFAAAABkBAAEGAAACFwAAAhgBBAZyAgADBQAEAVcCAABxAAAEFwAAABoBBAByAgAAaAAAAFsAAgAUAAAAGQEAAQcABABxAAAECAIAAHgAAAR4AgAAIAAAABAMAAABpbwAEBgAAAHdyaXRlAAQaAAAAWW91IHBpY2sgdXAgYW5kIHdlYXIgdGhlIAAEBQAAAHRoaXMABAgAAABnZXROYW1lAAQEAAAALiAgAAQKAAAAZ2V0Q3Vyc2VkAARGAAAAVGhlIGJ1Y2tsZSBkaXNhcHBlYXJzLCBtYWtpbmcgdGhlIGNvbGxhciBvbmUgc29saWQgc3RyYXAgb2YgZmFicmljLgoKAAAAAAAVAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAACwAAAAsAAAAMAAAAAAAAAAAAAAAAAAAADwAAACQAAAAAAAAFHgAAAAUAAAAGQEAAHICAABoAAAAWAAOABYAAAAbAQABFAAEARkDBAIGAAQDBwAEAAQECAJUAAQFcAAABHEAAAAIAAAAeAAABFoACgAWAAAAGwEAARQABAEZAwQCBQAIAwYACAJXAAAFcAAABHEAAAAIAgAAeAAABHgCAAAsAAAAEBQAAAHRoaXMABAoAAABnZXRDdXJzZWQABAsAAABNYWluU2NyZWVuAAQMAAAAYWRkR2FtZVRleHQABAkAAABHYW1lVGV4dAAECgAAAHBhcnNlVGV4dAAEGQAAAFlvdSB0cnkgdG8gdGFrZSBvZmYgdGhlIAAEPwAAAGNvbGxhciB3aXRoIHlvdXIgW1tIQU5EUyBERVNDUklQVElPTl1dLCBidXQgaXQgd29uJ3QgYnVkZ2UuLi4gAAQPAAAAaXQncyBjdXJzZWQhCgoABBkAAABZb3UgdGFrZSBvZmYgdGhlIGNvbGxhciAABD0AAAB3aXRoIHlvdXIgW1tIQU5EUyBERVNDUklQVElPTl1dIGFuZCBkcm9wIGl0IHRvIHRoZSBncm91bmQuCgoAAAAAAB4AAAAQAAAAEAAAABAAAAAQAAAAEAAAABIAAAASAAAAEgAAABIAAAASAAAAEwAAABQAAAAUAAAAEgAAABIAAAAdAAAAHQAAAB0AAAAgAAAAIAAAACAAAAAgAAAAIAAAACEAAAAhAAAAIAAAACAAAAAiAAAAIgAAACQAAAAAAAAAAAAAAAAAAAAnAAAANQAAAAAAAAMcAAAABQAAAAZAQABBgAAAgcAAAByAgAEXwEAAFsAEgAUAAQAGQEEAQYABABxAAAEFAAIABkBCAEGAAgAcgAABB8ABAAXAAQAXwEIAFgABgAUAAwAGQEMAQYADABxAAAEWgACABcABAAbAQwAcQIAAHgCAABAAAAAEBQAAAG1hdGgABAcAAAByYW5kb20AAwAAAAAAAPA/AwAAAAAAAABABAMAAABpbwAEBgAAAHdyaXRlAAQuAAAAWW91IGZlZWwgdGhlIGNvbGxhciBncm93IHdhcm0gb24geW91ciBuZWNrLiAgAAQFAAAAd29sZgAECAAAAFNwZWNpZXMABAsAAABnZXRTcGVjaWVzAAQHAAAAV29sZlRGAAAECwAAAE1haW5TY3JlZW4ABAwAAABhZGRHYW1lVGV4dAAEJwAAAFBsZWFzZSBsb2FkIHRoZSBXb2xmVEYgbW9kIGRlZmluaXRpb24uAAQIAAAAY2F1c2VURgAAAAAAHAAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAArAAAAKwAAACsAAAArAAAALgAAAC4AAAAuAAAALgAAAC4AAAAvAAAALwAAAC8AAAAwAAAAMAAAADAAAAAwAAAAMAAAADIAAAAyAAAAMgAAADUAAAAAAAAAAAAAAAoAAAAMAAAAAgAAACQAAAAPAAAANQAAACcAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAA="
}

LUA Source Code

Wolf Species

-- Called to trigger this species transformation on the player.
function causeTF()
	-- In this setup, a separate function exists for each body part 
	-- transformation.  Each will return true in the event that it effects the
	-- player.  Thanks to shortcutting, only one transformation will take place.
	-- Feel free to change the ordering to have the TF happen in a different
	-- order, or evaluating multiple times can make several body parts change at
	-- once (here, nose & mouth happens at the same time thanks to the AND).
	transformedAnything = tfEars() or tfFeet() or tfLegsPhaseOne() or tfTorso() or tfArms() or
		tfLBackAttach() or tfEyes() or tfTeeth() or (tfMouth() and
		tfNose()) or tfLegsPhaseTwo() or tfHands();
end

function tfFeet()
	-- getSeverityTFed() returns the severity of transformation to a particular 
	-- species for a particular body part.  0 is returned for human or for a 
	-- TF to a different species.
	if this.getSeverityTFed(BodyPart.getBodyPart("feet")) > 0 then
		return false; -- Already transformed
	end

	-- Transformation has not yet taken place, so transform the player.

	-- Includes spaces after the sentence in case multiple TFs are called.
	MainScreen.addGameText("Your feet become paws.  ");

	-- Change body part
	setTransformed("feet");
	
	return true;
end

function tfLegsPhaseOne()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("legs")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your legs grow a layer of dark grey fur.  ");
   setTransformed("legs");
   
   return true;
end

function tfLegsPhaseTwo()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("legs")) > 1 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("The ground rushes toward you as your balance shifts -- your legs and hips reconfigure themselves into a new arrangement.  ");
   
   -- Lose pants, if any
   pants = Player.getInstance().getClothing("legs");
   if pants ~= nil then
	   Player.getInstance().dropItemForceSilent(pants);
	   MainScreen.addGameText("Your " .. pants.getName() .. " falls to the ground, your hips no longer holding them in place.  ");
   end
   
   MainScreen.addGameText("You try to lift yourself off the ground, and find you're unable to get back up.  You're going to be walking on all fours from now on!  ");
   setTransformed("legs", 2);
   
   -- Change player height since they're on all fours
   Player.getInstance().setHeightSilent(3 * 12); -- 3ft
   
   -- A little bit of flavor text
   MainScreen.addGameText(GameText.parseText("\n\nThe thought of walking around on all fours like some animal feels [[IF [[HIGH ACCEPTANCE]]]]so right for you.  'Of course this is the right way to walk for an animal like me,' you think happily.[[ELSE IF [[MEDIUM ACCEPTANCE]]]]kind of weird, but you're actually kind of interested in trying it out.  You know you probably shouldn't enjoy looking like this, but can't help it.[[ELSE]]so wrong... you hate that it'll make you look like some lowly animal!  You let out a growl of frustration, but stop when you realize growling would make your situation look even worse.[[ENDIF]]\n\n"));
   
   return true;
end

function tfTorso()
	-- Wolves will have three rows of breasts
	player = Player.getInstance();
	if player.getBreastRows() < 3 then
		player.tfIncBreastRows();
		return true;
	elseif player.getBreastRows() > 3 then
		player.tfDecBreastRows();
		return true;
	end
	
   if this.getSeverityTFed(BodyPart.getBodyPart("torso")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your chest grows a layer of grey fur.  ");
   setTransformed("torso");
   return true;
end

function tfArms()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("arms")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your arms grow a layer of grey fur.  ");
   setTransformed("arms");
   
   return true;
end

function tfHands()
	-- Comments omited for brevity, these functions follow the same pattern as
	-- tfFeet(), so see that for an example.
	if this.getSeverityTFed(BodyPart.getBodyPart("hands")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your hands develop pads and lose a considerable amount of dexterity.  Your fingernails change, becoming sharp claws.  It will be difficult to use many items with these paws!  ");
   setTransformed("hands");
   
   return true;
end

function tfLBackAttach()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("LBack_Attach")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText(GameText.parseText("You feel a fluffy black tail sprout from your backside.  You pick it up with your [[HANDS DESCRIPTION]] and note its one foot length.  "));
   setTransformed("LBack_Attach");
   
   return true;
end

function tfEyes()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("eyes")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your sense your eyes becoming brown wolf eyes.  ");
   setTransformed("eyes");
   
   return true;
end

function tfTeeth()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("teeth")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your teeth elongate, sharpening and becoming distinctly canine in appearance.  ");
   setTransformed("teeth");
   
   return true;
end

function tfNose()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("nose")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your nose flattens into your muzzle, feeling a bit wet.  ");
   setTransformed("nose");
   
   return true;
end

function tfMouth()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("mouth")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("You feel your mouth stretching outwards and growing dark grey fur... it's becoming a muzzle!  ");
   setTransformed("mouth");
   
   return true;
end

function tfEars()
   -- Comments omited for brevity, these functions follow the same pattern as
   -- tfFeet(), so see that for an example.
   if this.getSeverityTFed(BodyPart.getBodyPart("ears")) > 0 then
      return false; -- Already transformed
   end

   MainScreen.addGameText("Your ears stretch out, becoming triangular and raising to the top of your head.  ");
   setTransformed("ears");
   
   return true;
end

-- Set the target body part to be Wolf
function setTransformed(partName, severity)
	-- Default parameter for severity is 1 (most TFs are hideable)
	severity = severity or 1;
	
	-- Get the body part that is being changed
	bodyPart = BodyPart.getBodyPart(partName);
	if bodyPart == nil then
		MainScreen.addGameText("Warning: could not find body part name " .. partName 
			.. "\n");
		return;
	end

	-- Transformation severity indicates how severe the transformation is.
	-- 0 = Human
	-- 1 = Non-human but hideable under appropriate clothes
	-- 2 = Non-human and unhideable
	bodyPart.setTransformationSeverity(severity);

	-- Set species type to this transformation
	bodyPart.setSpeciesType(this);
end

-- This function should return whether or not player is 100% the target form.
-- Often used to determine whether to continue calling causeTF() in a forced
-- transformation sequence (ie: lose to a transforming monster).
function getIsFullyTransformed()
	-- This species transforms 12 body parts, so if the totals line up, the 
	-- player is fully transformed.  Since this is a multi-phase TF, also need 
	-- to check TF severity.
	return this.countPlayerPartsOfThisType() >= 11 and 
		this.getSeverityTFed(BodyPart.getBodyPart("legs")) >= 2;
end

-- Special function to cause the player to have useless hands since wyverns
-- don't have hands, just wing arms.
function hasUselessHands()
	-- This function is executed on the species type of the player's hands.
	-- So if this function is called, the player has wolf paws.  
	-- We could simply return true, but just to be safe though, we check that 
	-- the player does indeed have wolf hands.
	return this.getSeverityTFed(BodyPart.getBodyPart("hands")) >= 0;
end

function getIsBipedal()
	-- Once legs reach wolf transformation level 2, the player is walking around
	-- on all fours
	return this.getSeverityTFed(BodyPart.getBodyPart("legs")) < 2;
end

-- Returns the string the prefaces the player's current height in the
-- info text box.  There are some defaults already for quadrupeds, so defining
-- this is optional.
function getHeightDescription()
	if Player.getInstance().getIsAllFours() then
		return "You pad along on all fours";
	else
		return "You stand";
	end
end

Wolf Collar

-- Called when player wants to pick up/wear pendant.
function playerAttemptPickupCheck()

   io.write("You pick up and wear the " .. this.getName() .. ".  ");

   if this.getCursed() then
      io.write("The buckle disappears, making the collar one solid strap of fabric.\n\n");
   end

   -- Always okay to pick up / wear this item.
   return true;
end

-- Called when player wants to drop pendant.
function playerAttemptDropCheck()
   if this.getCursed() then
      -- Disallow player from droping cursed item
      MainScreen.addGameText(GameText.parseText("You try to take off the " ..
         "collar with your [[HANDS DESCRIPTION]], but it won't budge... " ..
         "it's cursed!\n\n"));

      -- MainScreen.addGameText is used here instead of io.write.  This is
      -- because of a LUFA bug, GameText.parseText appears to be returning 
      -- multiple erroneous extra strings from GameText.parseText, even though 
      -- AS3 is not doing so.  Thus MainScreen.addGameText is used (probably
      -- a good idea to use in general unless you specifically want to output
      -- an array).

      return false;
   else
      -- Not cursed, allow drop
      MainScreen.addGameText(GameText.parseText("You take off the collar " ..
         "with your [[HANDS DESCRIPTION]] and drop it to the ground.\n\n"));
      return true;
   end
end

-- Called every game tick while player is carrying / wearing pendant.
function inInventoryTick()
   -- Random 50% chance of the pendant transforming player.
   if math.random(1,2) == 2 then
      -- Player will be TF'ed.
      io.write("You feel the collar grow warm on your neck.  ");

      -- Cause wolf TF.
		wolf = Species.getSpecies("WolfTF");
		if wolf == nil then
			MainScreen.addGameText("Please load the WolfTF mod definition.");
		else
			wolf.causeTF();
		end
   end
end

-- As this is not contained in a function, it will be executed immediately
-- during mod load.
this.makeCursed();