Decompile projectileTick

This commit is contained in:
Ryan Dwyer 2022-07-20 21:20:17 +10:00
parent 330ae2a554
commit fef5f17563
26 changed files with 1608 additions and 17851 deletions

View File

@ -273,7 +273,7 @@ u32 props[] = {
weapon(0x0100, MODEL_CHRDRUGGUN, 0x0056, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_TRANQUILIZER)
tag(OBJ_TROLLEY, 1)
hover_prop(0x0100, MODEL_A51TROLLEY, PAD_SEV_03BD, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_BULLETPROOF, OBJFLAG3_PUSHABLE | OBJFLAG3_01000000, 1000, 0x00010000)
hover_prop(0x0100, MODEL_A51TROLLEY, PAD_SEV_03BD, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_BULLETPROOF, OBJFLAG3_PUSHABLE | OBJFLAG3_PUSHFREELY, 1000, 0x00010000)
tag(OBJ_EXPERIMENT, 1)
hover_prop(0x0100, MODEL_HOVERBED, PAD_SEV_03C3, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF, OBJFLAG3_HOVERBEDSHIELD, 1000, 0x00010000)
tag(0x3e, 1)

View File

@ -349,7 +349,7 @@ u32 props[] = {
#if VERSION >= VERSION_NTSC_1_0
stdobject(0x00e6, MODEL_SKPUZZLEOBJECT, PAD_SHO_012C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_01000000, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PUSHABLE, 1000)
#else
stdobject(0x00e6, MODEL_SKPUZZLEOBJECT, PAD_SHO_012C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x00e6, MODEL_SKPUZZLEOBJECT, PAD_SHO_012C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
#endif
tag(0x05, 1)
lift(0x0100, MODEL_SKEDARBRIDGE, PAD_SHO_0135, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0135, 0x0134, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000471c, 0x00a6aaaa, 0x00000000)

View File

@ -484,13 +484,13 @@ u32 props[] = {
tag(0x27, 7)
tag(0x28, 7)
tag(0x29, 7)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_00800000, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
tag(0x2a, 1)
glass(0x0100, MODEL_MEDLABWIN2, PAD_TRA_043C, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
tag(0x12, 2)

View File

@ -55,14 +55,14 @@ void bbikeInit(void)
g_Vars.currentplayer->speedforwards = 0;
g_Vars.currentplayer->speedsideways = 0;
if (hoverbike->base.hidden & OBJHFLAG_AIRBORNE) {
if (hoverbike->base.hidden & OBJHFLAG_PROJECTILE) {
struct projectile *projectile = hoverbike->base.projectile;
hoverbike->speed[0] = projectile->speed.x;
hoverbike->speed[1] = projectile->speed.z;
hoverbike->w = projectile->unk0dc;
}
func0f06ac90(g_Vars.currentplayer->hoverbike);
objFreeEmbedmentOrProjectile(g_Vars.currentplayer->hoverbike);
hoverbike->base.hidden |= OBJHFLAG_MOUNTED;
}
@ -1169,7 +1169,7 @@ s32 bbikeCalculateNewPositionWithPush(struct coord *arg0, f32 arg1)
bool pass = true;
struct defaultobj *bike = g_Vars.currentplayer->hoverbike->obj;
if ((obj->hidden & OBJHFLAG_AIRBORNE)
if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_00001000)) {
pass = false;
}
@ -1177,13 +1177,13 @@ s32 bbikeCalculateNewPositionWithPush(struct coord *arg0, f32 arg1)
if (pass) {
bbike0f0d2b40(bike, arg0, arg1, obj);
if ((obj->hidden & OBJHFLAG_AIRBORNE)
&& (obj->projectile->flags & PROJECTILEFLAG_00000800)) {
if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) {
s32 somevalue;
bool somebool = false;
somevalue = func0f073c6c(obj, &somebool);
bool embedded = false;
somevalue = projectileTick(obj, &embedded);
if (obj->hidden & OBJHFLAG_AIRBORNE) {
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00001000;
if (somevalue) {

View File

@ -67,11 +67,11 @@ void bgrabInit(void)
struct hov *hov = NULL;
bool withforce;
if (obj->hidden & OBJHFLAG_AIRBORNE) {
if (obj->hidden & OBJHFLAG_PROJECTILE) {
struct projectile *projectile = obj->projectile;
g_Vars.currentplayer->bondshotspeed.x += projectile->speed.x * 0.2f;
g_Vars.currentplayer->bondshotspeed.z += projectile->speed.z * 0.2f;
objEndFlight(obj);
objFreeProjectile(obj);
}
if (obj->type == OBJTYPE_HOVERPROP) {
@ -560,7 +560,7 @@ bool bgrabCalculateNewPositiontWithPush(struct coord *delta, f32 angle, bool arg
g_Vars.currentplayer->speedmaxtime60 = 0;
if ((obj->hidden & OBJHFLAG_AIRBORNE)
if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_00001000)) {
canpush = false;
}
@ -568,13 +568,13 @@ bool bgrabCalculateNewPositiontWithPush(struct coord *delta, f32 angle, bool arg
if (canpush) {
bgrab0f0ccbf0(delta, angle, obj);
if ((obj->hidden & OBJHFLAG_AIRBORNE)
&& (obj->projectile->flags & PROJECTILEFLAG_00000800)) {
if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) {
s32 someint;
bool somebool = false;
someint = func0f073c6c(obj, &somebool);
bool embedded = false;
someint = projectileTick(obj, &embedded);
if ((obj->hidden & OBJHFLAG_AIRBORNE)) {
if ((obj->hidden & OBJHFLAG_PROJECTILE)) {
obj->projectile->flags |= PROJECTILEFLAG_00001000;
if (someint) {

View File

@ -11839,12 +11839,12 @@ void bgun0f09ebcc(struct defaultobj *obj, struct coord *coord, s16 *rooms, Mtxf
func0f0685e4(objprop);
if (obj->hidden & OBJHFLAG_AIRBORNE) {
obj->projectile->flags |= PROJECTILEFLAG_00000001;
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_AIRBORNE;
obj->projectile->ownerprop = prop;
objSetProjectileFlag4(objprop);
mtx4Copy(matrix2, (Mtxf *)&obj->projectile->unk020);
projectileSetSticky(objprop);
mtx4Copy(matrix2, (Mtxf *)&obj->projectile->mtx);
obj->projectile->speed.x = velocity->x;
obj->projectile->speed.y = velocity->y;
@ -11872,8 +11872,8 @@ void bgun0f09ed2c(struct defaultobj *obj, struct coord *newpos, Mtxf *arg2, stru
bgun0f09ebcc(obj, &pos, rooms, arg2, velocity, arg4, playerprop, newpos);
if (obj->hidden & OBJHFLAG_AIRBORNE) {
obj->projectile->flags |= PROJECTILEFLAG_00000080;
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_LAUNCHING;
obj->projectile->nextsteppos.x = newpos->x;
obj->projectile->nextsteppos.y = newpos->y;
@ -11908,7 +11908,7 @@ struct defaultobj *bgunCreateThrownProjectile2(struct chrdata *chr, struct gset
guRotateF(mtx.m, 90.0f / (RANDOMFRAC() + 12.1f),
arg4->m[1][0], arg4->m[1][1], arg4->m[1][2]);
} else {
func0f096360(&mtx);
mtxLoadRandomRotation(&mtx);
}
if (gset->weaponnum == WEAPON_LAPTOPGUN) {
@ -11956,7 +11956,7 @@ struct defaultobj *bgunCreateThrownProjectile2(struct chrdata *chr, struct gset
obj->hidden |= playernum << 28;
if (obj->hidden & OBJHFLAG_AIRBORNE) {
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00000002;
obj->projectile->unk08c = 0.1f;
obj->projectile->unk0b4 = TICKS(240);
@ -12153,8 +12153,8 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset)
}
}
if (obj->hidden & OBJHFLAG_AIRBORNE) {
obj->projectile->flags |= PROJECTILEFLAG_00000080;
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_LAUNCHING;
obj->projectile->nextsteppos.x = muzzlepos.x;
obj->projectile->nextsteppos.y = muzzlepos.y;
obj->projectile->nextsteppos.z = muzzlepos.z;
@ -12429,11 +12429,11 @@ void bgunCreateFiredProjectile(s32 handnum)
bgun0f09ed2c(&weapon->base, &spawnpos, &sp210, &sp264, &sp270);
if (weapon->base.hidden & OBJHFLAG_AIRBORNE) {
if (funcdef->base.base.flags & FUNCFLAG_80000000) {
weapon->base.projectile->flags |= PROJECTILEFLAG_40000000;
} else if (funcdef->base.base.flags & FUNCFLAG_08000000) {
weapon->base.projectile->flags |= PROJECTILEFLAG_00000010;
if (weapon->base.hidden & OBJHFLAG_PROJECTILE) {
if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) {
weapon->base.projectile->flags |= PROJECTILEFLAG_LIGHTWEIGHT;
} else if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_POWERED) {
weapon->base.projectile->flags |= PROJECTILEFLAG_POWERED;
}
weapon->base.projectile->targetprop = g_Vars.currentplayer->trackedprops[0].prop;
@ -12446,7 +12446,7 @@ void bgunCreateFiredProjectile(s32 handnum)
mtx4ToMtx3(&sp78, weapon->base.realrot);
}
weapon->base.projectile->unk0b2 = TICKS(1200);
weapon->base.projectile->powerlimit240 = TICKS(1200);
weapon->base.projectile->unk0a8 = weapon->base.prop->pos.y;
weapon->base.projectile->unk0ac = weapon->base.projectile->speed.y;
weapon->base.projectile->unk010 = sp250.x;
@ -12464,8 +12464,8 @@ void bgunCreateFiredProjectile(s32 handnum)
playerLaunchSlayerRocket(weapon);
}
if (weapon->base.projectile->flags & PROJECTILEFLAG_00000080) {
func0f073ae8(&weapon->base, weapon->base.projectile, &sp6c, &sp60);
if (weapon->base.projectile->flags & PROJECTILEFLAG_LAUNCHING) {
projectileLaunch(&weapon->base, weapon->base.projectile, &sp6c, &sp60);
}
} else {
failed = true;
@ -12505,11 +12505,11 @@ void bgunCreateFiredProjectile(s32 handnum)
bgun0f09ed2c(&weapon->base, &spawnpos, &sp210, &sp264, &sp270);
if (weapon->base.hidden & OBJHFLAG_AIRBORNE) {
if (funcdef->base.base.flags & FUNCFLAG_80000000) {
weapon->base.projectile->flags |= PROJECTILEFLAG_40000000;
} else if (funcdef->base.base.flags & FUNCFLAG_08000000) {
weapon->base.projectile->flags |= PROJECTILEFLAG_00000010;
if (weapon->base.hidden & OBJHFLAG_PROJECTILE) {
if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) {
weapon->base.projectile->flags |= PROJECTILEFLAG_LIGHTWEIGHT;
} else if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_POWERED) {
weapon->base.projectile->flags |= PROJECTILEFLAG_POWERED;
}
weapon->base.projectile->targetprop = g_Vars.currentplayer->trackedprops[0].prop;
@ -12522,7 +12522,7 @@ void bgunCreateFiredProjectile(s32 handnum)
mtx4ToMtx3(&sp78, weapon->base.realrot);
}
weapon->base.projectile->unk0b2 = TICKS(1200);
weapon->base.projectile->powerlimit240 = TICKS(1200);
weapon->base.projectile->unk0a8 = weapon->base.prop->pos.y;
weapon->base.projectile->unk0ac = weapon->base.projectile->speed.y;
weapon->base.projectile->unk010 = sp250.x;
@ -12540,8 +12540,8 @@ void bgunCreateFiredProjectile(s32 handnum)
playerLaunchSlayerRocket(weapon);
}
if (weapon->base.projectile->flags & PROJECTILEFLAG_00000080) {
func0f073ae8(&weapon->base, weapon->base.projectile, &sp6c, &sp60);
if (weapon->base.projectile->flags & PROJECTILEFLAG_LAUNCHING) {
projectileLaunch(&weapon->base, weapon->base.projectile, &sp6c, &sp60);
}
}
#endif
@ -14069,7 +14069,7 @@ void bgunLoseGun(struct prop *attackerprop)
struct defaultobj *obj = prop2->obj;
objSetDropped(prop2, DROPTYPE_DEFAULT);
if (obj->hidden & OBJHFLAG_AIRBORNE) {
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->unk0b4 = TICKS(240);
obj->projectile->unk108 = attackerprop;
}

View File

@ -460,7 +460,7 @@ bool bwalkCalculateNewPositionWithPush(struct coord *delta, f32 rotateamount, bo
g_Vars.currentplayer->speedmaxtime60 = 0;
dothething = true;
if ((obj->hidden & OBJHFLAG_AIRBORNE) &&
if ((obj->hidden & OBJHFLAG_PROJECTILE) &&
(obj->projectile->flags & PROJECTILEFLAG_00001000)) {
dothething = false;
}
@ -468,12 +468,12 @@ bool bwalkCalculateNewPositionWithPush(struct coord *delta, f32 rotateamount, bo
if (dothething) {
bwalk0f0c3b38(delta, obj);
if (obj->hidden & OBJHFLAG_AIRBORNE && (obj->projectile->flags & PROJECTILEFLAG_00000800)) {
if (obj->hidden & OBJHFLAG_PROJECTILE && (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) {
bool somevalue;
bool somebool = false;
somevalue = func0f073c6c(obj, &somebool);
bool embedded = false;
somevalue = projectileTick(obj, &embedded);
if (obj->hidden & OBJHFLAG_AIRBORNE) {
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00001000;
if (somevalue) {

View File

@ -1667,10 +1667,10 @@ glabel var7f1b8ea8
//
// dprint();
//
// if ((obj->hidden & OBJHFLAG_AIRBORNE)
// if ((obj->hidden & OBJHFLAG_PROJECTILE)
// && obj->projectile
// && obj->projectile->unk0b4 > 0
// && obj->projectile->unk090 == 0) {
// && obj->projectile->bouncecount == 0) {
// return false;
// }
//
@ -1703,7 +1703,7 @@ glabel var7f1b8ea8
//
// // Ignore rockets that are in flight
// if ((weaponobj->weaponnum == WEAPON_ROCKET || weaponobj->weaponnum == WEAPON_HOMINGROCKET)
// && (obj->hidden & OBJHFLAG_AIRBORNE)) {
// && (obj->hidden & OBJHFLAG_PROJECTILE)) {
// return false;
// }
// }
@ -1860,10 +1860,10 @@ void botCheckPickups(struct chrdata *chr)
if (obj)
#endif
{
if ((obj->hidden & OBJHFLAG_AIRBORNE) == 0
if ((obj->hidden & OBJHFLAG_PROJECTILE) == 0
|| obj->projectile == NULL
|| obj->projectile->unk0b4 <= 0
|| obj->projectile->unk090) {
|| obj->projectile->bouncecount != 0) {
if (botIsObjCollectable(obj)) {
if (botTestPropForPickup(prop, chr)) {
propExecuteTickOperation(prop, TICKOP_FREE);
@ -3469,7 +3469,7 @@ void botLoseGun(struct chrdata *chr, struct prop *attackerprop)
objSetDropped(prop, DROPTYPE_DEFAULT);
chr->hidden |= CHRHFLAG_00000001;
if (obj->hidden & OBJHFLAG_AIRBORNE) {
if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->unk0b4 = TICKS(240);
obj->projectile->unk108 = attackerprop;
}

View File

@ -523,7 +523,7 @@ void botactCreateSlayerRocket(struct chrdata *chr)
bgun0f09ebcc(&rocket->base, &chr->prop->pos, chr->prop->rooms, &sp196, &sp100, &sp260, chr->prop, &chr->prop->pos);
if (rocket->base.hidden & OBJHFLAG_AIRBORNE) {
if (rocket->base.hidden & OBJHFLAG_PROJECTILE) {
struct prop *target = chrGetTargetProp(chr);
rocket->timer240 = -1;
rocket->base.projectile->unk010 = 7.5;

View File

@ -8781,8 +8781,8 @@ void chrCreateFireslot(struct chrdata *chr, s32 handnum, bool withsound, bool wi
if (weaponprop) {
weapon = weaponprop->weapon;
weaponnum = weapon->weaponnum;
duration = gsetGetFireslotDuration((struct gset *) &weapon->weaponnum);
soundnum = gsetGetSingleShootSound((struct gset *) &weapon->weaponnum);
duration = gsetGetFireslotDuration(&weapon->gset);
soundnum = gsetGetSingleShootSound(&weapon->gset);
if (chr->fireslots[handnum] < 0) {
chr->fireslots[handnum] = bgunAllocateFireslot();
@ -17810,7 +17810,7 @@ glabel var7f1a9184
// s32 tickspershot;
// f32 sp208; // unused?
//
// gset = *(struct gset *)&weapon->weaponnum;
// gset = weapon->gset;
// attackflags = ATTACKFLAG_AIMATTARGET;
//
// if (chr->actiontype == ACT_ATTACK
@ -18137,11 +18137,11 @@ glabel var7f1a9184
//
// bgun0f09ebcc(&projectileobj->base, &gunpos, gunrooms, &sp11c, &sp16c, &sp178, chrprop, &gunpos);
//
// if (projectileobj->base.hidden & OBJHFLAG_AIRBORNE) {
// if (func->base.base.flags & FUNCFLAG_80000000) {
// projectileobj->base.projectile->flags |= PROJECTILEFLAG_40000000;
// } else if (func->base.base.flags & FUNCFLAG_08000000) {
// projectileobj->base.projectile->flags |= PROJECTILEFLAG_00000010;
// if (projectileobj->base.hidden & OBJHFLAG_PROJECTILE) {
// if (func->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) {
// projectileobj->base.projectile->flags |= PROJECTILEFLAG_LIGHTWEIGHT;
// } else if (func->base.base.flags & FUNCFLAG_PROJECTILE_POWERED) {
// projectileobj->base.projectile->flags |= PROJECTILEFLAG_POWERED;
// }
//
// projectileobj->base.projectile->unk010 = sp15c.x;

View File

@ -844,8 +844,8 @@ bool aiChrDamageChr(void)
vector.z = chr2->prop->pos.z - chr1->prop->pos.z;
guNormalize(&vector.x, &vector.y, &vector.z);
weapon = prop->weapon;
damage = gsetGetDamage((struct gset *)&weapon->weaponnum);
chrDamageByImpact(chr2, damage, &vector, (struct gset *)&weapon->weaponnum, chr1->prop, (s8)cmd[4]);
damage = gsetGetDamage(&weapon->gset);
chrDamageByImpact(chr2, damage, &vector, &weapon->gset, chr1->prop, (s8)cmd[4]);
}
}
@ -2384,7 +2384,7 @@ bool aiGiveObjectToChr(void)
#if VERSION >= VERSION_NTSC_1_0
if (obj->prop->parent) {
objDetach(obj->prop);
func0f06ac90(obj->prop);
objFreeEmbedmentOrProjectile(obj->prop);
propActivate(obj->prop);
}
#endif
@ -11143,7 +11143,7 @@ bool aiDoGunCommand(void)
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
struct weaponobj *weapon = g_Vars.chrdata->gunprop->weapon;
if (cmd[2] == 0 || ((weapon->base.hidden & OBJHFLAG_AIRBORNE) == 0 && cmd[2] == 1)) {
if (cmd[2] == 0 || ((weapon->base.hidden & OBJHFLAG_PROJECTILE) == 0 && cmd[2] == 1)) {
if (cmd[2] == 0) {
chrGoToProp(g_Vars.chrdata, g_Vars.chrdata->gunprop, SPEED_JOG);
}

View File

@ -11,7 +11,7 @@
#include "data.h"
#include "types.h"
void func0f096360(Mtxf *mtx)
void mtxLoadRandomRotation(Mtxf *mtx)
{
struct coord coord = {0, 0, 0};
@ -28,7 +28,7 @@ void func0f0964b4(struct coord *coord, Mtxf *mtx)
coord->y = RANDOMFRAC() * 1.6666666269302f * 4.0f;
coord->z = RANDOMFRAC() * 1.6666666269302f * 4.0f - 3.3333332538605f;
func0f096360(mtx);
mtxLoadRandomRotation(mtx);
}
void func0f0965e4(f32 *arg0, f32 *arg1, f32 arg2)

View File

@ -2705,7 +2705,7 @@ struct weaponfunc_shootprojectile invfunc_rockerlauncher_shoot = {
0, // unk07
&invnoisesettings_00011048,
invanim_rockerlauncher_equiporshoot, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED,
NULL,
0,
1, // damage
@ -2736,7 +2736,7 @@ struct weaponfunc_shootprojectile invfunc_rocketlauncher_homing = {
0, // unk07
&invnoisesettings_00011048,
invanim_rockerlauncher_equiporshoot, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000 | FUNCFLAG_HOMINGROCKET,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED | FUNCFLAG_HOMINGROCKET,
NULL,
0,
1, // damage
@ -2815,7 +2815,7 @@ struct weaponfunc_shootprojectile invfunc_slayer_shoot = {
0, // unk07
&invnoisesettings_00011048,
invanim_slayer_equiporshoot, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED,
NULL,
0,
1, // damage
@ -2846,7 +2846,7 @@ struct weaponfunc_shootprojectile invfunc_slayer_flybywire = {
0, // unk07
&invnoisesettings_00011048,
NULL, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_FLYBYWIRE | FUNCFLAG_08000000 | FUNCFLAG_20000000,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_FLYBYWIRE | FUNCFLAG_PROJECTILE_POWERED | FUNCFLAG_20000000,
NULL,
0,
1, // damage
@ -6007,7 +6007,7 @@ struct weaponfunc_shootprojectile invfunc_rocketlauncher34_primary = {
0, // unk07
&invnoisesettings_00011048,
invanim_rockerlauncher_equiporshoot, // fire animation
FUNCFLAG_NOAUTOAIM | FUNCFLAG_08000000,
FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED,
NULL,
0,
1, // damage

View File

@ -1341,7 +1341,7 @@ void scenarioHandleDroppedToken(struct chrdata *chr, struct prop *prop)
if (g_MpSetup.scenario == MPSCENARIO_CAPTURETHECASE) {
for (i = 0; i < 4; i++) {
if (chr->prop == g_ScenarioData.ctc.tokens[i]) {
objEndFlight(&weapon->base);
objFreeProjectile(&weapon->base);
g_ScenarioData.ctc.tokens[i] = prop;
weapon->team = i;

View File

@ -3981,7 +3981,7 @@ void playerTick(bool arg0)
mtx00016208(sp2b8, &sp2f0);
mtx00016208(sp2b8, &sp2e4);
if (rocket->base.hidden & OBJHFLAG_AIRBORNE) {
if (rocket->base.hidden & OBJHFLAG_PROJECTILE) {
struct projectile *projectile = rocket->base.projectile;
u32 mode = optionsGetControlMode(g_Vars.currentplayerstats->mpindex);
f32 fVar22;
@ -4110,13 +4110,13 @@ void playerTick(bool arg0)
quaternionToMtx(sp13c, &sp1fc);
mtx4RotateVecInPlace(&sp1fc, &projectile->speed);
projectile->unk0b2 = 0xffff;
projectile->flags |= PROJECTILEFLAG_00004000;
projectile->powerlimit240 = -1;
projectile->flags |= PROJECTILEFLAG_NOTIMELIMIT;
projectile->unk018 = 0;
projectile->unk014 = 0;
projectile->unk010 = 0;
if ((projectile->flags & PROJECTILEFLAG_00000080) == 0) {
if ((projectile->flags & PROJECTILEFLAG_LAUNCHING) == 0) {
projectile->ownerprop = NULL;
}

View File

@ -1277,15 +1277,12 @@ void handTickAttack(s32 handnum)
if (bgunIsFiring(handnum)) {
s32 type = bgunGetAttackType(handnum);
s32 weaponnum = bgunGetWeaponNum(handnum);
u8 stack1;
u8 stack2;
u8 stack3;
u8 tmpweaponnum;
struct gset gset;
bool cloaked;
g_Vars.currentplayer->hands[handnum].unk0d0f_03 = false;
gsetPopulateFromCurrentPlayer(handnum, (struct gset *)&tmpweaponnum);
gsetPopulateFromCurrentPlayer(handnum, &gset);
frIncrementNumShots();
switch (type) {
@ -1294,7 +1291,7 @@ void handTickAttack(s32 handnum)
// right hand is not (ie. prevent firing both guns on the same tick)
if (handnum == HAND_RIGHT || !bgunIsFiring(HAND_RIGHT)) {
chrUncloakTemporarily(g_Vars.currentplayer->prop->chr);
mpstatsIncrementPlayerShotCount2((struct gset *)&tmpweaponnum, 0);
mpstatsIncrementPlayerShotCount2(&gset, 0);
if (weaponnum == WEAPON_SHOTGUN) {
handCreateBulletRaycast(handnum, true, true, 1, true);
@ -1312,10 +1309,10 @@ void handTickAttack(s32 handnum)
break;
case HANDATTACKTYPE_CLOSERANGE:
chrUncloakTemporarily(g_Vars.currentplayer->prop->chr);
handInflictCloseRangeDamage(handnum, (struct gset *)&tmpweaponnum, false);
handInflictCloseRangeDamage(handnum, &gset, false);
break;
case HANDATTACKTYPE_CLOSERANGENOUNCLOAK:
handInflictCloseRangeDamage(handnum, (struct gset *)&tmpweaponnum, true);
handInflictCloseRangeDamage(handnum, &gset, true);
break;
case HANDATTACKTYPE_DETONATE:
playerActivateRemoteMineDetonator(g_Vars.currentplayernum);
@ -1340,7 +1337,7 @@ void handTickAttack(s32 handnum)
}
break;
case HANDATTACKTYPE_THROWPROJECTILE:
bgunCreateThrownProjectile(handnum, (struct gset *)&tmpweaponnum);
bgunCreateThrownProjectile(handnum, &gset);
break;
case HANDATTACKTYPE_RCP120CLOAK:
cloaked = (g_Vars.currentplayer->devicesactive & DEVICE_CLOAKRCP120) != 0;
@ -1400,7 +1397,7 @@ void propExecuteTickOperation(struct prop *prop, s32 op)
propDelist(prop);
propDisable(prop);
objDetach(prop);
func0f06ac90(prop);
objFreeEmbedmentOrProjectile(prop);
propReparent(prop, g_Vars.currentplayer->prop);
}
}
@ -5762,7 +5759,7 @@ glabel propsTickPlayer
// if (prop->type == PROPTYPE_PLAYER) {
// score++;
// } else if (prop->type == PROPTYPE_OBJ || prop->type == PROPTYPE_WEAPON) {
// if (prop->obj->hidden & OBJHFLAG_AIRBORNE) {
// if (prop->obj->hidden & OBJHFLAG_PROJECTILE) {
// score++;
// }
// }

File diff suppressed because it is too large Load Diff

View File

@ -316,7 +316,7 @@ struct defaultobj *setupFindObjForReuse(s32 wanttype, struct defaultobj **offscr
return obj;
}
} else if (wanttype != OBJTYPE_WEAPON
&& (obj->hidden & OBJHFLAG_AIRBORNE) == 0
&& (obj->hidden & OBJHFLAG_PROJECTILE) == 0
&& (obj->hidden2 & OBJH2FLAG_CANREGEN) == 0
#if VERSION >= VERSION_NTSC_1_0
&& (obj->flags & OBJFLAG_00800000) == 0

View File

@ -1582,7 +1582,7 @@ bool frIsAmmoWasted(void)
if (prop->weapon->weaponnum == WEAPON_BOLT
|| prop->weapon->weaponnum == WEAPON_COMBATKNIFE) {
if (prop->obj->hidden & OBJHFLAG_AIRBORNE) {
if (prop->obj->hidden & OBJHFLAG_PROJECTILE) {
return false;
}
} else if (prop->weapon->weaponnum == WEAPON_TIMEDMINE

View File

@ -993,11 +993,11 @@
#define FUNCFLAG_PSYCHOSIS 0x00200000
#define FUNCFLAG_00400000 0x00400000 // punch, disarm and pistol whip
#define FUNCFLAG_CALCULATETRAJECTORY 0x00800000 // throwables will land on crosshair
#define FUNCFLAG_08000000 0x08000000 // rockets
#define FUNCFLAG_PROJECTILE_POWERED 0x08000000
#define FUNCFLAG_10000000 0x10000000 // grenade launchers
#define FUNCFLAG_20000000 0x20000000 // explosives related
#define FUNCFLAG_HOMINGROCKET 0x40000000
#define FUNCFLAG_80000000 0x80000000
#define FUNCFLAG_PROJECTILE_LIGHTWEIGHT 0x80000000
#define GAILIST_IDLE 0x0000
#define GAILIST_UNALERTED_0001 0x0001
@ -3079,8 +3079,8 @@
#define OBJFLAG3_HOVERBEDSHIELD 0x00100000
#define OBJFLAG3_INTERACTSHORTRANGE 0x00200000
#define OBJFLAG3_PLAYERUNDROPPABLE 0x00400000 // Player does not drop item when dead
#define OBJFLAG3_00800000 0x00800000 // Not used in scripts
#define OBJFLAG3_01000000 0x01000000 // Not used in scripts
#define OBJFLAG3_LONGPUSHRANGE 0x00800000 // Not used in scripts
#define OBJFLAG3_PUSHFREELY 0x01000000 // Not used in scripts
#define OBJFLAG3_GEOCYL 0x02000000 // Use cylinder geometry rather than block
#define OBJFLAG3_04000000 0x04000000 // Not used in scripts
#define OBJFLAG3_08000000 0x08000000 // Not used in scripts
@ -3097,7 +3097,7 @@
#define OBJHFLAG_TAGGED 0x00000010
#define OBJHFLAG_00000020 0x00000020 // thrown knife
#define OBJHFLAG_EMBEDDED 0x00000040 // obj is embedded in a chr or other obj (eg. knife)
#define OBJHFLAG_AIRBORNE 0x00000080
#define OBJHFLAG_PROJECTILE 0x00000080 // obj is airborne, sliding or falling
#define OBJHFLAG_00000100 0x00000100
#define OBJHFLAG_00000200 0x00000200
#define OBJHFLAG_HASTEXTOVERRIDE 0x00000400
@ -3371,18 +3371,22 @@
#define PROFILE_RDP_START1 0x40001
#define PROFILE_AUDIOFRAME_END 0x60000
#define PROJECTILEFLAG_00000001 0x00000001
#define PROJECTILEFLAG_00000002 0x00000002
#define PROJECTILEFLAG_00000004 0x00000004
#define PROJECTILEFLAG_00000010 0x00000010
#define PROJECTILEFLAG_00000080 0x00000080
#define PROJECTILEFLAG_00000400 0x00000400
#define PROJECTILEFLAG_00000800 0x00000800
#define PROJECTILEFLAG_00001000 0x00001000
#define PROJECTILEFLAG_00002000 0x00002000
#define PROJECTILEFLAG_00004000 0x00004000
#define PROJECTILEFLAG_40000000 0x40000000
#define PROJECTILEFLAG_FREE 0x80000000
#define PROJECTILEFLAG_AIRBORNE 0x00000001
#define PROJECTILEFLAG_00000002 0x00000002
#define PROJECTILEFLAG_STICKY 0x00000004
#define PROJECTILEFLAG_POWERED 0x00000010 // No gravity
#define PROJECTILEFLAG_00000020 0x00000020
#define PROJECTILEFLAG_LAUNCHING 0x00000080
#define PROJECTILEFLAG_00000100 0x00000100
#define PROJECTILEFLAG_FALLING 0x00000400
#define PROJECTILEFLAG_SLIDING 0x00000800
#define PROJECTILEFLAG_00001000 0x00001000
#define PROJECTILEFLAG_00002000 0x00002000
#define PROJECTILEFLAG_NOTIMELIMIT 0x00004000
#define PROJECTILEFLAG_INROOM 0x00008000
#define PROJECTILEFLAG_00010000 0x00010000
#define PROJECTILEFLAG_LIGHTWEIGHT 0x40000000
#define PROJECTILEFLAG_FREE 0x80000000
#define PROPFLAG_RENDERPOSTBG 0x01
#define PROPFLAG_ONTHISSCREENTHISTICK 0x02
@ -3686,6 +3690,7 @@
#define SPARKTYPE_0B 0x0b
#define SPARKTYPE_0D 0x0d
#define SPARKTYPE_0F 0x0f
#define SPARKTYPE_10 0x10
#define SPARKTYPE_11 0x11
#define SPARKTYPE_12 0x12
#define SPARKTYPE_13 0x13
@ -3706,7 +3711,7 @@
#define SPAWNFLAG_IGNORECOLLISION 0x00000100 // For initial chr placement only
#define SPAWNFLAG_00000200 0x00000200
#define SPAWNFLAG_ANTINONINTERACTABLE 0x00000400
#define SPAWNFLAG_DONTSHOOTME 0x00000800
#define SPAWNFLAG_DONTSHOOTME 0x00000800
#define SPAWNFLAG_HIDDEN 0x00001000
#define SPAWNFLAG_NOBLOOD 0x00002000
#define SPAWNFLAG_FIXEDHEIGHT 0x00004000 // By default, chr heights vary slightly. This disables it.

View File

@ -43,7 +43,7 @@ void chrRenderAttachedObject(struct prop *prop, struct modelrenderdata *renderda
void chrGetBloodColour(s16 bodynum, u8 *colour1, u32 *colour2);
Gfx *chrRender(struct prop *prop, Gfx *gdl, bool xlupass);
void chrEmitSparks(struct chrdata *chr, struct prop *prop, s32 hitpart, struct coord *coord, struct coord *coord2, struct chrdata *chr2);
u32 chr0f0260c4(void);
void chr0f0260c4(struct model *model, s32 hitpart, struct modelnode *node, struct coord *arg3);
void chrBruise(struct model *model, s32 hitpart, struct modelnode *node, struct coord *arg3);
void chrDisfigure(struct chrdata *chr, struct coord *exppos, f32 damageradius);
f32 chr0f0278a4(struct chrdata *chr);

View File

@ -4,7 +4,7 @@
#include "data.h"
#include "types.h"
void func0f096360(Mtxf *mtx);
void mtxLoadRandomRotation(Mtxf *mtx);
void func0f0964b4(struct coord *arg0, Mtxf *mtx);
void func0f0965e4(f32 *arg0, f32 *arg1, f32 arg2);
void func0f096698(Mtxf *arg0, Mtxf *arg1, s32 count);

View File

@ -70,7 +70,7 @@ void projectilesUnrefOwner(struct prop *owner);
void projectileReset(struct projectile *projectile);
struct projectile *projectileAllocate(void);
void func0f0685e4(struct prop *prop);
void objSetProjectileFlag4(struct prop *prop);
void projectileSetSticky(struct prop *prop);
void embedmentFree(struct embedment *embedment);
struct embedment *embedmentAllocate(void);
s32 objGetShotsTaken(struct defaultobj *obj);
@ -103,8 +103,8 @@ void func0f06a580(struct defaultobj *obj, struct coord *pos, Mtxf *matrix, s16 *
f32 func0f06a620(struct defaultobj *obj);
void func0f06a730(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, s16 *rooms, struct coord *arg4);
void func0f06ab60(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, s16 *rooms, struct coord *arg4);
void objEndFlight(struct defaultobj *obj);
void func0f06ac90(struct prop *prop);
void objFreeProjectile(struct defaultobj *obj);
void objFreeEmbedmentOrProjectile(struct prop *prop);
void objFree(struct defaultobj *obj, bool freeprop, bool canregen);
void objFreePermanently(struct defaultobj *obj, bool freeprop);
f32 objGetWidth(struct defaultobj *obj);
@ -114,11 +114,11 @@ bool func0f06b610(struct defaultobj *obj, struct coord *arg1, struct coord *arg2
bool func0f06bea0(struct model *model, struct modelnode *arg1, struct modelnode *arg2, struct coord *arg3, struct coord *arg4, void *arg5, f32 *arg6, struct modelnode **arg7, s32 *hitpart, s32 *arg9, struct modelnode **arg10);
bool func0f06c28c(struct chrdata *chr, struct coord *arg1, struct coord *arg2, struct coord *arg3, f32 arg4, struct coord *arg5, struct coord *arg6, struct coord *arg7, struct coord *arg8, f32 *arg9);
bool projectileFindCollidingProp(struct prop *prop, struct coord *pos, struct coord *arg2, u32 cdtypes, struct coord *arg4, struct coord *arg5, s16 *arg6);
bool func0f06cd00(struct defaultobj *obj, struct coord *pos, struct coord *arg2, struct coord *arg3);
s32 func0f06cd00(struct defaultobj *obj, struct coord *pos, struct coord *arg2, struct coord *arg3);
bool func0f06d37c(struct defaultobj *obj, struct coord *arg1, struct coord *arg2, struct coord *arg3);
void applySpeed(f32 *distdone, f32 maxdist, f32 *speed, f32 accel, f32 decel, f32 maxspeed);
void applyRotation(f32 *angle, f32 maxrot, f32 *speed, f32 accel, f32 decel, f32 maxspeed);
u32 func0f06dbd8(void);
void func0f06dbd8(struct defaultobj *obj, f32 mtx[3][3]);
void knifePlayWooshSound(struct defaultobj *obj);
void func0f06e9cc(struct coord *arg0, Mtxf *arg1);
void objLand2(struct defaultobj *obj, struct coord *arg1, struct coord *arg2);
@ -156,8 +156,8 @@ f32 objCollide(struct defaultobj *obj, struct coord *arg1, f32 arg2);
void hoverbikeUpdateMovement(struct hoverbikeobj *hoverbike, f32 arg1, f32 arg2, f32 arg3);
void platformDisplaceProps2(struct prop *platform, Mtxf *arg1);
bool rocketTickFbw(struct weaponobj *rocket);
s32 func0f073ae8(struct defaultobj *obj, struct projectile *projectile, struct coord *arg2, struct coord *arg3);
s32 func0f073c6c(struct defaultobj *obj, bool *arg1);
s32 projectileLaunch(struct defaultobj *obj, struct projectile *projectile, struct coord *arg2, struct coord *arg3);
s32 projectileTick(struct defaultobj *obj, bool *embedded);
void doorTick(struct prop *doorprop);
void doorUpdatePortalIfWindowed(struct prop *door, s32 playercount);
void doorInitMatrices(struct prop *door);

View File

@ -71,13 +71,14 @@ s32 cdFindRoom(struct coord *pos, s16 *nearrooms);
#if VERSION >= VERSION_NTSC_1_0
s16 cd0002a440(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr, u16 *flagsptr);
s16 cd0002a4d0(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr, u16 *flagsptr);
#else
s16 cd0002a440(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr);
s16 cd0002a4d0(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr);
#endif
s16 cd0002a4d0(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr, u16 *flagsptr);
s32 cd0002a564(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, struct coord *arg4, struct prop **propptr);
s32 cd0002a5e4(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, u16 *arg4, struct coord *arg5);
s16 cd0002a564(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, struct coord *arg4, struct prop **propptr);
s16 cd0002a5e4(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, u16 *arg4, struct coord *arg5);
s32 cdTestVolume(struct coord *pos, f32 radius, s16 *rooms, s32 types, s32 arg4, f32 ymax, f32 ymin);
s32 cd0002a6fc(struct coord *pos, struct coord *pos2, f32 width, s16 *rooms, s32 types, bool arg5, f32 arg6, f32 arg7);
s32 cdTestAToB1(struct coord *origpos, struct coord *dstpos, f32 width, s16 *dstrooms, s32 types, s32 arg5, f32 ymax, f32 ymin);

View File

@ -1336,29 +1336,23 @@ struct projectile {
/*0x014*/ f32 unk014;
/*0x018*/ f32 unk018;
/*0x01c*/ f32 unk01c;
/*0x020*/ Mtxf unk020;
/*0x020*/ Mtxf mtx;
/*0x060*/ f32 unk060;
/*0x064*/ u32 unk064;
/*0x068*/ u32 unk068;
/*0x06c*/ u32 unk06c;
/*0x070*/ u32 unk070;
/*0x074*/ u32 unk074;
/*0x078*/ u32 unk078;
/*0x07c*/ u32 unk07c;
/*0x080*/ u32 unk080;
/*0x084*/ u32 unk084;
/*0x064*/ f32 unk064;
/*0x068*/ f32 unk068[4];
/*0x078*/ f32 unk078[4];
/*0x088*/ struct prop *ownerprop;
/*0x08c*/ f32 unk08c;
/*0x090*/ s32 unk090;
/*0x094*/ s32 unk094;
/*0x090*/ s32 bouncecount;
/*0x094*/ s32 bounceframe;
/*0x098*/ f32 unk098;
/*0x09c*/ s32 lastwooshframe;
/*0x0a0*/ u32 unk0a0;
/*0x0a0*/ s32 flighttime240;
/*0x0a4*/ s32 unk0a4;
/*0x0a8*/ f32 unk0a8;
/*0x0ac*/ f32 unk0ac;
/*0x0b0*/ s16 droptype;
/*0x0b2*/ s16 unk0b2;
/*0x0b2*/ s16 powerlimit240;
/*0x0b4*/ s32 unk0b4;
/*0x0b8*/ f32 unk0b8;
/*0x0bc*/ f32 unk0bc;
@ -1555,10 +1549,17 @@ struct ammocrateobj { // objtype 0x07
struct weaponobj { // objtype 0x08
struct defaultobj base;
/*0x5c*/ u8 weaponnum;
/*0x5d*/ s8 unk5d;
/*0x5e*/ s8 unk5e;
/*0x5f*/ u8 gunfunc;
union {
struct gset gset;
struct {
/*0x5c*/ u8 weaponnum;
/*0x5d*/ s8 unk5d;
/*0x5e*/ s8 unk5e;
/*0x5f*/ u8 gunfunc;
};
};
/*0x60*/ s8 fadeouttimer60;
/*0x61*/ s8 dualweaponnum;

View File

@ -2981,7 +2981,11 @@ s16 cd0002a440(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr)
return room;
}
#if VERSION >= VERSION_NTSC_1_0
s16 cd0002a4d0(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr, u16 *flagsptr)
#else
s16 cd0002a4d0(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr)
#endif
{
struct geo *geo;
s16 sp32;
@ -3006,7 +3010,7 @@ s16 cd0002a4d0(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcolptr, u16 *
return sp32;
}
s32 cd0002a564(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, struct coord *arg4, struct prop **propptr)
s16 cd0002a564(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, struct coord *arg4, struct prop **propptr)
{
struct geo *geo;
s16 sp32;
@ -3026,7 +3030,7 @@ s32 cd0002a564(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, struct c
return sp32;
}
s32 cd0002a5e4(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, u16 *flagsptr, struct coord *arg5)
s16 cd0002a5e4(struct coord *pos, s16 *rooms, f32 *arg2, u16 *floorcol, u16 *flagsptr, struct coord *arg5)
{
struct geo *geo;
s16 sp32;