Name some projectile symbols
This commit is contained in:
parent
86f61e88ec
commit
cd14bab5fd
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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
|
@ -508,7 +508,7 @@ void setup_create_object(struct defaultobj *obj, s32 cmdindex)
|
||||||
obj_place_3d(obj, &pos, &mtx, rooms, ¢re);
|
obj_place_3d(obj, &pos, &mtx, rooms, ¢re);
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -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
|
||||||
|
@ -3137,13 +3137,13 @@
|
||||||
#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)
|
||||||
|
@ -3161,7 +3161,7 @@
|
||||||
#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
|
||||||
|
@ -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
|
||||||
|
@ -3474,19 +3474,19 @@
|
||||||
#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
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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."
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue