Ares
Defines | Functions | Variables

Bugfixes.cpp File Reference

#include <AnimClass.h>
#include <BulletClass.h>
#include <CCINIClass.h>
#include <CellSpread.h>
#include <HouseClass.h>
#include <InfantryClass.h>
#include <LightSourceClass.h>
#include <LocomotionClass.h>
#include <LoadProgressManager.h>
#include <MapClass.h>
#include <MixFileClass.h>
#include <TacticalClass.h>
#include <TechnoClass.h>
#include <TemporalClass.h>
#include <UnitTypeClass.h>
#include <WarheadTypeClass.h>
#include "Debug.h"
#include "../Ares.h"
#include "../Ext/Rules/Body.h"
#include "../Ext/BuildingType/Body.h"
#include "../Ext/BulletType/Body.h"
#include "../Ext/Techno/Body.h"
#include "../Ext/TechnoType/Body.h"
#include "../Ext/House/Body.h"
#include "../Ext/Side/Body.h"
#include "../Ext/HouseType/Body.h"
#include "../Ext/WeaponType/Body.h"
#include "../Ext/WarheadType/Body.h"
#include "../Utilities/Template.h"
#include <cstdlib>

Defines

#define XL(r)

Functions

 DEFINE_HOOK (5CB0B1, QueryPerformance, 5)
 DEFINE_HOOK (6BD7E3, Expand_MIX_Reorg, 5)
 DEFINE_HOOK (52BB64, Expand_MIX_Deorg, 5)
 DEFINE_HOOK (53029E, Load_Bootstrap_AresMIX, 5)
 DEFINE_HOOK (6BE9BD, sub_6BE1C0, 6)
 DEFINE_HOOK (715857, TechnoTypeClass_LoadFromINI_LimitPalettes, 5)
 DEFINE_HOOK (441D25, BuildingClass_Destroy, 0A)
 DEFINE_HOOK (71A922, TemporalClass_Update, 6)
 DEFINE_HOOK (71AF2B, TemporalClass_Fire_UnwarpableA, A)
 DEFINE_HOOK (71AF76, TemporalClass_Fire_UnwarpableB, 9)
 DEFINE_HOOK (4D98DD, Insignificant_UnitLost, 6)
 DEFINE_HOOK (424B23, AnimClass_Update, 6)
 DEFINE_HOOK (6BB9DD, WinMain_LogNonsense, 5)
 DEFINE_HOOK (531726, StupidPips1, 5)
 DEFINE_HOOK (53173F, StupidPips2, 5)
 DEFINE_HOOK (5F698F, ObjectClass_GetCell, 5)
 DEFINE_HOOK (6FCA30, TechnoClass_GetWeaponState, 6)
 DEFINE_HOOK (671152, RulesClass_Addition_General, 6)
 DEFINE_HOOK (4693B0, BulletClass_Fire_Overpower, 6)
 DEFINE_HOOK (4444E2, BuildingClass_KickOutUnit, 6)
 DEFINE_HOOK (42461D, AnimClass_Update_Damage, 6) DEFINE_HOOK_AGAIN(42463A

Variables

 AnimClass_Update_Damage

Define Documentation

#define XL (   r)
Value:
GET(TechnoClass *, T, ECX); \
        Debug::Log("%c: [%s] receiving...\n", r, T->GetType()->ID); \
        Debug::Log("\t Subject = %s\n", ((TechnoClass *)R->get_StackVar32(0x4))->GetType()->ID); \
        Debug::Log("\t command = %d\n", R->get_StackVar32(0x8)); \
        Debug::Log("\t unknown = %d\n", R->get_StackVar32(0xC)); \
        for(DWORD i = 0x10; i < 0x40; i += 4) { \
                Debug::Log("\t 0x%02x = 0x%08X\n", i, R->get_StackVar32(i)); \
        } \
        return 0;

Function Documentation

DEFINE_HOOK ( 5CB0B1  ,
QueryPerformance  ,
 
)
{
        if(!R->EAX()) {
                R->EAX(1);
        }
        return 0;
}
DEFINE_HOOK ( 42461D  ,
AnimClass_Update_Damage  ,
 
)
DEFINE_HOOK ( 4444E2  ,
BuildingClass_KickOutUnit  ,
 
)
{
        GET(BuildingClass *, Src, ESI);
        GET(BuildingClass *, Tst, EBP);

        if(Src != Tst
         && Tst->GetCurrentMission() == mission_Guard
         && !Tst->IsUnderEMP() // issue #1571
         && Tst->Type->Factory == Src->Type->Factory
         && Tst->Type->Naval == Src->Type->Naval
         && !Tst->Factory)
        {
                return 0x44451F;
        }

        return 0x444508;
}
DEFINE_HOOK ( 4693B0  ,
BulletClass_Fire_Overpower  ,
 
)
{
        GET(TechnoClass *, pT, ECX);
        switch(pT->WhatAmI())
        {
                case abs_Infantry:
                case abs_Unit:
                        return 0x4693BC;
                default:
                        return 0x469AA4;
        }
}
DEFINE_HOOK ( 671152  ,
RulesClass_Addition_General  ,
 
)
{
        GET(RulesClass *, Rules, ESI);
        Rules->PrismSupportModifier /= 100;
        return 0;
}
DEFINE_HOOK ( 6FCA30  ,
TechnoClass_GetWeaponState  ,
 
)
{
        GET(TechnoClass *, Techno, ESI);
        TechnoClass *Transport = Techno->Transporter;
        RET_UNLESS(Transport && Transport->CloakState);
        return 0x6FCA4F;
}
DEFINE_HOOK ( 5F698F  ,
ObjectClass_GetCell  ,
 
)
{
        return 0x5F69B2;
}
DEFINE_HOOK ( 53173F  ,
StupidPips2  ,
 
)
{
        return 0x531749;
}
DEFINE_HOOK ( 531726  ,
StupidPips1  ,
 
)
{
        return 0x53173A;
}
DEFINE_HOOK ( 6BB9DD  ,
WinMain_LogNonsense  ,
 
)
{
        return 0x6BBE2B;
}
DEFINE_HOOK ( 424B23  ,
AnimClass_Update  ,
 
)
{
        GET(InfantryClass *, I, EDI);
        I->UnInit();
        GET(AnimClass *, A, ESI);
        A->TimeToDie = 1;
        A->UnInit();
        return 0x424B29;
}
DEFINE_HOOK ( 4D98DD  ,
Insignificant_UnitLost  ,
 
)
{
        GET(TechnoClass *, t, ESI);
        TechnoTypeClass *T = t->GetTechnoType();

        return (T->Insignificant || T->DontScore) ? 0x4D9916 : 0;
}
DEFINE_HOOK ( 71AF76  ,
TemporalClass_Fire_UnwarpableB  ,
 
)
                                                       {
        GET(TechnoClass *, T, EDI);

        // now it has been checked: this is warpable.
        // free captured and destroy spawned units.
        if (T->SpawnManager) {
                T->SpawnManager->KillNodes();
        }
        if (T->CaptureManager) {
                T->CaptureManager->FreeAll();
        }

        // always resume normally.
        return 0;
}
DEFINE_HOOK ( 71AF2B  ,
TemporalClass_Fire_UnwarpableA  ,
 
)
                                                       {
        // skip freeing captured and destroying spawned units,
        // as it is not clear here if this is warpable at all.
        return 0x71AF4D;
}
DEFINE_HOOK ( 71A922  ,
TemporalClass_Update  ,
 
)
                                             {
        return 0x71A97D;
}
DEFINE_HOOK ( 441D25  ,
BuildingClass_Destroy  ,
0A   
)
{
        return 0x441D37;
}
DEFINE_HOOK ( 715857  ,
TechnoTypeClass_LoadFromINI_LimitPalettes  ,
 
)
{
        return 0x715876;
}
DEFINE_HOOK ( 6BE9BD  ,
sub_6BE1C0  ,
 
)
{
        Ares::UninitOwnResources();
        return 0;
}
DEFINE_HOOK ( 53029E  ,
Load_Bootstrap_AresMIX  ,
 
)
{
        Ares::InitOwnResources();
        return 0;
}
DEFINE_HOOK ( 52BB64  ,
Expand_MIX_Deorg  ,
 
)
{
        R->AL(1);
        return 0x52BB69;
}
DEFINE_HOOK ( 6BD7E3  ,
Expand_MIX_Reorg  ,
 
)
{
        MixFileClass::Bootstrap();
        return 0;
}

Variable Documentation

 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines