<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.skycorp.global/index.php?action=history&amp;feed=atom&amp;title=Modding%3AUpgrade_Mod_Guide_for_Permanent_TF</id>
	<title>Modding:Upgrade Mod Guide for Permanent TF - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.skycorp.global/index.php?action=history&amp;feed=atom&amp;title=Modding%3AUpgrade_Mod_Guide_for_Permanent_TF"/>
	<link rel="alternate" type="text/html" href="http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;action=history"/>
	<updated>2026-05-16T00:14:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;diff=1057&amp;oldid=prev</id>
		<title>SkyCorp: SkyCorp moved page Upgrade Mod Guide for Permanent TF to Modding:Upgrade Mod Guide for Permanent TF</title>
		<link rel="alternate" type="text/html" href="http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;diff=1057&amp;oldid=prev"/>
		<updated>2025-06-17T07:36:45Z</updated>

		<summary type="html">&lt;p&gt;SkyCorp moved page &lt;a href=&quot;/index.php/Upgrade_Mod_Guide_for_Permanent_TF&quot; class=&quot;mw-redirect&quot; title=&quot;Upgrade Mod Guide for Permanent TF&quot;&gt;Upgrade Mod Guide for Permanent TF&lt;/a&gt; to &lt;a href=&quot;/index.php/Modding:Upgrade_Mod_Guide_for_Permanent_TF&quot; title=&quot;Modding:Upgrade Mod Guide for Permanent TF&quot;&gt;Modding:Upgrade Mod Guide for Permanent TF&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:36, 17 June 2025&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key wiki:diff::1.12:old-847:rev-1057 --&gt;
&lt;/table&gt;</summary>
		<author><name>SkyCorp</name></author>
	</entry>
	<entry>
		<id>http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;diff=847&amp;oldid=prev</id>
		<title>SkyCorp: fix link</title>
		<link rel="alternate" type="text/html" href="http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;diff=847&amp;oldid=prev"/>
		<updated>2025-03-13T07:07:40Z</updated>

		<summary type="html">&lt;p&gt;fix link&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:07, 13 March 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Simple mobs (ex: created via SCLab) must now have defeat text, but most (all?) already do.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Simple mobs (ex: created via SCLab) must now have defeat text, but most (all?) already do.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** (Mobs previously didn&amp;#039;t show the defeat text ever because it was preempted by the TF scene.  It will now show the defeat text if the player is already that form or cannot TF because they&amp;#039;re permanently locked to another species.  It looks like simple mobs already had defeat text specified as this was already a field in SCLab.)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** (Mobs previously didn&amp;#039;t show the defeat text ever because it was preempted by the TF scene.  It will now show the defeat text if the player is already that form or cannot TF because they&amp;#039;re permanently locked to another species.  It looks like simple mobs already had defeat text specified as this was already a field in SCLab.)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Advanced mobs:  Recommended to check [[shouldAttemptTransformation()]] on the species prior to causing a transformation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Advanced mobs:  Recommended to check [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Species#bool shouldAttemptTransformation()|&lt;/ins&gt;shouldAttemptTransformation()]] on the species prior to causing a transformation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** (I did not yet do this for existing advanced mobs)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** (I did not yet do this for existing advanced mobs)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-846:rev-847 --&gt;
&lt;/table&gt;</summary>
		<author><name>SkyCorp</name></author>
	</entry>
	<entry>
		<id>http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;diff=846&amp;oldid=prev</id>
		<title>SkyCorp: Mod upgrade guide for supporting permanent TF modes</title>
		<link rel="alternate" type="text/html" href="http://wiki.skycorp.global/index.php?title=Modding:Upgrade_Mod_Guide_for_Permanent_TF&amp;diff=846&amp;oldid=prev"/>
		<updated>2025-03-13T07:06:33Z</updated>

		<summary type="html">&lt;p&gt;Mod upgrade guide for supporting permanent TF modes&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In r54, permanent transformation was added.  This guide documents mod changes needed for mods to understand permanent TF.&lt;br /&gt;
&lt;br /&gt;
While I already updated all species in the mod database to support it, this guide will illustrate steps you can apply if you have any non-uploaded species mods -- or if you are a mod author curious as to how this was performed.&lt;br /&gt;
&lt;br /&gt;
By making these changes, your mod will understand when the player is in various permanent TF states and react accordingly, as well as for other game content to understand when your own custom transformations is in permanent TF.&lt;br /&gt;
&lt;br /&gt;
= Updating custom monsters =&lt;br /&gt;
&lt;br /&gt;
* Simple mobs (ex: created via SCLab) must now have defeat text, but most (all?) already do.  &lt;br /&gt;
** (Mobs previously didn&amp;#039;t show the defeat text ever because it was preempted by the TF scene.  It will now show the defeat text if the player is already that form or cannot TF because they&amp;#039;re permanently locked to another species.  It looks like simple mobs already had defeat text specified as this was already a field in SCLab.)&lt;br /&gt;
* Advanced mobs:  Recommended to check [[shouldAttemptTransformation()]] on the species prior to causing a transformation.&lt;br /&gt;
** (I did not yet do this for existing advanced mobs)&lt;br /&gt;
&lt;br /&gt;
= Updating custom species (transformations) =&lt;br /&gt;
I updated all existing mod species in the database on 3/12/2025, so &amp;#039;&amp;#039;&amp;#039;these steps have already been performed on all species mods in the database&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* Update &amp;#039;&amp;#039;&amp;#039;getIsFullyTransformed()&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
** Species should make sure they defined a [[Species Mod JSON Format|getIsFullyTransformed]] as that is now relied on by ShouldAttemptTransformation.  (Not defining one might result in tf sequences that don&amp;#039;t tf the player) &lt;br /&gt;
** getIsFullyTransformed now also should check feminization/gender TF.  Some species (ex: mermaid) will always feminize player.  But most species will only force feminize the player if the relevant game option was chosen during character creation.  The new [[Species#bool checkFullyFeminizedIfShould(int targetBreastSize, int targetVaginaSize=1, bool thisTfAlwaysFeminizes=false)|checkFullyFeminizedIfShould()]] function can be used to simplify this check.        &lt;br /&gt;
** If there are other custom reasons your transformation should not be called (ex: multi-phase TF with requirements not yet met), there are functions for CheckSpeciesTransformationAllowed + ShouldAttemptTransformation.  I have not exposed those to be overridden currently, but if you need them, let me know.&lt;br /&gt;
* Update &amp;#039;&amp;#039;&amp;#039;causeTF()&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
** At the start, call [[Species#bool CheckSpeciesTransformationAllowed(bool silent=false)|CheckSpeciesTransformationAllowed()]] and return if false, to make sure that the player&amp;#039;s overall species hasn&amp;#039;t been restricted to something else&lt;br /&gt;
** Your TF can hook into the Always Feminize game option by checking the [[Species#[get only] bool feminize|feminize]] variable and feminizing player if it is set. (disregard if your TF is an always feminizing TF, since it should always feminize)  [ex: see [https://skycorp.global/skyscript/mods/v/8/pig-species pig tf]&amp;#039;s causeTF()/getIsFullyTransformed() for an optional gender TF based on feminize variable]&lt;br /&gt;
* Update each &amp;#039;&amp;#039;&amp;#039;tfBodyPart&amp;#039;&amp;#039;&amp;#039; function:&lt;br /&gt;
** check [[Species#bool checkBodyPartTransformationAllowed(BodyPart bodyPart, bool silent=true)|CheckBodyPartTransformationAllowed]] to ensure it is allowed to transform that body part, before transforming it.&lt;br /&gt;
** after successful transformation, call [[Species#void onTransformed()|OnTransformed()]];  This will allow the game to detect the transformation and potentially register your species as the permanent overall species the player is locked to (if in that game mode)&lt;br /&gt;
** See [https://skycorp.global/skyscript/mods/v/3/giraffe-species Giraffe TF] for example&lt;/div&gt;</summary>
		<author><name>SkyCorp</name></author>
	</entry>
</feed>