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;