ACR_Movement.Swimming.ProcessWaterEffects C# (CSharp) Method

ProcessWaterEffects() private static method

private static ProcessWaterEffects ( CLRScriptBase script, uint Creature, uint Trigger ) : void
script CLRScriptFramework.CLRScriptBase
Creature uint
Trigger uint
return void
        private static void ProcessWaterEffects(CLRScriptBase script, uint Creature, uint Trigger)
        {
            if(script.GetIsImmune(Creature, CLRScriptBase.IMMUNITY_TYPE_MOVEMENT_SPEED_DECREASE, Trigger) != CLRScriptBase.FALSE)
            {
                return;
            }
            uint weapon = script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_RIGHTHAND, Creature);
            if (script.GetIsObjectValid(weapon) == CLRScriptBase.TRUE)
            {
                int weaponType = script.GetBaseItemType(weapon);
                if (ALFA.Shared.Modules.InfoStore.BaseItems[weaponType].WeaponType != 1 &&
                    ALFA.Shared.Modules.InfoStore.BaseItems[weaponType].WeaponType != 0) // unfortunately, this is magic numbered in the 2da as well
                {
                    script.ApplyEffectToObject(CLRScriptBase.DURATION_TYPE_TEMPORARY, script.ExtraordinaryEffect(script.EffectAttackDecrease(2, CLRScriptBase.ATTACK_BONUS_ONHAND)), Creature, 6.0f);
                    int damagePenalty = ALFA.Shared.Modules.InfoStore.BaseItems[weaponType].DieToRoll / 4;
                    damagePenalty += script.GetAbilityModifier(CLRScriptBase.ABILITY_STRENGTH, Creature) / 2;
                    int damageType = CLRScriptBase.DAMAGE_TYPE_SLASHING;
                    switch (ALFA.Shared.Modules.InfoStore.BaseItems[weaponType].WeaponType)
                    {
                        case 2: damageType = CLRScriptBase.DAMAGE_TYPE_BLUDGEONING; break;
                        case 3: damageType = CLRScriptBase.DAMAGE_TYPE_SLASHING; break;
                        case 4: damageType = CLRScriptBase.DAMAGE_TYPE_SLASHING; break;
                        case 5: damageType = CLRScriptBase.DAMAGE_TYPE_BLUDGEONING; break;
                    }
                    script.EffectDamageDecrease(damagePenalty, damageType);
                }
                weapon = script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_LEFTHAND, Creature);
                if (script.GetIsObjectValid(weapon) == CLRScriptBase.TRUE)
                {
                    weaponType = script.GetBaseItemType(weapon);
                    if (ALFA.Shared.Modules.InfoStore.BaseItems[weaponType].WeaponType != 1 &&
                        ALFA.Shared.Modules.InfoStore.BaseItems[weaponType].WeaponType != 0) // unfortunately, this is magic numbered in the 2da as well
                    {
                        script.ApplyEffectToObject(CLRScriptBase.DURATION_TYPE_TEMPORARY, script.ExtraordinaryEffect(script.EffectAttackDecrease(2, CLRScriptBase.ATTACK_BONUS_OFFHAND)), Creature, 6.0f);
                    }
                }
            }
            else
            {
                script.ApplyEffectToObject(CLRScriptBase.DURATION_TYPE_TEMPORARY, script.ExtraordinaryEffect(script.EffectAttackDecrease(2, CLRScriptBase.ATTACK_BONUS_ONHAND)), Creature, 6.0f);
                int damagePenalty = 1 + script.GetAbilityModifier(CLRScriptBase.ABILITY_STRENGTH, Creature) / 2;
                if(damagePenalty > 0)
                {
                    script.EffectDamageDecrease(damagePenalty, CLRScriptBase.DAMAGE_TYPE_BLUDGEONING);
                }
            }
        }
    }