From 1690e19f9c2d3f7e75930f2926634079e7604eef Mon Sep 17 00:00:00 2001 From: Flugente Date: Sat, 13 Jun 2015 17:18:29 +0000 Subject: [PATCH] - New Quest: if Kingpin is unaware Maria escaped with the player's help, he enlists the player to kill the DaSilvas - Moved civ factions for mod compatibility (UC) git-svn-id: https://ja2svn.mooo.com/source/ja2_v1.13_data@2252 4f8fa57e-7814-0410-bad4-adc449f26b7c --- Data-1.13/BinaryData/EMAIL.EDT | Bin 151683 -> 165772 bytes Data-1.13/BinaryData/QUESTS.EDT | Bin 0 -> 8643 bytes Data-1.13/Scripts/Quests.lua | 158 +++++++++++++++++- Data-1.13/Scripts/strategicmap.lua | 86 +++++++++- Data-1.13/TableData/CivGroupNames.xml | 29 ++-- .../TableData/Email/EmailSenderNameList.xml | 2 +- Data/NPCData/civ58.edt | Bin 4800 -> 4800 bytes Data/NPCData/civ60.edt | Bin 4800 -> 4800 bytes Data/NPCData/civ61.edt | Bin 4800 -> 4800 bytes 9 files changed, 252 insertions(+), 23 deletions(-) create mode 100644 Data-1.13/BinaryData/QUESTS.EDT diff --git a/Data-1.13/BinaryData/EMAIL.EDT b/Data-1.13/BinaryData/EMAIL.EDT index d0bcf49ba6c13d121bce1da6d9766f25a6317154..a56e21531bb2451271e34b19104e0b32a5d4df00 100644 GIT binary patch delta 3423 zcmds)O>9(U6o$V$R0+k3P%0>CI`t1qL^LD>V$|4#5K&5vkPuxU)9LgFrZeMA+p(J| z(YP=s&2WQvrG^9&H!diP?p?Y;HY`{)VQFGaWarNJIp==17+tuPhI{Y#cYfaUo^!tW z?E1E^R(h8|Pi_>(2Hy?!FcFGjJT&xI56v(i7D6q|>b-P(=erYy;jyr!4W-c1UpSuo3wH+Z^A}?a!%Uhz+Np?bzIwXv-J0H8fK-$&(sI3FvFeKdhD&9hq3s0Vd)$V8r>F zRu1WF!mus|OoJI7$F|NOp7n~EK5FNdw7#I(7&V|QNf{bk9&&uO7KYt=P{IqWboDWk zlUeOya%Ic8P|vpCO`h+(ZoAr2f-$p(aMgsHKZePuc~>#xpdyZq$q4)=nkV!;tM97f z%@`b61wGJN%H=Ua57vqPtY_7m$)4=zqlKQ%Ipd6{jGx60k^wps=UHiv`~Va@Wb81) zAR>%r*ybz5liY-lP1`%FH<2uB1@-}7JCycnF+v8#i&BP}li9_)$(|7pA3NdrWjnbV z_!mQ)ucgD^|Kf>4W=)w|Gdlb3ox)HD&!kN@I6c6_8CEewU}rf;sAdFM5c4)ik`h4e z0Y%J=oW_6raoTvQPa58l(@UZ9lKE)WN84j%sf15W>4H%}fyugkg@H5J>LtaC4dnHF zs%j&aLq%ZPY~P04G2U=e_@~#`2lf|5UF^rJmf3q+=Kf3#3mWFfeGXj(m0nzCV5 zdWk_~l5?aOE@_6!?u9jHhmj*nIu#B$dnE;gph+uKj^-it(&u5ClNv4A%9NZYd8h`S z2$tJxO2}@~9Y1z;cW(_+LQV|x`W($-MApM4+KiV;uihkGUcqGwRfL4$1T|txyS@8R zUC>Y$_@qPW_G|a=nCgE-I9*=f-8UkMfRDz5!udi$)4R6Ag}S0DSJEr%{W~`{u`(By z((X_Fo%2#dA`zqm7Uev?nx(3??adxXkqiYaWW+N0UhZte-tH*XEN`Nw0f;?)CnOb^ z)rG0XGx-2-!M!9j=&7U`Y=;=^I@x+0Bn+@`a)U-l5YDp$n07w8GoNQhi zuDx0q?~bo`{@#aUO{cgu%oUeOI&)JfODFC|C_GwZt@m;61y;1Ao#Kc6?h|dYtnyS0 zBbKUgpqd@Ok!*h>63OcY+13mP4FIAP84X!#QWQx1Hx`#7n>X>8+9gasXtp z1bp3+hD4MC7l#>L9F8PCFT%;_xpSK)i?`f~S~@A_r&s#=-}0uqAl^+IF^JNt{%>wX z`!)WTCY1etqOfvnd?ESZq)ebMc`v70b8CSBrp&_npG1e!TH|4|qMZ3QT|WKzA&5sA zCJrLKo}fW|XpL2kDGlt>GyP_4UwU?BmkJdvfHQ3wL~=|&Qlf}7%;Vw$j$U9XYyL&) zr50EV&1Y#Mxb{~=lT;k_WK!w3HN(GGo9L55=Gt)K!maURiE_Gk#xbFIKzAxU3S;LZ zF(9~C(1y-$+{RE131WDiMI;B*#FfZCtFCLe29mx)aw5xqO@`J+?jQ&G^j{<~xRIS|)aipe{X6}V!TpsW nOH+FNN0I93BoA<=0Pk8`9Z1Fsk3pFd;XgwQf5L`l%xd@(q{Oy& delta 21 ccmeC_=W1Ta+0eqcgvoEaLL_4X)5HK}08`5b;{X5v diff --git a/Data-1.13/BinaryData/QUESTS.EDT b/Data-1.13/BinaryData/QUESTS.EDT new file mode 100644 index 0000000000000000000000000000000000000000..9521358cbf0e7677ceb02b7a222e52259c2c62ef GIT binary patch literal 8643 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 I>;Ki`H{N=A0{{R3 literal 0 HcmV?d00001 diff --git a/Data-1.13/Scripts/Quests.lua b/Data-1.13/Scripts/Quests.lua index eed1a57b5..ed1b1c49e 100644 --- a/Data-1.13/Scripts/Quests.lua +++ b/Data-1.13/Scripts/Quests.lua @@ -33,6 +33,7 @@ nQuests = QUEST_23 = 23, -- Start quest 46, End quest 47 QUEST_24 = 24, -- Start quest 48, End quest 49 QUEST_KILL_DEIDRANNA = 25, -- Start quest 50, End quest 51 + QUEST_KINGPIN_ANGEL_MARIA = 26, -- max Quests 254 } @@ -47,6 +48,9 @@ Profiles = { DYNAMO = 66, CARMEN = 78, + KINGPIN = 86, + MARIA = 88, + ANGEL = 89, MADAME = 107, } @@ -55,23 +59,37 @@ nHistory = { HISTORY_QUEST_FINISHED = 16, } -nFacts = { +Facts = { + FACT_MARIA_ESCAPE_NOTICED = 119, FACT_ESTONI_REFUELLING_POSSIBLE = 277, + FACT_KINGPIN_DEAD = 308, + FACT_KINGPIN_IS_ENEMY = 359, + FACT_BOUNTYHUNTER_SECTOR_1 = 380, + FACT_BOUNTYHUNTER_SECTOR_2 = 381, + FACT_BOUNTYHUNTER_KILLED_1 = 382, + FACT_BOUNTYHUNTER_KILLED_2 = 383, +} +nEvents = { + EVENT_KINGPIN_BOUNTY_INITIAL = 85, + EVENT_KINGPIN_BOUNTY_END_KILLEDTHEM = 86, + EVENT_KINGPIN_BOUNTY_END_TIME_PASSED = 87, } local NO_PROFILE = 200 function InternalStartQuest( ubQuest, sSectorX, sSectorY, fUpdateHistory ) -if ( CheckQuest(ubQuest) == qStatus.QUESTNOTSTARTED ) then + if ( CheckQuest(ubQuest) == qStatus.QUESTNOTSTARTED ) then + SetQuest( ubQuest, qStatus.QUESTINPROGRESS ) - if ( fUpdateHistory == true) then - if ( is_networked == 0 ) then - SetHistoryFact( nHistory.HISTORY_QUEST_STARTED, ubQuest, GetWorldTotalMin(), sSectorX, sSectorY ) - end - end + + if ( fUpdateHistory == true) then + if ( is_networked == 0 ) then + SetHistoryFact( nHistory.HISTORY_QUEST_STARTED, ubQuest, GetWorldTotalMin(), sSectorX, sSectorY ) + end + end else SetQuest( ubQuest, qStatus.QUESTINPROGRESS ) end @@ -167,7 +185,131 @@ function InternalEndQuest( ubQuest, sSectorX, sSectorY, fUpdateHistory ) -- still in the brothel with Maria... SetNPCData1(Profiles.MADAME, 0) SetNPCData2(Profiles.MADAME, 0) + + -- if the escape was not noticed, initiate 'bounty hunter' quest. Set a timer, at some point in the future, if we aren't hostile to him etc., + if ( (CheckFact( Facts.FACT_MARIA_ESCAPE_NOTICED, 0 ) == false) and (CheckFact( Facts.FACT_KINGPIN_DEAD, 0 ) == false) and + (CheckFact( Facts.FACT_KINGPIN_IS_ENEMY, 0 ) == false) and (CheckMercIsDead ( Profiles.KINGPIN ) == false) ) then + + -- start the quest + StartQuest( nQuests.QUEST_KINGPIN_ANGEL_MARIA, sSectorX, sSectorY ) + + -- set email from kingpin with a small delay + -- also set up the end of the quest in 7 days + AddFutureDayStrategicEvent(nEvents.EVENT_KINGPIN_BOUNTY_INITIAL, 120, 0, 0) + AddFutureDayStrategicEvent(nEvents.EVENT_KINGPIN_BOUNTY_END_TIME_PASSED, 120, 0, 7) + + -- the silva siblings are placed in one of several sectors and hide there for a week + -- possible sectors: a11, b5, b6, b8, b12, b14, c3, d7 + -- two groups of bounty hunters are hunting them and will be placed in those sectors (but not in the sector the DaSilvas are in) + -- if the player kills off all bounty hunters, the Silvas can escape after one week + + -- select location randomly + local sector_silva = math.random(1, 8) + local sector_hunter1 = math.random(1, 8) + local sector_hunter2 = math.random(1, 8) + + -- we have to make sure no sector is picked twice + while (sector_silva == sector_hunter1) do + sector_hunter1 = math.random(1, 8) + end + + while (sector_silva == sector_hunter2 or sector_hunter1 == sector_hunter2) do + sector_hunter2 = math.random(1, 8) + end + + if sector_silva == 1 then + -- A11 + AddNPCtoSector (Profiles.MARIA,11,1,0) + AddNPCtoSector (Profiles.ANGEL,11,1,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 11245) + SetProfileStrategicInsertionData(Profiles.ANGEL, 10765) + elseif sector_silva == 2 then + -- B5 + AddNPCtoSector (Profiles.MARIA,5,2,0) + AddNPCtoSector (Profiles.ANGEL,5,2,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 9050) + SetProfileStrategicInsertionData(Profiles.ANGEL, 8088) + elseif sector_silva == 3 then + -- B6 + AddNPCtoSector (Profiles.MARIA,6,2,0) + AddNPCtoSector (Profiles.ANGEL,6,2,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 15585) + SetProfileStrategicInsertionData(Profiles.ANGEL, 15906) + elseif sector_silva == 4 then + -- B8 + AddNPCtoSector (Profiles.MARIA,8,2,0) + AddNPCtoSector (Profiles.ANGEL,8,2,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 7092) + SetProfileStrategicInsertionData(Profiles.ANGEL, 7089) + elseif sector_silva == 5 then + -- B12 + AddNPCtoSector (Profiles.MARIA,12,2,0) + AddNPCtoSector (Profiles.ANGEL,12,2,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 4870) + SetProfileStrategicInsertionData(Profiles.ANGEL, 4557) + elseif sector_silva == 6 then + -- B14 + AddNPCtoSector (Profiles.MARIA,14,2,0) + AddNPCtoSector (Profiles.ANGEL,14,2,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 16685) + SetProfileStrategicInsertionData(Profiles.ANGEL, 16045) + elseif sector_silva == 7 then + -- C3 + AddNPCtoSector (Profiles.MARIA,3,3,0) + AddNPCtoSector (Profiles.ANGEL,3,3,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 12345) + SetProfileStrategicInsertionData(Profiles.ANGEL, 12338) + elseif sector_silva == 8 then + -- D7 + AddNPCtoSector (Profiles.MARIA,7,4,0) + AddNPCtoSector (Profiles.ANGEL,7,4,0) + SetProfileStrategicInsertionData(Profiles.MARIA, 19133) + SetProfileStrategicInsertionData(Profiles.ANGEL, 19766) + end + + if sector_hunter1 == 1 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(11, 1) ) + elseif sector_hunter1 == 2 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(5, 2) ) + elseif sector_hunter1 == 3 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(6, 2) ) + elseif sector_hunter1 == 4 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(8, 2) ) + elseif sector_hunter1 == 5 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(12, 2) ) + elseif sector_hunter1 == 6 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(14, 2) ) + elseif sector_hunter1 == 7 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(3, 3) ) + elseif sector_hunter1 == 8 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_1, SECTOR(7, 4) ) + end + + if sector_hunter2 == 1 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(11, 1) ) + elseif sector_hunter2 == 2 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(5, 2) ) + elseif sector_hunter2 == 3 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(6, 2) ) + elseif sector_hunter2 == 4 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(8, 2) ) + elseif sector_hunter2 == 5 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(12, 2) ) + elseif sector_hunter2 == 6 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(14, 2) ) + elseif sector_hunter2 == 7 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(3, 3) ) + elseif sector_hunter2 == 8 then + SetFact(Facts.FACT_BOUNTYHUNTER_SECTOR_2, SECTOR(7, 4) ) + end + end end - + if ( ubQuest == nQuests.QUEST_KINGPIN_ANGEL_MARIA ) then + -- once this quest is over, make sure Maria and Angel are gone + SetCharacterSectorX(Profiles.MARIA, 0) + SetCharacterSectorY(Profiles.MARIA, 0) + SetCharacterSectorX(Profiles.ANGEL, 0) + SetCharacterSectorY(Profiles.ANGEL, 0) + end end \ No newline at end of file diff --git a/Data-1.13/Scripts/strategicmap.lua b/Data-1.13/Scripts/strategicmap.lua index 4d1e6a29b..d49e22d87 100644 --- a/Data-1.13/Scripts/strategicmap.lua +++ b/Data-1.13/Scripts/strategicmap.lua @@ -68,6 +68,7 @@ Quests = QUEST_23 = 23, -- Start quest 46, End quest 47 - No 23 Yet QUEST_24 = 24, -- Start quest 48, End quest 49 - No 24 Yet QUEST_KILL_DEIDRANNA = 25, -- Start quest 50, End quest 51 - Kill Deidranna + QUEST_KINGPIN_ANGEL_MARIA = 26, -- max Quests 254 } @@ -77,6 +78,10 @@ Facts = { FACT_KINGPIN_KNOWS_MONEY_GONE = 103, FACT_KINGPIN_DEAD = 308, FACT_ALL_TERRORISTS_KILLED = 156, + FACT_BOUNTYHUNTER_SECTOR_1 = 380, + FACT_BOUNTYHUNTER_SECTOR_2 = 381, + FACT_BOUNTYHUNTER_KILLED_1 = 382, + FACT_BOUNTYHUNTER_KILLED_2 = 383, } History = { @@ -172,11 +177,26 @@ Profil = MIGUEL = 57, KYLE = 95, } + +SoldierClass = +{ + SOLDIER_CLASS_NONE = 0, + SOLDIER_CLASS_ADMINISTRATOR = 1, + SOLDIER_CLASS_ELITE = 2, + SOLDIER_CLASS_ARMY = 3, +} + +CivGroup = +{ + BOUNTYHUNTER_CIV_GROUP = 25, +} + local gsRobotGridNo function HandleQuestCodeOnSectorEntry( sNewSectorX, sNewSectorY, bNewSectorZ ) - if ( sNewSectorX == 6 and sNewSectorY == SectorY.MAP_ROW_C and gubQuest( Quests.QUEST_RESCUE_MARIA ) == qStatus.QUESTDONE ) then + if ( sNewSectorX == 6 and sNewSectorY == SectorY.MAP_ROW_C and gubQuest( Quests.QUEST_RESCUE_MARIA ) == qStatus.QUESTDONE + and not( gubQuest( Quests.QUEST_KINGPIN_ANGEL_MARIA ) == qStatus.QUESTINPROGRESS) ) then -- make sure Maria and Angel are gone SetCharacterSectorX(Profil.MARIA, 0) SetCharacterSectorY(Profil.MARIA, 0) @@ -259,6 +279,14 @@ function HandleSectorLiberation( sNewSectorX, sNewSectorY, bNewSectorZ, fFirstTi end end end + + -- extra volunteers on freeing Tixa underground. As enemy troops are not replenished underground, this only happens once + if ( bNewSectorZ == 1 ) then + -- Tixa + if ( sNewSectorX == 9 and sNewSectorY == SectorY.MAP_ROW_J ) then + AddVolunteers( 5 ) + end + end end -- this function is called whenever we recruit a RPC @@ -269,3 +297,59 @@ function RecruitRPCAdditionalHandling( usProfile ) AddVolunteers( 10 ) end end + +-- this function is called whenever we enter a sector in tactical +function HandleSectorTacticalEntry( sSectorX, sSectorY, bSectorZ ) + + if ( gubQuest( Quests.QUEST_KINGPIN_ANGEL_MARIA ) == qStatus.QUESTINPROGRESS ) then + + -- Flugente: if the bounty hunter quest is active, add bounty hunters to sectors (location determined on quest start) + if ( (CheckFact( Facts.FACT_BOUNTYHUNTER_KILLED_1, 0 ) == false) or (CheckFact( Facts.FACT_BOUNTYHUNTER_KILLED_2, 0 ) == false) and (bSectorZ == 0) ) then + + sector = SECTOR(sSectorX, sSectorY) + sector_hunter1 = GetFact( Facts.FACT_BOUNTYHUNTER_SECTOR_1 ) + sector_hunter2 = GetFact( Facts.FACT_BOUNTYHUNTER_SECTOR_2 ) + + if ( (sector == sector_hunter1) and (CheckFact( Facts.FACT_BOUNTYHUNTER_KILLED_1, 0 ) == false) ) then + + hostile = 0 + if ( (CheckFact( Facts.FACT_BOUNTYHUNTER_KILLED_2, 0 ) == true) ) then + hostile = 1 + end + + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ADMINISTRATOR, 13000, hostile) + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ARMY, 7447, hostile) + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ARMY, 13032, hostile) + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ELITE, 19291, hostile) + + -- dont spawn in deep water + if (sSectorX == 14 and sSectorY == 2) then + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ELITE, 16533, hostile) + else + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ELITE, 13557, hostile) + end + end + + if ( (sector == sector_hunter2) and (CheckFact( Facts.FACT_BOUNTYHUNTER_KILLED_2, 0 ) == false) ) then + + hostile = 0 + if ( (CheckFact( Facts.FACT_BOUNTYHUNTER_KILLED_1, 0 ) == true) ) then + hostile = 1 + end + + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ADMINISTRATOR, 13000, hostile) + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ARMY, 7447, hostile) + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ARMY, 13032, hostile) + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ELITE, 19291, hostile) + + -- dont spawn in deep water + if (sSectorX == 14 and sSectorY == 2) then + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ELITE, 16533, hostile) + else + CreateArmedCivilain(CivGroup.BOUNTYHUNTER_CIV_GROUP, SoldierClass.SOLDIER_CLASS_ELITE, 13557, hostile) + end + end + end + + end +end diff --git a/Data-1.13/TableData/CivGroupNames.xml b/Data-1.13/TableData/CivGroupNames.xml index 37a2b67a6..1e800383c 100644 --- a/Data-1.13/TableData/CivGroupNames.xml +++ b/Data-1.13/TableData/CivGroupNames.xml @@ -165,14 +165,13 @@ 0 0 + - 22 - 1 - Volunteer - 1 - 1 - 0 + 0 + Empty Slot22 + 0 + 0 23 @@ -182,18 +181,22 @@ 0 + 24 - 0 - Empty Slot24 - 0 - 0 + 1 + Volunteer + 1 + 1 + 0 + 25 - 0 - Empty Slot25 - 0 + 1 + Bounty hunter + 1 0 + 1 26 diff --git a/Data-1.13/TableData/Email/EmailSenderNameList.xml b/Data-1.13/TableData/Email/EmailSenderNameList.xml index 74a502309..904ea9f51 100644 --- a/Data-1.13/TableData/Email/EmailSenderNameList.xml +++ b/Data-1.13/TableData/Email/EmailSenderNameList.xml @@ -236,7 +236,7 @@ Each A.I.M merc has an entry here in the file, mapped to a specific uiIndex. 52 - None + Angel DaSilva 53 diff --git a/Data/NPCData/civ58.edt b/Data/NPCData/civ58.edt index 65521df062641188066cd9ee52ac43936f7b50ec..11bda26170a6fc8d2488b6adf77644405364689f 100644 GIT binary patch literal 4800 zcmeH~!A`UolqjeCKOQe>14Az0zN5STnltKmDgiqLf<6IkyjZE%|LZ z4jwV`@MAgRVyIR?&&%OKfq`*ByLPK+^0&R&;%9xy7c#dRnN?6yp z{_5krai72)e(S5dPs&N)&~Oev{!Za=b7`9)NzQcg1hwu>C5CdP6g5Y2aUX8opg(mq zQe){)T1FCkrq0k}#mYW*Hw0ZH$Go9)JFnS_$V8sD&>P5 z+3kas3+=(XZ_Ft-FRj&L0Z-Rr}tJJ5+aj?ke7MN?IjK;b+~&?xdkZ)-ilU kK*VB~7R2@_EcO(U3+kfPo2aK&7V90j<`B;=C;F_!FVQr%M*si- literal 4800 zcmeI#yA6Oa6hl#u!U}{x15u+$Fh8wRS}D1ybDN{rxa!rdN0$Z_@lt_mep4FrU+y>K z5evBA64wOox55z%xZf7n1n#%P5evBA5!VFncft`1xL?s2_kRysKNd)O53L^yq|c89 O(&xtl>GNZOq<$YGyeB09 diff --git a/Data/NPCData/civ60.edt b/Data/NPCData/civ60.edt index 65521df062641188066cd9ee52ac43936f7b50ec..5cf8065b0b5b4903e8584bf33aff87865d267597 100644 GIT binary patch literal 4800 zcmeI0OKZYF6ov0k8Cd%8c}WlXCJ6 zZUJ_YXJQw%^8{jRWjDn&fK-8_0x7D^fovr??oovsXt97QZ%*b+qei)u5;L@!>ouT9 z_LoZhMQQY~$_ZKytFEzHYO>JvJ9zODEsxP&gr4pP0?$e*Q-wHrSDp16a?~CbxW*a4 zlX37;b#wr7X5&r$l#0u6exkRO4_P$|%;39TZZW!%2aK6UvxYCV%6u}%OhDV=$qe?4 zlN|5zaa!=LJ)*s@HWE&?M^%i+0w&3W`=Rw~9Z>dZjtdhH~FAJ=gS;JCgcXHq5;%V#;0zXvSpo;(i literal 4800 zcmeI#yA6Oa6hl#u!U}{x15u+$Fh8wRS}D1ybDN{rxa!rdN0$Z_@lt_mep4FrU+y>K z5evBA64wOox55z%xZf7n1n#%P5evBA5!VFncft`1xL?s2_kRysKNd)O53L^yq|c89 O(&xtl>GNZOq<$YGyeB09 diff --git a/Data/NPCData/civ61.edt b/Data/NPCData/civ61.edt index 65521df062641188066cd9ee52ac43936f7b50ec..548f29303c49557903cea69563e46a6c15bb5a6f 100644 GIT binary patch literal 4800 zcmeH~Piw+J5XI-CEIs8?gdTb>g1G=y9W9c4w2o z{(Ns{b|zmE#7QotRPuxI0W&YPMk`t2>tu(uqfBJ{Toafprv`jVS%OrDQHv`hPWDoO zCy5%#2}UyzXVmq-_C$^O3fx<~r%8zPD|URqjveR~%F=@X)#nlE4`aYxL(GLLG_@s=h@)*tHEtj~ALUU#GFE<|=?Qb-2BmQdLS z8naPU)e3AauhGvTNqyZwr%R?kr;cRxHMjCwgJ+I7bE8$0Q-(BOlj;^uF5q*AEI|GN zZm~pihpSGwTIU8wXV+z03T^?wP->){}*HILvz1`=ng0pXC#TTDX|C zw-fe#>;vQJVh=_&XjY&V?-|c?CuvT>Dgz&5LT=W*M2@z$1x23SSZ$WdGE>GSSZ`FR z_EdUGjQz`6JxP8%TiB_Cb#|e2JVrd9(A7EaG@S0hV2jIRIy literal 4800 zcmeI#yA6Oa6hl#u!U}{x15u+$Fh8wRS}D1ybDN{rxa!rdN0$Z_@lt_mep4FrU+y>K z5evBA64wOox55z%xZf7n1n#%P5evBA5!VFncft`1xL?s2_kRysKNd)O53L^yq|c89 O(&xtl>GNZOq<$YGyeB09