Rename object flags according to Sfall (#37)
This commit is contained in:
parent
9cad93c764
commit
e27f72f52b
|
@ -1725,7 +1725,7 @@ int _compute_explosion_damage(int min, int max, Object* a3, int* a4)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a4 != NULL) {
|
if (a4 != NULL) {
|
||||||
if ((a3->flags & OBJECT_FLAG_0x800) == 0) {
|
if ((a3->flags & OBJECT_MULTIHEX) == 0) {
|
||||||
*a4 = v7 / 10;
|
*a4 = v7 / 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1892,7 +1892,7 @@ int _compute_dmg_damage(int min, int max, Object* obj, int* a4, int damageType)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a4 != NULL) {
|
if (a4 != NULL) {
|
||||||
if ((obj->flags & OBJECT_FLAG_0x800) == 0 && damageType != DAMAGE_TYPE_ELECTRICAL) {
|
if ((obj->flags & OBJECT_MULTIHEX) == 0 && damageType != DAMAGE_TYPE_ELECTRICAL) {
|
||||||
*a4 = v10 / 10;
|
*a4 = v10 / 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1682,7 +1682,7 @@ int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4,
|
||||||
if (a5 != NULL) {
|
if (a5 != NULL) {
|
||||||
Object* v11 = a7(a1, from, a1->elevation);
|
Object* v11 = a7(a1, from, a1->elevation);
|
||||||
if (v11 != NULL) {
|
if (v11 != NULL) {
|
||||||
if (v11 != *a5 && (a6 != 32 || (v11->flags & OBJECT_FLAG_0x80000000) == 0)) {
|
if (v11 != *a5 && (a6 != 32 || (v11->flags & OBJECT_SHOOT_THRU) == 0)) {
|
||||||
*a5 = v11;
|
*a5 = v11;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1774,7 +1774,7 @@ int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4,
|
||||||
if (a5 != NULL) {
|
if (a5 != NULL) {
|
||||||
Object* obj = a7(a1, tile, a1->elevation);
|
Object* obj = a7(a1, tile, a1->elevation);
|
||||||
if (obj != NULL) {
|
if (obj != NULL) {
|
||||||
if (obj != *a5 && (a6 != 32 || (obj->flags & OBJECT_FLAG_0x80000000) == 0)) {
|
if (obj != *a5 && (a6 != 32 || (obj->flags & OBJECT_SHOOT_THRU) == 0)) {
|
||||||
*a5 = obj;
|
*a5 = obj;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1827,7 +1827,7 @@ int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4,
|
||||||
if (a5 != NULL) {
|
if (a5 != NULL) {
|
||||||
Object* obj = a7(a1, tile, a1->elevation);
|
Object* obj = a7(a1, tile, a1->elevation);
|
||||||
if (obj != NULL) {
|
if (obj != NULL) {
|
||||||
if (obj != *a5 && (a6 != 32 || (obj->flags & OBJECT_FLAG_0x80000000) == 0)) {
|
if (obj != *a5 && (a6 != 32 || (obj->flags & OBJECT_SHOOT_THRU) == 0)) {
|
||||||
*a5 = obj;
|
*a5 = obj;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1864,19 +1864,19 @@ int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4167F8
|
// 0x4167F8
|
||||||
int animateMoveObjectToObject(Object* a1, Object* a2, int a3, int anim, int animationSequenceIndex)
|
int animateMoveObjectToObject(Object* from, Object* to, int a3, int anim, int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
int v10;
|
int v10;
|
||||||
int v13;
|
int v13;
|
||||||
STRUCT_530014* ptr;
|
STRUCT_530014* ptr;
|
||||||
|
|
||||||
int hidden = (a2->flags & OBJECT_HIDDEN);
|
int hidden = (to->flags & OBJECT_HIDDEN);
|
||||||
a2->flags |= OBJECT_HIDDEN;
|
to->flags |= OBJECT_HIDDEN;
|
||||||
|
|
||||||
v10 = _anim_move(a1, a2->tile, a2->elevation, -1, anim, 0, animationSequenceIndex);
|
v10 = _anim_move(from, to->tile, to->elevation, -1, anim, 0, animationSequenceIndex);
|
||||||
|
|
||||||
if (hidden == 0) {
|
if (hidden == 0) {
|
||||||
a2->flags &= ~OBJECT_HIDDEN;
|
to->flags &= ~OBJECT_HIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v10 == -1) {
|
if (v10 == -1) {
|
||||||
|
@ -1884,7 +1884,7 @@ int animateMoveObjectToObject(Object* a1, Object* a2, int a3, int anim, int anim
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr = &(_sad[v10]);
|
ptr = &(_sad[v10]);
|
||||||
v13 = (((a1->flags & OBJECT_FLAG_0x800) != 0) + 1); // TODO: What the hell is this?
|
v13 = (((from->flags & OBJECT_MULTIHEX) != 0) + 1); // TODO: What the hell is this?
|
||||||
ptr->field_1C -= v13;
|
ptr->field_1C -= v13;
|
||||||
if (ptr->field_1C <= 0) {
|
if (ptr->field_1C <= 0) {
|
||||||
ptr->field_20 = -1000;
|
ptr->field_20 = -1000;
|
||||||
|
@ -1892,7 +1892,7 @@ int animateMoveObjectToObject(Object* a1, Object* a2, int a3, int anim, int anim
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v13) {
|
if (v13) {
|
||||||
ptr->field_24 = tileGetTileInDirection(a2->tile, ptr->field_24 + v13 + ptr->field_1C + 3, 1);
|
ptr->field_24 = tileGetTileInDirection(to->tile, ptr->field_24 + v13 + ptr->field_1C + 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v13 == 2) {
|
if (v13 == 2) {
|
||||||
|
|
|
@ -257,7 +257,7 @@ int _idist(int a1, int a2, int a3, int a4);
|
||||||
int _tile_idistance(int tile1, int tile2);
|
int _tile_idistance(int tile1, int tile2);
|
||||||
int _make_straight_path(Object* a1, int from, int to, STRUCT_530014_28* pathNodes, Object** a5, int a6);
|
int _make_straight_path(Object* a1, int from, int to, STRUCT_530014_28* pathNodes, Object** a5, int a6);
|
||||||
int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4, Object** a5, int a6, Object* (*a7)(Object*, int, int));
|
int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4, Object** a5, int a6, Object* (*a7)(Object*, int, int));
|
||||||
int animateMoveObjectToObject(Object* a1, Object* a2, int a3, int a4, int a5);
|
int animateMoveObjectToObject(Object* from, Object* to, int a3, int a4, int a5);
|
||||||
int animateMoveObjectToTile(Object* obj, int tile_num, int elev, int a4, int a5, int a6);
|
int animateMoveObjectToTile(Object* obj, int tile_num, int elev, int a4, int a5, int a6);
|
||||||
int _anim_move(Object* obj, int tile, int elev, int a3, int a4, int a5, int animationSequenceIndex);
|
int _anim_move(Object* obj, int tile, int elev, int a3, int a4, int a5, int animationSequenceIndex);
|
||||||
int _anim_move_straight_to_tile(Object* obj, int a2, int a3, int fid, int a5, int a6);
|
int _anim_move_straight_to_tile(Object* obj, int a2, int a3, int fid, int a5, int a6);
|
||||||
|
|
|
@ -458,7 +458,7 @@ void automapRenderInMapWindow(int window, int elevation, unsigned char* backgrou
|
||||||
&& (object->data.critter.combat.results & DAM_DEAD) == 0) {
|
&& (object->data.critter.combat.results & DAM_DEAD) == 0) {
|
||||||
objectColor = _colorTable[31744];
|
objectColor = _colorTable[31744];
|
||||||
} else {
|
} else {
|
||||||
if ((object->flags & OBJECT_FLAG_0x40000000) == 0) {
|
if ((object->flags & OBJECT_SEEN) == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1011,7 +1011,7 @@ void _decode_map_data(int elevation)
|
||||||
|
|
||||||
Object* object = objectFindFirstAtElevation(elevation);
|
Object* object = objectFindFirstAtElevation(elevation);
|
||||||
while (object != NULL) {
|
while (object != NULL) {
|
||||||
if (object->tile != -1 && (object->flags & OBJECT_FLAG_0x40000000) != 0) {
|
if (object->tile != -1 && (object->flags & OBJECT_SEEN) != 0) {
|
||||||
int contentType;
|
int contentType;
|
||||||
|
|
||||||
int objectType = (object->fid & 0xF000000) >> 24;
|
int objectType = (object->fid & 0xF000000) >> 24;
|
||||||
|
|
|
@ -2542,7 +2542,7 @@ void _combat_update_critter_outline_for_los(Object* critter, bool a2)
|
||||||
} else {
|
} else {
|
||||||
int v7 = objectGetDistanceBetween(gDude, critter);
|
int v7 = objectGetDistanceBetween(gDude, critter);
|
||||||
int v8 = critterGetStat(gDude, STAT_PERCEPTION) * 5;
|
int v8 = critterGetStat(gDude, STAT_PERCEPTION) * 5;
|
||||||
if ((critter->flags & OBJECT_FLAG_0x20000) != 0) {
|
if ((critter->flags & OBJECT_TRANS_GLASS) != 0) {
|
||||||
v8 /= 2;
|
v8 /= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3382,7 +3382,7 @@ bool _check_ranged_miss(Attack* attack)
|
||||||
while (curr != to) {
|
while (curr != to) {
|
||||||
_make_straight_path_func(attack->attacker, curr, to, NULL, &critter, 32, _obj_shoot_blocking_at);
|
_make_straight_path_func(attack->attacker, curr, to, NULL, &critter, 32, _obj_shoot_blocking_at);
|
||||||
if (critter != NULL) {
|
if (critter != NULL) {
|
||||||
if ((critter->flags & OBJECT_FLAG_0x80000000) == 0) {
|
if ((critter->flags & OBJECT_SHOOT_THRU) == 0) {
|
||||||
if ((critter->fid & 0xF000000) >> 24 != OBJ_TYPE_CRITTER) {
|
if ((critter->fid & 0xF000000) >> 24 != OBJ_TYPE_CRITTER) {
|
||||||
roll = ROLL_SUCCESS;
|
roll = ROLL_SUCCESS;
|
||||||
break;
|
break;
|
||||||
|
@ -3412,7 +3412,7 @@ bool _check_ranged_miss(Attack* attack)
|
||||||
|
|
||||||
attack->defenderHitLocation = HIT_LOCATION_TORSO;
|
attack->defenderHitLocation = HIT_LOCATION_TORSO;
|
||||||
|
|
||||||
if (roll < ROLL_SUCCESS || critter == NULL || (critter->flags & OBJECT_FLAG_0x80000000) == 0) {
|
if (roll < ROLL_SUCCESS || critter == NULL || (critter->flags & OBJECT_SHOOT_THRU) == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3747,7 +3747,7 @@ int attackCompute(Attack* attack)
|
||||||
v25 = _obj_blocking_at(NULL, attack->tile, attack->defender->elevation);
|
v25 = _obj_blocking_at(NULL, attack->tile, attack->defender->elevation);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v25 != NULL && (v25->flags & OBJECT_FLAG_0x80000000) == 0) {
|
if (v25 != NULL && (v25->flags & OBJECT_SHOOT_THRU) == 0) {
|
||||||
attack->attackerFlags |= DAM_HIT;
|
attack->attackerFlags |= DAM_HIT;
|
||||||
attack->defender = v25;
|
attack->defender = v25;
|
||||||
attackComputeDamage(attack, 1, 2);
|
attackComputeDamage(attack, 1, 2);
|
||||||
|
@ -3834,7 +3834,7 @@ void _compute_explosion_on_extras(Attack* attack, int a2, int a3, int a4)
|
||||||
if (v11 != NULL
|
if (v11 != NULL
|
||||||
&& (v11->fid & 0xF000000) >> 24 == OBJ_TYPE_CRITTER
|
&& (v11->fid & 0xF000000) >> 24 == OBJ_TYPE_CRITTER
|
||||||
&& (v11->data.critter.combat.results & DAM_DEAD) == 0
|
&& (v11->data.critter.combat.results & DAM_DEAD) == 0
|
||||||
&& (v11->flags & OBJECT_FLAG_0x80000000) == 0
|
&& (v11->flags & OBJECT_SHOOT_THRU) == 0
|
||||||
&& !_combat_is_shot_blocked(v11, v11->tile, tile, NULL, NULL)) {
|
&& !_combat_is_shot_blocked(v11, v11->tile, tile, NULL, NULL)) {
|
||||||
if (v11 == attack->attacker) {
|
if (v11 == attack->attacker) {
|
||||||
attack->attackerFlags &= ~DAM_HIT;
|
attack->attackerFlags &= ~DAM_HIT;
|
||||||
|
@ -4224,7 +4224,7 @@ int attackDetermineToHit(Object* attacker, int tile, Object* defender, int hitLo
|
||||||
accuracy += _hit_location_penalty[hitLocation] / 2;
|
accuracy += _hit_location_penalty[hitLocation] / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defender != NULL && (defender->flags & OBJECT_FLAG_0x800) != 0) {
|
if (defender != NULL && (defender->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
accuracy += 15;
|
accuracy += 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4406,7 +4406,7 @@ void attackComputeDamage(Attack* attack, int ammoQuantity, int a3)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (knockbackDistancePtr != NULL
|
if (knockbackDistancePtr != NULL
|
||||||
&& (critter->flags & OBJECT_FLAG_0x800) == 0
|
&& (critter->flags & OBJECT_MULTIHEX) == 0
|
||||||
&& (damageType == DAMAGE_TYPE_EXPLOSION || attack->weapon == NULL || weaponGetAttackTypeForHitMode(attack->weapon, attack->hitMode) == ATTACK_TYPE_MELEE)
|
&& (damageType == DAMAGE_TYPE_EXPLOSION || attack->weapon == NULL || weaponGetAttackTypeForHitMode(attack->weapon, attack->hitMode) == ATTACK_TYPE_MELEE)
|
||||||
&& (critter->pid >> 24) == OBJ_TYPE_CRITTER
|
&& (critter->pid >> 24) == OBJ_TYPE_CRITTER
|
||||||
&& _critter_flag_check(critter->pid, 0x4000) == 0) {
|
&& _critter_flag_check(critter->pid, 0x4000) == 0) {
|
||||||
|
@ -5686,7 +5686,7 @@ bool _combat_is_shot_blocked(Object* a1, int from, int to, Object* a4, int* a5)
|
||||||
if ((obstacle->data.critter.combat.results & (DAM_DEAD | DAM_KNOCKED_DOWN | DAM_KNOCKED_OUT)) == 0) {
|
if ((obstacle->data.critter.combat.results & (DAM_DEAD | DAM_KNOCKED_DOWN | DAM_KNOCKED_OUT)) == 0) {
|
||||||
*a5 += 1;
|
*a5 += 1;
|
||||||
|
|
||||||
if ((obstacle->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((obstacle->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
*a5 += 1;
|
*a5 += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5694,7 +5694,7 @@ bool _combat_is_shot_blocked(Object* a1, int from, int to, Object* a4, int* a5)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((obstacle->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((obstacle->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
int rotation = tileGetRotationTo(current, to);
|
int rotation = tileGetRotationTo(current, to);
|
||||||
current = tileGetTileInDirection(current, rotation, 1);
|
current = tileGetTileInDirection(current, rotation, 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2143,13 +2143,13 @@ int _ai_move_steps_closer(Object* a1, Object* a2, int actionPoints, int a4)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actionPoints >= critterGetStat(a1, STAT_MAXIMUM_ACTION_POINTS) / 2 && artCritterFidShouldRun(a1->fid)) {
|
if (actionPoints >= critterGetStat(a1, STAT_MAXIMUM_ACTION_POINTS) / 2 && artCritterFidShouldRun(a1->fid)) {
|
||||||
if ((a2->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((a2->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
reg_anim_obj_run_to_obj(a1, a2, actionPoints, 0);
|
reg_anim_obj_run_to_obj(a1, a2, actionPoints, 0);
|
||||||
} else {
|
} else {
|
||||||
reg_anim_obj_run_to_tile(a1, tile, a1->elevation, actionPoints, 0);
|
reg_anim_obj_run_to_tile(a1, tile, a1->elevation, actionPoints, 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((a2->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((a2->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
reg_anim_obj_move_to_obj(a1, a2, actionPoints, 0);
|
reg_anim_obj_move_to_obj(a1, a2, actionPoints, 0);
|
||||||
} else {
|
} else {
|
||||||
reg_anim_obj_move_to_tile(a1, tile, a1->elevation, actionPoints, 0);
|
reg_anim_obj_move_to_tile(a1, tile, a1->elevation, actionPoints, 0);
|
||||||
|
@ -3198,7 +3198,7 @@ bool objectCanHearObject(Object* a1, Object* a2)
|
||||||
int sneak = skillGetValue(a2, SKILL_SNEAK);
|
int sneak = skillGetValue(a2, SKILL_SNEAK);
|
||||||
if (_can_see(a1, a2)) {
|
if (_can_see(a1, a2)) {
|
||||||
int v8 = perception * 5;
|
int v8 = perception * 5;
|
||||||
if ((a2->flags & OBJECT_FLAG_0x20000) != 0) {
|
if ((a2->flags & OBJECT_TRANS_GLASS) != 0) {
|
||||||
v8 /= 2;
|
v8 /= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1927,16 +1927,16 @@ int gameMouseObjectsInit()
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gGameMouseBouncingCursor->flags |= OBJECT_FLAG_0x20000000;
|
gGameMouseBouncingCursor->flags |= OBJECT_LIGHT_THRU;
|
||||||
gGameMouseBouncingCursor->flags |= OBJECT_TEMPORARY;
|
gGameMouseBouncingCursor->flags |= OBJECT_TEMPORARY;
|
||||||
gGameMouseBouncingCursor->flags |= OBJECT_FLAG_0x400;
|
gGameMouseBouncingCursor->flags |= OBJECT_FLAG_0x400;
|
||||||
gGameMouseBouncingCursor->flags |= OBJECT_FLAG_0x80000000;
|
gGameMouseBouncingCursor->flags |= OBJECT_SHOOT_THRU;
|
||||||
gGameMouseBouncingCursor->flags |= OBJECT_NO_BLOCK;
|
gGameMouseBouncingCursor->flags |= OBJECT_NO_BLOCK;
|
||||||
|
|
||||||
gGameMouseHexCursor->flags |= OBJECT_FLAG_0x400;
|
gGameMouseHexCursor->flags |= OBJECT_FLAG_0x400;
|
||||||
gGameMouseHexCursor->flags |= OBJECT_TEMPORARY;
|
gGameMouseHexCursor->flags |= OBJECT_TEMPORARY;
|
||||||
gGameMouseHexCursor->flags |= OBJECT_FLAG_0x20000000;
|
gGameMouseHexCursor->flags |= OBJECT_LIGHT_THRU;
|
||||||
gGameMouseHexCursor->flags |= OBJECT_FLAG_0x80000000;
|
gGameMouseHexCursor->flags |= OBJECT_SHOOT_THRU;
|
||||||
gGameMouseHexCursor->flags |= OBJECT_NO_BLOCK;
|
gGameMouseHexCursor->flags |= OBJECT_NO_BLOCK;
|
||||||
|
|
||||||
_obj_toggle_flat(gGameMouseHexCursor, NULL);
|
_obj_toggle_flat(gGameMouseHexCursor, NULL);
|
||||||
|
|
16
src/item.cc
16
src/item.cc
|
@ -576,11 +576,11 @@ bool _item_identical(Object* a1, Object* a2)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((a1->flags & (OBJECT_EQUIPPED | OBJECT_FLAG_0x2000)) != 0) {
|
if ((a1->flags & (OBJECT_EQUIPPED | OBJECT_USED)) != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((a2->flags & (OBJECT_EQUIPPED | OBJECT_FLAG_0x2000)) != 0) {
|
if ((a2->flags & (OBJECT_EQUIPPED | OBJECT_USED)) != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -989,14 +989,14 @@ int _item_queued(Object* obj)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((obj->flags & OBJECT_FLAG_0x2000) != 0) {
|
if ((obj->flags & OBJECT_USED) != 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Inventory* inventory = &(obj->data.inventory);
|
Inventory* inventory = &(obj->data.inventory);
|
||||||
for (int index = 0; index < inventory->length; index++) {
|
for (int index = 0; index < inventory->length; index++) {
|
||||||
InventoryItem* inventoryItem = &(inventory->items[index]);
|
InventoryItem* inventoryItem = &(inventory->items[index]);
|
||||||
if ((inventoryItem->item->flags & OBJECT_FLAG_0x2000) != 0) {
|
if ((inventoryItem->item->flags & OBJECT_USED) != 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2402,11 +2402,11 @@ int _item_m_turn_off_from_queue(Object* obj, void* data)
|
||||||
// 0x479960
|
// 0x479960
|
||||||
int stealthBoyTurnOn(Object* object)
|
int stealthBoyTurnOn(Object* object)
|
||||||
{
|
{
|
||||||
if ((object->flags & OBJECT_FLAG_0x20000) != 0) {
|
if ((object->flags & OBJECT_TRANS_GLASS) != 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
object->flags |= OBJECT_FLAG_0x20000;
|
object->flags |= OBJECT_TRANS_GLASS;
|
||||||
|
|
||||||
Rect rect;
|
Rect rect;
|
||||||
objectGetRect(object, &rect);
|
objectGetRect(object, &rect);
|
||||||
|
@ -2428,11 +2428,11 @@ int stealthBoyTurnOff(Object* critter, Object* item)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((critter->flags & OBJECT_FLAG_0x20000) == 0) {
|
if ((critter->flags & OBJECT_TRANS_GLASS) == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
critter->flags &= ~OBJECT_FLAG_0x20000;
|
critter->flags &= ~OBJECT_TRANS_GLASS;
|
||||||
|
|
||||||
Rect rect;
|
Rect rect;
|
||||||
objectGetRect(critter, &rect);
|
objectGetRect(critter, &rect);
|
||||||
|
|
|
@ -199,7 +199,7 @@ int falloutMain(int argc, char** argv)
|
||||||
mainMenuWindowHide(true);
|
mainMenuWindowHide(true);
|
||||||
mainMenuWindowFree();
|
mainMenuWindowFree();
|
||||||
_game_user_wants_to_quit = 0;
|
_game_user_wants_to_quit = 0;
|
||||||
gDude->flags &= ~OBJECT_FLAG_0x08;
|
gDude->flags &= ~OBJECT_FLAT;
|
||||||
_main_show_death_scene = 0;
|
_main_show_death_scene = 0;
|
||||||
objectShow(gDude, NULL);
|
objectShow(gDude, NULL);
|
||||||
mouseHideCursor();
|
mouseHideCursor();
|
||||||
|
@ -301,7 +301,7 @@ int _main_load_new(char* mapFileName)
|
||||||
{
|
{
|
||||||
_game_user_wants_to_quit = 0;
|
_game_user_wants_to_quit = 0;
|
||||||
_main_show_death_scene = 0;
|
_main_show_death_scene = 0;
|
||||||
gDude->flags &= ~OBJECT_FLAG_0x08;
|
gDude->flags &= ~OBJECT_FLAT;
|
||||||
objectShow(gDude, NULL);
|
objectShow(gDude, NULL);
|
||||||
mouseHideCursor();
|
mouseHideCursor();
|
||||||
|
|
||||||
|
|
|
@ -903,7 +903,7 @@ int mapLoad(File* stream)
|
||||||
Object* object;
|
Object* object;
|
||||||
int fid = buildFid(5, 12, 0, 0, 0);
|
int fid = buildFid(5, 12, 0, 0, 0);
|
||||||
objectCreateWithFidPid(&object, fid, -1);
|
objectCreateWithFidPid(&object, fid, -1);
|
||||||
object->flags |= (OBJECT_FLAG_0x20000000 | OBJECT_TEMPORARY | OBJECT_HIDDEN);
|
object->flags |= (OBJECT_LIGHT_THRU | OBJECT_TEMPORARY | OBJECT_HIDDEN);
|
||||||
objectSetLocation(object, 1, 0, NULL);
|
objectSetLocation(object, 1, 0, NULL);
|
||||||
object->sid = gMapSid;
|
object->sid = gMapSid;
|
||||||
scriptSetFixedParam(gMapSid, (gMapHeader.flags & 1) == 0);
|
scriptSetFixedParam(gMapSid, (gMapHeader.flags & 1) == 0);
|
||||||
|
|
|
@ -39,31 +39,31 @@ typedef enum OutlineType {
|
||||||
typedef enum ObjectFlags {
|
typedef enum ObjectFlags {
|
||||||
OBJECT_HIDDEN = 0x01,
|
OBJECT_HIDDEN = 0x01,
|
||||||
OBJECT_TEMPORARY = 0x04,
|
OBJECT_TEMPORARY = 0x04,
|
||||||
OBJECT_FLAG_0x08 = 0x08,
|
OBJECT_FLAT = 0x08,
|
||||||
OBJECT_NO_BLOCK = 0x10,
|
OBJECT_NO_BLOCK = 0x10,
|
||||||
OBJECT_LIGHTING = 0x20,
|
OBJECT_LIGHTING = 0x20,
|
||||||
OBJECT_FLAG_0x400 = 0x400,
|
OBJECT_FLAG_0x400 = 0x400, // ???
|
||||||
OBJECT_FLAG_0x800 = 0x800,
|
OBJECT_MULTIHEX = 0x800,
|
||||||
OBJECT_FLAG_0x1000 = 0x1000,
|
OBJECT_NO_HIGHLIGHT = 0x1000,
|
||||||
OBJECT_FLAG_0x2000 = 0x2000,
|
OBJECT_USED = 0x2000, // set if there was/is any event for the object
|
||||||
OBJECT_FLAG_0x4000 = 0x4000,
|
OBJECT_TRANS_RED = 0x4000,
|
||||||
OBJECT_FLAG_0x8000 = 0x8000,
|
OBJECT_TRANS_NONE = 0x8000,
|
||||||
OBJECT_FLAG_0x10000 = 0x10000,
|
OBJECT_TRANS_WALL = 0x10000,
|
||||||
OBJECT_FLAG_0x20000 = 0x20000,
|
OBJECT_TRANS_GLASS = 0x20000,
|
||||||
OBJECT_FLAG_0x40000 = 0x40000,
|
OBJECT_TRANS_STEAM = 0x40000,
|
||||||
OBJECT_FLAG_0x80000 = 0x80000,
|
OBJECT_TRANS_ENERGY = 0x80000,
|
||||||
OBJECT_IN_LEFT_HAND = 0x1000000,
|
OBJECT_IN_LEFT_HAND = 0x1000000,
|
||||||
OBJECT_IN_RIGHT_HAND = 0x2000000,
|
OBJECT_IN_RIGHT_HAND = 0x2000000,
|
||||||
OBJECT_WORN = 0x4000000,
|
OBJECT_WORN = 0x4000000,
|
||||||
OBJECT_FLAG_0x10000000 = 0x10000000,
|
OBJECT_WALL_TRANS_END = 0x10000000,
|
||||||
OBJECT_FLAG_0x20000000 = 0x20000000,
|
OBJECT_LIGHT_THRU = 0x20000000,
|
||||||
OBJECT_FLAG_0x40000000 = 0x40000000,
|
OBJECT_SEEN = 0x40000000,
|
||||||
OBJECT_FLAG_0x80000000 = 0x80000000,
|
OBJECT_SHOOT_THRU = 0x80000000,
|
||||||
|
|
||||||
OBJECT_IN_ANY_HAND = OBJECT_IN_LEFT_HAND | OBJECT_IN_RIGHT_HAND,
|
OBJECT_IN_ANY_HAND = OBJECT_IN_LEFT_HAND | OBJECT_IN_RIGHT_HAND,
|
||||||
OBJECT_EQUIPPED = OBJECT_IN_ANY_HAND | OBJECT_WORN,
|
OBJECT_EQUIPPED = OBJECT_IN_ANY_HAND | OBJECT_WORN,
|
||||||
OBJECT_FLAG_0xFC000 = OBJECT_FLAG_0x80000 | OBJECT_FLAG_0x40000 | OBJECT_FLAG_0x20000 | OBJECT_FLAG_0x10000 | OBJECT_FLAG_0x8000 | OBJECT_FLAG_0x4000,
|
OBJECT_FLAG_0xFC000 = OBJECT_TRANS_ENERGY | OBJECT_TRANS_STEAM | OBJECT_TRANS_GLASS | OBJECT_TRANS_WALL | OBJECT_TRANS_NONE | OBJECT_TRANS_RED,
|
||||||
OBJECT_OPEN_DOOR = OBJECT_FLAG_0x80000000 | OBJECT_FLAG_0x20000000 | OBJECT_NO_BLOCK,
|
OBJECT_OPEN_DOOR = OBJECT_SHOOT_THRU | OBJECT_LIGHT_THRU | OBJECT_NO_BLOCK,
|
||||||
} ObjectFlags;
|
} ObjectFlags;
|
||||||
|
|
||||||
#define OUTLINE_TYPE_MASK 0xFFFFFF
|
#define OUTLINE_TYPE_MASK 0xFFFFFF
|
||||||
|
|
|
@ -317,7 +317,7 @@ int objectsInit(unsigned char* buf, int width, int height, int pitch)
|
||||||
gDude->flags |= OBJECT_FLAG_0x400;
|
gDude->flags |= OBJECT_FLAG_0x400;
|
||||||
gDude->flags |= OBJECT_TEMPORARY;
|
gDude->flags |= OBJECT_TEMPORARY;
|
||||||
gDude->flags |= OBJECT_HIDDEN;
|
gDude->flags |= OBJECT_HIDDEN;
|
||||||
gDude->flags |= OBJECT_FLAG_0x20000000;
|
gDude->flags |= OBJECT_LIGHT_THRU;
|
||||||
objectSetLight(gDude, 4, 0x10000, NULL);
|
objectSetLight(gDude, 4, 0x10000, NULL);
|
||||||
|
|
||||||
if (partyMemberAdd(gDude) == -1) {
|
if (partyMemberAdd(gDude) == -1) {
|
||||||
|
@ -330,7 +330,7 @@ int objectsInit(unsigned char* buf, int width, int height, int pitch)
|
||||||
gEgg->flags |= OBJECT_FLAG_0x400;
|
gEgg->flags |= OBJECT_FLAG_0x400;
|
||||||
gEgg->flags |= OBJECT_TEMPORARY;
|
gEgg->flags |= OBJECT_TEMPORARY;
|
||||||
gEgg->flags |= OBJECT_HIDDEN;
|
gEgg->flags |= OBJECT_HIDDEN;
|
||||||
gEgg->flags |= OBJECT_FLAG_0x20000000;
|
gEgg->flags |= OBJECT_LIGHT_THRU;
|
||||||
|
|
||||||
gObjectsInitialized = true;
|
gObjectsInitialized = true;
|
||||||
|
|
||||||
|
@ -805,7 +805,7 @@ void _obj_render_pre_roof(Rect* rect, int elevation)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (elevation == objectListNode->obj->elevation) {
|
if (elevation == objectListNode->obj->elevation) {
|
||||||
if ((objectListNode->obj->flags & OBJECT_FLAG_0x08) == 0) {
|
if ((objectListNode->obj->flags & OBJECT_FLAT) == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -943,39 +943,39 @@ int objectCreateWithFidPid(Object** objectPtr, int fid, int pid)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->flags & 0x800) != 0) {
|
if ((proto->flags & 0x800) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x800;
|
objectListNode->obj->flags |= OBJECT_MULTIHEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->flags & 0x8000) != 0) {
|
if ((proto->flags & 0x8000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x8000;
|
objectListNode->obj->flags |= OBJECT_TRANS_NONE;
|
||||||
} else {
|
} else {
|
||||||
if ((proto->flags & 0x10000) != 0) {
|
if ((proto->flags & 0x10000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x10000;
|
objectListNode->obj->flags |= OBJECT_TRANS_WALL;
|
||||||
} else if ((proto->flags & 0x20000) != 0) {
|
} else if ((proto->flags & 0x20000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x20000;
|
objectListNode->obj->flags |= OBJECT_TRANS_GLASS;
|
||||||
} else if ((proto->flags & 0x40000) != 0) {
|
} else if ((proto->flags & 0x40000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x40000;
|
objectListNode->obj->flags |= OBJECT_TRANS_STEAM;
|
||||||
} else if ((proto->flags & 0x80000) != 0) {
|
} else if ((proto->flags & 0x80000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x80000;
|
objectListNode->obj->flags |= OBJECT_TRANS_ENERGY;
|
||||||
} else if ((proto->flags & 0x4000) != 0) {
|
} else if ((proto->flags & 0x4000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x4000;
|
objectListNode->obj->flags |= OBJECT_TRANS_RED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->flags & 0x20000000) != 0) {
|
if ((proto->flags & 0x20000000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x20000000;
|
objectListNode->obj->flags |= OBJECT_LIGHT_THRU;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->flags & 0x80000000) != 0) {
|
if ((proto->flags & 0x80000000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x80000000;
|
objectListNode->obj->flags |= OBJECT_SHOOT_THRU;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->flags & 0x10000000) != 0) {
|
if ((proto->flags & 0x10000000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x10000000;
|
objectListNode->obj->flags |= OBJECT_WALL_TRANS_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->flags & 0x1000) != 0) {
|
if ((proto->flags & 0x1000) != 0) {
|
||||||
objectListNode->obj->flags |= OBJECT_FLAG_0x1000;
|
objectListNode->obj->flags |= OBJECT_NO_HIGHLIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
_obj_new_sid(objectListNode->obj, &(objectListNode->obj->sid));
|
_obj_new_sid(objectListNode->obj, &(objectListNode->obj->sid));
|
||||||
|
@ -1041,7 +1041,7 @@ int _obj_copy(Object** a1, Object* a2)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectListNode->obj->flags &= ~OBJECT_FLAG_0x2000;
|
objectListNode->obj->flags &= ~OBJECT_USED;
|
||||||
|
|
||||||
Inventory* newInventory = &(objectListNode->obj->data.inventory);
|
Inventory* newInventory = &(objectListNode->obj->data.inventory);
|
||||||
newInventory->length = 0;
|
newInventory->length = 0;
|
||||||
|
@ -1948,7 +1948,7 @@ int _obj_toggle_flat(Object* object, Rect* rect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object->flags ^= OBJECT_FLAG_0x08;
|
object->flags ^= OBJECT_FLAT;
|
||||||
|
|
||||||
_obj_insert(node);
|
_obj_insert(node);
|
||||||
objectGetRect(object, &v1);
|
objectGetRect(object, &v1);
|
||||||
|
@ -1965,7 +1965,7 @@ int _obj_toggle_flat(Object* object, Rect* rect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object->flags ^= OBJECT_FLAG_0x08;
|
object->flags ^= OBJECT_FLAT;
|
||||||
|
|
||||||
_obj_insert(node);
|
_obj_insert(node);
|
||||||
}
|
}
|
||||||
|
@ -2419,7 +2419,7 @@ Object* _obj_blocking_at(Object* a1, int tile, int elev)
|
||||||
objectListNode = gObjectListHeadByTile[neighboor];
|
objectListNode = gObjectListHeadByTile[neighboor];
|
||||||
while (objectListNode != NULL) {
|
while (objectListNode != NULL) {
|
||||||
v7 = objectListNode->obj;
|
v7 = objectListNode->obj;
|
||||||
if ((v7->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((v7->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
if (v7->elevation == elev) {
|
if (v7->elevation == elev) {
|
||||||
if ((v7->flags & OBJECT_HIDDEN) == 0 && (v7->flags & OBJECT_NO_BLOCK) == 0 && v7 != a1) {
|
if ((v7->flags & OBJECT_HIDDEN) == 0 && (v7->flags & OBJECT_NO_BLOCK) == 0 && v7 != a1) {
|
||||||
type = (v7->fid & 0xF000000) >> 24;
|
type = (v7->fid & 0xF000000) >> 24;
|
||||||
|
@ -2451,7 +2451,7 @@ Object* _obj_shoot_blocking_at(Object* obj, int tile, int elev)
|
||||||
Object* candidate = objectListItem->obj;
|
Object* candidate = objectListItem->obj;
|
||||||
if (candidate->elevation == elev) {
|
if (candidate->elevation == elev) {
|
||||||
unsigned int flags = candidate->flags;
|
unsigned int flags = candidate->flags;
|
||||||
if ((flags & OBJECT_HIDDEN) == 0 && ((flags & OBJECT_NO_BLOCK) == 0 || (flags & OBJECT_FLAG_0x80000000) == 0) && candidate != obj) {
|
if ((flags & OBJECT_HIDDEN) == 0 && ((flags & OBJECT_NO_BLOCK) == 0 || (flags & OBJECT_SHOOT_THRU) == 0) && candidate != obj) {
|
||||||
int type = (candidate->fid & 0xF000000) >> 24;
|
int type = (candidate->fid & 0xF000000) >> 24;
|
||||||
// SFALL: Fix to prevent corpses from blocking line of fire.
|
// SFALL: Fix to prevent corpses from blocking line of fire.
|
||||||
if ((type == OBJ_TYPE_CRITTER && !critterIsDead(candidate))
|
if ((type == OBJ_TYPE_CRITTER && !critterIsDead(candidate))
|
||||||
|
@ -2474,7 +2474,7 @@ Object* _obj_shoot_blocking_at(Object* obj, int tile, int elev)
|
||||||
while (objectListItem != NULL) {
|
while (objectListItem != NULL) {
|
||||||
Object* candidate = objectListItem->obj;
|
Object* candidate = objectListItem->obj;
|
||||||
unsigned int flags = candidate->flags;
|
unsigned int flags = candidate->flags;
|
||||||
if ((flags & OBJECT_FLAG_0x800) != 0) {
|
if ((flags & OBJECT_MULTIHEX) != 0) {
|
||||||
if (candidate->elevation == elev) {
|
if (candidate->elevation == elev) {
|
||||||
if ((flags & OBJECT_HIDDEN) == 0 && (flags & OBJECT_NO_BLOCK) == 0 && candidate != obj) {
|
if ((flags & OBJECT_HIDDEN) == 0 && (flags & OBJECT_NO_BLOCK) == 0 && candidate != obj) {
|
||||||
int type = (candidate->fid & 0xF000000) >> 24;
|
int type = (candidate->fid & 0xF000000) >> 24;
|
||||||
|
@ -2533,7 +2533,7 @@ Object* _obj_ai_blocking_at(Object* a1, int tile, int elevation)
|
||||||
objectListNode = gObjectListHeadByTile[candidate];
|
objectListNode = gObjectListHeadByTile[candidate];
|
||||||
while (objectListNode != NULL) {
|
while (objectListNode != NULL) {
|
||||||
Object* object = objectListNode->obj;
|
Object* object = objectListNode->obj;
|
||||||
if ((object->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((object->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
if (object->elevation == elevation) {
|
if (object->elevation == elevation) {
|
||||||
if ((object->flags & OBJECT_HIDDEN) == 0
|
if ((object->flags & OBJECT_HIDDEN) == 0
|
||||||
&& (object->flags & OBJECT_NO_BLOCK) == 0
|
&& (object->flags & OBJECT_NO_BLOCK) == 0
|
||||||
|
@ -2590,7 +2590,7 @@ Object* _obj_sight_blocking_at(Object* a1, int tile, int elevation)
|
||||||
Object* object = objectListNode->obj;
|
Object* object = objectListNode->obj;
|
||||||
if (object->elevation == elevation
|
if (object->elevation == elevation
|
||||||
&& (object->flags & OBJECT_HIDDEN) == 0
|
&& (object->flags & OBJECT_HIDDEN) == 0
|
||||||
&& (object->flags & OBJECT_FLAG_0x20000000) == 0
|
&& (object->flags & OBJECT_LIGHT_THRU) == 0
|
||||||
&& object != a1) {
|
&& object != a1) {
|
||||||
int objectType = (object->fid & 0xF000000) >> 24;
|
int objectType = (object->fid & 0xF000000) >> 24;
|
||||||
if (objectType == OBJ_TYPE_SCENERY || objectType == OBJ_TYPE_WALL) {
|
if (objectType == OBJ_TYPE_SCENERY || objectType == OBJ_TYPE_WALL) {
|
||||||
|
@ -2612,11 +2612,11 @@ int objectGetDistanceBetween(Object* object1, Object* object2)
|
||||||
|
|
||||||
int distance = tileDistanceBetween(object1->tile, object2->tile);
|
int distance = tileDistanceBetween(object1->tile, object2->tile);
|
||||||
|
|
||||||
if ((object1->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((object1->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
distance -= 1;
|
distance -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((object2->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((object2->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
distance -= 1;
|
distance -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2636,11 +2636,11 @@ int objectGetDistanceBetweenTiles(Object* object1, int tile1, Object* object2, i
|
||||||
|
|
||||||
int distance = tileDistanceBetween(tile1, tile2);
|
int distance = tileDistanceBetween(tile1, tile2);
|
||||||
|
|
||||||
if ((object1->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((object1->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
distance -= 1;
|
distance -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((object2->flags & OBJECT_FLAG_0x800) != 0) {
|
if ((object2->flags & OBJECT_MULTIHEX) != 0) {
|
||||||
distance -= 1;
|
distance -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2869,7 +2869,7 @@ int objectSetOutline(Object* obj, int outlineType, Rect* rect)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((obj->flags & OBJECT_FLAG_0x1000) != 0) {
|
if ((obj->flags & OBJECT_NO_HIGHLIGHT) != 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2951,7 +2951,7 @@ int _obj_intersects_with(Object* object, int x, int y)
|
||||||
flags |= 0x01;
|
flags |= 0x01;
|
||||||
|
|
||||||
if ((object->flags & OBJECT_FLAG_0xFC000) != 0) {
|
if ((object->flags & OBJECT_FLAG_0xFC000) != 0) {
|
||||||
if ((object->flags & OBJECT_FLAG_0x8000) == 0) {
|
if ((object->flags & OBJECT_TRANS_NONE) == 0) {
|
||||||
flags &= ~0x03;
|
flags &= ~0x03;
|
||||||
flags |= 0x02;
|
flags |= 0x02;
|
||||||
}
|
}
|
||||||
|
@ -3100,7 +3100,7 @@ void _obj_process_seen()
|
||||||
if (v5 < 40000) {
|
if (v5 < 40000) {
|
||||||
for (obj_entry = gObjectListHeadByTile[v5]; obj_entry != NULL; obj_entry = obj_entry->next) {
|
for (obj_entry = gObjectListHeadByTile[v5]; obj_entry != NULL; obj_entry = obj_entry->next) {
|
||||||
if (obj_entry->obj->elevation == gDude->elevation) {
|
if (obj_entry->obj->elevation == gDude->elevation) {
|
||||||
obj_entry->obj->flags |= OBJECT_FLAG_0x40000000;
|
obj_entry->obj->flags |= OBJECT_SEEN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3856,11 +3856,11 @@ void _obj_insert(ObjectListNode* objectListNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj->elevation == objectListNode->obj->elevation) {
|
if (obj->elevation == objectListNode->obj->elevation) {
|
||||||
if ((obj->flags & OBJECT_FLAG_0x08) == 0 && (objectListNode->obj->flags & OBJECT_FLAG_0x08) != 0) {
|
if ((obj->flags & OBJECT_FLAT) == 0 && (objectListNode->obj->flags & OBJECT_FLAT) != 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((obj->flags & OBJECT_FLAG_0x08) == (objectListNode->obj->flags & OBJECT_FLAG_0x08)) {
|
if ((obj->flags & OBJECT_FLAT) == (objectListNode->obj->flags & OBJECT_FLAT)) {
|
||||||
bool v11 = false;
|
bool v11 = false;
|
||||||
CacheEntry* a2;
|
CacheEntry* a2;
|
||||||
Art* v12 = artLock(obj->fid, &a2);
|
Art* v12 = artLock(obj->fid, &a2);
|
||||||
|
@ -4553,10 +4553,10 @@ int _obj_adjust_light(Object* obj, int a2, Rect* rect)
|
||||||
objectGetRect(objectListNode->obj, &v29);
|
objectGetRect(objectListNode->obj, &v29);
|
||||||
rectUnion(&objectRect, &v29, &objectRect);
|
rectUnion(&objectRect, &v29, &objectRect);
|
||||||
|
|
||||||
v14 = (objectListNode->obj->flags & OBJECT_FLAG_0x20000000) == 0;
|
v14 = (objectListNode->obj->flags & OBJECT_LIGHT_THRU) == 0;
|
||||||
|
|
||||||
if ((objectListNode->obj->fid & 0xF000000) >> 24 == OBJ_TYPE_WALL) {
|
if ((objectListNode->obj->fid & 0xF000000) >> 24 == OBJ_TYPE_WALL) {
|
||||||
if ((objectListNode->obj->flags & OBJECT_FLAG_0x08) == 0) {
|
if ((objectListNode->obj->flags & OBJECT_FLAT) == 0) {
|
||||||
Proto* proto;
|
Proto* proto;
|
||||||
protoGetProto(objectListNode->obj->pid, &proto);
|
protoGetProto(objectListNode->obj->pid, &proto);
|
||||||
if ((proto->wall.extendedFlags & 0x8000000) != 0 || (proto->wall.extendedFlags & 0x40000000) != 0) {
|
if ((proto->wall.extendedFlags & 0x8000000) != 0 || (proto->wall.extendedFlags & 0x40000000) != 0) {
|
||||||
|
@ -4964,7 +4964,7 @@ void _obj_render_object(Object* object, Rect* rect, int light)
|
||||||
v17 = tileIsInFrontOf(object->tile, gDude->tile);
|
v17 = tileIsInFrontOf(object->tile, gDude->tile);
|
||||||
if (!v17
|
if (!v17
|
||||||
|| !tileIsToRightOf(object->tile, gDude->tile)
|
|| !tileIsToRightOf(object->tile, gDude->tile)
|
||||||
|| (object->flags & OBJECT_FLAG_0x10000000) == 0) {
|
|| (object->flags & OBJECT_WALL_TRANS_END) == 0) {
|
||||||
// nothing
|
// nothing
|
||||||
} else {
|
} else {
|
||||||
v17 = false;
|
v17 = false;
|
||||||
|
@ -4980,7 +4980,7 @@ void _obj_render_object(Object* object, Rect* rect, int light)
|
||||||
v17 = tileIsToRightOf(gDude->tile, object->tile);
|
v17 = tileIsToRightOf(gDude->tile, object->tile);
|
||||||
if (v17
|
if (v17
|
||||||
&& tileIsInFrontOf(gDude->tile, object->tile)
|
&& tileIsInFrontOf(gDude->tile, object->tile)
|
||||||
&& (object->flags & OBJECT_FLAG_0x10000000) != 0) {
|
&& (object->flags & OBJECT_WALL_TRANS_END) != 0) {
|
||||||
v17 = 0;
|
v17 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5071,19 +5071,19 @@ void _obj_render_object(Object* object, Rect* rect, int light)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (object->flags & OBJECT_FLAG_0xFC000) {
|
switch (object->flags & OBJECT_FLAG_0xFC000) {
|
||||||
case OBJECT_FLAG_0x4000:
|
case OBJECT_TRANS_RED:
|
||||||
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _redBlendTable, _commonGrayTable);
|
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _redBlendTable, _commonGrayTable);
|
||||||
break;
|
break;
|
||||||
case OBJECT_FLAG_0x10000:
|
case OBJECT_TRANS_WALL:
|
||||||
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, 0x10000, _wallBlendTable, _commonGrayTable);
|
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, 0x10000, _wallBlendTable, _commonGrayTable);
|
||||||
break;
|
break;
|
||||||
case OBJECT_FLAG_0x20000:
|
case OBJECT_TRANS_GLASS:
|
||||||
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _glassBlendTable, _glassGrayTable);
|
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _glassBlendTable, _glassGrayTable);
|
||||||
break;
|
break;
|
||||||
case OBJECT_FLAG_0x40000:
|
case OBJECT_TRANS_STEAM:
|
||||||
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _steamBlendTable, _commonGrayTable);
|
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _steamBlendTable, _commonGrayTable);
|
||||||
break;
|
break;
|
||||||
case OBJECT_FLAG_0x80000:
|
case OBJECT_TRANS_ENERGY:
|
||||||
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _energyBlendTable, _commonGrayTable);
|
_dark_translucent_trans_buf_to_buf(src, objectWidth, objectHeight, frameWidth, gObjectsWindowBuffer, objectRect.left, objectRect.top, gObjectsWindowPitch, light, _energyBlendTable, _commonGrayTable);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -777,7 +777,7 @@ int _proto_dude_init(const char* path)
|
||||||
_proto_dude_update_gender();
|
_proto_dude_update_gender();
|
||||||
_inven_reset_dude();
|
_inven_reset_dude();
|
||||||
|
|
||||||
if ((gDude->flags & OBJECT_FLAG_0x08) != 0) {
|
if ((gDude->flags & OBJECT_FLAT) != 0) {
|
||||||
_obj_toggle_flat(gDude, NULL);
|
_obj_toggle_flat(gDude, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -796,7 +796,7 @@ int _obj_use_flare(Object* critter_obj, Object* flare)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((flare->flags & OBJECT_FLAG_0x2000) != 0) {
|
if ((flare->flags & OBJECT_USED) != 0) {
|
||||||
if (critter_obj == gDude) {
|
if (critter_obj == gDude) {
|
||||||
// The flare is already lit.
|
// The flare is already lit.
|
||||||
messageListItem.num = 588;
|
messageListItem.num = 588;
|
||||||
|
@ -854,7 +854,7 @@ int _obj_use_explosive(Object* explosive)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((explosive->flags & OBJECT_FLAG_0x2000) != 0) {
|
if ((explosive->flags & OBJECT_USED) != 0) {
|
||||||
// The timer is already ticking.
|
// The timer is already ticking.
|
||||||
messageListItem.num = 590;
|
messageListItem.num = 590;
|
||||||
if (messageListGetItem(&gProtoMessageList, &messageListItem)) {
|
if (messageListGetItem(&gProtoMessageList, &messageListItem)) {
|
||||||
|
|
|
@ -232,7 +232,7 @@ int queueAddEvent(int delay, Object* obj, void* data, int eventType)
|
||||||
newQueueListNode->data = data;
|
newQueueListNode->data = data;
|
||||||
|
|
||||||
if (obj != NULL) {
|
if (obj != NULL) {
|
||||||
obj->flags |= OBJECT_FLAG_0x2000;
|
obj->flags |= OBJECT_USED;
|
||||||
}
|
}
|
||||||
|
|
||||||
QueueListNode** v3 = &gQueueListHead;
|
QueueListNode** v3 = &gQueueListHead;
|
||||||
|
|
|
@ -2425,7 +2425,7 @@ bool scriptsExecSpatialProc(Object* object, int tile, int elevation)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((object->flags & OBJECT_HIDDEN) != 0 || (object->flags & OBJECT_FLAG_0x08) != 0) {
|
if ((object->flags & OBJECT_HIDDEN) != 0 || (object->flags & OBJECT_FLAT) != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue