Hi there! You are currently browsing as a guest. Why not create an account? Then you get less ads, can thank creators, post feedback, keep a list of your favourites, and more!
Test Subject
Original Poster
#1 Old 21st Jul 2019 at 9:11 PM
Default Witch aging
Hello all

I want to make it so that Witches age differently from normal sims
i downloaded a mod that alters other life state ages to immortal, used that to alter the info for each state to my taste and added witch myself using the same setup up as the others
did not work...

does anyone know how to change a witch aging?
Advertisement
Field Researcher
#2 Old 22nd Jul 2019 at 5:25 PM
You can do that with Nraas Storyprogression
Test Subject
Original Poster
#3 Old 22nd Jul 2019 at 9:53 PM
really?
seems ive missed that function, next time ill play the game ill look into that again
Test Subject
Original Poster
#4 Old 23rd Jul 2019 at 4:40 PM
So I looked into that, laptop and city hall
nothing to be found on altering aging for Witches with Nraas storyprogression
can someone point me in the right direction by any chance?
Field Researcher
#5 Old 24th Jul 2019 at 5:09 PM
You can disable aging per Caste. Set up a Caste for witches and disable aging for that.
Test Subject
Original Poster
#6 Old 24th Jul 2019 at 5:25 PM
Quote: Originally posted by KittyTheSnowcat
You can disable aging per Caste. Set up a Caste for witches and disable aging for that.

seems i failed with my explanation of what i want, its not that i want to disable aging, i want witches to have their own multiplier (default they age the same as normal sims)
Lab Assistant
#7 Old 25th Jul 2019 at 1:57 PM
Drake Baku I wrote this mod I can quote the code
Code:
// Sims3.Gameplay.ActorSystems.AgingManager
private static float GetMaximumAgingStageLength(IMiniSimDescription msd)
{
	float num = AgingManager.GetAgingStageLength(msd.get_Species(), msd.Age);
	if (msd.IsMummy)
	{
		num *= AgingManager.kMummyLifeSpanMultiplier;
	}
	else if (msd.get_IsVampire() && msd.YoungAdultOrAbove)
	{
		num *= AgingManager.kVampireLifeSpanMultiplier;
		if (msd.HasTrait(9245328508282122112uL))
		{
			num = 3.40282347E+38f;
		}
	}
	else if (msd.get_IsUnicorn() && msd.YoungAdultOrAbove)
	{
		num *= AgingManager.kUnicornLifeSpanMultiplier;
	}
	else if (msd.get_IsPet())
	{
		SimDescription simDescription = msd as SimDescription;
		if (simDescription != null && simDescription.IsLivingWithAnimalExpert())
		{
			num *= AgingManager.kAnimalExpertLifeSpanMultiplier;
		}
	}
	else if (msd.get_IsGenie() && msd.YoungAdultOrAbove)
	{
		num *= AgingManager.kGenieLifeSpanMultiplier;
	}
	else if (msd.get_IsWitch() && msd.YoungAdultOrAbove)
	{
		num *= AgingManager.kWitchLifeSpanMultiplier;
	}
	else if (msd.get_IsFairy() && msd.YoungAdultOrAbove)
	{
		num *= AgingManager.kFairyLifeSpanMultiplier;
	}
	if (msd.HasTrait(2840927212356719696uL))
	{
		num *= AgingManager.kWishLongLifeMultiplier;
	}
	if (msd.get_IsWerewolf() && msd.YoungAdultOrAbove)
	{
		num *= AgingManager.kWerewolfLifeSpanMultiplier;
	}
	return num;
}

next code
Code:
// Sims3.Gameplay.ActorSystems.AgingManager
[Tunable, TunableComment("The multiplier applied to a witch's adult lifespan.")]
public static float kWitchLifeSpanMultiplier = 3f;
Test Subject
Original Poster
#8 Old 26th Jul 2019 at 1:27 PM
Quote: Originally posted by whiteman-Dara
Drake Baku I wrote this mod I can quote the code


thanks ^^
have to admit this is a more complex code then i usually see in the XLM's and all (i guess this is a script?)
for the time being i have copied both codes and placed them in a single file
i assume that is the way to do this

but i do want to ask, i had played with the mulitpliers of the other states as well, i dont see much multipliers in general so i assume it takes the base values or perhaps the data in other mods?
but i do noticed that the vampire has some number value (3.40282347E+38f) so i figured before i mess anything up ill better ask what that entitles and if i am doing it right?
(not that experienced with modding sims3 XD)
Field Researcher
#9 Old 26th Jul 2019 at 5:15 PM
Have a look at the pure script Modding Tutorial on this site.
http://modthesims.info/wiki.php?tit...ripting_Modding
Lab Assistant
#10 Old 27th Jul 2019 at 7:56 PM
Drake Baku, I missed one method:
Code:
// Sims3.Gameplay.ActorSystems.AgingManager
static AgingManager()
{
	// Note: this type is marked as 'beforefieldinit'.
	AgingManager.NumberAgingYearsElapsed = -1f;
	AgingManager.sLocalizationKey = "Gameplay/ActorSystems/AgingManager";
	AgingManager.kAgingEnabledByDefault = true;
	AgingManager.kMinimumSimDaysPerAgingYear = 1f;
	AgingManager.kDefaultSimDaysPerAgingYear = 2f;
	AgingManager.kMaximumSimDaysPerAgingYear = 100f;
	AgingManager.kShortSimDaysPerAgingYear = 2f;
	AgingManager.kMediumSimDaysPerAgingYear = 7f;
	AgingManager.kNormalSimDaysPerAgingYear = 15f;
	AgingManager.kLongSimDaysPerAgingYear = 25f;
	AgingManager.kEpicSimDaysPerAgingYear = 75f;
	AgingManager.kAgingStageLengthBaby = 3f;
	AgingManager.kAgingStageLengthToddler = 7f;
	AgingManager.kAgingStageLengthChild = 14f;
	AgingManager.kAgingStageLengthTeen = 14f;
	AgingManager.kAgingStageLengthYoungAdult = 14f;
	AgingManager.kAgingStageLengthAdult = 35f;
	AgingManager.kAgingStageLengthElderMinimum = 20f;
	AgingManager.kChancePerDayElderWillDieShort = 15f;
	AgingManager.kChancePerDayElderWillDieMedium = 12f;
	AgingManager.kChancePerDayElderWillDieNormal = 9f;
	AgingManager.kChancePerDayElderWillDieLong = 6f;
	AgingManager.kChancePerDayElderWillDieEpic = 3f;
	AgingManager.kChanceMultiplierElderMarathonRunnerWillDie = 0.75f;
	AgingManager.kChanceMultiplierElderFrankensteinWillDie = 0.15f;
	AgingManager.kPercentCasOffset = 40f;
	AgingManager.kDaysEarlyToShowBirthdayMessage = 4f;
	AgingManager.kHourToShowBirthdayMessage = 6.5f;
	AgingManager.kHourToAgeWithoutCake = 13f;
	AgingManager.kLatestHourToAgeWithoutCake = 22f;
	AgingManager.kAgeUpCameraLerp = new Sims3.Gameplay.Core.Camera.LerpParams(1f, 6f, -45f);
	AgingManager.kCheerForBirthdayBroadcasterParams = new Sims3.Gameplay.Autonomy.ReactionBroadcasterParams();
	AgingManager.kAgeUpMinimumCheerTime = 4f;
	AgingManager.kPetYoungAgainMinimumCheerTime = 2f;
	AgingManager.kCheerForBirthdayInteractionLength = 15f;
	AgingManager.kCheerForBirthdayMinDistanceToCheer = 2f;
	AgingManager.kCheerForBirthdayMaxDistanceToCheer = 3.5f;
	AgingManager.kOutfitBuilderWaitMinutes = 120;
	AgingManager.kAgeUpCameraLerpShowMessage = true;
	AgingManager.kNPCGrantedSkills = new Sims3.Gameplay.Skills.SkillNames[]
	{
		Sims3.Gameplay.Skills.SkillNames.Charisma,
		Sims3.Gameplay.Skills.SkillNames.Chess,
		Sims3.Gameplay.Skills.SkillNames.Cooking,
		Sims3.Gameplay.Skills.SkillNames.Dancing,
		Sims3.Gameplay.Skills.SkillNames.Fishing,
		Sims3.Gameplay.Skills.SkillNames.Foosball,
		Sims3.Gameplay.Skills.SkillNames.Gardening,
		Sims3.Gameplay.Skills.SkillNames.Guitar,
		Sims3.Gameplay.Skills.SkillNames.Hacking,
		Sims3.Gameplay.Skills.SkillNames.Handiness,
		Sims3.Gameplay.Skills.SkillNames.Logic,
		Sims3.Gameplay.Skills.SkillNames.Painting,
		Sims3.Gameplay.Skills.SkillNames.VideoGame,
		Sims3.Gameplay.Skills.SkillNames.Writing
	};
	AgingManager.kTeenNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kTeenExistingSkills = new int[0];
	AgingManager.kYoungAdultNewSkills = new int[]
	{
		1,
		5
	};
	AgingManager.kYoungAdultExistingSkills = new int[]
	{
		1,
		3,
		0,
		2
	};
	AgingManager.kAdultNewSkills = new int[]
	{
		0,
		1
	};
	AgingManager.kAdultExistingSkills = new int[]
	{
		0,
		3,
		0,
		2
	};
	AgingManager.kElderNewSkills = new int[0];
	AgingManager.kElderExistingSkills = new int[]
	{
		1,
		2
	};
	AgingManager.kNPCDogGrantedSkills = new Sims3.Gameplay.Skills.SkillNames[0];
	AgingManager.kAdultDogNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kAdultDogExistingSkills = new int[0];
	AgingManager.kElderDogNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kElderDogExistingSkills = new int[0];
	AgingManager.kNPCCatGrantedSkills = new Sims3.Gameplay.Skills.SkillNames[0];
	AgingManager.kAdultCatNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kAdultCatExistingSkills = new int[0];
	AgingManager.kElderCatNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kElderCatExistingSkills = new int[0];
	AgingManager.kNPCHorseGrantedSkills = new Sims3.Gameplay.Skills.SkillNames[0];
	AgingManager.kAdultHorseNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kAdultHorseExistingSkills = new int[0];
	AgingManager.kElderHorseNewSkills = new int[]
	{
		1,
		2,
		0,
		1
	};
	AgingManager.kElderHorseExistingSkills = new int[0];
	AgingManager.kMummyLifeSpanMultiplier = 1.5f;
	AgingManager.kVampireLifeSpanMultiplier = 5f;
	AgingManager.kUnicornLifeSpanMultiplier = 5f;
	AgingManager.kAnimalExpertLifeSpanMultiplier = 1.3f;
	AgingManager.kGenieLifeSpanMultiplier = 2f;
	AgingManager.kWerewolfLifeSpanMultiplier = 1.4f;
	AgingManager.kWishLongLifeMultiplier = 2f;
	AgingManager.kWitchLifeSpanMultiplier = 3f;
	AgingManager.kFairyLifeSpanMultiplier = 5f;
	AgingManager.kDaysEarlyToShowGraduationMessage = 4f;
	AgingManager.kHourToShowGraduationMessage = 6.5f;
	AgingManager.kDaysBeforeGraduation = 1;
	AgingManager.kDaysBeforeAgingToDelayGraduation = 2f;
	AgingManager.kMoodThresholdAndWeightForNegativeAgeUp = new float[]
	{
		-50f,
		1f
	};
	AgingManager.kEnergyThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kHungerThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kFunThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kHorseExerciseThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kSocialThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kDestructionThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kScratchThresholdAndWeightForNegativeAgeUp = new float[]
	{
		10f,
		1f
	};
	AgingManager.kWeightedThresholdForNegativeTrait = 5f;
	AgingManager.kAgingStageLengthPuppy = 0.2f;
	AgingManager.kAgingStageLengthDogAdult = 1f;
	AgingManager.kAgingStageLengthDogElderMinimum = 0.8f;
	AgingManager.kChancePerDayDogElderWillDieShort = 15f;
	AgingManager.kChancePerDayDogElderWillDieMedium = 12f;
	AgingManager.kChancePerDayDogElderWillDieNormal = 9f;
	AgingManager.kChancePerDayDogElderWillDieLong = 6f;
	AgingManager.kChancePerDayDogElderWillDieEpic = 3f;
	AgingManager.kAgingStageLengthKitten = 0.2f;
	AgingManager.kAgingStageLengthCatAdult = 1f;
	AgingManager.kAgingStageLengthCatElderMinimum = 0.8f;
	AgingManager.kChancePerDayCatElderWillDieShort = 15f;
	AgingManager.kChancePerDayCatElderWillDieMedium = 12f;
	AgingManager.kChancePerDayCatElderWillDieNormal = 9f;
	AgingManager.kChancePerDayCatElderWillDieLong = 6f;
	AgingManager.kChancePerDayCatElderWillDieEpic = 3f;
	AgingManager.kAgingStageLengthFoal = 0.2f;
	AgingManager.kAgingStageLengthHorseAdult = 1f;
	AgingManager.kAgingStageLengthHorseElderMinimum = 0.8f;
	AgingManager.kChancePerDayHorseElderWillDieShort = 15f;
	AgingManager.kChancePerDayHorseElderWillDieMedium = 12f;
	AgingManager.kChancePerDayHorseElderWillDieNormal = 9f;
	AgingManager.kChancePerDayHorseElderWillDieLong = 6f;
	AgingManager.kChancePerDayHorseElderWillDieEpic = 3f;
	AgingManager.kMinAgingDays = 2u;
	AgingManager.mAgingStageLengthBaby = AgingManager.kAgingStageLengthBaby;
	AgingManager.mAgingStageLengthToddler = AgingManager.kAgingStageLengthToddler;
	AgingManager.mAgingStageLengthChild = AgingManager.kAgingStageLengthChild;
	AgingManager.mAgingStageLengthTeen = AgingManager.kAgingStageLengthTeen;
	AgingManager.mAgingStageLengthYoungAdult = AgingManager.kAgingStageLengthYoungAdult;
	AgingManager.mAgingStageLengthAdult = AgingManager.kAgingStageLengthAdult;
	AgingManager.mAgingStageLengthElderMinimum = AgingManager.kAgingStageLengthElderMinimum;
}

i answer you questions:
Default missing multipliers are one.
The vampire has number value (3.40282347E+38f) this trait is hidden "immortal" this is reward of vampires.
It is necessary to write in GameplayData.
Virtual gardener
staff: administrator
#11 Old 27th Jul 2019 at 9:48 PM
So I noticed pretty much all of this code is basically copy pasted with adding "agingManager" to it just to have it so Visual studio isn't complaining about the error, I take it you haven't tried this in-game yet, right? Because there's just no way this could work (properly) either.

Now, to override a method at all is... either pretty advanced or not possible. For easier access to get the code working and no one needing to "hack" it in, it would have been better to have access to the sims' codebase but alas...

So, there is, of course, a way out there but unfortunately, it seems just too advanced (as in overwriting methods, especially at the nature of the ' GetMaximumAgingStageLength' method). And EA didn't give us more "lenient" access to tweak the tunings either (See object tunings, if not, this tutorial on that: http://modthesims.info/wiki.php?tit...ClassWithTuning)

Also, numbers like "2840927212356719696uL" are actually ILspy converting Hex into Decimals, but there's plenty of conversions out there on this ALthough I do get the feeling that the vampire notation is not well compiled and actually says this: https://stackoverflow.com/questions...loat-in-c-sharp
Back to top