Wolf TF

From SkyCorp Global
Jump to: navigation, search
Note - this Transformation is a modification for The Underworld. You can put it in-game by visiting the Debug Mod Control Panel in the debug rooms. The debug rooms are accessed via the Debug Box, an item available to all Private Build Backers which is located in the first room you spawn in (Ex's Apartment).

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": "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"
}

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();