Details

Last Updated
last week
First Uploaded
last week
Downloads
13K
Likes
0
Size
2.7MB
Dependency string
Brynzananas-Demolisher-0.2.3
Dependants

Character

I will just put survivor description from the game here for now:

Demolisher is a powerfull character that can switch between melee and ranged styles at any moment. To switch styles, hold Utility button and click Secondary/Special button.

< ! > Passive allows Demolisher for harmless landing. His explosives have knockback that can be used as a quick position relocation. Holding jump button will redirect knockback force to face your aim direction.

< ! > Swords have a small radius of attack, so you mast aim at the target you want to hit. They compensate it with their high burst damage and strong effects. Swords recharge 25% of Utility charge on hit.

< ! > In ranged style swords are replaced with trap bomb launchers. On impact they stick to the surface and wait for user input for detonation signal. After a while they fully arm, gaining additional damage and blast radius.

< ! > Grenades are awailable for both styles and are a quick way of dealing with targets on distance.

< ! > Shield charge is a great movement skill while also having attack capabilities of increasing sword damage. Shield charge is cancelled upon sword attack, but retains damage increase for a short time.

< ! > In ranged style shield charge is replaced with traps detonation. Traps require time to be armed for detonation and have time before explosion after detonation request.

< ! > Specials can utilise primary selection and base their effects from them.

Custom Crosshair

This character has a big crosshair that will help you know current skills situation without looking at at the skills panel.

Why Side Camera?

To hit enemies on distance with grenades affected by gravity you need to aim upwards. Most of the time characters body closes the view of the enemy you want to hit. I made this solution to this problem.

Work in Progress

This is an early release, so expect missing features.

Multiplayer Compatability

Last update fixed many multiplayer problems, though there are some little issues such as inaccurate Hook values, Slam special is harder to use on clients and delayed ground hit registration. Report any multiplayer bug you will encounter.

Bug Report

Report bugs in Github Issues.

Adding custom weapon models for your skin

Custom weapon models are handled by this mod.

Here is the method:

private static void InitWeaponModels()
{
    ModelPartInfo modelPartInfo = new ModelPartInfo
    {
        bodyName = "DemolisherBody",
        gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/Weapons/Swords/skullcutter.prefab"),
        inputString = "WeaponR",
        skillDef = SkullcutterSkillDef,
        codeAfterApplying = Rotate
    };
    SkullcutterSwordSkin = new ModelPart(modelPartInfo);
    modelPartInfo.gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/Weapons/Swords/zatoichi.prefab");
    modelPartInfo.skillDef = ZatoichiSkillDef;
    ZatoichiSwordSkin = new ModelPart(modelPartInfo);
    modelPartInfo.gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/Weapons/Swords/caber.prefab");
    modelPartInfo.skillDef = CaberSkillDef;
    CaberSwordSkin = new ModelPart(modelPartInfo);
    modelPartInfo.gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/Weapons/Swords/eyelander.prefab");
    modelPartInfo.skillDef = EyelanderSkillDef;
    EyelanderSwordSkin = new ModelPart(modelPartInfo);
    modelPartInfo.gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/Weapons/Shield/HeavyShield.prefab");
    modelPartInfo.skillDef = HeavyShieldSkillDef;
    modelPartInfo.inputString = "Shield";
    modelPartInfo.codeAfterApplying = null;
    HeavyShieldSkin = new ModelPart(modelPartInfo);
    modelPartInfo.gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/Weapons/Shield/LightShield.prefab");
    modelPartInfo.skillDef = LightShieldSkillDef;
    LightShieldSkin = new ModelPart(modelPartInfo);
    void Rotate(GameObject gameObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
    {
        gameObject.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
    }
}

To make, for example, a unique model for Skullcutter for your skin, do something like this:

ModelPartInfo modelPartInfo = new ModelPartInfo
    {
        bodyName = "DemolisherBody", // Put character body name
        gameObject = yourSkinDef// Put your skin requirement
        skinDef= yourWeaponSkinPrefab, // Put your weapon skin model
        inputString = SkullcutterSwordSkin.bone, // Copy input string
        skillDef = SkullcutterSwordSkin.skill, //Copy skill requirement
        codeAfterApplying = SkullcutterSwordSkin.codeAferApplying, // Copy this delegate
	modelPartOverride = SkullcutterSwordSkin // Override model part
    };
YourSkullcutterSwordSkin = new ModelPart(modelPartInfo );

Smoke horns particles are also done with this API:

ModelPartInfo modelPartInfo = new ModelPartInfo
{
    bodyName = "DemolisherBody",
    gameObject = ThunderkitAssets.LoadAsset<GameObject>("Assets/Demoman/DemoSmokes.prefab"),
    inputString = "Head",
    codeAfterApplying = CustomParticleSimulationSpace,
};
DemoSmokes = new ModelPart(modelPartInfo);
void CustomParticleSimulationSpace(GameObject gameObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
    EmoteCompatAbility.DemoEmotesComponent demoEmotesComponent = characterModel.GetComponentInChildren<EmoteCompatAbility.DemoEmotesComponent>();
    ParticleSystem[] particleSystems = gameObject.GetComponentsInChildren<ParticleSystem>();
    foreach (ParticleSystem particleSystem in particleSystems)
    {
        ParticleSystem.MainModule mainModule = particleSystem.main;
        particleSystem.simulationSpace = ParticleSystemSimulationSpace.Custom;
        mainModule.customSimulationSpace = childLocator.FindChild("Base");
        if (demoEmotesComponent != null)
        {
            demoEmotesComponent.customSpaceParticles.Add(mainModule);
        }

    }

}

You can override it to null to remove it and add your particles or anything

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.