Mercurial > mm7
changeset 1053:1c10b24a4159
BLV picky-blicky
author | Nomad |
---|---|
date | Thu, 23 May 2013 19:03:36 +0200 |
parents | d48c762de563 |
children | 0e0f1192aa57 |
files | Events.cpp Indoor.h Party.h Vis.cpp mm7_3.cpp |
diffstat | 5 files changed, 34 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/Events.cpp Thu May 23 18:26:05 2013 +0200 +++ b/Events.cpp Thu May 23 19:03:36 2013 +0200 @@ -165,8 +165,23 @@ [3] Gold Fountain used this week [4] Gold Fountain total uses + +Emerald Isle #110 // Fire Resistance fountain +0 LocationName +0 if (Player.FireResistance < 50) + { +1 Set(Player.FireResistance, 50) +2 SetFooterString(22) // +50 Fire Resistance (temporarily) +3 Add(Party.Autonotes, 2) +4 goto return + } +5 SetFooterString(11) // Refreshing! +6 return + + + Emerald Isle #111 // ??? - OnLongTimer + Initialize Set(Map.Variables[0], 30) Set(Map.Variables[1], 30) @@ -203,7 +218,7 @@ 0 LocationName 0 if (Map.Variables[4] < 3) { -1 if (Map.Variables[3] == 1) +1 if (Map.Variables[3] == 0) { 2 if (Party.Gold < 201) { @@ -233,7 +248,7 @@ Emerald Isle #220 // day timer - monster spawner 0 LocationName -0 OnLongTimer +0 Initialize 1 if (NumAliveActors(group=20) != 0) 2 return 3 SpawnMonsters(1, level=1, count=10, x=-336, y=14512, z=0, group=20)
--- a/Indoor.h Thu May 23 18:26:05 2013 +0200 +++ b/Indoor.h Thu May 23 19:03:36 2013 +0200 @@ -264,6 +264,7 @@ #define FACE_CLICKABLE 0x02000000 // Event can be triggered by clicking on the facet. #define FACE_PRESSURE_PLATE 0x04000000 // Event can be triggered by stepping on the facet. #define FACE_ETHEREAL 0x20000000 // Untouchable. You can pass through it. +#define FACE_PICKED 0x80000000 /* 93 */ #pragma pack(push, 1)
--- a/Party.h Thu May 23 18:26:05 2013 +0200 +++ b/Party.h Thu May 23 19:03:36 2013 +0200 @@ -6,7 +6,7 @@ - +#define PARTY_AUTONOTES_BIT__EMERALD_FIRE_FOUNTAIN 2 enum PARTY_QUEST_BITS: unsigned __int32 {
--- a/Vis.cpp Thu May 23 18:26:05 2013 +0200 +++ b/Vis.cpp Thu May 23 19:03:36 2013 +0200 @@ -323,11 +323,12 @@ { if ( pFaceID < (signed int)pIndoor->uNumFaces ) { - if ( is_part_of_selection(&pIndoor->pFaces[pFaceID], filter) ) + auto face = pIndoor->pFaces + pFaceID; + if ( is_part_of_selection(face, filter) ) { - if ( !pGame->pIndoorCameraD3D->IsCulled(&pIndoor->pFaces[pFaceID]) ) + if ( !pGame->pIndoorCameraD3D->IsCulled(face) ) { - if ( Intersect_Ray_Face(pRay, pRay + 1, &fDepth, &a1, &pIndoor->pFaces[pFaceID], 0xFFFFFFFFu) ) + if ( Intersect_Ray_Face(pRay, pRay + 1, &fDepth, &a1, face, 0xFFFFFFFFu) ) { pGame->pIndoorCameraD3D->ViewTransform(&a1, 1); v9 = fixpoint_from_float(/*v8, */a1.vWorldViewPosition.x); @@ -346,6 +347,12 @@ } } } + + if (face->uAttributes & FACE_PICKED) + face->uAttributes |= FACE_OUTLINED; + else + face->uAttributes &= ~FACE_OUTLINED; + face->uAttributes &= ~FACE_PICKED; } } v5 = v17 + 1; @@ -388,10 +395,11 @@ list->AddObject(face, VisObjectType_Face, v13); } - if (blv_face.uAttributes & 0x80000000) + if (blv_face.uAttributes & FACE_PICKED) face->uAttributes |= FACE_OUTLINED; else face->uAttributes &= ~FACE_OUTLINED; + blv_face.uAttributes &= ~FACE_PICKED; } } } @@ -613,8 +621,6 @@ IntersectPoint.z < pFace->pBounding.z1 || IntersectPoint.z > pFace->pBounding.z2 ) return false; - pFace->uAttributes |= 0x80000000; - if (uModelID != -1) ODM_CreateIntersectFacesVertexCoordList(&a, &b, intersect_face_vertex_coords_list_a, intersect_face_vertex_coords_list_b, &IntersectPoint, pFace, uModelID); @@ -659,6 +665,8 @@ if ( v16 != 1 ) return false; + + pFace->uAttributes |= FACE_PICKED; return true; /* int v5; // esi@10
--- a/mm7_3.cpp Thu May 23 18:26:05 2013 +0200 +++ b/mm7_3.cpp Thu May 23 19:03:36 2013 +0200 @@ -1611,10 +1611,6 @@ } } - for (uint i = 0; i < pIndoor->uNumFaces; ++i) - pIndoor->pFaces[i].uAttributes &= ~FACE_OUTLINED; - pIndoor->pFaces[uFaceID].uAttributes |= FACE_OUTLINED; - blv_prev_party_x = pParty->vPosition.x; blv_prev_party_z = pParty->vPosition.y; blv_prev_party_y = pParty->vPosition.z;