Beispiel #1
0
        static void Postfix(AttackDirection from, bool log, ref Dictionary <VehicleChassisLocations, int> __result)
        {
            if (ModState.ForceDamageTable == DamageTable.PUNCH)
            {
                Mod.Log.Info?.Write($"Attack against VEHICLE will use the PUNCH damage table");
                __result = new Dictionary <VehicleChassisLocations, int>();
                if (from == AttackDirection.FromLeft)
                {
                    __result.Add(VehicleChassisLocations.Turret, 40);
                    __result.Add(VehicleChassisLocations.Left, 40);
                    __result.Add(VehicleChassisLocations.Front, 8);
                    __result.Add(VehicleChassisLocations.Rear, 8);
                }
                else if (from == AttackDirection.FromBack)
                {
                    __result.Add(VehicleChassisLocations.Turret, 40);
                    __result.Add(VehicleChassisLocations.Rear, 40);
                    __result.Add(VehicleChassisLocations.Left, 8);
                    __result.Add(VehicleChassisLocations.Right, 8);
                }
                else if (from == AttackDirection.FromRight)
                {
                    __result.Add(VehicleChassisLocations.Turret, 40);
                    __result.Add(VehicleChassisLocations.Right, 40);
                    __result.Add(VehicleChassisLocations.Front, 8);
                    __result.Add(VehicleChassisLocations.Rear, 8);
                }
                else if (from == AttackDirection.FromTop)
                {
                    __result.Add(VehicleChassisLocations.Turret, 40);
                    __result.Add(VehicleChassisLocations.Front, 8);
                    __result.Add(VehicleChassisLocations.Left, 8);
                    __result.Add(VehicleChassisLocations.Right, 8);
                }
                else
                {
                    __result.Add(VehicleChassisLocations.Turret, 40);
                    __result.Add(VehicleChassisLocations.Front, 40);
                    __result.Add(VehicleChassisLocations.Left, 8);
                    __result.Add(VehicleChassisLocations.Right, 8);
                }
            }
            else if (ModState.ForceDamageTable == DamageTable.KICK)
            {
                Mod.Log.Info?.Write($"Attack against VEHICLE will use the KICK damage table");
                __result = new Dictionary <VehicleChassisLocations, int>();
                if (from == AttackDirection.FromLeft)
                {
                    __result.Add(VehicleChassisLocations.Turret, 4);
                    __result.Add(VehicleChassisLocations.Left, 40);
                    __result.Add(VehicleChassisLocations.Front, 8);
                    __result.Add(VehicleChassisLocations.Rear, 8);
                }
                else if (from == AttackDirection.FromBack)
                {
                    __result.Add(VehicleChassisLocations.Turret, 4);
                    __result.Add(VehicleChassisLocations.Rear, 40);
                    __result.Add(VehicleChassisLocations.Left, 8);
                    __result.Add(VehicleChassisLocations.Right, 8);
                }
                else if (from == AttackDirection.FromRight)
                {
                    __result.Add(VehicleChassisLocations.Turret, 4);
                    __result.Add(VehicleChassisLocations.Right, 40);
                    __result.Add(VehicleChassisLocations.Front, 8);
                    __result.Add(VehicleChassisLocations.Rear, 8);
                }
                else if (from == AttackDirection.FromTop)
                {
                    __result.Add(VehicleChassisLocations.Turret, 40);
                    __result.Add(VehicleChassisLocations.Front, 8);
                    __result.Add(VehicleChassisLocations.Left, 8);
                    __result.Add(VehicleChassisLocations.Right, 8);
                }
                else
                {
                    __result.Add(VehicleChassisLocations.Turret, 4);
                    __result.Add(VehicleChassisLocations.Front, 40);
                    __result.Add(VehicleChassisLocations.Left, 8);
                    __result.Add(VehicleChassisLocations.Right, 8);
                }
            }
            else if (ModState.ForceDamageTable == DamageTable.SWARM)
            {
                Mod.Log.Info?.Write($"Attack against VEHICLE will use the SWARM damage table");
                __result = new Dictionary <VehicleChassisLocations, int>();
                __result.Add(AttackHelper.GetSwarmLocationForVehicle(), 100);

                //__result.Add(VehicleChassisLocations.Turret, 40);
                //__result.Add(VehicleChassisLocations.Left, 16);
                //__result.Add(VehicleChassisLocations.Front, 8);
                //__result.Add(VehicleChassisLocations.Right, 16);
                //__result.Add(VehicleChassisLocations.Rear, 16);
            }
            else
            {
                return;
            }
        }