do you already use this?
vanillaarmpatchV2 by sby an alternate way to do the patch that does not mess up vanilla body mods fixes by when changing arm positions: removing body mods, then changes the arm frame, then adds them again now also clears sweat on arm position...
www.undertow.club
edit - oh you are not talking about the arms this time around
Sby thanks for the reply btw.
What I'm trying to accomplish is more along these lines:
var setSkin_Post:Function;
var g;
function methodWrapper(method:Function, parameter1:Object):Function {
return function():void{
method(parameter1);
}
}
function methodWrapper2(method:Function, parameter1:Object, parameter2:Object):Function {
return function():void{
method(parameter1, parameter2);
}
}
function initl(l){
// Setup a response function which can apply the correct skin-tone and tan settings to our custom thighs
setSkin_Post = methodWrapper2(function(bodyMods:Vector.<MovieClip>, g:Object):void {
bodyMods.forEach(function(bodyMod:MovieClip, ...args):void {
bodyMod.gotoAndStop(g.characterControl.currentSkinType);
if (bodyMod.getChildByName("tan") as MovieClip) {
(bodyMod.getChildByName("tan") as MovieClip).gotoAndStop(l.g.her._tan._tanNameList[g.her._tan._currentTanID]);
(bodyMod.getChildByName("tan") as MovieClip).alpha = (l.g.her.torso.back as MovieClip).getChildByName("tan").alpha;
(bodyMod.getChildByName("tan") as MovieClip).blendMode = flash.display.BlendMode.OVERLAY;
}
// Special logic: the "overwrite" policy will normally be ignored when the user switches skin tones or tan levels
// The original skin sprites and tan sprites will reappear, even through they're supposed to be temporarily overridden.
// To compensate for this problem, we'll manually reassert the desired invisibility.
g.customElementLoader.modTargetHelpers[SDTMods.ModTypes.BODY].targetDictionary[bodyMod.name].gotoAndStop("None");
for each(var tanItem:MovieClip in g.her._tan._standardTanItems) {
if ((g.customElementLoader.modTargetHelpers[SDTMods.ModTypes.BODY].targetDictionary[bodyMod.name]) == tanItem) { tanItem["tan"].visible = false; }
}
});
}, new <MovieClip>[taf.rightThigh, taf.rightCalf, taf.leftThigh, taf.back], l.g);
// Register proxy methods (via ModGuy's Loader) which will invoke the shoulder-skin function in response to gameplay activities
var lProxy:Class = l.getLoaderClass("Modules.lProxy");
var setTanAlpha = (lProxy as Class).createProxy(l.g.her._tan, "setTanAlpha");
setTanAlpha.addPost(setSkin_Post, false);
var addStaticModElement = (lProxy as Class).createProxy(l.g.customElementLoader, "addStaticModElement");
addStaticModElement.addPost(setSkin_Post, false);
// Ensure that these proxies get cleaned up when the mod is Unloaded (or the Reset button is invoked)
var moreClothingIsInitializing:Boolean = false;
if (l.moreclothing) {
// Temp: search for a 400 x 150 TextField
// TODO: use a public accessor func instead (if sby is willing to add one)
for (var i:uint = 0; i<(l.stage as Stage).numChildren; i++) {
if (((l.stage as Stage).getChildAt(i) as TextField) && ((l.stage as Stage).getChildAt(i) as TextField).width == 400 && ((l.stage as Stage).getChildAt(i) as TextField).height == 150) {
moreClothingIsInitializing = true;
break;
}
}
}
if (moreClothingIsInitializing) {
// Special case: this mod is being loaded through MoreClothing (during its initialization phase)
// We want the proxies to remain active (in case the user subsequently calls up the mod via the next/prev buttons)
// Therefore, we'll suppress the proxy-removal behaviour
} else {
// Normal case: remove proxies whenever the Clear Mods button is clicked or Reset occurs
l.registerUnloadFunction( methodWrapper(removeProxies, l) );
var clearInstancedMods = (lProxy as Class).createProxy(l.g.customElementLoader, "clearInstancedMods");
clearInstancedMods.addPost( methodWrapper(removeProxies, l), false );
}
}
function removeProxies(l:Object) {
var lProxy:Class = l.getLoaderClass("Modules.lProxy");
var setTanAlpha = (lProxy as Class).checkProxied(l.g.her._tan, "setTanAlpha");
if (setTanAlpha) { setTanAlpha.removePost(setSkin_Post); }
var addStaticModElement = (lProxy as Class).checkProxied(l.g.customElementLoader, "addStaticModElement");
if (addStaticModElement) { addStaticModElement.removePost(setSkin_Post); }
var clearInstancedMods = (lProxy as Class).checkProxied(l.g.customElementLoader, "clearInstancedMods");
if (clearInstancedMods) { clearInstancedMods.restoreProxy(false); }
// Reapply the current skin and tan settings, so that the leg sprites will reappear
g.characterControl.setSkin(g.characterControl.currentSkin);
g.her._tan.setTanAlpha((l.g.her.torso.back as MovieClip).getChildByName("tan").alpha);
}
registerMod(taf);
99% of this I pulled from the
Thicker Leg's N Ass Mod -> here
As of right now, it works with the calves and thighs (as expected), but flips it shit on back, arms, and chest. Any way around this?
Extending from this issue, I'm also trying to make eyewear that can change based on ear/nose type as well. I'm hoping figuring out this issue might open a few doors, including making earrings that respond to changes in ear type, etc.