Code: Select all
{
Author ZoDDel
Mod by Anton
}
{$c}
float ext_damage_mult = 1.0f;
typedef struct {
int id; // 1
int d1; // 2 normal_value;
int d2; // 3 armor_value;
int p1; // 4 p1;
int p2; // 5 p2;
int p3; // 6 p3;
int p4; // 7 p4;
int demolition; // 8
int knockback1; // 9
int knockback2; // 10
int decal_type; // 11
int decal_size; // 12
float decal_duration; // 13
int u7; // 14
int u8; // 15
} GameDamageInfo;
enum DamageDirection {
INPUT_DIRECTION = 2542,
OUTPUT_DIRECTION = 2543
};
typedef struct {
int id; // 1
int d1; // -2
int d2; // -3
int p1; // -4
int p2; // -5
int p3; // -6
int p4; // -7
int demolition; // -8
int knockback1; // -9
int knockback2; // -10
float damage_mult; // -1 is default
char *p_weapon_type;
char *p_damage_name;
char *p_base_stats_string;
char hide_output;
char is_unknown;
enum DamageDirection damage_direction;
GameDamageInfo game_damage_backup;
} CheatDamageInfo;
/*
enum CheatMode_enum {
NO_CHEAT,
LITTLE_BOOST,
MIDDLE_BOOST,
MAX_BOOST,
};
typedef struct {
enum CheatMode_enum cheat_mode;
float d1; // 2 normal_value;
float d2; // 3 armor_value;
float p1; // 4 p1;
float p2; // 5 p2;
float p3; // 6 p3;
float p4; // 7 p4;
float demolition; // 8
float knockback1; // 9
float knockback2; // 10
} CheatMode;
CheatMode cheat_modes[10] = {
{NO_CHEAT, 1, 1, 1, 1, 1, 1, 1, 1,1},
{LITTLE_BOOST, -1, -1, -1, -1, -1, -1, -1, -1,-1},
}
*/
// YOU CAN CHANGE SECTION START
// TIP. INPUT is damage we assume is applying to US. OUTPUT damage we apply to enemy (Script detect it if damage is in table and contains Enemy or Environment in type name. Or if damage is not in table, then it is unknown damage and we assume it is INPUT damage to us.
// HOTKEYS to include or exclude damage messages you see in DebugViewPP tool.
#define HOTKEY_EXCLUDE_DAMAGE 'U'
#define HOTKEY_INCLUDE_DAMAGE 'I'
// GOD SHOT hotkey just oneshot kill everything from any weapon while holding key (ex. pistol against buildings or titans). No table or multiplier values used for this. Just direct extreme values. Only for known output damages.
#define HOTKEY_GOD_SHOT VK_CONTROL
// set multiplier 0 to set damage to 0. For example damage 4000 * 0 = 0. Set 0.5f to get only half of damage 4000*0.5 = 2000. Set 2.0f to multiply input damage by 2 4000*2=8000.
// the same for DEMOLITION and KNOCKBACK
#define INPUT_DAMAGE_MULTIPLIER 0.4f
#define INPUT_PENETRATION_MULTIPLIER 0.5f
#define INPUT_DEMOLITION_MULTIPLIER 0.0f
#define INPUT_KNOCKBACK_MULTIPLIER 0.0f
#define OUTPUT_DAMAGE_MULTIPLIER 3.0f
#define OUTPUT_PENETRATION_MULTIPLIER 1.0f
#define OUTPUT_DEMOLITION_MULTIPLIER 1.0f
// explosion guns will not ragdoll you if shoot nearly
#define OUTPUT_KNOCKBACK_MULTIPLIER 0.0f
// ADD is absolute value to add before multiplying. for example you want to set output knockback multiplier to 2.0f. But pistol have knockback value 0 by default. So the formula will be 0 * 2 = 0 - no knockback
// Here you can set add value. So if set OUTPUT_KNOCKBACK_ADD to 20, pistol will get knockback with this formula (0 (game default) + 20 (OUTPUT_KNOCKBACK_ADD)) * 2 (OUTPUT_KNOCKBACK_MULTIPLIER) = 20 * 2 = 40 knockback
// negative values acceptable too. But result value will be clamped to not go below 0.
#define INPUT_DAMAGE_ADD 0
#define INPUT_PENETRATION_ADD 0
#define INPUT_DEMOLITION_ADD 0
#define INPUT_KNOCKBACK_ADD 0
#define OUTPUT_DAMAGE_ADD 0
#define OUTPUT_PENETRATION_ADD 0
#define OUTPUT_DEMOLITION_ADD 0
#define OUTPUT_KNOCKBACK_ADD 0
// INPUT_DAMAGE_LIMIT if titan attack you it have 4000 damage, instant kill. You can set maximum damage for any unknown/enemy/environment
// Set any negative value to switch off this function
#define INPUT_DAMAGE_LIMIT 80
/* Damage individual settings.
-2 -3 -4 -5 -6 -7 -8 -9 -10 are numbered placeholders where you can specify individual absolute (not multiplier) values for:
-2 damage1
-3 damage2
-4 -5 -6 -7 penetration1-2
-8 = demolition
-9 -10 = knockback values
If specify value below zero parameter will not change for individual weapon. But still may change it it is Enemy or Environmental or Unknown (not in table) damage.
For example this:
{326, -2, -3, -4, -5, -6, -7, -8, 5000, 5000, 1.0f, "00 Melee", "Helldiver melee", "050 005 | 01 00 00 00 | 10 | 25 30 | 0 0 0 | 0 0"},
will set -9 and -10 (both knockback values to 5000. Other fields will not thange in section where individual parameters are applied
The next value after -10 is multiplier for damage1-2. Value 1.0f is game default
After that there is weapon class (if contains Enemy or Enrironment, damage will get
*/
CheatDamageInfo g_damage_table[500] = {
{326, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "00 Melee", "Helldiver melee", "050 005 | 01 00 00 00 | 10 | 25 30 | 0 0 0 | 0 0"},
{ 51, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "01 Assault rifle", "AR-22C Patriot / AR-23 Liberator / AR-48 Truth Whisperer / AR-61 Tenderizer / Stalwart / AX/AR-23 Guard Dog (w Liberator AR)", "060 006 | 02 02 02 00 | 10 | 10 10 | 0 0 0 | 0 0"},
{ 50, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "01 Assault rifle", "AR-23C Liberator Concussive", "065 015 | 02 02 02 02 | 10 | 35 100 | 0 0 0 | 0 0"},
{ 48, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "01 Assault rifle", "AR-23P Liberator Penetrator", "045 015 | 03 03 03 00 | 10 | 10 10 | 0 0 0 | 0 0"},
// love
{ 65, -2, -3, -4, -5, -6, -7, -8, 50, 40, 1.0f, "02 Marksman rifle", "AR-20L Justice / BR-14 Adjudicator / Machine Gun / Gatling Sentry / Machine Gun Sentry", "080 008 | 03 03 03 01 | 10 | 15 12 | 0 0 0 | 0 0"},
{ 73, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "02 Marksman rifle", "R-63 Diligence", "125 013 | 02 02 02 00 | 10 | 15 14 | 0 0 0 | 0 0"},
{ 74, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "02 Marksman rifle", "R-63CS Diligence Counter Sniper", "140 014 | 03 03 03 00 | 10 | 15 14 | 0 0 0 | 0 0"},
{ 26, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "03 Submachine gun", "MP-98 Knight", "050 005 | 02 02 02 00 | 10 | 10 4 | 0 0 0 | 0 0"},
{ 34, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "03 Submachine gun", "SG-8S / SMG-37 Defender", "070 007 | 02 02 02 00 | 10 | 10 5 | 0 0 0 | 0 0"},
{ 41, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "03 Submachine gun", "SMG-72 Pummeler", "065 007 | 02 02 02 00 | 10 | 15 5 | 0 34 2 | 0 0"},
{102, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-225 Breaker", "030 006 | 02 02 02 00 | 10 | 10 10 | 0 0 0 | 0 0"},
{103, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-225BB Breaker Bugbiter", "045 009 | 02 02 02 00 | 10 | 15 15 | 0 0 0 | 0 0"},
{104, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-225NS Breaker Nailspitter", "020 004 | 03 03 03 00 | 10 | 10 10 | 0 0 0 | 0 0"},
// love
{101, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-225SP Breaker Spray&Pray", "012 004 | 02 02 02 00 | 10 | 3 1 | 0 0 0 | 0 0"},
{105, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-255IE Breaker Incendiary", "020 010 | 02 02 02 00 | 10 | 10 10 | 1 6 100 | 0 0"},
{ 88, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-8 Punisher", "045 012 | 02 02 02 00 | 10 | 35 30 | 0 0 0 | 0 0"},
{ 99, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SG-8S Slugger", "250 075 | 03 03 03 00 | 10 | 20 35 | 0 0 0 | 0 0"},
{117, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "04 Shotgun", "SMG-37 Defender", "050 035 | 03 03 03 00 | 10 | 30 25 | 2 0 0 | 0 0"},
{124, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "05 Explosive", "CB-9 Exploding Crossbow part 1 (impact)", "270 050 | 03 03 03 00 | 0 | 30 10 | 0 0 0 | 0 0"},
{125, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "05 Explosive", "CB-9 Exploding Crossbow part 2 (explosion)", "150 150 | 02 02 02 00 | 15 | 25 10 | 0 0 0 | 0 0"},
{ 84, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "05 Explosive", "JAR-5 Dominator", "275 090 | 03 03 03 00 | 10 | 35 15 | 0 0 0 | 0 0"},
{ 80, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "05 Explosive", "R-36 Eruptor p1 (direct shell impact)", "230 115 | 03 03 03 00 | 30 | 35 20 | 0 0 0 | 0 0"},
{205, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "05 Explosive", "R-36 Eruptor p2 (sub-shell enemy hits)", "150 150 | 03 00 00 00 | 20 | 25 40 | 0 0 0 | 0 0"},
{ 19, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "06 Energy-based", "LAS-16 Sickle", "055 005 | 02 02 02 00 | 10 | 10 10 | 0 0 0 | 0 0"},
{297, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "06 Energy-based", "LAS-5 Scythe", "350 070 | 02 02 02 00 | 10 | 0 0 | 0 6 0 | 0 0"},
{ 20, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "06 Energy-based", "PLAS-1 Scorcher p1 / PLAS-101 Purifier (Part 1) / SG-8P Punisher Plasma part 1 impact of projectile", "100 050 | 02 02 02 00 | 10 | 20 10 | 0 0 0 | 0 0"},
{184, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "06 Energy-based", "PLAS-1 Scorcher p2 (Plasma Damage)", "100 100 | 03 00 00 00 | 10 | 10 7 | 0 0 0 | 0 0"},
{ 21, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "06 Energy-based", "PLAS-101 Purifier", "250 100 | 03 03 03 00 | 10 | 20 10 | 0 0 0 | 0 0"},
{186, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "06 Energy-based", "PLAS-101 Purifier (Part 2) / SG-8P Punisher Plasma part 2 explosion", "150 150 | 03 03 03 00 | 10 | 35 30 | 0 0 0 | 0 0"},
{134, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "GP-31 Grenade Pistol part1 shell", "250 250 | 03 03 03 00 | 30 | 40 10 | 0 0 0 | 0 0"},
{220, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "GP-31 Grenade Pistol part2 explosion / GL-21 Grenade launcher part 2 explosion", "350 350 | 03 00 00 00 | 30 | 25 40 | 0 0 0 | 0 0"},
{296, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "LAS-7 Dagger (continuous laser pistol)", "200 020 | 02 02 02 00 | 10 | 0 0 | 0 6 0 | 0 0"},
{ 42, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "P-113 Verdict", "125 012 | 02 02 02 00 | 10 | 12 10 | 0 0 0 | 0 0"},
{ 25, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "P-19 Redeemer", "060 005 | 02 02 02 00 | 10 | 10 4 | 0 0 0 | 0 0"},
{ 27, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "P-2 Peacemaker", "075 015 | 02 02 02 00 | 10 | 10 4 | 0 0 0 | 0 0"},
{ 44, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "07 Pistol", "P-4 Senator", "175 035 | 03 03 03 00 | 10 | 20 10 | 0 0 0 | 0 0"},
{203, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "08 Grenade Standard", "G-10 Incendiary / G-13 Incendiary impact / Incendary Impact / Incendary Impact", "150 150 | 03 00 00 00 | 30 | 20 15 | 1 6 100 | 0 0"},
{213, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "08 Grenade Standard", "G-12 High Explosive / G-16 Impact", "400 400 | 04 00 00 00 | 30 | 30 40 | 0 0 0 | 0 0"},
{201, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "08 Grenade Standard", "G-6 Frag part 1", "250 250 | 03 00 00 00 | 20 | 25 40 | 0 0 0 | 0 0"},
{111, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "08 Grenade Standard", "G-6 Frag part 2", "080 008 | 02 02 02 00 | 10 | 10 20 | 0 0 0 | 0 0"},
{204, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "09 Grenade Special", "G-123 Thermite", "100 100 | 07 00 00 00 | 30 | 20 40 | 0 0 0 | 0 0"},
{169, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "09 Grenade Special", "G-23 Stun", "000 000 | 06 00 00 00 | 0 | 0 0 | 0 35 25 | 0 0"},
{122, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Antimaterial Rifle", "450 135 | 04 04 04 00 | 20 | 20 25 | 0 0 0 | 0 0"},
{115, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "ARC3 Thrower", "250 050 | 07 07 07 00 | 20 | 35 10 | 2 0 0 | 0 0"},
{127, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Autocannon (part 1/2)", "260 260 | 04 04 04 00 | 30 | 30 20 | 0 0 0 | 0 0"},
{216, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Autocannon (part 2/2)", "150 150 | 03 00 00 00 | 30 | 40 40 | 0 0 0 | 0 0"},
{ 93, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Break action shotgun", "065 013 | 02 02 02 00 | 10 | 20 20 | 0 0 0 | 0 0"},
{145, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Commando", "500 500 | 06 05 03 00 | 40 | 50 25 | 0 0 0 | 0 0"},
{135, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EAT-17 Expendable Anti-Tank part 1", "650 650 | 06 06 06 03 | 30 | 50 25 | 0 0 0 | 0 0"},
{189, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EAT-17 Expendable Anti-Tank part 2", "015 015 | 03 00 00 00 | 10 | 30 15 | 0 0 0 | 0 0"},
{226, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EAT-17 Expendable Anti-Tank part 3", "150 150 | 03 00 00 00 | 30 | 60 40 | 0 0 0 | 0 0"},
{129, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EXO-45 Emancipator gun part 1", "300 060 | 05 05 05 00 | 30 | 30 10 | 0 0 0 | 0 0"},
{217, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EXO-45 Emancipator gun part 2", "150 150 | 03 00 00 00 | 30 | 40 40 | 0 0 0 | 0 0"},
{147, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EXO-45 Emancipator rocket part 1", "400 400 | 06 06 04 00 | 30 | 40 25 | 0 0 0 | 0 0"},
{234, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "EXO-45 Emancipator rocket part 2", "400 400 | 03 00 00 00 | 30 | 60 70 | 0 0 0 | 0 0"},
{ 9, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "FLAM-40 Flamethrower part 1", "003 003 | 03 03 03 00 | 10 | 5 5 | 1 6 10 | 0 0"},
{ 10, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "GL-21 Grenade launcher part 1 / Mortar Sentry shoot (not shell)", "020 002 | 00 00 00 00 | 10 | 40 10 | 0 0 0 | 0 0"},
{ 11, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Grenade Launcher", "005 000 | 02 01 00 00 | 10 | 40 10 | 0 0 0 | 0 0"},
{121, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Heavy Machinegun", "100 035 | 04 04 04 00 | 15 | 15 20 | 0 0 0 | 0 0"},
{149, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Javelin rocket part 1", "1000 1000 | 08 07 06 00 | 40 | 50 25 | 0 0 0 | 0 0"},
{236, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Javelin rocket part 2", "200 200 | 05 00 00 00 | 30 | 60 70 | 0 0 0 | 0 0"},
{302, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "LAS-98 Laser Cannon", "350 200 | 04 04 04 04 | 20 | 0 0 | 0 6 0 | 0 0"},
{227, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Quasar Cannon part 1", "650 650 | 06 06 06 03 | 30 | 50 40 | 0 0 0 | 0 0"},
{228, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Quasar Cannon part 2", "150 150 | 03 00 00 00 | 30 | 50 40 | 0 0 0 | 0 0"},
{136, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Recoiless Rifle part 1 shell", "650 650 | 06 06 06 03 | 30 | 50 25 | 0 0 0 | 0 0"},
{225, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "10 Stratagem weapon", "Recoiless Rifle part 2 explosion", "150 150 | 03 00 00 00 | 30 | 50 40 | 0 0 0 | 0 0"},
// Love
{ 22, -2, 240 -4, -5, -6, -7, 30, 50, 30, 1.0f, "10 Stratagem weapon", "RS-422 Railgun", "600 060 | 05 05 05 05 | 10 | 35 15 | 0 0 0 | 0 0"},
{130, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "11 Stratagem Sentry", "Autocannon Sentry / Pelican evacuation ship part 1", "300 300 | 05 05 05 00 | 30 | 40 10 | 0 0 0 | 0 0"},
{298, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "11 Stratagem Sentry", "AX/LAS-5 Guard Dog Rover (w Laser Rifle)", "200 040 | 02 02 02 00 | 10 | 0 0 | 0 6 0 | 0 0"},
{271, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "11 Stratagem Sentry", "EMS Mortar Sentry - shell impact", "000 000 | 04 00 00 00 | 30 | 10 40 | 0 0 0 | 0 0"},
{243, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "11 Stratagem Sentry", "MD-6 Anti-Personnel Minefield", "200 200 | 03 00 00 00 | 30 | 30 30 | 0 0 0 | 0 0"},
{223, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "11 Stratagem Sentry", "Mortar Sentry shell", "400 400 | 03 00 00 00 | 30 | 35 40 | 0 0 0 | 0 0"},
{126, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "11 Stratagem Sentry", "Tesla Tower", "600 600 | 04 04 04 00 | 20 | 20 10 | 2 0 0 | 0 0"},
{245, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Defensive", "AntiTank mine", "1000 1000 | 05 05 05 00 | 30 | 30 40 | 0 0 0 | 0 0"},
{113, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Defensive", "MD-I4 Incendiary mines", ""},
{154, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "500kg bomb1 shell", "1400 1400 | 07 07 07 00 | 50 | 20 15 | 0 0 0 | 0 0"},
{273, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "500kg bomb2 explosion", "1200 1200 | 06 00 00 00 | 50 | 100 40 | 0 0 0 | 0 0"},
{152, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Eagle 110mm rocket pods part 1", "600 600 | 05 05 05 00 | 40 | 20 15 | 0 0 0 | 0 0"},
{241, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Eagle 110mm rocket pods part 2", "200 200 | 05 00 00 00 | 30 | 30 40 | 0 0 0 | 0 0"},
{254, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Eagle Airstrike part 2", "800 800 | 05 00 00 00 | 40 | 50 40 | 0 0 0 | 0 0"},
{142, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Eagle Aistrike shell / Eagle Napalm Strike shell", "500 500 | 05 05 05 00 | 40 | 20 15 | 0 0 0 | 0 0"},
{229, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Eagle cluster bomb / Orbital airburst strike p2", "350 350 | 03 00 00 00 | 30 | 50 40 | 0 0 0 | 0 0"},
{159, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital 120MM HE barrage p1", "300 300 | 07 07 06 00 | 50 | 20 20 | 0 0 0 | 0 0"},
{268, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital 120MM HE barrage p2", "750 750 | 05 00 00 00 | 50 | 70 40 | 0 0 0 | 0 0"},
{112, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital airburst strike p1", "300 150 | 03 03 03 00 | 10 | 10 20 | 0 0 0 | 0 0"},
{158, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital gas strike", "300 300 | 07 07 06 00 | 50 | 60 15 | 0 0 0 | 0 0"},
{305, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital laser", "030 015 | 06 06 06 00 | 50 | 30 30 | 0 6 1 | 0 0"},
{160, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital precision strike1 / Traitor player orbital atata 1", "450 450 | 08 07 06 00 | 50 | 20 20 | 0 0 0 | 0 0"},
{267, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital precision strike2 / Traitor player orbital atata 2", "1000 1000 | 06 00 00 00 | 50 | 70 60 | 0 0 0 | 0 0"},
{161, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital railcannon strike1", "2000 2000 | 10 09 08 00 | 50 | 60 35 | 0 0 0 | 0 0"},
{266, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "12 Stratagem Orbital", "Orbital railcannon strike2", "500 500 | 06 00 00 00 | 50 | 30 50 | 0 0 0 | 0 0"},
{196, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Barrel explosion", "300 300 | 03 00 00 00 | 30 | 20 40 | 1 6 10 | 0 0"},
{337, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Big smoke? On automaton map", "001 001 | 07 00 00 00 | 41 | 40 35 | 0 0 0 | 0 0"},
{309, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Burning", "050 025 | 04 04 04 00 | 0 | 0 0 | 1 0 0 | 0 0"},
{280, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Explosion", "200 200 | 03 00 00 00 | 50 | 50 40 | 0 0 0 | 0 0"},
{287, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Fall damage", "4000 4000 | 10 00 00 00 | 60 | 50 100 | 0 0 0 | 0 0"},
{294, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Green flower exploded slow effect", "015 015 | 03 00 00 00 | 0 | 15 15 | 0 46 75 | 35 50"},
{258, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Orbital capsula impact damage", "150 150 | 10 00 00 00 | 40 | 80 40 | 0 0 0 | 0 0"},
{219, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Pelican evacuation ship part 2", "150 150 | 03 00 00 00 | 30 | 40 40 | 0 0 0 | 0 0"},
{192, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Terminid yellow ground spore 1", "000 000 | 06 00 00 00 | 10 | 20 40 | 3 10 100 | 0 0"},
{311, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "15 Environment", "Terminid yellow ground spore 2 / Terminid Bug melee damage / Terminid Hunter attack 1", "003 000 | 01 01 01 00 | 0 | 0 0 | 3 0 0 | 0 0"},
{360, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Berserker melee", "050 050 | 03 00 00 00 | 20 | 20 15 | 0 0 0 | 0 0"},
{354, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Commissar (red shoulders) melee", "030 015 | 03 00 00 00 | 10 | 10 10 | 0 0 0 | 0 0"},
{ 5, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton damage", "040 020 | 02 02 02 00 | 10 | 5 5 | 1 6 50 | 0 0"},
{324, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton distance damage (some1) / Automaton Hulk Scorcher (Gromila) Self flame?", "001 001 | 09 09 09 09 | 0 | 0 0 | 4 0 0 | 0 0"},
{ 6, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton distance damage (some2) / Automaton Gunship rocket blast", "075 050 | 06 05 04 00 | 20 | 50 25 | 0 0 0 | 0 0"},
{261, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Drop/Gun-ship fall on somethink", "100 100 | 03 00 00 00 | 40 | 50 40 | 0 0 0 | 0 0"},
{265, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton grenade", "200 200 | 03 00 00 00 | 30 | 50 40 | 0 0 0 | 0 0"},
{119, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Gunship blaster / Automaton Hulk Scorcher right hand blaster / Automatons SHREDDER TANK 1 blaster shells", "055 005 | 03 03 03 00 | 20 | 20 15 | 0 0 0 | 0 0"},
{257, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Gunship rocket / Automaton rocket / Automaton Rocket devastator (rocket launchers on shoulders)", "060 060 | 03 00 00 00 | 30 | 30 40 | 0 0 0 | 0 0"},
{ 7, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton hand blaster", "030 003 | 02 02 01 00 | 10 | 10 15 | 0 0 0 | 0 0"},
{356, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Hulk Scorcher melee", "150 150 | 05 00 00 00 | 30 | 40 35 | 0 0 0 | 0 0"},
{353, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton Maradeur melee / Automaton Rocket rider melee", "010 005 | 01 00 00 00 | 10 | 10 10 | 0 0 0 | 0 0"},
{206, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton unknown", "100 100 | 03 00 00 00 | 20 | 50 40 | 0 0 0 | 0 0"},
{239, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton unknown", "150 150 | 05 00 00 00 | 30 | 30 40 | 0 0 0 | 0 0"},
{281, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automaton unknown", "300 300 | 03 00 00 00 | 50 | 50 40 | 0 0 0 | 0 0"},
{246, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automatons ground red mine", "300 300 | 03 00 00 00 | 30 | 30 40 | 0 0 0 | 0 0"},
{322, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automatons SHREDDER TANK 2 continuous scan", "075 075 | 06 06 06 00 | 0 | 0 0 | 5 0 0 | 0 0"},
{358, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Automatons", "Automatons SHREDDER TANK 3 rare", "200 200 | 04 00 00 00 | 40 | 40 40 | 0 0 0 | 0 0"},
{176, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Bile Titan bile1", "050 050 | 06 00 00 00 | 0 | 0 0 | 3 10 100 | 0 0"},
{ 2, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Bile Titan bile2", "050 050 | 05 05 05 00 | 0 | 20 10 | 0 0 0 | 0 0"},
{351, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Bile Titan Stomp (impact)", "3000 3000 | 10 00 00 00 | 40 | 60 10 | 0 0 0 | 0 0"},
{342, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Brood commander melee attack / Terminid Hive Guard melee attack / Terminid Hunter swipes / Terminid Warrior melee attack", "040 040 | 02 00 00 00 | 20 | 20 10 | 0 0 0 | 0 0"},
{ 1, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Bug Bile spew", "032 032 | 04 04 04 00 | 0 | 20 10 | 0 0 0 | 0 0"},
{335, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Charger Rush", "350 350 | 07 00 00 00 | 40 | 50 50 | 0 0 0 | 0 0"},
{292, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Ground spores if shoot then blow&throw away", "005 005 | 03 00 00 00 | 20 | 55 55 | 0 35 25 | 0 0"},
{338, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Hunter attack 2", "030 015 | 02 00 00 00 | 10 | 10 10 | 0 0 0 | 0 0"},
{ 3, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Nursing spewer bile", "032 032 | 04 04 04 00 | 10 | 20 10 | 0 0 0 | 0 0"},
{345, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Scavenger melee attack", "030 015 | 02 00 00 00 | 10 | 10 5 | 0 0 0 | 0 0"},
{332, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid some bug melee 1", "000 000 | 07 00 00 00 | 40 | 0 0 | 0 0 0 | 0 0"},
{336, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid some bug melee 2", "030 030 | 07 00 00 00 | 41 | 40 35 | 0 0 0 | 0 0"},
{348, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Stalker attack", "040 040 | 03 00 00 00 | 20 | 20 15 | 0 0 0 | 0 0"},
{349, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminid Stalker throw away attack", "035 035 | 02 00 00 00 | 0 | 35 45 | 0 0 0 | 0 0"},
{340, -2, -3, -4, -5, -6, -7, -8, -9, -10, 1.0f, "Enemy Terminids", "Terminod Stalker melee", "035 003 | 01 00 00 00 | 15 | 20 10 | 0 0 0 | 0 0"}
};
// YOU CAN CHANGE SECTION END
#define NO_OLDNAMES
#include <stddef.h>
#include <windows.h>
#include <string.h>
extern __cdecl int sprintf(char *, char *, ...);
extern __cdecl void OutputDebugStringA(const char* lpOutputString);
char g_debug_string[400];
char included_excluded_str[15];
short GetAsyncKeyState(int);
// how much records in table. unknown damages, detected in game will be recorded above
int g_damage_table_records = 150;
// Include / Exclude global flags
char g_exclude_flag = 1;
char g_include_flag = 0;
//char damage_debug_global = 1;
int knock_value = 10;
// function to calculate final value
float calculate(int original_value,
int user_table_value,
float user_table_multiplier,
int damage_direction_add_value,
float damage_direction_multiplier) {
float output_value = (user_table_value >= 0) ? user_table_value : original_value;
if ((user_table_multiplier >= 0) && (user_table_multiplier != 1.0f)) {
output_value *= user_table_multiplier;
}
output_value += damage_direction_add_value;
if (output_value < 0) {
output_value = 0;
}
if ((damage_direction_multiplier >= 0) && (damage_direction_multiplier != 1.0f)) {
output_value *= damage_direction_multiplier;
}
return output_value;
}
{$asm}
[ENABLE]
aobscanmodule(damage_inject,game.dll,66 0F 6E 59 04 66 0F 6E 49 08 0F 5B C9 0F 5B DB)
alloc(damage_newmem,$20000)
label(damage_return)
// define global variable
alloc(damage_ratio,4)
registersymbol(damage_ratio)
damage_newmem:
{$ccode base_address=rcx}
//extern float damage_ratio = 1.0f;
// damage_ratio = UNKNOWN_DAMAGE_MULTIPLIER; // Default damage multiplier for damages (unknown) that are not found in g_damage_table. Assuming they are some enemy attacks.
GameDamageInfo *game_damage = (GameDamageInfo*)(base_address);
if (game_damage->id == 0) { goto end_section; }
CheatDamageInfo *user_table_entry = NULL; // current_damage is place where to put address of g_damage_table entry with id equals damage_id
// search in-game damage in user's damage_table
for (int i = 0; i < sizeof(g_damage_table) / sizeof(g_damage_table[0]); ++i) {
if (g_damage_table[i].id == 0) {
continue;
}
if (game_damage->id == g_damage_table[i].id) {
// entry found
user_table_entry = &g_damage_table[i];
break;
}
}
if (!user_table_entry) {
// if in-game damage was not found in user's damage_table, then add it to user's damage table, so we can work with it usual way
user_table_entry = &g_damage_table[g_damage_table_records++];
user_table_entry->id = game_damage->id;
user_table_entry->d1 = -1;
user_table_entry->d2 = -1;
user_table_entry->p1 = -1;
user_table_entry->p2 = -1;
user_table_entry->p3 = -1;
user_table_entry->p4 = -1;
user_table_entry->demolition = -1;
user_table_entry->knockback1 = -1;
user_table_entry->knockback2 = -1;
user_table_entry->damage_mult = 1.0f;
user_table_entry->p_weapon_type = "Enemy, Environmental or Unknown. Added from game, not from user table. Assuming it is input_damage to player";
user_table_entry->p_damage_name = "Enemy, Environmental or Unknown. Added from game, not from user table. Assuming it is input_damage to player";
user_table_entry->p_base_stats_string = "";
user_table_entry->hide_output = 0;
user_table_entry->game_damage_backup = *game_damage;
user_table_entry->damage_direction = INPUT_DIRECTION; // Any unknown damage (not in table) interpreted as INPUT_DIRECTION (damage to our player)
sprintf(g_debug_string, "Damage: New damage class added to table: id %3d", game_damage->id);
OutputDebugStringA(g_debug_string);
}
// Error situation. Usually could not happen.
if (!user_table_entry) {
sprintf(g_debug_string, "Damage: user_table_entry is null. return");
OutputDebugStringA(g_debug_string);
goto end_section;
}
// backup untouched game_damage values for later use
if (user_table_entry->game_damage_backup.id != game_damage->id) {
sprintf(g_debug_string, "Damage: id %d saved game_damage_backup", game_damage->id);
OutputDebugStringA(g_debug_string);
user_table_entry->game_damage_backup = *game_damage;
}
// Detect damage direction if not detected earlier
if ((user_table_entry->damage_direction != INPUT_DIRECTION) && (user_table_entry->damage_direction != OUTPUT_DIRECTION)) {
if (strstr(user_table_entry->p_weapon_type, "Enemy") || strstr(user_table_entry->p_weapon_type, "Environment")) {
user_table_entry->damage_direction = INPUT_DIRECTION;
} else {
user_table_entry->damage_direction = OUTPUT_DIRECTION;
}
}
if ((GetAsyncKeyState(HOTKEY_GOD_SHOT) & 0x8000) && (user_table_entry->damage_direction == OUTPUT_DIRECTION)) {
// GOD SHOT hotkey just oneshot kill everything from any weapon (ex. pistol against buildings or titans)
game_damage->d1 = 9999;
game_damage->d2 = 9999;
game_damage->p1 = 10;
game_damage->p2 = 10;
game_damage->p3 = 10;
game_damage->p4 = 10;
game_damage->p4 = 10;
game_damage->demolition = 1000;
game_damage->knockback1 = 0;
game_damage->knockback2 = 0;
} else {
game_damage->d1 = calculate(user_table_entry->game_damage_backup.d1,
user_table_entry->d1,
user_table_entry->damage_mult,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_DAMAGE_ADD : OUTPUT_DAMAGE_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_DAMAGE_MULTIPLIER : OUTPUT_DAMAGE_MULTIPLIER);
game_damage->d2 = calculate(user_table_entry->game_damage_backup.d2,
user_table_entry->d2,
user_table_entry->damage_mult,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_DAMAGE_ADD : OUTPUT_DAMAGE_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_DAMAGE_MULTIPLIER : OUTPUT_DAMAGE_MULTIPLIER);
game_damage->p1 = calculate(user_table_entry->game_damage_backup.p1,
user_table_entry->p1,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_ADD : OUTPUT_PENETRATION_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_MULTIPLIER : OUTPUT_PENETRATION_MULTIPLIER);
game_damage->p2 = calculate(user_table_entry->game_damage_backup.p2,
user_table_entry->p2,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_ADD : OUTPUT_PENETRATION_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_MULTIPLIER : OUTPUT_PENETRATION_MULTIPLIER);
game_damage->p3 = calculate(user_table_entry->game_damage_backup.p3,
user_table_entry->p3,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_ADD : OUTPUT_PENETRATION_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_MULTIPLIER : OUTPUT_PENETRATION_MULTIPLIER);
game_damage->p4 = calculate(user_table_entry->game_damage_backup.p4,
user_table_entry->p4,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_ADD : OUTPUT_PENETRATION_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_PENETRATION_MULTIPLIER : OUTPUT_PENETRATION_MULTIPLIER);
game_damage->demolition = calculate(user_table_entry->game_damage_backup.demolition,
user_table_entry->demolition,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_DEMOLITION_ADD : OUTPUT_DEMOLITION_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_DEMOLITION_MULTIPLIER : OUTPUT_DEMOLITION_MULTIPLIER);
game_damage->knockback1 = calculate(user_table_entry->game_damage_backup.knockback1,
user_table_entry->knockback1,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_KNOCKBACK_ADD : OUTPUT_KNOCKBACK_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_KNOCKBACK_MULTIPLIER : OUTPUT_KNOCKBACK_MULTIPLIER);
game_damage->knockback2 = calculate(user_table_entry->game_damage_backup.knockback2,
user_table_entry->knockback2,
1.0f,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_KNOCKBACK_ADD : OUTPUT_KNOCKBACK_ADD,
(user_table_entry->damage_direction == INPUT_DIRECTION) ? INPUT_KNOCKBACK_MULTIPLIER : OUTPUT_KNOCKBACK_MULTIPLIER);
}
// INPUT DAMAGE LIMIT
if (INPUT_DAMAGE_LIMIT >= 0) {
if (user_table_entry->damage_direction == INPUT_DIRECTION) {
if (game_damage->d1 > INPUT_DAMAGE_LIMIT) {
game_damage->d1 = INPUT_DAMAGE_LIMIT;
}
if (game_damage->d2 > INPUT_DAMAGE_LIMIT) {
game_damage->d2 = INPUT_DAMAGE_LIMIT;
}
}
}
// Include / Exclude damage_id printing routines
if (GetAsyncKeyState(HOTKEY_EXCLUDE_DAMAGE) & 0x8000) {
// Exclude mode. While key pressed, all damages that are happening will mark as excluded and will not be printed in OutputDebug section
g_exclude_flag = 1;
g_include_flag = 0;
} else {
g_exclude_flag = 0;
// Include mode. While key pressed, all damages that happening and was excluded before, including back and will print in OutputDebug section
if (GetAsyncKeyState(HOTKEY_INCLUDE_DAMAGE) & 0x8000) {
// include mode
g_exclude_flag = 0;
g_include_flag = 1;
} else {
g_include_flag = 0;
}
}
strcpy(included_excluded_str, "");
if (g_exclude_flag) {
if (!user_table_entry->hide_output) {
strcpy(included_excluded_str, " excluded ");
}
user_table_entry->hide_output = 1;
}
if (g_include_flag) {
if (user_table_entry->hide_output) {
strcpy(included_excluded_str, " included ");
}
user_table_entry->hide_output = 0;
}
// Output debug information
if (!user_table_entry->hide_output) {
sprintf(g_debug_string, "Damage: %s id %3d | %d->%d %d->%d | pen: %d->%d %d->%d %d->%d %d->%d | demolition: %d->%d | knock %d->%d %d->%d | decal size: %d duration x100: %d type: %d | mult %d%% mult ext %d%% | damage_to_us: %d | %s",
included_excluded_str,
game_damage->id,
user_table_entry->game_damage_backup.d1,
game_damage->d1,
user_table_entry->game_damage_backup.d2,
game_damage->d2,
user_table_entry->game_damage_backup.p1,
game_damage->p1,
user_table_entry->game_damage_backup.p2,
game_damage->p2,
user_table_entry->game_damage_backup.p3,
game_damage->p3,
user_table_entry->game_damage_backup.p4,
game_damage->p4,
user_table_entry->game_damage_backup.demolition,
game_damage->demolition,
user_table_entry->game_damage_backup.knockback1,
game_damage->knockback1,
user_table_entry->game_damage_backup.knockback2,
game_damage->knockback2,
game_damage->decal_size,
(int)(game_damage->decal_duration * 100),
game_damage->decal_type,
(int)(user_table_entry->damage_mult*100.0f),
(int)(ext_damage_mult),
(user_table_entry->damage_direction == INPUT_DIRECTION),
user_table_entry->p_damage_name
);
OutputDebugStringA(g_debug_string);
}
end_section:
{$asm}
// standart code start
movd xmm3,[rcx+04]
movd xmm1,[rcx+08]
cvtdq2ps xmm1,xmm1
cvtdq2ps xmm3,xmm3
// standart code end
/*
// damage_ratio part
mulss xmm3, dword ptr [damage_ratio]
mulss xmm1, dword ptr [damage_ratio]
*/
jmp damage_return
damage_inject:
jmp far damage_newmem
nop 2
damage_return:
// ------------------------------------------------------
[DISABLE]