Name some projectile symbols

This commit is contained in:
Ryan Dwyer 2025-02-19 10:33:47 +10:00
parent 86f61e88ec
commit cd14bab5fd
20 changed files with 678 additions and 615 deletions

View File

@ -63,7 +63,7 @@ void bbike_init(void)
struct projectile *projectile = hoverbike->base.projectile; struct projectile *projectile = hoverbike->base.projectile;
hoverbike->speed[0] = projectile->speed.x; hoverbike->speed[0] = projectile->speed.x;
hoverbike->speed[1] = projectile->speed.z; hoverbike->speed[1] = projectile->speed.z;
hoverbike->w = projectile->unk0dc; hoverbike->w = projectile->yrotspeed;
} }
obj_free_embedment_or_projectile(g_Vars.currentplayer->hoverbike); obj_free_embedment_or_projectile(g_Vars.currentplayer->hoverbike);
@ -492,7 +492,7 @@ s32 bbike_calculate_new_position_with_push(struct coord *arg0, f32 arg1)
struct defaultobj *bike = g_Vars.currentplayer->hoverbike->obj; struct defaultobj *bike = g_Vars.currentplayer->hoverbike->obj;
if ((obj->hidden & OBJHFLAG_PROJECTILE) if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_00001000)) { && (obj->projectile->flags & PROJECTILEFLAG_TICKEDEARLY)) {
pass = false; pass = false;
} }
@ -501,21 +501,21 @@ s32 bbike_calculate_new_position_with_push(struct coord *arg0, f32 arg1)
if ((obj->hidden & OBJHFLAG_PROJECTILE) if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) { && (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) {
s32 somevalue; bool moved;
bool embedded = false; bool embedded = false;
somevalue = projectile_tick(obj, &embedded); moved = projectile_tick(obj, &embedded);
if (obj->hidden & OBJHFLAG_PROJECTILE) { if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00001000; obj->projectile->flags |= PROJECTILEFLAG_TICKEDEARLY;
if (somevalue) { if (moved) {
obj->projectile->flags |= PROJECTILEFLAG_00002000; obj->projectile->flags |= PROJECTILEFLAG_TICKEDEARLYMOVED;
} else { } else {
obj->projectile->flags &= ~PROJECTILEFLAG_00002000; obj->projectile->flags &= ~PROJECTILEFLAG_TICKEDEARLYMOVED;
} }
} }
if (somevalue) { if (moved) {
result = bbike_calculate_new_position(arg0, arg1); result = bbike_calculate_new_position(arg0, arg1);
} }
} }

View File

@ -561,7 +561,7 @@ bool bgrab_calculate_new_positiont_with_push(struct coord *delta, f32 angle, boo
g_Vars.currentplayer->speedmaxtime60 = 0; g_Vars.currentplayer->speedmaxtime60 = 0;
if ((obj->hidden & OBJHFLAG_PROJECTILE) if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_00001000)) { && (obj->projectile->flags & PROJECTILEFLAG_TICKEDEARLY)) {
canpush = false; canpush = false;
} }
@ -570,21 +570,21 @@ bool bgrab_calculate_new_positiont_with_push(struct coord *delta, f32 angle, boo
if ((obj->hidden & OBJHFLAG_PROJECTILE) if ((obj->hidden & OBJHFLAG_PROJECTILE)
&& (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) { && (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) {
s32 someint; bool moved;
bool embedded = false; bool embedded = false;
someint = projectile_tick(obj, &embedded); moved = projectile_tick(obj, &embedded);
if ((obj->hidden & OBJHFLAG_PROJECTILE)) { if ((obj->hidden & OBJHFLAG_PROJECTILE)) {
obj->projectile->flags |= PROJECTILEFLAG_00001000; obj->projectile->flags |= PROJECTILEFLAG_TICKEDEARLY;
if (someint) { if (moved) {
obj->projectile->flags |= PROJECTILEFLAG_00002000; obj->projectile->flags |= PROJECTILEFLAG_TICKEDEARLYMOVED;
} else { } else {
obj->projectile->flags &= ~PROJECTILEFLAG_00002000; obj->projectile->flags &= ~PROJECTILEFLAG_TICKEDEARLYMOVED;
} }
} }
if (someint) { if (moved) {
result = bgrab_calculate_new_position(delta, angle, arg2); result = bgrab_calculate_new_position(delta, angle, arg2);
} }
} }

View File

@ -4126,14 +4126,16 @@ struct modeldef *bgun_get_cart_modeldef(void)
return g_Vars.currentplayer->gunctrl.cartmodeldef; return g_Vars.currentplayer->gunctrl.cartmodeldef;
} }
void bgun0f09ebcc(struct defaultobj *obj, struct coord *coord, RoomNum *rooms, Mtxf *matrix1, struct coord *velocity, Mtxf *matrix2, struct prop *prop, struct coord *pos) void bgun_configure_projectile(struct defaultobj *obj, struct coord *coord, RoomNum *rooms, Mtxf *matrix1, struct coord *velocity, Mtxf *matrix2, struct prop *prop, struct coord *pos)
{ {
struct prop *objprop = obj->prop; struct prop *objprop = obj->prop;
if (objprop) { if (objprop) {
prop_activate(objprop); prop_activate(objprop);
prop_enable(objprop); prop_enable(objprop);
mtx00015f04(obj->model->scale, matrix1); mtx00015f04(obj->model->scale, matrix1);
obj_place(obj, coord, matrix1, rooms); obj_place(obj, coord, matrix1, rooms);
if (obj->type == OBJTYPE_WEAPON && ((struct weaponobj *) obj)->weaponnum == WEAPON_BOLT) { if (obj->type == OBJTYPE_WEAPON && ((struct weaponobj *) obj)->weaponnum == WEAPON_BOLT) {
@ -4149,25 +4151,25 @@ void bgun0f09ebcc(struct defaultobj *obj, struct coord *coord, RoomNum *rooms, M
} }
} }
func0f0685e4(objprop); obj_ensure_projectile(objprop);
if (obj->hidden & OBJHFLAG_PROJECTILE) { if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_AIRBORNE; obj->projectile->flags |= PROJECTILEFLAG_AIRBORNE;
obj->projectile->ownerprop = prop; obj->projectile->ownerprop = prop;
projectile_set_sticky(objprop); projectile_set_sticky(objprop);
mtx4_copy(matrix2, (Mtxf *)&obj->projectile->mtx); mtx4_copy(matrix2, &obj->projectile->mtx);
obj->projectile->speed.x = velocity->x; obj->projectile->speed.x = velocity->x;
obj->projectile->speed.y = velocity->y; obj->projectile->speed.y = velocity->y;
obj->projectile->speed.z = velocity->z; obj->projectile->speed.z = velocity->z;
obj->projectile->obj = obj; obj->projectile->obj = obj;
obj->projectile->unk0d8 = g_Vars.lvframenum; obj->projectile->startframe = g_Vars.lvframenum;
} }
} }
} }
void bgun0f09ed2c(struct defaultobj *obj, struct coord *newpos, Mtxf *arg2, struct coord *velocity, Mtxf *arg4) void bgun_create_fired_projectile2(struct defaultobj *obj, struct coord *newpos, Mtxf *arg2, struct coord *velocity, Mtxf *arg4)
{ {
struct prop *objprop = obj->prop; struct prop *objprop = obj->prop;
struct coord pos; struct coord pos;
@ -4182,7 +4184,7 @@ void bgun0f09ed2c(struct defaultobj *obj, struct coord *newpos, Mtxf *arg2, stru
rooms_copy(playerprop->rooms, rooms); rooms_copy(playerprop->rooms, rooms);
bgun0f09ebcc(obj, &pos, rooms, arg2, velocity, arg4, playerprop, newpos); bgun_configure_projectile(obj, &pos, rooms, arg2, velocity, arg4, playerprop, newpos);
if (obj->hidden & OBJHFLAG_PROJECTILE) { if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_LAUNCHING; obj->projectile->flags |= PROJECTILEFLAG_LAUNCHING;
@ -4250,13 +4252,13 @@ struct defaultobj *bgun_create_thrown_projectile2(struct chrdata *chr, struct gs
|| func->projectilemodelnum == MODEL_CHRTIMEDMINE || func->projectilemodelnum == MODEL_CHRTIMEDMINE
|| func->projectilemodelnum == MODEL_CHRPROXIMITYMINE || func->projectilemodelnum == MODEL_CHRPROXIMITYMINE
|| func->projectilemodelnum == MODEL_CHRECMMINE) { || func->projectilemodelnum == MODEL_CHRECMMINE) {
weaponobj->base.flags3 |= OBJFLAG3_00000008; weaponobj->base.flags3 |= OBJFLAG3_SETTLEROT_BYACTUALSIZE;
} }
} }
} }
if (obj != NULL) { if (obj != NULL) {
bgun0f09ebcc(obj, pos, rooms, arg4, velocity, &mtx, chr->prop, pos); bgun_configure_projectile(obj, pos, rooms, arg4, velocity, &mtx, chr->prop, pos);
obj->hidden &= 0x0fffffff; obj->hidden &= 0x0fffffff;
@ -4269,8 +4271,8 @@ struct defaultobj *bgun_create_thrown_projectile2(struct chrdata *chr, struct gs
obj->hidden |= playernum << 28; obj->hidden |= playernum << 28;
if (obj->hidden & OBJHFLAG_PROJECTILE) { if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00000002; obj->projectile->flags |= PROJECTILEFLAG_FORCEGOODBOUNCE;
obj->projectile->unk08c = 0.1f; obj->projectile->hitspeedpreservationfrac = 0.1f;
obj->projectile->pickuptimer240 = TICKS(240); obj->projectile->pickuptimer240 = TICKS(240);
ps_create(NULL, obj->prop, SFXMAP_80A9_THROW, -1, ps_create(NULL, obj->prop, SFXMAP_80A9_THROW, -1,
@ -4471,14 +4473,14 @@ void bgun_create_thrown_projectile(s32 handnum, struct gset *gset)
obj->projectile->nextsteppos.z = muzzlepos.z; obj->projectile->nextsteppos.z = muzzlepos.z;
if (gset->weaponnum == WEAPON_GRENADE && gset->weaponfunc == FUNC_SECONDARY) { if (gset->weaponnum == WEAPON_GRENADE && gset->weaponfunc == FUNC_SECONDARY) {
obj->projectile->unk08c = 1.0f; obj->projectile->hitspeedpreservationfrac = 1.0f;
} }
if (gset->weaponnum == WEAPON_COMBATKNIFE) { if (gset->weaponnum == WEAPON_COMBATKNIFE) {
// In theory, weapon can be uninitialised here, // In theory, weapon can be uninitialised here,
// but in practice it's always set. // but in practice it's always set.
weapon->base.projectile->flags |= PROJECTILEFLAG_00000002; weapon->base.projectile->flags |= PROJECTILEFLAG_FORCEGOODBOUNCE;
weapon->base.projectile->unk08c = 0.1f; weapon->base.projectile->hitspeedpreservationfrac = 0.1f;
weapon->base.projectile->pickuptimer240 = TICKS(240); weapon->base.projectile->pickuptimer240 = TICKS(240);
weapon->base.hidden |= OBJHFLAG_THROWNKNIFE; weapon->base.hidden |= OBJHFLAG_THROWNKNIFE;
} }
@ -4565,7 +4567,7 @@ void bgun_create_fired_projectile(s32 handnum)
struct coord sp264; struct coord sp264;
f32 sp260; f32 sp260;
f32 sp25c; f32 sp25c;
struct coord sp250; struct coord accel;
Mtxf sp210; Mtxf sp210;
struct coord gunpos; struct coord gunpos;
struct coord gundir; struct coord gundir;
@ -4658,13 +4660,13 @@ void bgun_create_fired_projectile(s32 handnum)
} }
} }
sp250.x = gundir.x * sp260; accel.x = gundir.x * sp260;
sp250.y = gundir.y * sp260; accel.y = gundir.y * sp260;
sp250.z = gundir.z * sp260; accel.z = gundir.z * sp260;
sp264.x = sp250.f[0] * g_Vars.lvupdate60freal + gundir.f[0] * sp25c; sp264.x = accel.f[0] * g_Vars.lvupdate60freal + gundir.f[0] * sp25c;
sp264.y = sp250.f[1] * g_Vars.lvupdate60freal + gundir.f[1] * sp25c; sp264.y = accel.f[1] * g_Vars.lvupdate60freal + gundir.f[1] * sp25c;
sp264.z = sp250.f[2] * g_Vars.lvupdate60freal + gundir.f[2] * sp25c; sp264.z = accel.f[2] * g_Vars.lvupdate60freal + gundir.f[2] * sp25c;
if ((funcdef->base.base.flags & FUNCFLAG_FLYBYWIRE) == 0 && g_Vars.lvupdate240 > 0) { if ((funcdef->base.base.flags & FUNCFLAG_FLYBYWIRE) == 0 && g_Vars.lvupdate240 > 0) {
sp264.x += (playerprop->pos.x - prevpos->x + extrapos->x) / g_Vars.lvupdate60freal; sp264.x += (playerprop->pos.x - prevpos->x + extrapos->x) / g_Vars.lvupdate60freal;
@ -4738,7 +4740,7 @@ void bgun_create_fired_projectile(s32 handnum)
weapon->base.hidden &= 0x0fffffff; weapon->base.hidden &= 0x0fffffff;
weapon->base.hidden |= g_Vars.currentplayernum << 28; weapon->base.hidden |= g_Vars.currentplayernum << 28;
bgun0f09ed2c(&weapon->base, &spawnpos, &sp210, &sp264, &sp270); bgun_create_fired_projectile2(&weapon->base, &spawnpos, &sp210, &sp264, &sp270);
if (weapon->base.hidden & OBJHFLAG_PROJECTILE) { if (weapon->base.hidden & OBJHFLAG_PROJECTILE) {
if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) { if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) {
@ -4758,14 +4760,14 @@ void bgun_create_fired_projectile(s32 handnum)
} }
weapon->base.projectile->powerlimit240 = TICKS(1200); weapon->base.projectile->powerlimit240 = TICKS(1200);
weapon->base.projectile->unk0a8 = weapon->base.prop->pos.y; weapon->base.projectile->missiley = weapon->base.prop->pos.y;
weapon->base.projectile->unk0ac = weapon->base.projectile->speed.y; weapon->base.projectile->missileyspeed = weapon->base.projectile->speed.y;
weapon->base.projectile->unk010 = sp250.x; weapon->base.projectile->accel.x = accel.x;
weapon->base.projectile->unk014 = sp250.y; weapon->base.projectile->accel.y = accel.y;
weapon->base.projectile->unk018 = sp250.z; weapon->base.projectile->accel.z = accel.z;
weapon->base.projectile->pickuptimer240 = TICKS(240); weapon->base.projectile->pickuptimer240 = TICKS(240);
weapon->base.projectile->unk08c = funcdef->reflectangle; weapon->base.projectile->hitspeedpreservationfrac = funcdef->hitspeedpreservationfrac;
weapon->base.projectile->unk098 = funcdef->unk50 * 1.6666666f; weapon->base.projectile->speeddecel = funcdef->speeddecel * 1.6666666f;
if (funcdef->soundnum > 0) { if (funcdef->soundnum > 0) {
ps_create(NULL, weapon->base.prop, funcdef->soundnum, -1, -1, 0, 0, PSTYPE_NONE, 0, -1.0f, 0, -1, -1.0f, -1.0f, -1.0f); ps_create(NULL, weapon->base.prop, funcdef->soundnum, -1, -1, 0, 0, PSTYPE_NONE, 0, -1.0f, 0, -1, -1.0f, -1.0f, -1.0f);
@ -4814,7 +4816,7 @@ void bgun_create_fired_projectile(s32 handnum)
weapon->base.hidden &= 0x0fffffff; weapon->base.hidden &= 0x0fffffff;
weapon->base.hidden |= g_Vars.currentplayernum << 28; weapon->base.hidden |= g_Vars.currentplayernum << 28;
bgun0f09ed2c(&weapon->base, &spawnpos, &sp210, &sp264, &sp270); bgun_create_fired_projectile2(&weapon->base, &spawnpos, &sp210, &sp264, &sp270);
if (weapon->base.hidden & OBJHFLAG_PROJECTILE) { if (weapon->base.hidden & OBJHFLAG_PROJECTILE) {
if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) { if (funcdef->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) {
@ -4834,14 +4836,14 @@ void bgun_create_fired_projectile(s32 handnum)
} }
weapon->base.projectile->powerlimit240 = TICKS(1200); weapon->base.projectile->powerlimit240 = TICKS(1200);
weapon->base.projectile->unk0a8 = weapon->base.prop->pos.y; weapon->base.projectile->missiley = weapon->base.prop->pos.y;
weapon->base.projectile->unk0ac = weapon->base.projectile->speed.y; weapon->base.projectile->missileyspeed = weapon->base.projectile->speed.y;
weapon->base.projectile->unk010 = sp250.x; weapon->base.projectile->accel.x = accel.x;
weapon->base.projectile->unk014 = sp250.y; weapon->base.projectile->accel.y = accel.y;
weapon->base.projectile->unk018 = sp250.z; weapon->base.projectile->accel.z = accel.z;
weapon->base.projectile->pickuptimer240 = TICKS(240); weapon->base.projectile->pickuptimer240 = TICKS(240);
weapon->base.projectile->unk08c = funcdef->reflectangle; weapon->base.projectile->hitspeedpreservationfrac = funcdef->hitspeedpreservationfrac;
weapon->base.projectile->unk098 = funcdef->unk50 * 1.6666666f; weapon->base.projectile->speeddecel = funcdef->speeddecel * 1.6666666f;
if (funcdef->soundnum > 0) { if (funcdef->soundnum > 0) {
ps_create(NULL, weapon->base.prop, funcdef->soundnum, -1, -1, 0, 0, PSTYPE_NONE, 0, -1.0f, 0, -1, -1.0f, -1.0f, -1.0f); ps_create(NULL, weapon->base.prop, funcdef->soundnum, -1, -1, 0, 0, PSTYPE_NONE, 0, -1.0f, 0, -1, -1.0f, -1.0f, -1.0f);
@ -10365,13 +10367,6 @@ void bgun_revert_boost(void)
} }
} }
/**
* The main tick function as called from lv_tick.
*
* This function doesn't do much because it's called during both cutscenes and
* gameplay, while most gun tick operations happen during gameplay only.
* See bgun_tick_gameplay for that.
*/
void bgun_tick_boost(void) void bgun_tick_boost(void)
{ {
if (g_Vars.speedpillon && g_Vars.speedpilltime > 0 && !g_Vars.in_cutscene) { if (g_Vars.speedpillon && g_Vars.speedpilltime > 0 && !g_Vars.in_cutscene) {

View File

@ -466,7 +466,7 @@ bool bwalk_calculate_new_position_with_push(struct coord *delta, f32 rotateamoun
dothething = true; dothething = true;
if ((obj->hidden & OBJHFLAG_PROJECTILE) && if ((obj->hidden & OBJHFLAG_PROJECTILE) &&
(obj->projectile->flags & PROJECTILEFLAG_00001000)) { (obj->projectile->flags & PROJECTILEFLAG_TICKEDEARLY)) {
dothething = false; dothething = false;
} }
@ -474,21 +474,21 @@ bool bwalk_calculate_new_position_with_push(struct coord *delta, f32 rotateamoun
bwalk0f0c3b38(delta, obj); bwalk0f0c3b38(delta, obj);
if (obj->hidden & OBJHFLAG_PROJECTILE && (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) { if (obj->hidden & OBJHFLAG_PROJECTILE && (obj->projectile->flags & PROJECTILEFLAG_SLIDING)) {
bool somevalue; bool moved;
bool embedded = false; bool embedded = false;
somevalue = projectile_tick(obj, &embedded); moved = projectile_tick(obj, &embedded);
if (obj->hidden & OBJHFLAG_PROJECTILE) { if (obj->hidden & OBJHFLAG_PROJECTILE) {
obj->projectile->flags |= PROJECTILEFLAG_00001000; obj->projectile->flags |= PROJECTILEFLAG_TICKEDEARLY;
if (somevalue) { if (moved) {
obj->projectile->flags |= PROJECTILEFLAG_00002000; obj->projectile->flags |= PROJECTILEFLAG_TICKEDEARLYMOVED;
} else { } else {
obj->projectile->flags &= ~PROJECTILEFLAG_00002000; obj->projectile->flags &= ~PROJECTILEFLAG_TICKEDEARLYMOVED;
} }
} }
if (somevalue) { if (moved) {
result = bwalk_calculate_new_position(delta, rotateamount, apply, extrawidth, types); result = bwalk_calculate_new_position(delta, rotateamount, apply, extrawidth, types);
} }
} }

View File

@ -516,14 +516,14 @@ void botact_create_slayer_rocket(struct chrdata *chr)
mtx00015be0(&sp132, &sp196); mtx00015be0(&sp132, &sp196);
mtx4_load_identity(&sp260); mtx4_load_identity(&sp260);
bgun0f09ebcc(&rocket->base, &chr->prop->pos, chr->prop->rooms, &sp196, &sp100, &sp260, chr->prop, &chr->prop->pos); bgun_configure_projectile(&rocket->base, &chr->prop->pos, chr->prop->rooms, &sp196, &sp100, &sp260, chr->prop, &chr->prop->pos);
if (rocket->base.hidden & OBJHFLAG_PROJECTILE) { if (rocket->base.hidden & OBJHFLAG_PROJECTILE) {
struct prop *target = chr_get_target_prop(chr); struct prop *target = chr_get_target_prop(chr);
rocket->timer240 = -1; rocket->timer240 = -1;
rocket->base.projectile->unk010 = 7.5; rocket->base.projectile->fbwspeed = 7.5;
rocket->base.projectile->unk014 = xrot; rocket->base.projectile->fbwrotx = xrot;
rocket->base.projectile->unk018 = yrot; rocket->base.projectile->fbwroty = yrot;
rocket->base.projectile->smoketimer240 = 0; rocket->base.projectile->smoketimer240 = 0;
rocket->base.projectile->pickuptimer240 = 0x20000000; rocket->base.projectile->pickuptimer240 = 0x20000000;

View File

@ -7519,7 +7519,7 @@ bool chr_go_to_cover_prop(struct chrdata *chr)
if (prop->type == PROPTYPE_OBJ if (prop->type == PROPTYPE_OBJ
&& (obj->hidden2 & OBJH2FLAG_DESTROYED) == 0 && (obj->hidden2 & OBJH2FLAG_DESTROYED) == 0
&& (obj->hidden & OBJHFLAG_00008000) == 0 && (obj->hidden & OBJHFLAG_ONANOTHEROBJ) == 0
&& (obj->hidden & OBJHFLAG_OCCUPIEDCHAIR) == 0) { && (obj->hidden & OBJHFLAG_OCCUPIEDCHAIR) == 0) {
f32 targetdist = prop_get_distance_to_prop(targetprop, prop); f32 targetdist = prop_get_distance_to_prop(targetprop, prop);
f32 chrdist = prop_get_distance_to_prop(chrprop, prop); f32 chrdist = prop_get_distance_to_prop(chrprop, prop);
@ -10279,7 +10279,7 @@ void chr_shoot(struct chrdata *chr, s32 handnum)
#endif #endif
} }
bgun0f09ebcc(&projectileobj->base, &gunpos, gunrooms, &projectilemtx, &sp16c, &identmtx, chrprop, &gunpos); bgun_configure_projectile(&projectileobj->base, &gunpos, gunrooms, &projectilemtx, &sp16c, &identmtx, chrprop, &gunpos);
if (projectileobj->base.hidden & OBJHFLAG_PROJECTILE) { if (projectileobj->base.hidden & OBJHFLAG_PROJECTILE) {
if (func->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) { if (func->base.base.flags & FUNCFLAG_PROJECTILE_LIGHTWEIGHT) {
@ -10288,13 +10288,13 @@ void chr_shoot(struct chrdata *chr, s32 handnum)
projectileobj->base.projectile->flags |= PROJECTILEFLAG_POWERED; projectileobj->base.projectile->flags |= PROJECTILEFLAG_POWERED;
} }
projectileobj->base.projectile->unk010 = sp15c.x; projectileobj->base.projectile->accel.x = sp15c.x;
projectileobj->base.projectile->unk014 = sp15c.y; projectileobj->base.projectile->accel.y = sp15c.y;
projectileobj->base.projectile->unk018 = sp15c.z; projectileobj->base.projectile->accel.z = sp15c.z;
projectileobj->base.projectile->pickuptimer240 = TICKS(240); projectileobj->base.projectile->pickuptimer240 = TICKS(240);
projectileobj->base.projectile->unk08c = func->reflectangle; projectileobj->base.projectile->hitspeedpreservationfrac = func->hitspeedpreservationfrac;
projectileobj->base.projectile->unk098 = func->unk50 * (1.0f / 0.6f); projectileobj->base.projectile->speeddecel = func->speeddecel * (1.0f / 0.6f);
projectileobj->base.projectile->targetprop = chr_get_target_prop(chr); projectileobj->base.projectile->targetprop = chr_get_target_prop(chr);

View File

@ -2006,10 +2006,10 @@ struct funcdef_shootprojectile invfunc_superdragon_grenadelauncher = {
0, // unused 0, // unused
1, // scale 1, // scale
0, // speed 0, // speed
0.08, // unk50 0.08, // speeddecel
30, // traveldist 30, // traveldist
1200, // timer60 1200, // timer60
0.1, // reflectangle 0.1, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };
@ -2780,10 +2780,10 @@ struct funcdef_shootprojectile invfunc_rockerlauncher_shoot = {
0, // unused 0, // unused
2.1, // scale 2.1, // scale
60, // speed 60, // speed
0, // unk50 0, // speeddecel
0, // traveldist 0, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };
@ -2811,10 +2811,10 @@ struct funcdef_shootprojectile invfunc_rocketlauncher_homing = {
0, // unused 0, // unused
2.1, // scale 2.1, // scale
0, // speed 0, // speed
0, // unk50 0, // speeddecel
5, // traveldist 5, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };
@ -2890,10 +2890,10 @@ struct funcdef_shootprojectile invfunc_slayer_shoot = {
0, // unused 0, // unused
4.1, // scale 4.1, // scale
10, // speed 10, // speed
0, // unk50 0, // speeddecel
0, // traveldist 0, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };
@ -2921,10 +2921,10 @@ struct funcdef_shootprojectile invfunc_slayer_flybywire = {
0, // unused 0, // unused
4.1, // scale 4.1, // scale
10, // speed 10, // speed
0, // unk50 0, // speeddecel
0, // traveldist 0, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
SFXMAP_8068_SLAYER_WHIR, // soundnum SFXMAP_8068_SLAYER_WHIR, // soundnum
}; };
@ -3010,10 +3010,10 @@ struct funcdef_shootprojectile invfunc_devastator_shoot = {
0, // unused 0, // unused
1, // scale 1, // scale
0, // speed 0, // speed
0.08, // unk50 0.08, // speeddecel
40, // traveldist 40, // traveldist
1200, // timer60 1200, // timer60
0.3, // reflectangle 0.3, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };
@ -3041,10 +3041,10 @@ struct funcdef_shootprojectile invfunc_devastator_wallhugger = {
0, // unused 0, // unused
1, // scale 1, // scale
0, // speed 0, // speed
0.08, // unk50 0.08, // speeddecel
40, // traveldist 40, // traveldist
360, // timer60 360, // timer60
0.3, // reflectangle 0.3, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };
@ -3719,10 +3719,10 @@ struct funcdef_shootprojectile invfunc_crossbow_lethal = {
0, // unused 0, // unused
2.1, // scale 2.1, // scale
0, // speed 0, // speed
0, // unk50 0, // speeddecel
60, // traveldist 60, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
-1, // soundnum -1, // soundnum
}; };
@ -3750,10 +3750,10 @@ struct funcdef_shootprojectile invfunc_crossbow_shoot = {
0, // unused 0, // unused
2.1, // scale 2.1, // scale
0, // speed 0, // speed
0, // unk50 0, // speeddecel
60, // traveldist 60, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
-1, // soundnum -1, // soundnum
}; };
@ -6094,10 +6094,10 @@ struct funcdef_shootprojectile invfunc_kingsceptre_primary = {
0, // unused 0, // unused
2.1, // scale 2.1, // scale
20, // speed 20, // speed
0, // unk50 0, // speeddecel
0, // traveldist 0, // traveldist
-1, // timer60 -1, // timer60
0.05, // reflectangle 0.05, // hitspeedpreservationfrac
SFXMAP_8053_LAUNCH_ROCKET, // soundnum SFXMAP_8053_LAUNCH_ROCKET, // soundnum
}; };

View File

@ -3560,9 +3560,9 @@ void player_tick(bool arg0)
projectile->powerlimit240 = -1; projectile->powerlimit240 = -1;
projectile->flags |= PROJECTILEFLAG_NOTIMELIMIT; projectile->flags |= PROJECTILEFLAG_NOTIMELIMIT;
projectile->unk018 = 0; projectile->accel.z = 0;
projectile->unk014 = 0; projectile->accel.y = 0;
projectile->unk010 = 0; projectile->accel.x = 0;
if ((projectile->flags & PROJECTILEFLAG_LAUNCHING) == 0) { if ((projectile->flags & PROJECTILEFLAG_LAUNCHING) == 0) {
projectile->ownerprop = NULL; projectile->ownerprop = NULL;

File diff suppressed because it is too large Load Diff

View File

@ -508,7 +508,7 @@ void setup_create_object(struct defaultobj *obj, s32 cmdindex)
obj_place_3d(obj, &pos, &mtx, rooms, &centre); obj_place_3d(obj, &pos, &mtx, rooms, &centre);
} }
if (obj->hidden & OBJHFLAG_00008000) { if (obj->hidden & OBJHFLAG_ONANOTHEROBJ) {
prop_activate_this_frame(prop2); prop_activate_this_frame(prop2);
} else { } else {
prop_activate(prop2); prop_activate(prop2);

View File

@ -856,7 +856,7 @@
#define DROPTYPE_SURRENDER 2 #define DROPTYPE_SURRENDER 2
#define DROPTYPE_THROWGRENADE 3 #define DROPTYPE_THROWGRENADE 3
#define DROPTYPE_HAT 4 #define DROPTYPE_HAT 4
#define DROPTYPE_5 5 #define DROPTYPE_DEBRIS 5
#define DROPTYPE_OWNERREAP 6 #define DROPTYPE_OWNERREAP 6
#define DYNTEXTYPE_RIVER 1 #define DYNTEXTYPE_RIVER 1
@ -3072,7 +3072,7 @@
#define OBJFLAG_CHOPPER_INIT 0x20000000 #define OBJFLAG_CHOPPER_INIT 0x20000000
#define OBJFLAG_DOOR_OPENTOFRONT 0x20000000 #define OBJFLAG_DOOR_OPENTOFRONT 0x20000000
#define OBJFLAG_HOVERCAR_INIT 0x20000000 #define OBJFLAG_HOVERCAR_INIT 0x20000000
#define OBJFLAG_HOVERPROP_20000000 0x20000000 #define OBJFLAG_HOVERPROP_ISCRATE 0x20000000
#define OBJFLAG_LIFT_LATERALMOVEMENT 0x20000000 #define OBJFLAG_LIFT_LATERALMOVEMENT 0x20000000
#define OBJFLAG_MONITOR_20000000 0x20000000 #define OBJFLAG_MONITOR_20000000 0x20000000
#define OBJFLAG_WEAPON_AICANNOTUSE 0x20000000 #define OBJFLAG_WEAPON_AICANNOTUSE 0x20000000
@ -3134,38 +3134,38 @@
#define OBJFLAG2_WEAPON_HUGEEXP 0x80000000 #define OBJFLAG2_WEAPON_HUGEEXP 0x80000000
// obj->flags3 // obj->flags3
#define OBJFLAG3_PUSHABLE 0x00000001 #define OBJFLAG3_PUSHABLE 0x00000001
#define OBJFLAG3_GRABBABLE 0x00000002 #define OBJFLAG3_GRABBABLE 0x00000002
#define OBJFLAG3_DOOR_STICKY 0x00000004 // eg. Skedar Ruins #define OBJFLAG3_DOOR_STICKY 0x00000004 // eg. Skedar Ruins
#define OBJFLAG3_00000008 0x00000008 // Not used in scripts #define OBJFLAG3_SETTLEROT_BYACTUALSIZE 0x00000008
#define OBJFLAG3_FINDROOMSFAST 0x00000010 // Can use if obj never goes out of bounds or in overlapping rooms #define OBJFLAG3_FINDROOMSFAST 0x00000010 // Can use if obj never goes out of bounds or in overlapping rooms
#define OBJFLAG3_AUTOCUTSCENESOUNDS 0x00000020 // For doors and objs - play default open/close noises #define OBJFLAG3_AUTOCUTSCENESOUNDS 0x00000020 // For doors and objs - play default open/close noises
#define OBJFLAG3_RTRACKED_YELLOW 0x00000040 #define OBJFLAG3_RTRACKED_YELLOW 0x00000040
#define OBJFLAG3_CANHARDFREE 0x00000080 // Can free prop while on screen (MP weapons only) #define OBJFLAG3_CANHARDFREE 0x00000080 // Can free prop while on screen (MP weapons only)
#define OBJFLAG3_HARDFREEING 0x00000100 #define OBJFLAG3_HARDFREEING 0x00000100
#define OBJFLAG3_00000200 0x00000200 // Not used in scripts #define OBJFLAG3_SETTLEROT_UPRIGHT 0x00000200
#define OBJFLAG3_WALKTHROUGH 0x00000400 #define OBJFLAG3_WALKTHROUGH 0x00000400
#define OBJFLAG3_RTRACKED_BLUE 0x00000800 #define OBJFLAG3_RTRACKED_BLUE 0x00000800
#define OBJFLAG3_SHOWSHIELD 0x00001000 // Show shield effect around object (always) #define OBJFLAG3_SHOWSHIELD 0x00001000 // Show shield effect around object (always)
#define OBJFLAG3_HTMTERMINAL 0x00002000 // Terminal for Hacker Central scenario (HTM = Hack That Mac) #define OBJFLAG3_HTMTERMINAL 0x00002000 // Terminal for Hacker Central scenario (HTM = Hack That Mac)
#define OBJFLAG3_ISFETCHTARGET 0x00004000 // AI bot is fetching this obj #define OBJFLAG3_ISFETCHTARGET 0x00004000 // AI bot is fetching this obj
#define OBJFLAG3_REACTTOSIGHT 0x00008000 // Turn sight blue or red when targeted with R #define OBJFLAG3_REACTTOSIGHT 0x00008000 // Turn sight blue or red when targeted with R
#define OBJFLAG3_INTERACTABLE 0x00010000 #define OBJFLAG3_INTERACTABLE 0x00010000
#define OBJFLAG3_SHIELDHIT 0x00020000 // Turns off when shield no longer visible #define OBJFLAG3_SHIELDHIT 0x00020000 // Turns off when shield no longer visible
#define OBJFLAG3_RENDERPOSTBG 0x00040000 #define OBJFLAG3_RENDERPOSTBG 0x00040000
#define OBJFLAG3_DRAWONTOP 0x00080000 #define OBJFLAG3_DRAWONTOP 0x00080000
#define OBJFLAG3_HOVERBEDSHIELD 0x00100000 #define OBJFLAG3_HOVERBEDSHIELD 0x00100000
#define OBJFLAG3_INTERACTSHORTRANGE 0x00200000 #define OBJFLAG3_INTERACTSHORTRANGE 0x00200000
#define OBJFLAG3_PLAYERUNDROPPABLE 0x00400000 // Player does not drop item when dead #define OBJFLAG3_PLAYERUNDROPPABLE 0x00400000 // Player does not drop item when dead
#define OBJFLAG3_LONGPUSHRANGE 0x00800000 // Not used in scripts #define OBJFLAG3_LONGPUSHRANGE 0x00800000 // Not used in scripts
#define OBJFLAG3_PUSHFREELY 0x01000000 // Not used in scripts #define OBJFLAG3_PUSHFREELY 0x01000000 // Not used in scripts
#define OBJFLAG3_GEOCYL 0x02000000 // Use cylinder geometry rather than block #define OBJFLAG3_GEOCYL 0x02000000 // Use cylinder geometry rather than block
#define OBJFLAG3_04000000 0x04000000 // Not used in scripts #define OBJFLAG3_04000000 0x04000000 // Not used in scripts
#define OBJFLAG3_08000000 0x08000000 // Not used in scripts #define OBJFLAG3_SETTLEROT_LAPTOP 0x08000000
#define OBJFLAG3_KEEPGEOWHENDESTROYED 0x10000000 #define OBJFLAG3_KEEPGEOWHENDESTROYED 0x10000000
#define OBJFLAG3_ONSHELF 0x20000000 // Obj is on a shelf - use bigger pickup range for Small Jo and Play as Elvis cheats and skip line of sight checks #define OBJFLAG3_ONSHELF 0x20000000 // Obj is on a shelf - use bigger pickup range for Small Jo and Play as Elvis cheats and skip line of sight checks
#define OBJFLAG3_INFRARED 0x40000000 // Obj is highlighted on IR scanner #define OBJFLAG3_INFRARED 0x40000000 // Obj is highlighted on IR scanner
#define OBJFLAG3_80000000 0x80000000 // Not used in scripts #define OBJFLAG3_80000000 0x80000000 // Not used in scripts
// obj->hidden // obj->hidden
#define OBJHFLAG_LIFTDOOR 0x00000001 #define OBJHFLAG_LIFTDOOR 0x00000001
@ -3183,9 +3183,9 @@
#define OBJHFLAG_00001000 0x00001000 #define OBJHFLAG_00001000 0x00001000
#define OBJHFLAG_PADLOCKEDDOOR 0x00002000 #define OBJHFLAG_PADLOCKEDDOOR 0x00002000
#define OBJHFLAG_ACTIVATED_BY_BOND 0x00004000 #define OBJHFLAG_ACTIVATED_BY_BOND 0x00004000
#define OBJHFLAG_00008000 0x00008000 #define OBJHFLAG_ONANOTHEROBJ 0x00008000
#define OBJHFLAG_00010000 0x00010000 #define OBJHFLAG_IMMUNETOBOUNCES 0x00010000
#define OBJHFLAG_00020000 0x00020000 #define OBJHFLAG_ATTACHED 0x00020000
#define OBJHFLAG_ACTIVATED_BY_COOP 0x00040000 #define OBJHFLAG_ACTIVATED_BY_COOP 0x00040000
#define OBJHFLAG_HASOWNER 0x00080000 #define OBJHFLAG_HASOWNER 0x00080000
#define OBJHFLAG_SUSPICIOUS 0x00100000 #define OBJHFLAG_SUSPICIOUS 0x00100000
@ -3473,22 +3473,22 @@
#define PROFILE_RDP_START1 0x40001 #define PROFILE_RDP_START1 0x40001
#define PROFILE_AUDIOFRAME_END 0x60000 #define PROFILE_AUDIOFRAME_END 0x60000
#define PROJECTILEFLAG_AIRBORNE 0x00000001 #define PROJECTILEFLAG_AIRBORNE 0x00000001
#define PROJECTILEFLAG_00000002 0x00000002 #define PROJECTILEFLAG_FORCEGOODBOUNCE 0x00000002 // Projectile's first bounce will have a forced minimum upward velocity
#define PROJECTILEFLAG_STICKY 0x00000004 #define PROJECTILEFLAG_STICKY 0x00000004
#define PROJECTILEFLAG_POWERED 0x00000010 // No gravity #define PROJECTILEFLAG_POWERED 0x00000010 // No gravity
#define PROJECTILEFLAG_00000020 0x00000020 #define PROJECTILEFLAG_MISSILE 0x00000020 // Implemented but unused
#define PROJECTILEFLAG_LAUNCHING 0x00000080 #define PROJECTILEFLAG_LAUNCHING 0x00000080
#define PROJECTILEFLAG_00000100 0x00000100 #define PROJECTILEFLAG_BOUNCEKEEPROT 0x00000100
#define PROJECTILEFLAG_FALLING 0x00000400 #define PROJECTILEFLAG_SETTLING 0x00000400 // Projectile is finding its final rotation for resting
#define PROJECTILEFLAG_SLIDING 0x00000800 #define PROJECTILEFLAG_SLIDING 0x00000800
#define PROJECTILEFLAG_00001000 0x00001000 #define PROJECTILEFLAG_TICKEDEARLY 0x00001000
#define PROJECTILEFLAG_00002000 0x00002000 #define PROJECTILEFLAG_TICKEDEARLYMOVED 0x00002000
#define PROJECTILEFLAG_NOTIMELIMIT 0x00004000 #define PROJECTILEFLAG_NOTIMELIMIT 0x00004000
#define PROJECTILEFLAG_INROOM 0x00008000 #define PROJECTILEFLAG_INROOM 0x00008000
#define PROJECTILEFLAG_00010000 0x00010000 #define PROJECTILEFLAG_DONEOOBSEARCH 0x00010000
#define PROJECTILEFLAG_LIGHTWEIGHT 0x40000000 #define PROJECTILEFLAG_LIGHTWEIGHT 0x40000000
#define PROJECTILEFLAG_FREE 0x80000000 #define PROJECTILEFLAG_FREE 0x80000000
#define PROPFLAG_RENDERPOSTBG 0x01 #define PROPFLAG_RENDERPOSTBG 0x01
#define PROPFLAG_ONTHISSCREENTHISTICK 0x02 #define PROPFLAG_ONTHISSCREENTHISTICK 0x02

View File

@ -21,7 +21,7 @@ void bgun_free_gun_mem(void);
bool bgun_change_gun_mem(s32 newowner); bool bgun_change_gun_mem(s32 newowner);
bool bgun_load_all(void); bool bgun_load_all(void);
struct modeldef *bgun_get_cart_modeldef(void); struct modeldef *bgun_get_cart_modeldef(void);
void bgun0f09ebcc(struct defaultobj *obj, struct coord *coord, RoomNum *rooms, Mtxf *matrix1, struct coord *velocity, Mtxf *matrix2, struct prop *prop, struct coord *pos); void bgun_configure_projectile(struct defaultobj *obj, struct coord *coord, RoomNum *rooms, Mtxf *matrix1, struct coord *velocity, Mtxf *matrix2, struct prop *prop, struct coord *pos);
struct defaultobj *bgun_create_thrown_projectile2(struct chrdata *chr, struct gset *gset, struct coord *pos, RoomNum *rooms, Mtxf *arg4, struct coord *velocity); struct defaultobj *bgun_create_thrown_projectile2(struct chrdata *chr, struct gset *gset, struct coord *pos, RoomNum *rooms, Mtxf *arg4, struct coord *velocity);
void bgun_create_thrown_projectile(s32 handnum, struct gset *gset); void bgun_create_thrown_projectile(s32 handnum, struct gset *gset);
void bgun_create_fired_projectile(s32 handnum); void bgun_create_fired_projectile(s32 handnum);

View File

@ -39,7 +39,7 @@ bool model_get_screen_coords(struct model *model, f32 *x2, f32 *x1, f32 *y2, f32
void obj_get_screeninfo(struct coord *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 *arg4); void obj_get_screeninfo(struct coord *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 *arg4);
struct defaultobj *obj_find_by_pad_num(s32 padnum); struct defaultobj *obj_find_by_pad_num(s32 padnum);
void projectiles_unref_owner(struct prop *owner); void projectiles_unref_owner(struct prop *owner);
void func0f0685e4(struct prop *prop); void obj_ensure_projectile(struct prop *prop);
void projectile_set_sticky(struct prop *prop); void projectile_set_sticky(struct prop *prop);
struct embedment *embedment_allocate(void); struct embedment *embedment_allocate(void);
s32 obj_get_destroyed_level(struct defaultobj *obj); s32 obj_get_destroyed_level(struct defaultobj *obj);
@ -80,7 +80,7 @@ void hoverprop_set_turn_angle(struct defaultobj *obj, f32 angle);
s32 func0f072144(struct defaultobj *obj, struct coord *arg1, f32 arg2, bool arg3); s32 func0f072144(struct defaultobj *obj, struct coord *arg1, f32 arg2, bool arg3);
void hoverbike_update_movement(struct hoverbikeobj *hoverbike, f32 arg1, f32 arg2, f32 arg3); void hoverbike_update_movement(struct hoverbikeobj *hoverbike, f32 arg1, f32 arg2, f32 arg3);
s32 projectile_launch(struct defaultobj *obj, struct projectile *projectile, struct coord *arg2, struct coord *arg3); s32 projectile_launch(struct defaultobj *obj, struct projectile *projectile, struct coord *arg2, struct coord *arg3);
s32 projectile_tick(struct defaultobj *obj, bool *embedded); bool projectile_tick(struct defaultobj *obj, bool *embedded);
struct chopperobj *chopper_from_hovercar(struct chopperobj *obj); struct chopperobj *chopper_from_hovercar(struct chopperobj *obj);
bool chopper_check_target_in_fov(struct chopperobj *hovercar, u8 param_2); bool chopper_check_target_in_fov(struct chopperobj *hovercar, u8 param_2);
bool chopper_check_target_in_sight(struct chopperobj *obj); bool chopper_check_target_in_sight(struct chopperobj *obj);

View File

@ -1330,25 +1330,30 @@ struct chrdata {
struct projectile { struct projectile {
/*0x000*/ u32 flags; /*0x000*/ u32 flags;
/*0x004*/ struct coord speed; // distance moved in last tick /*0x004*/ struct coord speed; // distance moved in last tick
/*0x010*/ f32 unk010; union {
/*0x014*/ f32 unk014; struct coord accel;
/*0x018*/ f32 unk018; struct {
/*0x01c*/ f32 unk01c; /*0x010*/ f32 fbwspeed;
/*0x014*/ f32 fbwrotx;
/*0x018*/ f32 fbwroty;
};
};
/*0x01c*/ f32 missileyaccel;
/*0x020*/ Mtxf mtx; /*0x020*/ Mtxf mtx;
/*0x060*/ f32 unk060; /*0x060*/ f32 settledrotfrac;
/*0x064*/ f32 unk064; /*0x064*/ f32 settledrotinc;
/*0x068*/ f32 unk068[4]; /*0x068*/ f32 unk068[4];
/*0x078*/ f32 unk078[4]; /*0x078*/ f32 unk078[4];
/*0x088*/ struct prop *ownerprop; /*0x088*/ struct prop *ownerprop;
/*0x08c*/ f32 unk08c; /*0x08c*/ f32 hitspeedpreservationfrac;
/*0x090*/ s32 bouncecount; /*0x090*/ s32 bouncecount;
/*0x094*/ s32 bounceframe; /*0x094*/ s32 bounceframe;
/*0x098*/ f32 unk098; /*0x098*/ f32 speeddecel;
/*0x09c*/ s32 lastwooshframe; /*0x09c*/ s32 lastwooshframe;
/*0x0a0*/ s32 flighttime240; /*0x0a0*/ s32 flighttime240;
/*0x0a4*/ s32 unk0a4; /*0x0a4*/ s32 collisionframe;
/*0x0a8*/ f32 unk0a8; /*0x0a8*/ f32 missiley;
/*0x0ac*/ f32 unk0ac; /*0x0ac*/ f32 missileyspeed;
/*0x0b0*/ s16 droptype; /*0x0b0*/ s16 droptype;
/*0x0b2*/ s16 powerlimit240; /*0x0b2*/ s16 powerlimit240;
/*0x0b4*/ s32 pickuptimer240; /*0x0b4*/ s32 pickuptimer240;
@ -1356,13 +1361,13 @@ struct projectile {
/*0x0c4*/ struct coord nextsteppos; /*0x0c4*/ struct coord nextsteppos;
/*0x0d0*/ s32 losttimer240; /*0x0d0*/ s32 losttimer240;
/*0x0d4*/ struct defaultobj *obj; /*0x0d4*/ struct defaultobj *obj;
/*0x0d8*/ s32 unk0d8; /*0x0d8*/ s32 startframe;
/*0x0dc*/ f32 unk0dc; /*0x0dc*/ f32 yrotspeed;
/*0x0e0*/ f32 unk0e0; /*0x0e0*/ f32 yrotdecel;
/*0x0e4*/ f32 unk0e4; /*0x0e4*/ f32 excessivedecelrate;
/*0x0e8*/ struct prop *targetprop; // for homing rockets /*0x0e8*/ struct prop *targetprop; // for homing rockets
/*0x0ec*/ f32 unk0ec; /*0x0ec*/ f32 yrotexcessivedecelbase;
/*0x0f0*/ f32 unk0f0; /*0x0f0*/ f32 xzexcessivedecelbase;
/*0x0f4*/ s32 smoketimer240; /*0x0f4*/ s32 smoketimer240;
/*0x0f8*/ s16 waypads[MAX_CHRWAYPOINTS]; /*0x0f8*/ s16 waypads[MAX_CHRWAYPOINTS];
/*0x104*/ u8 numwaypads; /*0x104*/ u8 numwaypads;
@ -2957,10 +2962,10 @@ struct funcdef_shootprojectile {
/*0x44*/ u32 unk44; // unused /*0x44*/ u32 unk44; // unused
/*0x48*/ f32 scale; /*0x48*/ f32 scale;
/*0x4c*/ s32 speed; /*0x4c*/ s32 speed;
/*0x50*/ f32 unk50; /*0x50*/ f32 speeddecel;
/*0x54*/ s32 traveldist; /*0x54*/ s32 traveldist;
/*0x58*/ s32 timer60; /*0x58*/ s32 timer60;
/*0x5c*/ f32 reflectangle; /*0x5c*/ f32 hitspeedpreservationfrac;
/*0x60*/ s16 soundnum; /*0x60*/ s16 soundnum;
}; };

View File

@ -52,9 +52,9 @@ u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP4_0170, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION04) weapon(0x0100, 0x0000, PAD_MP4_0170, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION04)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0183, OBJFLAG_FALL, 0, 0, 1000) ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0183, OBJFLAG_FALL, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0184, OBJFLAG_FALL, 0, 0, 1000) ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0184, OBJFLAG_FALL, 0, 0, 1000)
hover_prop(0x0100, MODEL_A51_CRATE2, PAD_MP4_0186, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE, 1000, HOVTYPE_CRATE) hover_prop(0x0100, MODEL_A51_CRATE2, PAD_MP4_0186, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE, 1000, HOVTYPE_CRATE)
hover_prop(0x0100, MODEL_HOVERCRATE1, PAD_MP4_0187, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE) hover_prop(0x0100, MODEL_HOVERCRATE1, PAD_MP4_0187, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE)
hover_prop(0x0100, MODEL_A51_CRATE2, PAD_MP4_0188, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE, 1000, HOVTYPE_CRATE) hover_prop(0x0100, MODEL_A51_CRATE2, PAD_MP4_0188, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE, 1000, HOVTYPE_CRATE)
endprops endprops
}; };

View File

@ -360,7 +360,7 @@ u32 props[] = {
tag(0x37, 1) tag(0x37, 1)
door(0x0100, MODEL_SECRETINDOOR, PAD_DISH_0192, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INFRARED, 1000, 0x005a0000, 0x03e80000, 0x012c0000, 0x012c0000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000040, 0x000001e0, 0x00000000, 0x00000000, 0x00000b00) door(0x0100, MODEL_SECRETINDOOR, PAD_DISH_0192, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INFRARED, 1000, 0x005a0000, 0x03e80000, 0x012c0000, 0x012c0000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000040, 0x000001e0, 0x00000000, 0x00000000, 0x00000b00)
tag(0x93, 1) tag(0x93, 1)
hover_prop(0x00eb, MODEL_HOVERCRATE1, PAD_DISH_0141, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF | OBJFLAG2_HOVERPROP_80000000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE) hover_prop(0x00eb, MODEL_HOVERCRATE1, PAD_DISH_0141, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF | OBJFLAG2_HOVERPROP_80000000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE)
hoverbike(0x0100, MODEL_HOVBIKE, PAD_DISH_01F9, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000) hoverbike(0x0100, MODEL_HOVBIKE, PAD_DISH_01F9, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000)
tag(0x42, 1) tag(0x42, 1)
stdobject(0x0100, MODEL_DROPSHIP, -1, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000) stdobject(0x0100, MODEL_DROPSHIP, -1, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)

View File

@ -716,7 +716,7 @@ u32 props[] = {
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_LIP_02B2, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100) door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_LIP_02B2, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_LIP_02B1, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000) door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_LIP_02B1, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
tag(0x17, 1) tag(0x17, 1)
hover_prop(0x00eb, MODEL_HOVERCRATE1, PAD_LIP_01C7, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF | OBJFLAG2_HOVERPROP_80000000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE) hover_prop(0x00eb, MODEL_HOVERCRATE1, PAD_LIP_01C7, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF | OBJFLAG2_HOVERPROP_80000000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE)
tag(0x06, 1) tag(0x06, 1)
key(0x0080, MODEL_KEYCARD, 0x003f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, 32) key(0x0080, MODEL_KEYCARD, 0x003f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, 32)
rename_object(-1, WEAPON_KEYCARD47, L_LIP_032, L_LIP_033, L_LIP_034, L_LIP_035, L_LIP_036) // "Obtain medlab 2 key card." rename_object(-1, WEAPON_KEYCARD47, L_LIP_032, L_LIP_033, L_LIP_034, L_LIP_035, L_LIP_036) // "Obtain medlab 2 key card."

View File

@ -328,11 +328,11 @@ u32 props[] = {
tag(0x55, 1) tag(0x55, 1)
hoverbike(0x0100, MODEL_HOVBIKE, PAD_LUE_037A, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000) hoverbike(0x0100, MODEL_HOVBIKE, PAD_LUE_037A, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000)
tag(0x02, 1) tag(0x02, 1)
chopper(0x0a00, MODEL_A51INTERCEPTOR, PAD_LUE_0359, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_CHOPPER_INIT, OBJFLAG2_INVISIBLE, OBJFLAG3_00000200 | OBJFLAG3_REACTTOSIGHT, 100, 0x040c) chopper(0x0a00, MODEL_A51INTERCEPTOR, PAD_LUE_0359, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_CHOPPER_INIT, OBJFLAG2_INVISIBLE, OBJFLAG3_SETTLEROT_UPRIGHT | OBJFLAG3_REACTTOSIGHT, 100, 0x040c)
tag(0x03, 1) tag(0x03, 1)
chopper(0x0a00, MODEL_A51INTERCEPTOR, PAD_LUE_036C, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_CHOPPER_INIT, OBJFLAG2_INVISIBLE, OBJFLAG3_00000200 | OBJFLAG3_REACTTOSIGHT, 100, 0x040c) chopper(0x0a00, MODEL_A51INTERCEPTOR, PAD_LUE_036C, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_CHOPPER_INIT, OBJFLAG2_INVISIBLE, OBJFLAG3_SETTLEROT_UPRIGHT | OBJFLAG3_REACTTOSIGHT, 100, 0x040c)
tag(0x04, 1) tag(0x04, 1)
chopper(0x0a00, MODEL_A51INTERCEPTOR, PAD_LUE_034E, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_CHOPPER_INIT, OBJFLAG2_INVISIBLE, OBJFLAG3_00000200 | OBJFLAG3_REACTTOSIGHT, 100, 0x040a) chopper(0x0a00, MODEL_A51INTERCEPTOR, PAD_LUE_034E, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_CHOPPER_INIT, OBJFLAG2_INVISIBLE, OBJFLAG3_SETTLEROT_UPRIGHT | OBJFLAG3_REACTTOSIGHT, 100, 0x040a)
tag(0x05, 1) tag(0x05, 1)
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_LUE_0409, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, OBJFLAG2_INTERACTCHECKLOS, OBJFLAG3_INTERACTABLE, 1000, TVPROGRAM_SOLID_RED) singlemonitor(0x0100, MODEL_MODEMBOX, PAD_LUE_0409, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, OBJFLAG2_INTERACTCHECKLOS, OBJFLAG3_INTERACTABLE, 1000, TVPROGRAM_SOLID_RED)
tag(0x08, 1) tag(0x08, 1)

View File

@ -476,7 +476,7 @@ u32 props[] = {
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_SEV_02B2, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100) door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_SEV_02B2, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_SEV_02B1, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000) door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_SEV_02B1, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
tag(0x17, 1) tag(0x17, 1)
hover_prop(0x00eb, MODEL_HOVERCRATE1, PAD_SEV_01C7, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF | OBJFLAG2_HOVERPROP_80000000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE) hover_prop(0x00eb, MODEL_HOVERCRATE1, PAD_SEV_01C7, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_BULLETPROOF | OBJFLAG2_HOVERPROP_80000000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE)
stdobject(0x0100, MODEL_A51BOARD, PAD_SEV_03C4, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, 0, 1000) stdobject(0x0100, MODEL_A51BOARD, PAD_SEV_03C4, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, 0, 1000)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_SEV_02BD, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100) door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_SEV_02BD, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_SEV_02BE, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000) door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_SEV_02BE, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)

View File

@ -237,7 +237,7 @@ u32 props[] = {
hover_prop(0x0100, MODEL_HOVERBED, PAD_TRA_0122, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_HOVERBEDSHIELD, 1000, HOVTYPE_BED) hover_prop(0x0100, MODEL_HOVERBED, PAD_TRA_0122, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_HOVERBEDSHIELD, 1000, HOVTYPE_BED)
tag(0x35, 1) tag(0x35, 1)
hoverbike(0x0100, MODEL_HOVBIKE, PAD_TRA_03FB, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000) hoverbike(0x0100, MODEL_HOVBIKE, PAD_TRA_03FB, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000)
hover_prop(0x0100, MODEL_HOVERCRATE1, PAD_TRA_011D, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_20000000, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE) hover_prop(0x0100, MODEL_HOVERCRATE1, PAD_TRA_011D, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_HOVERPROP_ISCRATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, HOVTYPE_CRATE)
tag(0x17, 2) tag(0x17, 2)
tag(0x18, 2) tag(0x18, 2)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_027F, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100) door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_027F, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)