From f375729a5ee1f40123c745746e6e5358c474546a Mon Sep 17 00:00:00 2001 From: Flugente Date: Mon, 14 May 2018 21:22:43 +0000 Subject: [PATCH] New feature: quest & intel map overlay For more info, see http://thepit.ja-galaxy-forum.com/index.php?t=msg&th=23742&goto=353499&#msg_353499 git-svn-id: https://ja2svn.mooo.com/source/ja2_v1.13_data@2424 4f8fa57e-7814-0410-bad4-adc449f26b7c --- Data-1.13/Scripts/strategicmap.lua | 291 +++++++++++++++++++++++++- Data/Interface/IntelMapSymbols.sti | Bin 0 -> 4318 bytes Data/Interface/MAP_BORDER_BUTTONS.STI | Bin 43330 -> 44434 bytes 3 files changed, 282 insertions(+), 9 deletions(-) create mode 100644 Data/Interface/IntelMapSymbols.sti diff --git a/Data-1.13/Scripts/strategicmap.lua b/Data-1.13/Scripts/strategicmap.lua index 54a9738c7..22274a0fa 100644 --- a/Data-1.13/Scripts/strategicmap.lua +++ b/Data-1.13/Scripts/strategicmap.lua @@ -74,6 +74,10 @@ Quests = } Facts = { + FACT_JOEY_ESCORTED = 108, + FACT_MARIA_ESCORTED = 116, + FACT_ANGEL_LEFT_DEED = 120, + FACT_CHALICE_STOLEN = 184, FACT_MUSEUM_ALARM_WENT_OFF = 278, FACT_KINGPIN_KNOWS_MONEY_GONE = 103, FACT_KINGPIN_DEAD = 308, @@ -167,20 +171,29 @@ History = { } Profil = -{ - MARIA = 88, - ANGEL = 89, - ELLIOT = 135, - CONRAD = 70, - CARMEN = 78, - KINGPIN = 86, - MADLAB = 146, - ROBOT = 62, +{ MIGUEL = 57, CARLOS = 58, IRA = 59, DIMITRI = 60, + ROBOT = 62, + DYNAMO = 66, + SHANK = 67, + CONRAD = 70, + DARREL = 73, + QUEEN = 75, + CARMEN = 78, + KINGPIN = 86, + MARIA = 88, + ANGEL = 89, KYLE = 95, + FATIMA = 101, + YANNI = 108, + MARTHA = 109, + JAKE = 113, + ELDIN = 127, + ELLIOT = 135, + MADLAB = 146, } SoldierClass = @@ -769,3 +782,263 @@ function HandleSectorTacticalEntry( sSectorX, sSectorY, bSectorZ, fHasEverBeenPl end + +-- these colours can be used in the map +-- if you want to know how they look, test them on the map +-- if you want more colours, check whether you feel lucky and ask a coder +MapColour = { + MAP_SHADE_BLACK = 0, + + MAP_SHADE_LT_GREEN = 1, + MAP_SHADE_MD_GREEN = 2, + MAP_SHADE_DK_GREEN = 3, + + MAP_SHADE_LT_RED = 4, + MAP_SHADE_MD_RED = 5, + MAP_SHADE_DK_RED = 6, + + MAP_SHADE_LT_YELLOW = 7, + MAP_SHADE_MD_YELLOW = 8, + MAP_SHADE_DK_YELLOW = 9, + + MAP_SHADE_LT_CYAN = 10, + MAP_SHADE_MD_CYAN = 11, + MAP_SHADE_DK_CYAN = 12, + + MAP_SHADE_LT_GREY = 13, + MAP_SHADE_MD_GREY = 14, + MAP_SHADE_DK_GREY = 15, + + MAP_SHADE_LT_BLUE = 16, + MAP_SHADE_MD_BLUE = 17, + MAP_SHADE_DK_BLUE = 18, + + MAP_SHADE_LT_PINK = 19, + MAP_SHADE_ORANGE = 20, + + MAP_SHADE_MIX_RED = 21, + MAP_SHADE_MIX_GREEN = 22, + MAP_SHADE_MIX_BLUE = 23, + MAP_SHADE_MIX_YELLOW = 24, + + MAP_SHADE_MIX_RED_GREEN = 25, + MAP_SHADE_MIX_RED_BLUE = 26, + MAP_SHADE_MIX_RED_YELLOW = 27, + MAP_SHADE_MIX_GREEN_BLUE = 28, + MAP_SHADE_MIX_GREEN_YELLOW = 29, + MAP_SHADE_MIX_BLUE_YELLOW = 30, + + MAP_SHADE_MIX_RED_GREEN_BLUE = 31, + MAP_SHADE_MIX_RED_GREEN_YELLOW = 32, + MAP_SHADE_MIX_RED_BLUE_YELLOW = 33, + + MAP_SHADE_MIX_GREEN_BLUE_YELLOW = 34, + MAP_SHADE_MIX_RED_GREEN_BLUE_YELLOW = 35, +} + + +-- These symbols are stored in Interface/IntelMapSymbols.sti +-- if you want more symbols, add them +MapSymbols = { + BLOODCAT_ATTACK = 0, + ZOMBIE_ATTACK = 1, + BANDIT_ATTACK = 2, + TERRORIST_LOCATION = 3, + CHALICE = 4, + ASSASSINATION_TARGET = 5, + HELI = 6, + PRISON = 7, + CHURCH = 8, + RECRUITMENT = 9, + FLAG = 10, + QUESTIONMARK_BLUE = 11, -- sector might be relevant for a quest + EXCLAMATIONMARK_BLUE = 12, -- sector is definetely relevant for a quest + QUESTIONMARK_GREEN = 13, -- alternate colours for other uses? + EXCLAMATIONMARK_GREEN = 14, + QUESTIONMARK_RED = 15, + EXCLAMATIONMARK_RED = 16, + QUESTIONMARK_YELLOW = 17, + EXCLAMATIONMARK_YELLOW = 18, +} + +-- this function allows us to data for the intel/quest map +-- aLevel is the world level (0: surface) +-- set data by using SetIntelAndQuestMapDataForSector(sectorx, sextory, MapColour, symbol, text for description window, short text for map) +function GetIntelAndQuestMapData( aLevel ) + + -- surface + if ( aLevel == 0 ) then + + -- mark sectors related to quests + if ( gubQuest( Quests.QUEST_DELIVER_LETTER ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.FATIMA), GetCharacterSectorY(Profil.FATIMA), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Deliver letter to rebels", "") + + end + + if ( gubQuest( Quests.QUEST_FOOD_ROUTE ) == qStatus.QUESTINPROGRESS ) then + + -- list possible locations of Father Walker + SetIntelAndQuestMapDataForSector(13, 3, -1, MapSymbols.CHURCH, "Find Father Walker", "") + SetIntelAndQuestMapDataForSector(13, 4, -1, MapSymbols.CHURCH, "Find Father Walker", "") + + end + + if ( gubQuest( Quests.QUEST_KINGPIN_IDOL ) == qStatus.QUESTINPROGRESS ) then + + if ( (CheckFact( Facts.FACT_CHALICE_STOLEN, 0 ) == true) ) then + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.KINGPIN), GetCharacterSectorY(Profil.KINGPIN), -1, MapSymbols.CHALICE, "Return chalice to Kingpin", "") + else + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.ELDIN), GetCharacterSectorY(Profil.ELDIN), -1, MapSymbols.CHALICE, "Steal Chalice from museum", "") + end + + end + + if ( gubQuest( Quests.QUEST_KINGPIN_MONEY ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.KINGPIN), GetCharacterSectorY(Profil.KINGPIN), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Return money to Kingpin", "") + + end + + if ( gubQuest( Quests.QUEST_RUNAWAY_JOEY ) == qStatus.QUESTINPROGRESS ) then + + if ( (CheckFact( Facts.FACT_JOEY_ESCORTED, 0 ) == true) ) then + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.MARTHA), GetCharacterSectorY(Profil.MARTHA), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Return Joey to Martha", "") + else + -- we list all locations Martha mentions... even though he will never be present at some of them. Misdirection! + SetIntelAndQuestMapDataForSector(6, 9, -1, MapSymbols.QUESTIONMARK_BLUE, "Find Joey", "") + SetIntelAndQuestMapDataForSector(2, 1, -1, MapSymbols.QUESTIONMARK_BLUE, "Find Joey", "") + SetIntelAndQuestMapDataForSector(5, 3, -1, MapSymbols.QUESTIONMARK_BLUE, "Find Joey", "") + SetIntelAndQuestMapDataForSector(6, 3, -1, MapSymbols.QUESTIONMARK_BLUE, "Find Joey", "") + SetIntelAndQuestMapDataForSector(5, 4, -1, MapSymbols.QUESTIONMARK_BLUE, "Find Joey", "") + SetIntelAndQuestMapDataForSector(4, 4, -1, MapSymbols.QUESTIONMARK_BLUE, "Find Joey", "") + end + + end + + if ( gubQuest( Quests.QUEST_RESCUE_MARIA ) == qStatus.QUESTINPROGRESS ) then + + if ( (CheckFact( Facts.FACT_MARIA_ESCORTED, 0 ) == true) ) then + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.ANGEL), GetCharacterSectorY(Profil.ANGEL), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Return Maria to Angel", "") + else + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.MARIA), GetCharacterSectorY(Profil.MARIA), -1, MapSymbols.PRISON, "Free Maria", "") + end + + end + + if ( gubQuest( Quests.QUEST_CHITZENA_IDOL ) == qStatus.QUESTINPROGRESS ) then + + if ( (CheckFact( Facts.FACT_CHALICE_STOLEN, 0 ) == true) ) then + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.YANNI), GetCharacterSectorY(Profil.YANNI), -1, MapSymbols.CHALICE, "Return chalice to Yanni", "") + else + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.ELDIN), GetCharacterSectorY(Profil.ELDIN), -1, MapSymbols.CHALICE, "Steal Chalice from museum", "") + end + + end + + if ( gubQuest( Quests.QUEST_ARMY_FARM ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.DARREL), GetCharacterSectorY(Profil.DARREL), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Pacify the Hicks clan", "") + + end + + if ( gubQuest( Quests.QUEST_FIND_SCIENTIST ) == qStatus.QUESTINPROGRESS ) then + + -- list all possible sectors where Madlab might hide + SetIntelAndQuestMapDataForSector(7, 8, -1, MapSymbols.QUESTIONMARK_BLUE, "Find scientist", "") + SetIntelAndQuestMapDataForSector(16, 8, -1, MapSymbols.QUESTIONMARK_BLUE, "Find scientist", "") + SetIntelAndQuestMapDataForSector(11, 9, -1, MapSymbols.QUESTIONMARK_BLUE, "Find scientist", "") + SetIntelAndQuestMapDataForSector(4, 5, -1, MapSymbols.QUESTIONMARK_BLUE, "Find scientist", "") + + end + + if ( gubQuest( Quests.QUEST_DELIVER_VIDEO_CAMERA ) == qStatus.QUESTINPROGRESS ) then + + -- list all possible sectors where Madlab might hide + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.MADLAB), GetCharacterSectorY(Profil.MADLAB), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Give gun & camera to Madlab", "") + + end + + if ( gubQuest( Quests.QUEST_BLOODCATS ) == qStatus.QUESTINPROGRESS ) then + + -- Annie only mentions that the bloodcat nest is 'east of her house', so we are rather liberal with hints here + SetIntelAndQuestMapDataForSector(15, 8, -1, MapSymbols.QUESTIONMARK_BLUE, "Destroy bloodcat nest", "") + SetIntelAndQuestMapDataForSector(16, 8, -1, MapSymbols.QUESTIONMARK_BLUE, "Destroy bloodcat nest", "") + SetIntelAndQuestMapDataForSector(15, 9, -1, MapSymbols.QUESTIONMARK_BLUE, "Destroy bloodcat nest", "") + SetIntelAndQuestMapDataForSector(16, 9, -1, MapSymbols.QUESTIONMARK_BLUE, "Destroy bloodcat nest", "") + SetIntelAndQuestMapDataForSector(15, 10, -1, MapSymbols.QUESTIONMARK_BLUE, "Destroy bloodcat nest", "") + + end + + if ( gubQuest( Quests.QUEST_CHOPPER_PILOT ) == qStatus.QUESTINPROGRESS ) then + + -- list all possible sectors where Skyrider might hide + SetIntelAndQuestMapDataForSector(15, 2, -1, MapSymbols.QUESTIONMARK_BLUE, "Find chopper pilot", "") + SetIntelAndQuestMapDataForSector(14, 5, -1, MapSymbols.QUESTIONMARK_BLUE, "Find chopper pilot", "") + SetIntelAndQuestMapDataForSector(12, 4, -1, MapSymbols.QUESTIONMARK_BLUE, "Find chopper pilot", "") + SetIntelAndQuestMapDataForSector(16, 3, -1, MapSymbols.QUESTIONMARK_BLUE, "Find chopper pilot", "") + + end + + if ( gubQuest( Quests.QUEST_ESCORT_SKYRIDER ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(13, 2, -1, MapSymbols.HELI, "Escort Skyrider here", "") + + end + + if ( gubQuest( Quests.QUEST_FREE_DYNAMO ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.DYNAMO), GetCharacterSectorY(Profil.DYNAMO), -1, MapSymbols.PRISON, "Free Dynamo", "") + + end + + if ( gubQuest( Quests.QUEST_ESCORT_TOURISTS ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(13, 2, -1, MapSymbols.HELI, "Escort John & Mary here", "") + + end + + if ( gubQuest( Quests.QUEST_FREE_CHILDREN ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(13, 3, -1, MapSymbols.PRISON, "Free factory children", "") + + end + + if ( gubQuest( Quests.QUEST_LEATHER_SHOP_DREAM ) == qStatus.QUESTINPROGRESS ) then + + if ( (CheckFact( Facts.FACT_ANGEL_LEFT_DEED, 0 ) == true) ) then + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.KYLE), GetCharacterSectorY(Profil.KYLE), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Give deed to Kyle", "") + else + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.ANGEL), GetCharacterSectorY(Profil.ANGEL), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Get deed from Angel", "") + end + + end + + if ( gubQuest( Quests.QUEST_ESCORT_SHANK ) == qStatus.QUESTINPROGRESS ) then + + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.JAKE), GetCharacterSectorY(Profil.JAKE), -1, MapSymbols.EXCLAMATIONMARK_BLUE, "Escort Shank to Jake", "") + + end + + if ( not (gubQuest( Quests.QUEST_KILL_DEIDRANNA ) == qStatus.QUESTDONE) ) then + + SetIntelAndQuestMapDataForSector(GetCharacterSectorX(Profil.QUEEN), GetCharacterSectorY(Profil.QUEEN), -1, MapSymbols.ASSASSINATION_TARGET, "Kill Deidranna", "") + + end + + if ( gubQuest( Quests.QUEST_KINGPIN_ANGEL_MARIA ) == qStatus.QUESTINPROGRESS ) then + + -- list all possible sectors where Maria & Angel might hide + SetIntelAndQuestMapDataForSector(11, 1, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(5, 2, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(6, 2, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(8, 2, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(12, 2, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(14, 2, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(3, 3, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + SetIntelAndQuestMapDataForSector(7, 4, -1, MapSymbols.QUESTIONMARK_BLUE, "Kill or protect Angel & Maria", "") + + end + + end +end diff --git a/Data/Interface/IntelMapSymbols.sti b/Data/Interface/IntelMapSymbols.sti new file mode 100644 index 0000000000000000000000000000000000000000..4d24d886cf373dcf3305f681f5c155fefd343e3f GIT binary patch literal 4318 zcmc&#yN)A86uo7;J+s{d`(TU^2{VpRIoM!^lmrP0iHt6ZhyaOnLqb=#?Rl^xq)8U> z1q2oF2lEF*cAId8_zi;Qoa*jz+v8b48&I~p?zxY1Z{4bLf0cjsgzxhG zsOsVkoo7)_#TATjm31`|%v?U> zl8_0*I~SZ&=L+wFca?WF(ibi-xM0))vkxu=r@xKK6fEyx!tA8OQ9guLJ;Ar5v}Ff@b$KMj?J z8V#*NUhz0s?zVdFr>bbdW@}}&wrXdZ&(K%3?3{Y`M%8J-!nN{Rd&S1&@f=`#PzV-- z92&IXLo3x0QCVv6HYVi|E<$5Uc zy2a1rsk|6%@{JRbuiJc2<(Ygl7Fpf#rSd0m(c%MnEZ^>leA(i6WKVtt?$`G@E_ENj z-ooEM+O)r$ZsK3I@Tb|P{r4@r+{;XwWtn*;<)KL-o}6TOrWC1vDdqbV#wReeW1LaE zln>IVf@PdhcS5J}>1lQ$AD%oX33QnSXZ9StFu}u|$q0$e;t(+;f+_l)o;=RdGdVwu zS(^OhM_h`ai$kbTR%-a6n)6C7hsLBY$5;hy5vJ)?!X;!x5P;Im09}l@sFx#hmr-F% zImps0cs*YXL0uvOkynH4WCh+#E{0~DT@6w2gYnlHk=*HW`=(5uAXJWe(6#cdr@G&`l8WA^Obf6lI1|P#BV99A);2YG|I1( zuu=oxQYf79AyHRGLl@CktsN16!O+Ec9tZYrzmewiQqoB)A0Iza@-CUX^cHqn;U^U4K-NtuCI0O;8kEbpvZ`(Iwd&J$2F%R;V-M+ye`|${L zOcATfu!LAH=A|qNqp=U8jyu`AIP7eDagMJEu8*4o+Cv9Qb+jGx;sC{g$X)2p6GyU( zyT{1`N=N4I>UlPq9335D7uV0;QEZRr^x6{T2XyP^wGp_7r>Cbl6r+=kxqJlJ3`uF) zA@AXRu^F|^@{f232K-46r_<@nZn_#wrwcLDlG@TtS6g^7h90BmvP0EGHCzjj876pO zHr2Td(V8W8a}P7e4#89ldX+-|hko686HBfjCBD} zL3E&y;1`V%wP4B)k%1NjZXwh~HAlvzH<4w8WWP6*s_@CbP zD@oWdz}PPUDu@p7&kqna>`8nN(42HAf_n&cMOQjDoDByN`xWUQ=obU;>WZ1~b2OFg z&iy9a+tk&)Q^3)@rtpf1Yr{K>3Zm|PMh!c}m}tI3w5)9%ikvjuadu%%zasqu{fa@& V`GOc3+q%}Msie#H@6ms)>u(GVyLSKp literal 0 HcmV?d00001 diff --git a/Data/Interface/MAP_BORDER_BUTTONS.STI b/Data/Interface/MAP_BORDER_BUTTONS.STI index 481bc3e3bc58fa109264f6f982ec969230c81f60..5db92098823d77094ea31ffb2430ced5d5b69b5e 100644 GIT binary patch delta 1420 zcmcJNy-or_5XbjEKqaV!7;;hcsMKfB&dS0VSKq+Whd3h%M`EKcA+a!;$i+%T;l#>- zk6`RVt01-cmMy~?!Lb1=O21uZ+~-(HBI(<%P3Z1>}y9l(->QO zDBPs<ho&q9fL!N;^m?Nx#*TGhpIH-RuJ_Xv$KX=;2x%GrgGbhh-f3qIPYFC z+mISkVMxVqFgxv7q!%N|iHe-xBQi0L=v1K*Q!2}^lKfNHYQjX?I0!e|V3Wpd6oPgC z3~aLFh^o)*%(ukK3g^$zh@lN>9ENK|?wUW^bi!jz^cpSDCQT=j{2RFMUM+|Bjg}aY zs@!`~#<4Q)D}Z}&6(`a~XBZiD(e0VmYjda2$NJ^ZRmu4}; z?)e#XWNBizl*7l|dM}$=s)Zqnm4!*lU^uT>8I{A9R>@~^xekG|=)3bXsvt`PH|I!1 zVK_r*8nf$lN@DEc|5)V delta 50 zcmbPqo9WOcCfVQ+XHSL=EDTMH8NfgTNIqa}U}9ioV9?koyO?$J1=bt$H*3sY#S8#p CqYixl