local NPC_TALK_RADIUS = 4 local sDesiredMercDist local NO_PROFILE = 200 Facts = { FACT_SKYRIDER_CLOSE_TO_CHOPPER = 43, FACT_MARIA_ESCORTED_AT_LEATHER_SHOP = 117, FACT_JOEY_NEAR_MARTHA = 110, FACT_JOHN_ALIVE = 190, FACT_MARY_OR_JOHN_ARRIVED = 192, FACT_CHALICE_STOLEN = 184, FACT_MARY_ALIVE = 187, FACT_FIRST_ROBOT_DESTROYED = 203, FACT_ROBOT_READY_SECOND_TIME = 205, FACT_SECOND_ROBOT_DESTROYED = 206, FACT_ESTONI_REFUELLING_POSSIBLE = 277, FACT_KINGPIN_KNOWS_MONEY_GONE = 103, FACT_PLAYER_REPAID_KINGPIN = 104, FACT_KINGPIN_NOT_IN_OFFICE = 256, FACT_PLAYER_KNOWS_ABOUT_BLOODCAT_LAIR = 335, } Attitude = { DEFENSIVE = 0, BRAVESOLO = 1, BRAVEAID = 2, CUNNINGSOLO = 3, CUNNINGAID = 4, AGGRESSIVE = 5, MAXATTITUDES = 6, ATTACKSLAYONLY = 7, } Quests = { -- Quests ID -- BinaryData\QUESTS.EDT Record QUEST_DELIVER_LETTER = 0, -- Start quest 0, End quest 1 - Deliver Letter QUEST_FOOD_ROUTE = 1, -- Start quest 2, End quest 3 - Food Route QUEST_KILL_TERRORISTS = 2, -- Start quest 4, End quest 5 - Terrorists QUEST_KINGPIN_IDOL = 3, -- Start quest 6, End quest 7 - Kingpin Chalice QUEST_KINGPIN_MONEY = 4, -- Start quest 8, End quest 9 - Kingpin Money QUEST_RUNAWAY_JOEY = 5, -- Start quest 10, End quest 11 - Runaway Joey QUEST_RESCUE_MARIA = 6, -- Start quest 12, End quest 13 - Rescue Maria QUEST_CHITZENA_IDOL = 7, -- Start quest 14, End quest 15 - Chitzena Chalice QUEST_HELD_IN_ALMA = 8, -- Start quest 16, End quest 17 - Held in Alma QUEST_INTERROGATION = 9, -- Start quest 18, End quest 19 - Interogation QUEST_ARMY_FARM = 10, -- Start quest 20, End quest 21 - Hillbilly Problem QUEST_FIND_SCIENTIST = 11, -- Start quest 22, End quest 23 - Find Scientist QUEST_DELIVER_VIDEO_CAMERA = 12, -- Start quest 24, End quest 25 - Deliver Video Camera QUEST_BLOODCATS = 13, -- Start quest 26, End quest 27 - Blood Cats QUEST_FIND_HERMIT = 14, -- Start quest 28, End quest 29 - Find Hermit QUEST_CREATURES = 15, -- Start quest 30, End quest 31 - Creatures QUEST_CHOPPER_PILOT = 16, -- Start quest 32, End quest 33 - Find Chopper Pilot QUEST_ESCORT_SKYRIDER = 17, -- Start quest 34, End quest 35 - Escort SkyRider QUEST_FREE_DYNAMO = 18, -- Start quest 36, End quest 37 - Free Dynamo QUEST_ESCORT_TOURISTS = 19, -- Start quest 38, End quest 39 - Escort Tourists QUEST_FREE_CHILDREN = 20, -- Start quest 40, End quest 41 - Doreen QUEST_LEATHER_SHOP_DREAM = 21, -- Start quest 42, End quest 43 - Leather Shop Dream QUEST_ESCORT_SHANK = 22, -- Start quest 44, End quest 45 - Escort Shank 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 -- max Quests 254 } Profil = { BARRY = 0, BLOOD = 1, LYNX = 2, GRIZZLY = 3, VICKI = 4, TREVOR = 5, GRUNTY = 6, IVAN = 7, STEROID = 8, IGOR = 9, SHADOW = 10, RED = 11, REAPER = 12, FIDEL = 13, FOX = 14, SIDNEY = 15, GUS = 16, BUNS = 17, ICE = 18, SPIDER = 19, CLIFF = 20, BULL = 21, HITMAN = 22, BUZZ = 23, RAIDER = 24, RAVEN = 25, STATIC = 26, LEN = 27, DANNY = 28, MAGIC = 29, STEPHEN = 30, SCULLY = 31, MALICE = 32, DRQ = 33, NAILS = 34, THOR = 35, SCOPE = 36, WOLF = 37, MD = 38, MELTDOWN = 39, BIFF = 40, HAYWIRE = 41, GASKET = 42, RAZOR = 43, FLO = 44, GUMPY = 45, LARRY = 46, LARRY_STONED = 47, COUGAR = 48, NUMB = 49, BUBBA = 50, MIGUEL = 57, CARLOS = 58, IRA = 59, DIMITRI = 60, DEVIN = 61, ROBOT = 62, HAMOUS = 63, SLAY = 64, DYNAMO = 66, SHANK = 67, IGGY = 68, VINCE = 69, CONRAD = 70, MADDOG = 72, DARREL = 73, PERKO = 74, DEIDRANNA = 75, AUNTIE = 76, CARMEN = 78, JOE = 79, STEVE = 80, RAT = 81, ANNIE = 82, CHRIS = 83, BOB = 84, BRENDA = 85, KINGPIN = 86, DARREN = 87, MARIA = 88, ANGEL = 89, JOEY = 90, TONY = 91, FRANK = 92, SPIKE = 93, DAMON = 94, KYLE = 95, MICKY = 96, SKYRIDER = 97, PABLO = 98, SAL = 99, FATHER = 100, FATIMA = 101, WARDEN = 102, GORDON = 103, GABBY = 104, ERNEST = 105, FRED = 106, MADAME = 107, YANNI = 108, MARTHA = 109, JOE = 110, JASMIN = 111, CHARLIE = 112, JAKE = 113, PACOS = 114, DAVE = 115, SKIPPER = 116, HANS = 117, JOHN = 118, MARY = 119, GENERAL = 120, SERGEANT = 121, ARMAND = 122, LORA = 123, FRANZ = 124, HOWARD = 125, SAM = 126, ELDIN = 127, ARNIE = 128, TINA = 129, FREDO = 130, WALTER = 131, JENNY = 132, BILLY = 133, BREWSTER = 134, ELLIOT = 135, DEREK = 136, OLIVER = 137, WALDO = 138, DOREEN = 139, JIM = 140, JACK = 141, OLAF = 142, RAY = 143, OLGA = 144, TYRONE = 145, MADLAB = 146, KEITH = 147, MATT = 148, MIKE = 149, DARYL = 150, HERVE = 151, PETER = 152, ALBERTO = 153, CARLO = 154, MANNY = 155, OSWALD = 156, CALVIN = 157, CARL = 158, LAURA = 175, GRACE = 176, RUDOLF = 177, SKITZ = 179, BUNS_CHAOTIC = 215, LEON = 222, GARY = 223, SPARKY = 224, HURL = 227, MOUSE = 245, HECTOR = 246, REV = 247, STELLA = 248, MOSES = 250, TURTLE = 253, } What = { MERC_TYPE__PLAYER_CHARACTER = 0, MERC_TYPE__AIM_MERC = 1, MERC_TYPE__MERC = 2, MERC_TYPE__NPC = 3, MERC_TYPE__EPC = 4, MERC_TYPE__NPC_WITH_UNEXTENDABLE_CONTRACT = 5, MERC_TYPE__VEHICLE = 6, } Team = { OUR_TEAM = 0, ENEMY_TEAM = 1, CREATURE_TEAM = 2, MILITIA_TEAM = 3, CIV_TEAM = 4, } pQuest = { QUESTNOTSTARTED = 0, QUESTINPROGRESS = 1, QUESTDONE = 2, } Group = { NON_CIV_GROUP = 0, REBEL_CIV_GROUP = 1, KINGPIN_CIV_GROUP = 2, SANMONA_ARMS_GROUP = 3, ANGELS_GROUP = 4, BEGGARS_CIV_GROUP = 5, TOURISTS_CIV_GROUP = 6, ALMA_MILITARY_CIV_GROUP = 7, DOCTORS_CIV_GROUP = 8, COUPLE1_CIV_GROUP = 9, HICKS_CIV_GROUP = 10, WARDEN_CIV_GROUP = 11, JUNKYARD_CIV_GROUP = 12, FACTORY_KIDS_GROUP = 13, QUEENS_CIV_GROUP = 14, } Status = { CIV_GROUP_NEUTRAL = 0, CIV_GROUP_WILL_EVENTUALLY_BECOME_HOSTILE = 1, CIV_GROUP_WILL_BECOME_HOSTILE = 2, CIV_GROUP_HOSTILE = 3, } SectorY = { MAP_ROW_A = 1, MAP_ROW_B = 2, MAP_ROW_C = 3, MAP_ROW_D = 4, MAP_ROW_E = 5, MAP_ROW_F = 6, MAP_ROW_G = 7, MAP_ROW_H = 8, MAP_ROW_I = 9, MAP_ROW_J = 10, MAP_ROW_K = 11, MAP_ROW_L = 12, MAP_ROW_M = 13, MAP_ROW_N = 14, MAP_ROW_O = 15, MAP_ROW_P = 16, } -- text colours FontColour = { FONT_MCOLOR_DKWHITE = 134, FONT_MCOLOR_LTYELLOW = 144, FONT_MCOLOR_RED = 163, FONT_MCOLOR_DKRED = 164, FONT_MCOLOR_LTGREEN = 184, } -- these numbers aren't used in the code - we only use them in LUA Languages = { LANGUAGE_ENGLISH = 0, LANGUAGE_GERMAN = 1, LANGUAGE_RUSSIAN = 2, LANGUAGE_DUTCH = 3, LANGUAGE_POLISH = 4, LANGUAGE_FRENCH = 5, LANGUAGE_ITALIAN = 6, LANGUAGE_CHINESE = 7, } -- numbers for addressing which stat should get more experience StatTypes = { HEALTHAMT = 1, AGILAMT = 2, DEXTAMT = 3, WISDOMAMT = 4, MEDICALAMT = 5, EXPLODEAMT = 6, MECHANAMT = 7, MARKAMT = 8, EXPERAMT = 9, STRAMT = 10, LDRAMT = 11, } -- different teams Teams = { ENEMY_TEAM = 1, CREATURE_TEAM = 2, MILITIA_TEAM = 3, CIV_TEAM = 4, } -- (relevant) bodytypes Bodytype = { REGMALE = 0, BIGMALE = 1, STOCKYMALE = 2, REGFEMALE = 3, FATCIV = 11, MANCIV = 12, MINICIV = 13, DRESSCIV = 14, HATKIDCIV = 15, KIDCIV = 16, CRIPPLECIV = 17, } local iLoop local aimLoop local HEARD_3_TURNS_AGO = -4 local HEARD_2_TURNS_AGO = -3 local HEARD_LAST_TURN = -2 local HEARD_THIS_TURN = -1 local NOT_HEARD_OR_SEEN = 0 local SEEN_CURRENTLY = 1 local SEEN_THIS_TURN = 2 local SEEN_LAST_TURN = 3 local SEEN_2_TURNS_AGO =4 local SEEN_3_TURNS_AGO = 5 -- local function local function HandleJohnArrival( ID ) local ID2 = nil local sDist if ( not ID ) then ID = FindSoldierByProfileID (Profil.JOHN) if ( not ID ) then return end end if ( PythSpacesAway( ID,8228) < 40 ) then if ( CheckFact( Facts.FACT_MARY_ALIVE, 0 ) == true ) then ID2 = FindSoldierByProfileID( Profil.MARY ) if ( ID2 ) then if ( PythSpacesAway( ID, GetNPCGridNo(ID2) ) > 8 ) then -- Too far away! return end end end SetFactTrue( Facts.FACT_MARY_OR_JOHN_ARRIVED ) ActionStopMerc(ID) -- If Mary is alive/dead if ( ID2 ) then ActionStopMerc(ID2) TriggerNPCRecord( ID, 13 ) else TriggerNPCRecord( ID, 12 ) end end end -- end local function -- local function local function HandleMaryArrival( ID ) local sDist if ( not ID ) then ID = FindSoldierByProfileID (Profil.MARY) if ( not ID ) then return end end if ( CheckFact( Facts.FACT_JOHN_ALIVE,0) == true ) then return --new requirements: player close by elseif ( PythSpacesAway( ID,8228) < 40 ) then if ( not TileIsOutOfBounds ( ClosestPC( ID, sDist )) and sDist > NPC_TALK_RADIUS * 2 ) then --too far away return end SetFactTrue( Facts.FACT_MARY_OR_JOHN_ARRIVED ) ActionStopMerc(ID) TriggerNPCRecord( ID, 13 ) end end -- end local function function HandleAtNewGridNo( ProfileId ) if ( CheckFact ( Facts.FACT_ESTONI_REFUELLING_POSSIBLE, 0) == true and CheckQuest(Quests.QUEST_ESCORT_SHANK) == pQuest.QUESTINPROGRESS ) then EndQuest( Quests.QUEST_ESCORT_SHANK, gWorldSectorX, gWorldSectorY ) end TeamSoldier = FindSoldierTeam (ProfileId) if ( TeamSoldier == Team.OUR_TEAM ) then -- Team -- Kingping expecting visit from player (Sector D5) -- The fact has to be TRUE. If FALSE then Kingpin attack the player. if ( CheckFact( 98, ProfileId ) == false ) then if ( NPCInRoomRange( ProfileId, 30, 39 ) == true and gWorldSectorX == 5 and gWorldSectorY == SectorY.MAP_ROW_D and gWorldSectorZ == 0 )then for iLoop = GetTacticalStatusFirstID(Team.CIV_TEAM),GetTacticalStatusLastID(Team.CIV_TEAM) do if ( CheckMercPtrsInSector (iLoop) == true and CheckMercPtrsInActive(iLoop) == true and CheckMercPtrsInCivilianGroup (iLoop) == 2 ) then for aimLoop=GetTacticalStatusFirstID(Team.OUR_TEAM),GetTacticalStatusLastID(Team.OUR_TEAM) do if ( CheckMercPtrsID1SeenID2(iLoop,aimLoop) == SEEN_CURRENTLY ) then MakeMercPtrsHostile( iLoop ) end end end end if ( CheckCombatMode == false ) then EnterTeamCombatMode(Team.CIV_TEAM) end end end if ( WhatKindOfMercAmI (ProfileId) == What.MERC_TYPE__EPC ) then -- what EPC -- Skyrider if ( ProfileId == Profil.SKYRIDER and CheckNPCSectorBool( Profil.SKYRIDER, 13, SectorY.MAP_ROW_B, 0 ) == true and PythSpacesAway( Profil.SKYRIDER,8842 ) < 11 ) then ActionStopMerc(Profil.SKYRIDER) SetFactTrue( Facts.FACT_SKYRIDER_CLOSE_TO_CHOPPER ) TriggerNPCRecord( Profil.SKYRIDER, 15 ) SetUpHelicopterForPlayer( 13, SectorY.MAP_ROW_B, Profil.SKYRIDER, 163 ) -- 163 helicopter -- Mary & John elseif ( ( CheckNPCSectorBool( Profil.MARY, 13, SectorY.MAP_ROW_B, 0 ) == true ) or ( CheckNPCSectorBool( Profil.JOHN, 13, SectorY.MAP_ROW_B, 0 ) == true ) ) then -- Mary if ( ProfileId == Profil.MARY ) then HandleMaryArrival( Profil.MARY ) -- John elseif ( ProfileId == Profil.JOHN ) then HandleJohnArrival( Profil.JOHN ) end -- Maria elseif ( ProfileId == Profil.MARIA and CheckNPCSectorBool( Profil.MARIA, 6, SectorY.MAP_ROW_C, 0) == true and CheckFact(Facts.FACT_MARIA_ESCORTED_AT_LEATHER_SHOP,Profil.MARIA) == true ) then if ( NPCInRoom( Profil.ANGEL, 2 ) == true ) then TriggerNPCRecord( Profil.ANGEL, 12 ) end -- Joey elseif ( ProfileId == Profil.JOEY and CheckNPCSectorBool( Profil.JOEY, 8, SectorY.MAP_ROW_G, 0) == true and CheckFact(Facts.FACT_JOEY_NEAR_MARTHA,0) == true ) then ActionStopMerc(Profil.JOEY) TriggerNPCRecord( Profil.JOEY, 9 ) end -- Drassen stuff for John & Mary elseif ( CheckQuest(Quests.QUEST_ESCORT_TOURISTS) == pQuest.QUESTINPROGRESS and ProfileIdsSectorX == 13 and ProfileIdsSectorY == SectorY.MAP_ROW_B and ProfileIdbSectorZ == 0 ) then if ( CheckFact( Facts.FACT_JOHN_ALIVE, 0 ) == true ) then HandleJohnArrival( nil ) else HandleMaryArrival( nil ) end elseif ( TeamSoldier == Team.CIV_TEAM and ProfileId ~= NO_PROFILE and CheckSoldierNeutral( ProfileId ) == true ) then if ( ProfileId == Profil.JIM or ProfileId == Profil.JACK or ProfileId == Profil.OLAF or ProfileId == Profil.RAY or ProfileId == Profil.OLGA or ProfileId == Profil.TYRONE ) then if ( not TileIsOutOfBounds( ClosestPC( ProfileId, sDesiredMercDist )) ) then if ( sDesiredMercDist <= NPC_TALK_RADIUS * 2 ) then CancelAIAction ( ProfileId ) AddToShouldBecomeHostileOrSayQuoteList( GetPlayerMercID(ProfileId) ) end end end end -- End what EPC end -- End team end ActionTypes = { ACTIONTYPE_INVALID = 0, ACTIONTYPE_HACKING = 1, ACTIONTYPE_READFILE = 2, ACTIONTYPE_WATERTAP = 3, ACTIONTYPE_SODAMACHINE = 4, ACTIONTYPE_MINIGAME = 5, ACTIONTYPE_VARIOUS = 6, } InfoTypes = { INFO_TYPE_NORMAL = 0, INFO_TYPE_VIP = 1, } ScreenTypes = { MINIGAME = 30, } MiniGames = { TETRIS = 0, PONG = 1, PICTURE = 2, } -- luaactionids that aren't used in ModSpecificActions InteractiveAction = { MINIGAME_TETRIS = 50, MINIGAME_PONG = 51, BILLIARD = 52, TABLETENNIS = 53, TOILET = 54, TV = 55, STEAL_CASHREGISTER = 56, PICTURE_NEONTHECLUB = 57, -- Neon sign: 'The club' PICTURE_NEONBEER = 58, -- Neon sign: 'Beer' PICTURE_BEER = 59, -- Poster: 'Beer' PICTURE_2xBEER = 60, -- 2-tile Poster: 'Beer' PICTURE_PRIVATE = 61, -- Sign: 'Private' PICTURE_XXXPITSTOP = 62, -- Neon Sign: 'XXX Pit Stop' PICTURE_DELIVERY = 63, -- 2-tile Poster: 'Delivery' PICTURE_GENERALSTORE = 64, -- 2-tile Poster: 'General Store' PICTURE_SHADYLADY = 65, -- 2-tile Poster: 'Shady Lady' COOK_COWMEAT_TO_STEAK = 66, -- take cow meat from merc, add steak to merc TAKE_FIRE_EXTINGUISHER_1 = 67, -- delete wall decal (requires replacing wall tile) and add item to inventory TAKE_FIRE_EXTINGUISHER_2 = 68, -- delete wall decal (requires replacing wall tile) and add item to inventory } -- We have an array of 1000 signed integers that a modder can use to set whatever data he wants. -- We simply set up some enums here to make it easier for us to remember what is what ModSpecificActions = { -- |||||||||||||||||||||||||||||||||| computers ||||||||||||||||||||||||||||||||||||| -- Orta sublevel 1 COMPUTER_ORTA_BASEMENT_LAB1_SERVER = 0, COMPUTER_ORTA_BASEMENT_LAB2_SERVER = 1, COMPUTER_ORTA_BASEMENT_HALLWAY_SERVER = 2, COMPUTER_ORTA_BASEMENT_LAB1_PC = 3, COMPUTER_ORTA_BASEMENT_LAB2_PC = 4, COMPUTER_ORTA_BASEMENT_CONTROL_CONSOLE_1 = 5, COMPUTER_ORTA_BASEMENT_CONTROL_CONSOLE_2 = 6, COMPUTER_ORTA_BASEMENT_ENTRANCE_CONSOLE_1 = 7, COMPUTER_ORTA_BASEMENT_ENTRANCE_CONSOLE_2 = 8, -- Orta COMPUTER_ORTA_SERVER_1 = 9, COMPUTER_ORTA_PC_1 = 10, -- Balime COMPUTER_BALIME_L12_MUSEUM_CONSOLE_1 = 11, COMPUTER_BALIME_L12_MUSEUM_CONSOLE_2 = 12, -- Drassen SAM COMPUTER_DRASSENSAM_PC_1 = 13, COMPUTER_DRASSENSAM_COMMANDCONSOLE = 14, -- Chitzena SAM COMPUTER_CHITZENASAM_PC_1 = 15, COMPUTER_CHITZENASAM_PC_2 = 16, COMPUTER_CHITZENASAM_COMMANDCONSOLE = 17, -- central SAM COMPUTER_CENTRALSAM_PC_1 = 18, COMPUTER_CENTRALSAM_PC_2 = 19, COMPUTER_CENTRALSAM_PC_3 = 20, COMPUTER_CENTRALSAM_COMMANDCONSOLE = 21, -- Meduna SAM COMPUTER_MEDUNASAM_PC_1 = 22, COMPUTER_MEDUNASAM_COMPUTERBANK_1 = 23, COMPUTER_MEDUNASAM_COMMANDCONSOLE = 24, -- Meduna palace COMPUTER_MEDUNAPALACE_PC_1 = 25, COMPUTER_MEDUNAPALACE_PC_2 = 26, COMPUTER_MEDUNAPALACE_CONSOLE_1 = 27, COMPUTER_MEDUNAPALACE_SERVER_1 = 28, -- Alma storage COMPUTER_ALMASTORAGE_PC_1 = 29, -- Alma prison COMPUTER_ALMAPRISON_PC_1 = 30, COMPUTER_ALMAPRISON_PC_2 = 31, COMPUTER_ALMAPRISON_PC_3 = 32, -- Alma base COMPUTER_ALMABASE_PC_KROTT = 33, COMPUTER_ALMABASE_PC_BUREAU = 34, COMPUTER_ALMABASE_PC_FILEROOM = 35, COMPUTER_ALMABASE_CONSOLE_1 = 36, COMPUTER_ALMABASE_CONSOLE_2 = 37, COMPUTER_ALMABASE_CONSOLE_3 = 38, COMPUTER_ALMABASE_CONSOLE_4 = 39, COMPUTER_ALMABASE_CONSOLE_5 = 40, COMPUTER_ALMABASE_CONSOLE_6 = 41, -- |||||||||||||||||||||||||||||||||| computers ||||||||||||||||||||||||||||||||||||| -- |||||||||||||||||||||||||||||||||| books ||||||||||||||||||||||||||||||||||||| -- Orta sublevel 1 READING_ORTA_BASEMENT_BOOKSHELF_1 = 45, READING_ORTA_BASEMENT_BOOKSHELF_2 = 46, READING_ORTA_BASEMENT_BOOKSHELF_3 = 47, -- Orta READING_ORTA_BOOKSHELF_1 = 48, -- San Mona READING_SANMONA_KINGPIN_BOOKSHELF_1 = 49, -- |||||||||||||||||||||||||||||||||| books ||||||||||||||||||||||||||||||||||||| -- |||||||||||||||||||||||||||||||||| photo data ||||||||||||||||||||||||||||||||||||| PHOTO_FLAGS_BEGIN = 60, PHOTO_FLAGS_GENERAL = 61, PHOTO_FLAGS_WARDEN = 62, PHOTO_FLAGS_ERNEST = 63, PHOTO_FLAGS_ARMAND = 64, PHOTO_FLAGS_KINGPIN = 65, PHOTO_FLAGS_DARREN = 66, PHOTO_FLAGS_TONY = 67, PHOTO_FLAGS_JOE = 68, PHOTO_FLAGS_MADLAB = 69, PHOTO_FLAGS_MIKE = 70, PHOTO_FLAGS_DEVIN = 71, PHOTO_FLAGS_MICKY = 72, PHOTO_FLAGS_CARMEN = 73, PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE = 80, PHOTO_FLAGS_ALMA_HQ_CONTROLROOM = 81, PHOTO_FLAGS_ALMA_STORAGE_ROCKETS = 82, PHOTO_FLAGS_ALMA_PRISON_TORTURE = 83, PHOTO_FLAGS_TIXA_TORTURE = 84, PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS = 85, PHOTO_FLAGS_CREATURE_LVL3 = 86, PHOTO_FLAGS_ORTA_LABS = 87, PHOTO_FLAGS_ORTA_STORAGE = 88, PHOTO_FLAGS_ORTA_MANUFACTURING = 89, PHOTO_FLAGS_BALIME_MUSEUM = 90, PHOTO_FLAGS_GRUMM_RADIOACTIVE = 91, PHOTO_FLAGS_MEDUNA_ARENA = 92, PHOTO_FLAGS_MEDUNA_BUNKER = 93, PHOTO_FLAGS_SAM_DRASSEN = 94, PHOTO_FLAGS_SAM_CHITZENA = 95, PHOTO_FLAGS_SAM_CENTRAL = 96, PHOTO_FLAGS_SAM_MEDUNA = 97, PHOTO_FLAGS_END = 100, -- |||||||||||||||||||||||||||||||||| photo data ||||||||||||||||||||||||||||||||||||| } -- General defines for various states ActionState = { -- hacking STATE_OK = 0, -- starting state, we can hack this STATE_END = 1, -- computer is shut down and cannot be used STATE_GAVEREWARD_OK = 2, -- computer is still useable, we already got whatever reward there was STATE_GAVEREWARD_END = 3, -- computer is shut down and cannot be used, we already got whatever reward there was } -- handle the result of an interactive action that has a special id set for lua -- for more info, see InteractiveActions.xml function HandleInteractiveActionResult(sSectorX, sSectorY, bSectorZ, sGridNo, bLevel, ubID, usActionType, sLuaactionid, difficulty, skill ) if ( usActionType == ActionTypes.ACTIONTYPE_HACKING ) then -- if computer is locked, we only get an error message if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_END ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Can't reach host, automated disconnect.") return -- we cannot access this anymore, but gained something previously elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_END ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Can't reach host, automated disconnect.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There probably wasn't anything else of interest on there anway.") return end -- if we successfully hacked the Orta sublevel server that connects to Alma, hacking difficulty in Alma is lowered if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ORTA_BASEMENT_LAB2_SERVER) == ActionState.STATE_GAVEREWARD_OK) or (GetModderLUAFact(ModSpecificActions.COMPUTER_ORTA_BASEMENT_LAB2_SERVER) == ActionState.STATE_GAVEREWARD_END) ) then if ( sSectorX == 13 and sSectorY == SectorY.MAP_ROW_H) then difficulty = difficulty - 20 end end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_CENTRALSAM_PC_3) == ActionState.STATE_GAVEREWARD_OK) or (GetModderLUAFact(ModSpecificActions.COMPUTER_CENTRALSAM_PC_3) == ActionState.STATE_GAVEREWARD_END) ) then if ( sSectorX == 4 and sSectorY == SectorY.MAP_ROW_N) then difficulty = difficulty - 20 end end -- if skill >= difficulty, we succeed successpts = skill - difficulty -- if we fail very badly, shut down server if ( successpts < - 30 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_END) else SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end return -- if we just fail, give us a message elseif ( successpts < 0 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Wrong password.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Logging you out.") return end -- we need to remember this, so we know whether to give a reward later on statebefore = GetModderLUAFact(sLuaactionid) -- ORTA sublevel -- info on Ernest's research (rocket rifle) if ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_LAB1_SERVER ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The schematics of the rocket rifles are stored in here:") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Rocket rifle: personal infantry weapon based around 20mm rockets.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Each rifle holds one clip, with each containing 5 missiles.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There are several rocket variants:") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Armour-piercing") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- High-Explosive") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- High-Explosive Armour-piercing.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Cryogenic") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Even against armoured infantry the wounds caused by this weapon can be described as 'overkill'.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The weapon can also be used in an anti-material role with moderate to good success.") end -- this server is connected to Alma, hacking it lowers difficulty there elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_LAB2_SERVER ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You can still access the network.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This server is still connected to the Alma base network.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It will be difficult, but you try to install a backdoor.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Establishing connection to Alma mil-net") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Password: ********") -- this is really, REALLY hard to do if ( successpts > 80 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Password accepted.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... cd ~") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... chmod 777 *") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... chmod: You have no permission for this command") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... sudo chmod 777 *") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We successfully infiltrated the server, hacking in Alma base SAM will now be easier.") -- if we are extremely good, we can reset some computers if they were locked in Alma if ( successpts > 80 ) then if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_KROTT) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_KROTT, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_KROTT) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_KROTT, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_BUREAU) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_BUREAU, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_BUREAU) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_BUREAU, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_FILEROOM) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_FILEROOM, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_FILEROOM) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_PC_FILEROOM, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_1) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_1, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_1) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_1, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_2) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_2, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_2) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_2, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_3) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_3, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_3) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_3, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_4) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_4, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_4) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_4, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_5) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_5, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_5) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_5, ActionState.STATE_GAVEREWARD_OK) end if ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_6) == ActionState.STATE_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_6, ActionState.STATE_OK) elseif ( (GetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_6) == ActionState.STATE_GAVEREWARD_END) ) then SetModderLUAFact(ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_6, ActionState.STATE_GAVEREWARD_OK) end SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We were also able to reset some locked workstations.") end SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_END) else SetScreenMsg(FontColour.FONT_MCOLOR_RED, "We failed to hack the server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Wrong password.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Logging you out.") end end -- info on weapon tests elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_HALLWAY_SERVER ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Weapon test results are stored on this server.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "In later stages of the project, the weapon was tested on live inmates.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The tests were filmed... the cruel demonstrations are gruesome.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "If these videos were to be published, this might cause serious headache for the companies involved.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You do not want to see that again.") end -- Ernest's PC elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_LAB1_PC ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You dig through Dr. Poppin's personal research.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It seems an even more advance version of the rocket rifle has been developed.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Several files seem to be missing... you can't find the weapon specifics.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The advanced version never developed further than the prototypes stage.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It is not specified where the prototypes are.") end -- money elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_LAB2_PC ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "A researcher is still logged in.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Perhaps you can divert some of the project's funds?") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing Project managing") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Identification: Poppins, E.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Initiating money transfer") -- depending on how skilled we are, we get different amounts of money AddTransactionToPlayersBook(1, 0, 1800, successpts * 40) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've diverted project funds to our accounts!") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You play a bit of solitaire.") end -- hint on MADLAB missing elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_CONTROL_CONSOLE_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "TO: ORTA HEAD OF SECURITY") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "FROM: ROYAL ADVISORY") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The absence of Dr. N. Kairns is simply unacceptable.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "As head of research, he cannot be replaced.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Your predecessor failed in properly securing him. Don't fail on returning him.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "That sounds rather harsh. This Dr. Kairns sounds interesting.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The remaining files seem rather boring.") end -- hint on secret weapons stash elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_CONTROL_CONSOLE_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This base seems to have different levels of clearance.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Some of the storage rooms are heavily fortified.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Explosives likely won't be enough, these doors require a key code.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It is likely the lead scientists or guards might have the key codes.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The files don't say what exactly is stored here though.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You wonder what secrets this base might contain.") end -- info: some of the secret weapons got away elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_ENTRANCE_CONSOLE_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "A log lists recent arrivals and departures to this base.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "For a long time, this base only received supplies.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "But recently, quite a few shipments were sent from here to Meduna.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The logs don't say what was shipped, but the destination was the royal guard HQ.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You have a bad feeling about this.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It's a UNIX system... I know this!") end -- warning on poison gas trap elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_BASEMENT_ENTRANCE_CONSOLE_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You find a schematic of the bunker.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "In the next room is a small lab with toilet next to it.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Then there's the centrall hallway.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It seems there is some sort of gas trap installed in the hallway.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "On the left and right of it are two huge manufacturing halls.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The main hallway is then flanked by the security offices. They seem to be heavily staffed.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Behind another security door are the main labs, but you have no camera access.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There is nothing else on the console, you have to explore the base yourself.") end -- ORTA: bloodcats are studied here, so the computer has data on them elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_SERVER_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The server contains a manifest of the last months.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "A lot of resources arrive here for such a small observation post.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "In fact, a lot more than you see. You wonder where all of this equipment went.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Something is not right here...") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You see lists upon lists of equipment that has no use in observing giant cats.") end -- ORTA: bloodcats are studied here, so the computer has data on them elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ORTA_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This computer contains a lot of data on bloodcats physiology and behaviour.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It seems there is a huge pack of bloodcats in the east of Alma.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "In fact, the pack is so huge that this might become a security concern.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You find a lot of rare cat pictures, but that's about it. Nothing more to learn from this.") end -- BALIME: the museum security consoles tell us a bit about the museum elseif ( sLuaactionid == ModSpecificActions.COMPUTER_BALIME_L12_MUSEUM_CONSOLE_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The museum security system hasn't been upgraded for a few years.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "All cameras are in the same network, with one simple on/off switch.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It is likely the switch will be in this room.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The cameras give you a view of the museum, but that's it.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_BALIME_L12_MUSEUM_CONSOLE_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There is a list of all exhibits on the computer.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Most of it are old sculptures and bronze works.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "But the most prized item is definetely the Chalice of Chance.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Apart from the chalice, the museum doesn't seem to have anything of interest.") end -- Drassen SAM: get info from the pc and use the command console elseif ( sLuaactionid == ModSpecificActions.COMPUTER_DRASSENSAM_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "We've compromised an army personnel database!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decrypting files") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decryption complete") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing database") -- give us intel if ( successpts > 50 ) then AddIntel( 15 ) elseif ( successpts > 20 ) then AddIntel( 10 ) else AddIntel( 5 ) end SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We were able to learn of enemy movement thanks to the data!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_DRASSENSAM_COMMANDCONSOLE ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This seems to be the console that controls the SAM.") samhackstatus = GetSamSiteHackStatus(sSectorX, sSectorY) ourhack = 100 - 2 * successpts if ( ourhack < 0 ) then ourhack = 0 end -- we can hack the SAM, decreasing its radius, or undo a previous hack -- for simplicity, we will always hack a SAM if enemies are nearby - we are either infiltrating or fighting the enemy in those cases -- otherwise, we obviously control the SAM, so try to unhack it if ( NumNonPlayerTeamInSector(sSectorX, sSectorY, Teams.ENEMY_TEAM) > 0 ) then if ( ourhack >= samhackstatus ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Someone already hacked this thing - and they broke it better than you could.") else SetSamSiteHackStatus(sSectorX, sSectorY, ourhack) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've messed up the file system - they will need an expert to get this running again.") end else if ( samhackstatus < 100 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You attempt to unhack it.") if ( ourhack <= samhackstatus ) then SetSamSiteHackStatus(sSectorX, sSectorY, 100) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We are successful, the targetting software is working again.") else SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Whoever hacked the controls was more capable then we are - we cannot release the controls.") end else SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The software seems to work just fine, better not mess with it.") end end end -- Chitzena SAM: get info from the pc and use the comman console elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CHITZENASAM_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "We've compromised an army personnel database!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decrypting files") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decryption complete") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing database") -- give us intel if ( successpts > 50 ) then AddIntel( 15 ) elseif ( successpts > 20 ) then AddIntel( 10 ) else AddIntel( 5 ) end SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We were able to learn of enemy movement thanks to the data!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CHITZENASAM_PC_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Apparently, this is the computer of the commanding officer.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You are lucky. He forgot to log out when he left.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing Arulcan Army Financial Services") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Identification: Cpt. Gutierrez, A.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Initiating money transfer") -- depending on how skilled we are, we get different amounts of money AddTransactionToPlayersBook(1, 0, 1800, successpts * 30) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've wired quite a bit of the commander's personal funds to our accounts!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The commander probably won't mind.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There is rather large connection of porn in here, but nothing you haven't seen before.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CHITZENASAM_COMMANDCONSOLE ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This seems to be the console that controls the SAM.") samhackstatus = GetSamSiteHackStatus(sSectorX, sSectorY) ourhack = 100 - 2 * successpts if ( ourhack < 0 ) then ourhack = 0 end -- we can hack the SAM, decreasing its radius, or undo a previous hack -- for simplicity, we will always hack a SAM if enemies are nearby - we are either infiltrating or figting the enemy in those cases -- otherwise, we obviously control the SAM, so try to unhack it if ( NumNonPlayerTeamInSector(sSectorX, sSectorY, Teams.ENEMY_TEAM) > 0 ) then if ( ourhack >= samhackstatus ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Someone already hacked this thing - and they broke it better than you could.") else SetSamSiteHackStatus(sSectorX, sSectorY, ourhack) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've messed up the file system - they will need an expert to get this running again.") end else if ( samhackstatus < 100 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You attempt to unhack it.") if ( ourhack <= samhackstatus ) then SetSamSiteHackStatus(sSectorX, sSectorY, 100) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We are successful, the targetting software is working again.") else SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Whoever hacked the controls was more capable then we are - we cannot release the controls.") end else SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The software seems to work just fine, better not mess with it.") end end end -- central SAM: get info from the pc and use the command console elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CENTRALSAM_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "We've compromised an army personnel database!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decrypting files") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decryption complete") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing database") -- give us intel if ( successpts > 50 ) then AddIntel( 15 ) elseif ( successpts > 20 ) then AddIntel( 10 ) else AddIntel( 5 ) end SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We were able to learn of enemy movement thanks to the data!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CENTRALSAM_PC_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There is a plan on the base' security measures here.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Apart from the garrison, there should be some extra mortar shells in some storage crates.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It also seems part of the compound contains a minefield!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There seems to be no way to deactivate it remotely.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You should avoid the south of the building.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You keep looking, but there is no detailed plan on the minefield here.") end -- hacking this pc lowers hacking difficulty in other places elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CENTRALSAM_PC_3 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems all of the SAM sites are connected to the Meduna SAM.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Perhaps you can hack it remotely?") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Establishing connection to Meduna air control") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Password: ********") -- depending on how good we are, this might work if ( successpts > 50 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Password accepted.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... cd ~") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... rm -rf *") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... rm: You have no permission for this command") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... sudo rm -rf *") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... ...") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We successfully hacked the server, hacking in Meduna SAM will now be easier.") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_END) else SetScreenMsg(FontColour.FONT_MCOLOR_RED, "We failed to hack the server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_CENTRALSAM_COMMANDCONSOLE ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This seems to be the console that controls the SAM.") samhackstatus = GetSamSiteHackStatus(sSectorX, sSectorY) ourhack = 100 - 2 * successpts if ( ourhack < 0 ) then ourhack = 0 end -- we can hack the SAM, decreasing its radius, or undo a previous hack -- for simplicity, we will always hack a SAM if enemies are nearby - we are either infiltrating or figting the enemy in those cases -- otherwise, we obviously control the SAM, so try to unhack it if ( NumNonPlayerTeamInSector(sSectorX, sSectorY, Teams.ENEMY_TEAM) > 0 ) then if ( ourhack >= samhackstatus ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Someone already hacked this thing - and they broke it better than you could.") else SetSamSiteHackStatus(sSectorX, sSectorY, ourhack) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've messed up the file system - they will need an expert to get this running again.") end else if ( samhackstatus < 100 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You attempt to unhack it.") if ( ourhack <= samhackstatus ) then SetSamSiteHackStatus(sSectorX, sSectorY, 100) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We are successful, the targetting software is working again.") else SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Whoever hacked the controls was more capable then we are - we cannot release the controls.") end else SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The software seems to work just fine, better not mess with it.") end end end -- Meduna SAM: get info from the pc and use the command console elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNASAM_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "We've compromised an army personnel database!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decrypting files") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decryption complete") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing database") -- give us intel if ( successpts > 50 ) then AddIntel( 15 ) elseif ( successpts > 20 ) then AddIntel( 10 ) else AddIntel( 5 ) end SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We were able to learn of enemy movement thanks to the data!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNASAM_COMPUTERBANK_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This station keeps track of all aircraft arriving in Meduna airport.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Cargo planes from foreign countries seem to arrive frequently.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems the army is significantly employing foreign mercenaries.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNASAM_COMMANDCONSOLE ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This seems to be the console that controls the SAM.") samhackstatus = GetSamSiteHackStatus(sSectorX, sSectorY) ourhack = 100 - 2 * successpts if ( ourhack < 0 ) then ourhack = 0 end -- we can hack the SAM, decreasing its radius, or undo a previous hack -- for simplicity, we will always hack a SAM if enemies are nearby - we are either infiltrating or figting the enemy in those cases -- otherwise, we obviously control the SAM, so try to unhack it if ( NumNonPlayerTeamInSector(sSectorX, sSectorY, Teams.ENEMY_TEAM) > 0 ) then if ( ourhack >= samhackstatus ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Someone already hacked this thing - and they broke it better than you could.") else SetSamSiteHackStatus(sSectorX, sSectorY, ourhack) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've messed up the file system - they will need an expert to get this running again.") end else if ( samhackstatus < 100 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You attempt to unhack it.") if ( ourhack <= samhackstatus ) then SetSamSiteHackStatus(sSectorX, sSectorY, 100) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We are successful, the targetting software is working again.") else SetScreenMsg(FontColour.FONT_MCOLOR_RED, "Whoever hacked the controls was more capable then we are - we cannot release the controls.") end else SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The software seems to work just fine, better not mess with it.") end end end -- MEDUNA PALACE BUNKER -- entrance desktop contains a list of important people allied to the queen -- if you examine the names very closely, and also did so in Alma, you might learn something interesting here :-) (not yet implemented ingame) elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNAPALACE_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There are logs on who enters and leaves this bunker.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Quite a few dignitaries are listed here.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- V. Garcia, businessman") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Cmdr. A. Morris, Tracona military") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- D. Harrows, Harrows Clothing Inc.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- A. Ricci, Ricci Mining and Exploration") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Major E. Tavarez, Cali military") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- D. Van Haussen, businessman") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Col. T. Meyers, US military") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Major J.A. Vargas, PG PMC") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- Dr. E. Poppins, R&D") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Being able to link these people to the regime might become useful.") end -- desktop, control room elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNAPALACE_PC_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "According to protocol, in the event of an emergency, the queen is to be moved to here.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The existence of the bunker isn't common knowledge, and heavily fortified.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You see no immediate weakpoints.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "An occupying force will have to crush the entire garrison to take the bunker.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You quickly test your minesweeper skills. It's still top-notch!") end -- elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNAPALACE_CONSOLE_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "There is a plan on the bunkers' security measures here.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The bunker has two entries - one from the palace, one from an underground escape tunnel.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "A huge part of the bunker is off-limits to all but the queen's personal staff.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "There seems to be an active minefield in the hallway.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The controls should be around here somewhere.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "That minefield looks very nasty even from here.") end -- placeholder - until we have something more interesting, let's have this be a corrupted server elseif ( sLuaactionid == ModSpecificActions.COMPUTER_MEDUNAPALACE_SERVER_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing file.") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... File corruption detected.") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Ending session.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Whatever was on this server, the contents have been deleted. No way to make sense of it.") end -- ALMA storage elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMASTORAGE_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The contents of the storage builings are listed in here.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- 1x M14") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- 1x FAMAS") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- several sets of armour") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- ammunition and grenades") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- experimental rocket ammo") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- several containers of fuel") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "- 9x ballistic missile") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Apart from the manifest, the computers contain nothing interesting.") end -- ALMA prison elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMAPRISON_PC_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The computer contains personnel files.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The guard units seem to shift every few weeks.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "You are able to deduct several troop movements.") -- give us intel if ( successpts > 40 ) then AddIntel( 40 ) elseif ( successpts > 10 ) then AddIntel( 20 ) else AddIntel( 10 ) end SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You've already downloaded the files.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMAPRISON_PC_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This prison is used by the army for detention of high-value inmates.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems detentions are also carried out here.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You view some of the recordings. They are sickening.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Prisoners were regularly beaten, electrocuted, put on the rack...") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The list goes on and on.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "If these recordings were to be made public, the regime would get a lof of bad PR.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You've seen enough.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMAPRISON_PC_3 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The prison schematics are on this computer.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The barracks and offices are on the left.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The mess hall is in the center.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The inmates are all held in the right section.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It seems the entire inmate block can be flooded with poison gas remotely!") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "The control switch is in a hallway leading from the offices to the mess hall.") end -- Alma base -- the computer of Sgt. Krott has data on the secret weapons project -- if you are good, you can retrieve the location of the project lead (a general) -- keep in mind that this computer will be destroyed if the bomb goes off elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_PC_KROTT ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You see files about some top-secret weapons project.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems to be about some kind of new infantry weapon.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "You are able to pinpoint the location of the military project lead!") AddIntel( 50 ) SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You've already downloaded the files.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_PC_BUREAU ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You access the personal files of a Gen. Humphey.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "He seems to be the head of the army training program.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "His personal file suggests he is an 'advisor' of the US government.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Leaking this information might cause some diplomatic embarassment.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You browse the internet and find two new memes.") end elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_PC_FILEROOM ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Quite a bit of pay was moved via this desktop.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "You attempt to divert some funds.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing Arulcan Army Financial Services") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Identification: Gen. Humphey, T.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Initiating money transfer") -- depending on how skilled we are, we get different amounts of money AddTransactionToPlayersBook(1, 0, 1800, successpts * 60) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We've wired quite a bit of the army's pay to our accounts!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It's not like they will need it much longer.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You search for more ways to wreak havoc, and post some witty comments on a messageboard.") end -- info on town layout elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_1 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You find a detailed of all military installations in Alma.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This base serves as a joint command/training facility.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "In the east there seems to be some sort of storage facility.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The army maintains it's own prison for high-value inmates in the south.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The population houses in the southeast, near the mine.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "If you could hold this base, this would be an excellent tra.") end -- warning that parts of the base blow up if you press the red switch elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_2 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Maintenance logs indicate that this base was recently upgraded.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems some sensitive material was recently delivered.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "A failsafe is rigged to blow them up, with the controls somewhere in this room.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Whatever the army is trying to protect is likely valuable.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "In your opinion, anyone boobytrapping their own base lacks a few screws.") end -- info in foreign mercs (Conrad, Iggy, Mike) elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_3 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This console has files on foreign mercenaries hired by the army.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Conrad Gillit, training supervisor") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Igmus Palkov, heavy weapons") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Mike [REDACTED], strike team CO") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Perhaps we can track down these mercenaries and get them to work for us.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Apart from Conrad, Iggy and Mike, no other foreign mercenaries stand out.") end -- info on suspected rebels elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_4 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You find old intelligence reports. This is intel on key rebel personnel.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Cordona, M. - Kill on sight") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Dasouza, C. - Kill on sight") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Marquez, S. - Neutralised") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Vargas, J. - [REDACTED]") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Valenciano, C. - Neutralised") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Dominguez, R. - Neutralised") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Rivas, M. - Presumed exile") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Serrano, A. - Neutralised") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Guzzo, D. - Kill on sight") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Portela, N. - Neutralised") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Casilla, A. - Neutralised") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Smythe, I. - Kill on sight") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "It seems the army has already eliminated most of the rebels. Only a handful remain.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The list of rebel losses makes for a grim read.") end -- info on enemy troop movement elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_5 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "We've compromised an army personnel database!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decrypting files") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Decryption complete") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Accessing database") -- give us intel if ( successpts > 50 ) then AddIntel( 30 ) elseif ( successpts > 20 ) then AddIntel( 20 ) else AddIntel( 15 ) end SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "We were able to learn of enemy movement thanks to the data!") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Unauthorised access detected") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Forcing disconnect from server") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "... Please contact your system administrator for guidance") SetScreenMsg(FontColour.FONT_MCOLOR_RED, "... Automated server disconnect") SetModderLUAFact(sLuaactionid, ActionState.STATE_END) end -- files on rebellious population (Dynamo etc.) elseif ( sLuaactionid == ModSpecificActions.COMPUTER_ALMABASE_CONSOLE_6 ) then if ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Intelligence reports lists possible malcontents in Alma.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "While most of the populationis loyal to the queen, severe friction with the Duncan family remains.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "M. Duncan is the head of the Alma mine and as such irreplacable in the mid-term.") SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "His brother, G. Duncan, serves a term in Tixa for life for civil commotion and instigation.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Steps have been taken to replace Mr. Duncan as head miner for greater stability.") SetModderLUAFact(sLuaactionid, ActionState.STATE_GAVEREWARD_OK) elseif ( GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "No other reports draw your eye.") end end -- We can gain experience/wisdom by hacking successfully. -- give us the reward if the computer was pristine and we've now been given the if ( ( statebefore == ActionState.STATE_OK ) and (GetModderLUAFact(sLuaactionid) == ActionState.STATE_GAVEREWARD_OK) ) then rewardpts = difficulty / 6 -- award experience GiveExp(ubID, StatTypes.EXPERAMT, rewardpts) GiveExp(ubID, StatTypes.WISDOMAMT, rewardpts) end elseif ( usActionType == ActionTypes.ACTIONTYPE_READFILE ) then -- if skill >= difficulty, we succeed successpts = skill - difficulty -- if we fail to understand this, tell us so if ( successpts < 0 ) then SetScreenMsg(FontColour.FONT_MCOLOR_RED, "You can't make sense of any of this.") return end -- ORTA SUBLEVEL if ( sLuaactionid == ModSpecificActions.READING_ORTA_BASEMENT_BOOKSHELF_1 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "This bookshelf contains many textbooks on chemistry, applied physics and mechanics.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "You read a bit, but quickly become bored.") elseif ( sLuaactionid == ModSpecificActions.READING_ORTA_BASEMENT_BOOKSHELF_2 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems there was some research done on miniaturizing rockets.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "A rocket rifle would be small enough to be wielded by an ordinary infantryman.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Much effort was done to improve the accuracy of these rockets.") elseif ( sLuaactionid == ModSpecificActions.READING_ORTA_BASEMENT_BOOKSHELF_3 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Quite a few books are about biometric encryption.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Whatever was researched here, someone wanted to make sure no one without clearance could use it.") -- ORTA elseif ( sLuaactionid == ModSpecificActions.READING_ORTA_BOOKSHELF_1 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "The books contain extensive knowledge on giant predatory cats.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Dust has settled on the books. There aren't used much, it seems.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "That is odd. What else would you study here if not bloodcats?") -- SAN Mona -- kingpin elseif ( sLuaactionid == ModSpecificActions.READING_SANMONA_KINGPIN_BOOKSHELF_1 ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Kingpin seems to log quite a few business transactions in here.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "It seems he controls almost all of San Mona.") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "But none of the records explicitly state something criminal is going on.") end elseif ( usActionType == ActionTypes.ACTIONTYPE_MINIGAME ) then -- for now, the only game we have is tetris if ( sLuaactionid == InteractiveAction.MINIGAME_TETRIS ) then -- playing a game costs $1 if ( SoldierSpendMoney(ubID, 1) == 1 ) then SetMiniGameType(MiniGames.TETRIS) SetPendingNewScreen(ScreenTypes.MINIGAME) end elseif ( sLuaactionid == InteractiveAction.MINIGAME_PONG ) then -- playing a game costs $1 if ( SoldierSpendMoney(ubID, 1) == 1 ) then SetMiniGameType(MiniGames.PONG) SetPendingNewScreen(ScreenTypes.MINIGAME) end end elseif ( usActionType == ActionTypes.ACTIONTYPE_VARIOUS ) then if ( sLuaactionid == InteractiveAction.BILLIARD ) then PlaySound("Sounds\\billiard.wav") elseif ( sLuaactionid == InteractiveAction.TABLETENNIS ) then PlaySound("Sounds\\tabletennis.wav") elseif ( sLuaactionid == InteractiveAction.TOILET ) then PlaySound("Sounds\\toilet.wav") elseif ( sLuaactionid == InteractiveAction.TV ) then PlaySound("Sounds\\tvstatic.wav") elseif ( sLuaactionid == InteractiveAction.STEAL_CASHREGISTER ) then PlaySound("Sounds\\cashregister.wav") elseif ( sLuaactionid == InteractiveAction.PICTURE_NEONTHECLUB ) then -- The first argument is the path of a .png picture (any other format will be ignored). -- The second argument determines whether we stretch the picture to fullscreen (1) or not (0). If the picture is larger than our screen, we stretch it anyway. -- Only call this function from tactical (the call will be ignored otherwise). DisplayPictureTactical("Interface\\neonsign_theclub.png", 1) elseif ( sLuaactionid == InteractiveAction.PICTURE_NEONBEER ) then DisplayPictureTactical("Interface\\neonsign_beer.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_BEER ) then DisplayPictureTactical("Interface\\poster_beer1.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_2xBEER ) then DisplayPictureTactical("Interface\\poster_yellow_green_bottle.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_PRIVATE ) then DisplayPictureTactical("Interface\\kingpinclub_entrance.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_XXXPITSTOP ) then DisplayPictureTactical("Interface\\neonsign_xxx.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_DELIVERY ) then DisplayPictureTactical("Interface\\delivery.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_GENERALSTORE ) then DisplayPictureTactical("Interface\\sign_generalstore.png", 0) elseif ( sLuaactionid == InteractiveAction.PICTURE_SHADYLADY ) then DisplayPictureTactical("Interface\\shady_lady.png", 0) elseif ( sLuaactionid == InteractiveAction.COOK_COWMEAT_TO_STEAK ) then -- 1565 cow meat -- 1559 Steak if ( HasItemInInventory(ubID, 1565) ) then CreateItemInvOrFloor(ubID, 1559) DestroyOneItemInInventory(ubID, 1565) PlaySound("Sounds\\cooking.wav") SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Cooked a steak.") end elseif ( sLuaactionid == InteractiveAction.TAKE_FIRE_EXTINGUISHER_1 ) then -- 1761 fire extinguisher CreateItemInvOrFloor(ubID, 1761) -- due to the way structures are handled, we the decal is on a tile next to the one we are handling, so account for that -- the empty wall is in another tileset DestroyAndReplaceDecal(sGridNo - 1, "build_29.sti", 6) elseif ( sLuaactionid == InteractiveAction.TAKE_FIRE_EXTINGUISHER_2 ) then CreateItemInvOrFloor(ubID, 1761) -- due to the way structures are handled, we the decal is on a tile next to the one we are handling, so account for that -- the empty wall is in another tileset DestroyAndReplaceDecal(sGridNo - 160, "build_29.sti", 9) end end end -- states of a photo fact PhotoFlag = { NONE = 0, TAKEN = 1, UPLOADED = 2, VERIFIED = 3, -- the code only has one value for verification, but we use several ones for different results VERIFIED_RESULT_2 = 4, } -- In this function we can define what and how many items a intel-based dealer should trade with, and how much an item is worth in intel -- AddArmsDealerAdditionalIntelData takes 4 arguments: -- usDealer: shopkeeper this is intended for -- usItem: number of item -- sIntelPrice: price of item in intel -- sOptimalNumber: how many items the trader should have at maximum function AddArmsDealerAdditionalIntelData() -- price is affected by player progress - on higher progress items get cheaper (as they are less useful at that point) progress = CurrentPlayerProgressPercentage() ratio = (200.0 - progress) / 100.0 -- black market: -- guns AddArmsDealerAdditionalIntelDataItem(68, 337, 10 * ratio, 2) -- Five-Seven AddArmsDealerAdditionalIntelDataItem(68, 663, 15 * ratio, 1) -- HK G11 PDW AddArmsDealerAdditionalIntelDataItem(68, 1073, 10 * ratio, 2) -- HK UCP AddArmsDealerAdditionalIntelDataItem(68, 673, 13 * ratio, 2) -- HK MP7A1 AddArmsDealerAdditionalIntelDataItem(68, 686, 20 * ratio, 1) -- Metal Storm Surf Zone AddArmsDealerAdditionalIntelDataItem(68, 1191, 25 * ratio, 1) -- Magpul PDR-D AddArmsDealerAdditionalIntelDataItem(68, 65, 40 * ratio, 1) -- Auto Rocket Rifle AddArmsDealerAdditionalIntelDataItem(68, 1334, 27 * ratio, 1) -- AR57 6" Silenced AddArmsDealerAdditionalIntelDataItem(68, 335, 40 * ratio, 1) -- Barret M82A2 AddArmsDealerAdditionalIntelDataItem(68, 676, 35 * ratio, 1) -- HL SL9SD AddArmsDealerAdditionalIntelDataItem(68, 774, 50 * ratio, 1) -- VSSK Vychlop AddArmsDealerAdditionalIntelDataItem(68, 605, 22 * ratio, 1) -- AICW AddArmsDealerAdditionalIntelDataItem(68, 748, 22 * ratio, 2) -- XM-29 OICW AddArmsDealerAdditionalIntelDataItem(68, 752, 20 * ratio, 1) -- XM-8 Sharpshooter AddArmsDealerAdditionalIntelDataItem(68, 1065, 23 * ratio, 1) -- Steyr AUG-A3 AddArmsDealerAdditionalIntelDataItem(68, 680, 16 * ratio, 1) -- Jackhammer Mk3A1 -- Ammo AddArmsDealerAdditionalIntelDataItem(68, 1455, 8 * ratio, 2) -- 5.7x28 100 AET AddArmsDealerAdditionalIntelDataItem(68, 1450, 8 * ratio, 2) -- 4.7x33 100 SAP AddArmsDealerAdditionalIntelDataItem(68, 1460, 8 * ratio, 2) -- 4.6x30 100 AET AddArmsDealerAdditionalIntelDataItem(68, 544, 5 * ratio, 2) -- 9mm MS 72 SAP AddArmsDealerAdditionalIntelDataItem(68, 1518, 10 * ratio, 2) -- 6x35 100 AP AddArmsDealerAdditionalIntelDataItem(68, 113, 5 * ratio, 5) -- Minirocket 5 HEAP AddArmsDealerAdditionalIntelDataItem(68, 1738, 10 * ratio, 2) -- Minirocket 5 Cryo AddArmsDealerAdditionalIntelDataItem(68, 116, 5 * ratio, 4) -- .50 BMG 10 AP AddArmsDealerAdditionalIntelDataItem(68, 540, 3 * ratio, 4) -- 7.62x37 10 AP AddArmsDealerAdditionalIntelDataItem(68, 1512, 7 * ratio, 3) -- 12.7x97 Subsonic 15 AP AddArmsDealerAdditionalIntelDataItem(68, 1520, 10 * ratio, 2) -- 6.8x43 SPC 100 AP AddArmsDealerAdditionalIntelDataItem(68, 1423, 3 * ratio, 5) -- 12 gauge 25 Flechette AddArmsDealerAdditionalIntelDataItem(68, 1578, 1 * ratio, 10) -- Darts 1 Neurotoxin -- Launchers AddArmsDealerAdditionalIntelDataItem(68, 908, 20 * ratio, 1) -- XM-25 Grenade Launcher AddArmsDealerAdditionalIntelDataItem(68, 1736, 40 * ratio, 1) -- Strela-2 -- Grenades AddArmsDealerAdditionalIntelDataItem(68, 957, 4 * ratio, 2) -- 20mm Thermobaric Clip AddArmsDealerAdditionalIntelDataItem(68, 963, 4 * ratio, 2) -- 25mm Thermobaric Clip AddArmsDealerAdditionalIntelDataItem(68, 970, 2 * ratio, 5) -- 40mm Thermobaric Grenade AddArmsDealerAdditionalIntelDataItem(68, 978, 4 * ratio, 5) -- Thermobaric Rocket AddArmsDealerAdditionalIntelDataItem(68, 987, 4 * ratio, 2) -- 40mm MS Thermobaric Clip AddArmsDealerAdditionalIntelDataItem(68, 989, 4 * ratio, 2) -- 20mm Napalm Clip AddArmsDealerAdditionalIntelDataItem(68, 990, 4 * ratio, 2) -- 25mm Napalm Clip AddArmsDealerAdditionalIntelDataItem(68, 991, 1 * ratio, 5) -- 40mm Napalm Grenade AddArmsDealerAdditionalIntelDataItem(68, 993, 4 * ratio, 2) -- 40mm MS Napalm Clip AddArmsDealerAdditionalIntelDataItem(68, 1737, 6 * ratio, 4) -- Strela-2 Missile -- Explosives AddArmsDealerAdditionalIntelDataItem(68, 951, 4 * ratio, 3) -- 60mm Mustard Gas Shell AddArmsDealerAdditionalIntelDataItem(68, 1523, 3 * ratio, 3) -- M18 Claymore AddArmsDealerAdditionalIntelDataItem(68, 1735, 3 * ratio, 4) -- TM-62P2 anti-tank Mine -- Face items AddArmsDealerAdditionalIntelDataItem(68, 1025, 20 * ratio, 2) -- NVG Gen IV -- Misc AddArmsDealerAdditionalIntelDataItem(68, 216, 6 * ratio, 3) -- Compound 18 AddArmsDealerAdditionalIntelDataItem(68, 235, 2 * ratio, 4) -- Regeneration Booster AddArmsDealerAdditionalIntelDataItem(68, 324, 50 * ratio, 1) -- X-Ray Detector AddArmsDealerAdditionalIntelDataItem(68, 327, 11 * ratio, 2) -- Tank of gas AddArmsDealerAdditionalIntelDataItem(68, 592, 3 * ratio, 2) -- Sniper Suppressor AddArmsDealerAdditionalIntelDataItem(68, 1026, 2 * ratio, 2) -- Trigger Group AddArmsDealerAdditionalIntelDataItem(68, 1538, 1 * ratio, 5) -- Stim AddArmsDealerAdditionalIntelDataItem(68, 1744, 7 * ratio, 2) -- Ballistic Shield end function SetPhotoState( aIndex, aState ) if ( (aIndex >= ModSpecificActions.PHOTO_FLAGS_BEGIN) and (aIndex <= ModSpecificActions.PHOTO_FLAGS_END) and (aState >= PhotoFlag.NONE) and (aState <= PhotoFlag.VERIFIED_RESULT_2) ) then SetModderLUAFact( aIndex, aState ) end end -- sSectorX, sSectorY, bSectorZ: sector coordinates -- sGridNo: tile that we photographed. When we take a photo this function is run on all tiles we see in a 2-tile radius around where we clicked -- bLevel: height level (floor or roof) -- ubPhotographerProfile: profile of the merc taking the photo -- room: if > 0, this tile is inside this room -- usTargetProfile: if we photographed a NPC, this will be their profile number, otherwise NO_PROFILE function AddPhotoData( sSectorX, sSectorY, bSectorZ, sGridNo, bLevel, ubPhotographerProfile, room, usTargetProfile ) if ( usTargetProfile ~= NO_PROFILE ) then if ( usTargetProfile == Profil.GENERAL ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GENERAL) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the general.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_GENERAL, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.WARDEN ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_WARDEN) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the head warden.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_WARDEN, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.ERNEST ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ERNEST) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the head researcher.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ERNEST, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.ARMAND ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ARMAND) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Armand.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ARMAND, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.KINGPIN ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_KINGPIN) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Kingpin.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_KINGPIN, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.DARREN ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DARREN) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Darren.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_DARREN, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.TONY ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TONY) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Tony.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_TONY, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.JOE ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_JOE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Joe.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_JOE, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.MADLAB ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MADLAB) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Dr. Kairns.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_MADLAB, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.MIKE ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MIKE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Mike.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_MIKE, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.DEVIN ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DEVIN) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Devin.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_DEVIN, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.MICKY ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MICKY) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Micky.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_MICKY, PhotoFlag.TAKEN ) end elseif ( usTargetProfile == Profil.CARMEN ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CARMEN) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of Carmen.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_CARMEN, PhotoFlag.TAKEN ) end end elseif ( bSectorZ == 0 ) then -- Cambria hospital morgue if ( (sSectorY == SectorY.MAP_ROW_F) and (sSectorX == 8) ) then if ((room == 70) or (room == 71) or (room == 72)) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the morgue.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE, PhotoFlag.TAKEN ) end end -- Alma elseif ( (sSectorY == SectorY.MAP_ROW_H) and (sSectorX == 13) ) then if ((room == 12) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the command center.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM, PhotoFlag.TAKEN ) end end elseif ( (sSectorY == SectorY.MAP_ROW_H) and (sSectorX == 14) ) then if ((room == 8) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the missile storage.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS, PhotoFlag.TAKEN ) end end elseif ( (sSectorY == SectorY.MAP_ROW_I) and (sSectorX == 13) ) then if ((room == 19) or (room == 20) or (room == 21)) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the torture room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE, PhotoFlag.TAKEN ) end end -- Tixa elseif ( (sSectorY == SectorY.MAP_ROW_J) and (sSectorX == 9) ) then if ((room == 19) or (room == 20) or (room == 21)) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the torture room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE, PhotoFlag.TAKEN ) end end -- Balime elseif ( (sSectorY == SectorY.MAP_ROW_L) and (sSectorX == 12) ) then if ((room == 37) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the museum's most prized exhibition.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM, PhotoFlag.TAKEN ) end end -- Grumm elseif ( (sSectorY == SectorY.MAP_ROW_G) and (sSectorX == 2) ) then if ((room == 1) or (room == 7) or (room == 8)) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the dangerous materials handled here.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE, PhotoFlag.TAKEN ) end end -- Meduna elseif ( (sSectorY == SectorY.MAP_ROW_N) and (sSectorX == 5) ) then if ((room == 17) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the royal lodge.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA, PhotoFlag.TAKEN ) end end elseif ( (sSectorY == SectorY.MAP_ROW_N) and (sSectorX == 4) ) then if ((room == 1) or (room == 2) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the control room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA, PhotoFlag.TAKEN ) end end -- Drassen SAM elseif ( (sSectorY == SectorY.MAP_ROW_D) and (sSectorX == 15) ) then if ((room == 2) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the control room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN, PhotoFlag.TAKEN ) end end -- Chitzena SAM elseif ( (sSectorY == SectorY.MAP_ROW_D) and (sSectorX == 2) ) then if ((room == 7) or (room == 8) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the control room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA, PhotoFlag.TAKEN ) end end -- central SAM elseif ( (sSectorY == SectorY.MAP_ROW_I) and (sSectorX == 8) ) then if ((room == 16) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the control room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL, PhotoFlag.TAKEN ) end end end elseif ( bSectorZ == 1 ) then -- Tixa if ( (sSectorY == SectorY.MAP_ROW_J) and (sSectorX == 9) ) then if ((room == 3) or (room == 9) or (room == 10) or (room == 12)) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the inhuman conditions here.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS, PhotoFlag.TAKEN ) end end -- Orta elseif ( (sSectorY == SectorY.MAP_ROW_K) and (sSectorX == 4) ) then if ((room == 13) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the stored and packaged experimental weaponry.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE, PhotoFlag.TAKEN ) end elseif ((room == 11) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the manufacturing process.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING, PhotoFlag.TAKEN ) end elseif ((room == 16) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_LABS) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the experiments in the laboratories.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_ORTA_LABS, PhotoFlag.TAKEN ) end end -- Meduna elseif ( (sSectorY == SectorY.MAP_ROW_P) and (sSectorX == 3) ) then if ((room == 24) ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of the bunker control room.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER, PhotoFlag.TAKEN ) end end end elseif ( bSectorZ == 3 ) then -- only lvl 3 sectors are creature sectors (apart from a secret sector most players will never know of :-) ). So any location will do. if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3) < PhotoFlag.TAKEN ) then SetScreenMsg(FontColour.FONT_MCOLOR_DKWHITE, "Took a photo of... whatever THIS is.") SetPhotoState( ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3, PhotoFlag.TAKEN ) end end end function GetPhotoData( aType ) if ( aType == PhotoFlag.TAKEN ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GENERAL) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_GENERAL, "Positive identification of the commanding officer of the Alma military base.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_WARDEN) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_WARDEN, "We've identified the director of Tixa.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ERNEST) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ERNEST, "We've identified the current head of research in Orta.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ARMAND) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ARMAND, "We've come across a wealthy industrialist in Balime.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_KINGPIN) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_KINGPIN, "We've identified the unofficial leader of San Mona - some kind of crime syndicate leader?") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DARREN) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_DARREN, "A photo of the possible second in command of the 'Kingpin' crime syndicate.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TONY) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TONY, "Contact with an arms dealer in San Mona has been established.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_JOE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_JOE, "Visual identification of the queen's personal head of security.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MADLAB) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MADLAB, "We managed to contact the former head researcher of the Orta research lab.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MIKE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MIKE, "Visual identification of a high-ranking mercenary in the queen's payroll.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DEVIN) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_DEVIN, "We took a photo of an arms dealer specialising in explosives.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MICKY) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MICKY, "A shady character in a bar mentioned an interest in animal parts.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CARMEN) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CARMEN, "We made the acquaintance of a head hunter.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE, "Photos of a filled morgue.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM, "Visuals detailing the control room of the Alma command center.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS, "Images taken in a storage facility show a number of artillery missiles.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE, "Images show a secret torture room in a military prison.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE, "We've documented a dedicated interrogation room in Tixa.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS, "Pictures seem to indicate systematic torture and killings in Tixa.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3, "We've come across some sort of... unknown animals.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_LABS) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_LABS, "Horrific experiments are undertaken in a secret government facility.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE, "Images show a storage room full of experimental weaponry.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING, "A remote facility is involved in the manufacturing of prototype weaponry.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM, "A museum showcases an important artifact.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE, "We have documented drastically unsafe working conditions in Grumm.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA, "It seems there is some sort of entertainment arena in Meduna.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER, "We managed to photograph the control room of the royal bunker.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN, "We documented the control center of a surface to air battery near Drassen.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA, "We documented the control center of a surface to air battery near Chitzena.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL, "We documented the control center of a surface to air battery near Cambria.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA) == PhotoFlag.TAKEN ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA, "We documented the control center of a surface to air battery in Meduna.") end elseif ( aType == PhotoFlag.VERIFIED ) then if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GENERAL) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_GENERAL, "General Theo Humphey is a former US officer. He is in charge of the Alma training facility. His intimate knowledge of the military could be valuable.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GENERAL) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_GENERAL, "General Theo Humphey was a former US officer. He was in charge of the Alma training facility. KIA.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_WARDEN) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_WARDEN, "Christine Woltz commands the Tixa correctional facility. Her knowledge of political prisoners could be a potential information goldmine.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_WARDEN) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_WARDEN, "Christine Woltz commanded the Tixa correctional facility. KIA.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ERNEST) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ERNEST, "Dr. Ernest Poppin is the current head researcher of Orta. He might have knowledge of important interna.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ERNEST) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ERNEST, "Dr. Ernest Poppin was Orta head of research before the lab fell. It is likely classified information was lost with his death.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ARMAND) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ARMAND, "Armand Ricci, board member of Ricci Mining Corp., was identified in Balime. Ricci mining is an important regional player, and rumoured to be heavily invested in Balime as well.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ARMAND) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ARMAND, "A board member of Ricci Mining Corp. was killed under unknwon circumstances. The company quickly issued a statement blaming the rebel uprising for this terrorist attack.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_KINGPIN) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_KINGPIN, "Peter Klauss commands the powerful San Mona crime syndicate. The relation of his ship to Deidranna is not fully understood and should be investigated further.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_KINGPIN) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_KINGPIN, "Peter Klauss led the San Mona syndicate. His death is likely to have shattered the syndicate.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DARREN) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_DARREN, "Darren Van Haussen is in charge of Kingpin's main club in San Mona. It is likely he is familiar with the syndicate's structure.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DARREN) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_DARREN, "Mr. Haussen was a high-level subordinate of Kinpin. KIA.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TONY) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TONY, "'Tony' is a well-stocked arms dealer operating in San Mona from behind a front shop. Though initially believed otherwise, he is not part of the 'Kingpin' syndicate. Whether he belongs to some other hitherto unknown organisation is unclear, but likely.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TONY) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TONY, "An international arms dealer operated in San Mona. His death will make it harder for irregular organisations to acquire weaponry.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_JOE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_JOE, "Joseph Papanus commands the queen's personal forces. What sparse information remains paints the picture of a very violent man. Due to his gambling addiction, it is believed that he could be motivated to seek new employment if significant monetary rewards are offered.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_JOE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_JOE, "Joseph Papanus was head of royal security. KIA.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MADLAB) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MADLAB, "Dr. Nathaniel Kairns was head researcher of Orta until he deserted. His motivation remains unclear, but he is likely to posess useful intel and skills.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MADLAB) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MADLAB, "Once the project lead of Orta, Dr. Nathaniel Kairns could have been a valuable source of intel.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MIKE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MIKE, "The former AIM mercenary 'Mike' has been identified as part of an elite division. This is a clear indicator that the army has stepped employment of outside forces significantly. It will likely lead to some consternation among parts of the mercenary world, AIM in particular.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MIKE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MIKE, "A veteran AIM member, 'Mike' was a high-ranking mercenary in royal services. His death will have deprived the army of one of their most competent officers.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DEVIN) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_DEVIN, "Devin Connell is more than just an arms dealer. Data reconciliation with MI5 revealed that he was linked to MI5 in some capacity. The exact details are disclosed, but his current business conduct might give some insight. It is possible he may also freelance as a mercenary from time to time.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_DEVIN) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_DEVIN, "Devin Connell was an arms dealer specialising in explosives. Rumours about a possible IRA connection could not be established or rejected.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MICKY) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MICKY, "The notorious arms dealer Micky O'Brien has been in the business for decades. He has switched to trading the rare animals parts of protected species for south-east asia buyers.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MICKY) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MICKY, "After decades of trading arms, Micky O'Brien finally ran out of luck in Arulco.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CARMEN) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CARMEN, "Carmen Dancio is a bounty hunter. He is currently in Arulco on the hunt for several targets on Interpol's 'Most Wanted' list. He is rather unscrupulous in achieving his targets.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CARMEN) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CARMEN, "A seasoned bounty hunter, Carmen Dancio, was killed before further contact could be established.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE, "Several images taken detail a morgue in a local hospital. The often borderline excessive wounds on the deceased concur with a widespread campaign of indiscriminate killings..") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE, "Several images taken detail a morgue in a local hospital. The often borderline excessive wounds on the deceased concur with a widespread campaign of indiscriminate killings. As the hospital was no longer under rebel control when the images were taken, goverment accountability is in question.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM, "High-definition photos of the army headquarter command center still have to be investigated painstakingly, but should deliver a wealth of information to analysts.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM, "High-definition pictures of the army headquarter command center in alma are available. The usefulness is put into question, however, as the rebels have already taken the facility.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS, "An army storage depot in Alma houses a number of rockets. This could possibly lead to identification of as-of-yet unknown artillery pieces the army might possess.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS, "An army storage depot in Alma houses a number of rockets. The regime denies responsibility and blames the rebels, who indeed control the depot, for subverting an arms embargo.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE, "Rebels obtained images of a dedicated torture room in a military prison. This gives further credence to claims of widespread human rights abuses in the country.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE, "Rebels claim images show a dedicated torture room in a military prison. As the facility is under their control, the culpability of the regime is put into question by outside parties.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE, "Dissidents claim that torture is so regular in a notorious prison that the regime has set up dedicated rooms for it. Images taken in secret paint a chilling picture indeed.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE, "Dissidents claim that torture is so regular in a notorious prison that the regime has set up dedicated rooms for it. The regime denies this and states that this 'is an obvious set-up by a terrorist gane no-one in their right mind would believe'.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS, "The images coming to us from a secret section of a remote prison are hard to stomach, even for veteran analysts. The limited material dissidents managed to smuggle outside reveals both malicious, wanton destruction and ignorance of even bare lip-service to human decency.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS, "Rebel photographers documented serious human rights abuses of staggering magnitude in a government prison. Regime sympathizers deny these allegations and point out that any loss of life is soley to blame on the rebels, who recently took the facility after fierce fighting.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3, "Scientists are baffled by images showing large, insect-like creatures from the caves of Arulco. Once the fighting has dies down, an expedition will want to research this.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3, "Scientists are baffled by images showing large, insect-like creatures from the caves of Arulco. As the rebels claim to have eradicated them, this is likely some kind of obscure hoax.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_LABS) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_LABS, "Images smuggled out of laboratory at an undisclosed location show bizarre images involving prisoners, giant cats and huge amounts of irradiated goo. Frankly, we're out of our depth here, but this is probably not good.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_LABS) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_LABS, "After taking a laboratory in fierce fighting, rebels leaked images, claiming there were experiments done involving live humans, large predatory cats and 'radioactive stuff'. We're honestly not sure how to proceed.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE, "Estimates of the regime's strength will likely have to be revised, as images clearly show huge numbers of some sort of missile-based assault rifle in storage.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE, "Dissidents claim a former government storage depot contained huge numbers of missile-based weaponry. As the facility is no longer under government control, this cannot be fully verfified.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING, "According to recent leaks, an underground facility is involved in the creation of experimental weapon systems. The exact nature of said systems has yet to be disclosed, but seems missile-based.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING, "A formerly regime-controlled facility was involved in weapons manufacturing, according to rebel sources. This is put into doubt by the fact that rebels might have altered the facility after taking it.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM, "Arulco's most important artifact, the Chalice of Chance, is on display in Balime. Dissidents protest against the sacrilege of removing it from the ruins of Chitzena in the first place.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM, "Arulco's most important artifact, the Chalice of Chance, was recently stolen from the Balime museum. The current whereabouts are unknown, this represents yet another loss for arulcan culture.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE, "Leaked images show clearly unsafe working conditions in the industrial city of Grumm. Irradiated equipment is used by workers without any sort of protection.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE, "Leaked images show clearly unsafe working conditions in the industrial city of Grumm. The regime denies any culpability and puts the blame soley on the rebels, who currently administer the region.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA, "In a bizarre twist, leaked photography from Meduna shows a small arena, fit for roman-style entertainment, including a luxurious lodge for the queen herself. This lavish display is in stark contrast with the often impoverished population.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER, "In a daring operation, rebels were able to obtain images of the command room of the queen's personal bunker. The paranoid security system prominently includes an active mine field.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER, "Before it was taken by the rebels, the queen's personal bunker control room housed elaborate security systems, including a mine field.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN, "Images leaked to us show details of a surface to air missile battery near Drassen. It can only be controlled via a command console, making that an obvious weakpoint.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN, "Rebels detailed the control center of a recently occupied anti-air installation in the north-east. It can be presumed that other installations use similar hardware.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA, "Images leaked to us show details of a surface to air missile battery near chitzena. The immediate placement at the coast is an obvious weakpoint, especially considering the lack of marine forces.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA, "Rebels detailed the control center of a recently occupied anti-air installation in the north-west. It can be presumed that other installations use similar hardware.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL, "Images leaked to us show details of a surface to air missile battery in the center of the country. While the placement of this installation yields overlapping air coverage on much of the country's airspace, this leaves the south-east of the country without any air coverage.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL, "The central anti-air installation was recently taken by rebels after fierce fighting. Apart from the sizeable garrison, it included mine-fields and internal gas deployment systems.") end if ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA) == PhotoFlag.VERIFIED ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA, "Images leaked to us show details of a heavily guarded surface to air missile battery in Meduna. It can only be controlled via a command console, making that an obvious weakpoint. It is unknown whether the different batteries are somehow linked to each other.") elseif ( GetModderLUAFact(ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA) == PhotoFlag.VERIFIED_RESULT_2 ) then SetPhotoFactLaptopData(aType, ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA, "The anti-air battery in Meduna itself has fallen to the rebels. It is unknown whether there are any loyalist aircraft left against whom this could be used.") end end end function VerifyPhotoState(aIndex) if ( (aIndex >= ModSpecificActions.PHOTO_FLAGS_BEGIN) and (aIndex <= ModSpecificActions.PHOTO_FLAGS_END) and (GetModderLUAFact(aIndex) == PhotoFlag.UPLOADED) ) then if (aIndex == ModSpecificActions.PHOTO_FLAGS_GENERAL) then if ( MercIsDead(Profil.GENERAL) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying General Theo Humphey. Amount lowered due to death.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 30 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying General Theo Humphey.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_WARDEN) then if ( MercIsDead(Profil.WARDEN) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 7 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Christine Woltz. Amount lowered due to death.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Christine Woltz.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ERNEST) then if ( MercIsDead(Profil.ERNEST) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Dr. Ernest Poppin. Amount lowered due to death.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 30 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Dr. Ernest Poppin.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ARMAND) then if ( MercIsDead(Profil.ARMAND) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Armand Ricci. Amount lowered due to death.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Armand Ricci.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_KINGPIN) then if ( MercIsDead(Profil.KINGPIN) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Peter Klauss. Amount lowered, as his organisation is effectively destroyed.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 25 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Peter Klauss.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_DARREN) then if ( MercIsDead(Profil.DARREN) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 3 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Darren Van Haussen. Amount lowered as his death rendered the information obsolete.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Darren Van Haussen.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_TONY) then if ( MercIsDead(Profil.TONY) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 12 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Tony. Amount lowered due to death.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Tony.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_JOE) then if ( MercIsDead(Profil.JOE) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 4 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Joseph Papanus. Amount lowered as his death rendered the information obsolete.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Joseph Papanus.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_MADLAB) then if ( MercIsDead(Profil.MADLAB) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Dr. Nathaniel Kairns. Amount lowered as his death removed a valuable source of intel.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 35 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Dr. Nathaniel Kairns.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_MIKE) then if ( MercIsDead(Profil.MIKE) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 5 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Mike. Amount lowered as his death rendered the information obsolete.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Mike.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_DEVIN) then if ( MercIsDead(Profil.DEVIN) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Devin Connell. Amount lowered as his death lowers possible interest from disclosed organisations.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Devin.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_MICKY) then if ( MercIsDead(Profil.MICKY) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 4 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Micky O'Brien. Amount lowered as his death rendered the information obsolete.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Micky O'Brien.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_CARMEN) then if ( MercIsDead(Profil.CARMEN) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 4 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Carmen Dancio. Amount lowered as his death rendered the information obsolete.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for identifying Carmen Dancio.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_CAMBRIA_HOSPITAL_MORGUE) then if ( GetNumHostilesInSector(8, SectorY.MAP_ROW_F, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 14 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the conditions in Cambria hospital.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 7 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the conditions in Cambria hospital. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ALMA_HQ_CONTROLROOM) then if ( GetNumHostilesInSector(13, SectorY.MAP_ROW_H, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the Alma military headquarter.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the Alma military headquarter. Amount lowered as informatino is now outdated due to the ousting of regime troops.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ALMA_STORAGE_ROCKETS) then if ( GetNumHostilesInSector(14, SectorY.MAP_ROW_H, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the contents of a military depot in Alma.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the contents of a military depot in Alma. Amount lowered as information is now outdated due to the ousting of regime troops.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ALMA_PRISON_TORTURE) then if ( GetNumHostilesInSector(13, SectorY.MAP_ROW_I, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting torture in a military prison.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 8 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting torture in a military prison. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE) then if ( GetNumHostilesInSector(9, SectorY.MAP_ROW_J, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting torture in a prison.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 8 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting torture in a prison. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_TIXA_TORTURE_DOWNSTAIRS) then if ( GetNumHostilesInSector(9, SectorY.MAP_ROW_J, 1) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 25 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting torture in a prison.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting torture in a prison. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_CREATURE_LVL3) then if ( CheckQuest(Quests.QUEST_CREATURES) == pQuest.QUESTDONE ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting a nest of unknown creatures. Amount lowered as they have all been eradicated, making research impossible.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 40 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting a nest of unknown creatures.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ORTA_LABS) then if ( GetNumHostilesInSector(9, SectorY.MAP_ROW_J, 1) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 15 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting bizarre experiments in secret lab.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting bizarre experiments in secret lab. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ORTA_STORAGE) then if ( GetNumHostilesInSector(9, SectorY.MAP_ROW_J, 1) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 12 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for recording huge amounts of weaponry in army storage.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 4 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for recording huge amounts of weaponry in army storage. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_ORTA_MANUFACTURING) then if ( GetNumHostilesInSector(9, SectorY.MAP_ROW_J, 1) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 14 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting a weapons manufacturing line.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 6 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting a weapons manufacturing line. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_BALIME_MUSEUM) then if ( CheckFact( Facts.FACT_CHALICE_STOLEN, 0 ) == true ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 7 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for confirming a valuable artifact was in Balime. Amount lowered as its whereabouts are no longer known.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 20 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for confirming a valuable artifact is in Balime.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_GRUMM_RADIOACTIVE) then if ( GetNumHostilesInSector(2, SectorY.MAP_ROW_G, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 10 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting unsafe working conditions in Grumm.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 4 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting unsafe working conditions in Grumm. Amount lowered as sector is no longer government-controlled, culpability for any crimes no longer undeniable.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_MEDUNA_ARENA) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 9 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the existence of a private arena for the queen's entertainment.") elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_MEDUNA_BUNKER) then if ( GetNumHostilesInSector(3, SectorY.MAP_ROW_P, 1) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 30 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the layout of the royal bunker.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 8 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the layout of the royal bunker. Amount lowered as this is no longer relevant to the war effort.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_SAM_DRASSEN) then if ( GetNumHostilesInSector(15, SectorY.MAP_ROW_D, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 12 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation near Drassen.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 6 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation near Drassen. Amount lowered as sector is no longer government-controlled and thus the information is outdated.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_SAM_CHITZENA) then if ( GetNumHostilesInSector(2, SectorY.MAP_ROW_D, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 12 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation near Chitzena.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 6 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation near Chitzena. Amount lowered as sector is no longer government-controlled and thus the information is outdated.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_SAM_CENTRAL) then if ( GetNumHostilesInSector(2, SectorY.MAP_ROW_D, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 14 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation near Cambria.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 7 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation near Cambria. Amount lowered as sector is no longer government-controlled and thus the information is outdated.") end elseif (aIndex == ModSpecificActions.PHOTO_FLAGS_SAM_MEDUNA) then if ( GetNumHostilesInSector(4, SectorY.MAP_ROW_N, 0) ) then SetPhotoState( aIndex, PhotoFlag.VERIFIED ) AddIntel( 16 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation in Meduna.") else SetPhotoState( aIndex, PhotoFlag.VERIFIED_RESULT_2 ) AddIntel( 8 ) SetScreenMsg(FontColour.FONT_MCOLOR_LTGREEN, "Received RIS compensation for documenting the hard- and software of an anti-air installation in Meduna. Amount lowered as sector is no longer government-controlled and thus the information is outdated.") end end end end -- types of weather Weather = { WEATHER_FORECAST_NORMAL = 0, WEATHER_FORECAST_RAIN = 1, WEATHER_FORECAST_THUNDERSHOWERS = 2, WEATHER_FORECAST_SANDSTORM = 3, WEATHER_FORECAST_SNOW = 4, }; -- skills Skill = { -- radio operator SKILLS_RADIO_ARTILLERY = 0, SKILLS_RADIO_JAM = 1, SKILLS_RADIO_SCAN_FOR_JAM = 2, SKILLS_RADIO_LISTEN = 3, SKILLS_RADIO_CALLREINFORCEMENTS = 4, SKILLS_RADIO_TURNOFF = 5, SKILLS_RADIO_ACTIVATE_TURNCOATS_ALL = 6, SKILLS_INTEL_CONCEAL = 7, SKILLS_INTEL_GATHERINTEL = 8, SKILLS_CREATE_TURNCOAT = 9, SKILLS_ACTIVATE_TURNCOATS = 10, SKILLS_ACTIVATE_TURNCOATS_ALL = 11, -- various SKILLS_SPOTTER = 12, SKILLS_FOCUS = 13, SKILLS_DRAG = 14, }; -- Look up voicelines in Dialogue Control.h, only listing notable ones often used here Voiceline = { QUOTE_SEE_ENEMY = 0, QUOTE_HEARD_SOMETHING = 6, QUOTE_SPOTTED_SOMETHING_ONE = 11, QUOTE_SPOTTED_SOMETHING_TWO = 12, QUOTE_OUT_OF_AMMO = 13, QUOTE_TAKEN_A_BREATING = 21, -- took a lot of hits this turn QUOTE_CLOSE_CALL = 22, -- almost hit by a projectile QUOTE_NO_LINE_OF_FIRE = 23, -- really bad chance to hit target QUOTE_KILLED_AN_ENEMY = 27, QUOTE_HEADSHOT = 33, QUOTE_STARTING_TO_WHINE = 40, -- complain: low morale -- these three lines are played at random when we talk to one of our mercs. Despite the name they don't have any special meaning QUOTE_NEGATIVE_COMPANY = 41, QUOTE_SOCIAL_TRAIT = 44, QUOTE_PASSING_DISLIKE = 45, QUOTE_ENEMY_PRESENCE = 59, QUOTE_WARNING_OUTSTANDING_ENEMY_AFTER_RT = 60, QUOTE_SECTOR_SAFE = 65, } -- different dialogue action events DialogueActionEvent = { ADE_DISCOVER_ROOM = 0, -- merc is the 1st one to explore this room, aData1 indicates the room in this event ADE_DIALOGUE_REACTION = 1, -- someone else used a line, and we might answer to that, aData1 indicates the profile number in this event, aData2 indicates the specific voice line we react to, aData3 indicates whether this person has been recruited (1) or not(0) ADE_MERC_ARRIVES = 2, -- a mercenary arrives in Arulco. aData1 is the profile of the arriving merc, aData2 is 1 if the player hasn't made contact with the rebels yet ADE_SECTOR_COMMENTARY = 3, -- similar to the rebel's quotes, this is called upon visiting a sector for the first time (if no rebel does their quote first) ADE_MERCHANT_CHAT = 4, -- we greet a merchant (used with non-profile merchants, in order to be a bit more lively), aData1 is the id of the merchant ADE_DIALOGUE_NPC_FRIENDLY = 5, -- in a conversation, we can say something when clicking on a button ADE_DIALOGUE_NPC_DIRECT = 6, ADE_DIALOGUE_NPC_THREATEN = 7, ADE_DIALOGUE_NPC_RECRUIT = 8, ADE_DIALOGUE_NPC_REPEAT = 9, ADE_DIALOGUE_RPC_RECRUIT_SUCCESS = 10, -- we've successfully recruited an RPC, and might comment on that ADE_SEX = 11, -- does exactly what you think it does ADE_WEATHERCHANGE = 12, -- the weather has changed in the current sector, and we can warn the player about that, aData1 is type of Weather ADE_SKILL_RESULT = 13, -- we used a skill, and comment on the result, aData1 is of Skill, aData2 indicates whether it was a success (1) or failure (0) ADE_GRENADEWARNING = 14, -- a delayed enemy grenade was dropped nearby, and we can shout a warning, aData1 is the itemnumber of the grenade ADE_CONSUMEITEM = 15, -- we consumed an item, aData1 is the item index ADE_NPC_DEATH = 16, -- someone died, aData1 is the profile of the dead NPC, aData2 the profile of the killer, aData3 the bodytype of the dead ADE_WITNESS_GOOD = 17, -- similar to comment upon buddy doing good. aData1 is the profile of person, aData2 is 0 if we saw a kill, 1 if they passed a skill check (and we're less than 15 tiles away) ADE_BANDAGE_PERFORM_BEGIN = 18, -- we bandage someone, aData1 is the profile of person ADE_BANDAGE_PERFORM_END = 19, -- we finished bandaging someone, aData1 is the profile of person ADE_BANDAGE_RECEIVE_BEGIN = 20, -- someone bandages us, aData1 is the profile of person ADE_BANDAGE_RECEIVE_END = 21, -- someone finished bandaging us, aData1 is the profile of person ADE_ZOMBIESRISE = 22, -- a new wave of zombies is spawned from corpses ADE_SEXUALHARASSMENT = 23, -- the player wants to take the 'strip' command further than we are comfortable with ADE_LOCKBOMB = 24, -- merc uses a shaped charge to blow the locks of a door, aData1 indicates whether it was a success (1) or failure (0) ADE_SNIPERWARNING = 25, -- merc warns of sniper presence in this sector ADE_BOMB_HAS_BEEN_PLANTED = 26, -- we planted a bomb/mine/etc., aData1 is the item index, aData2 indicates whether it was a success (1) or failure (0) } -- functions used here: -- ubProfile: profile number of merc (don't change that unless you know what to do) -- iFaceIndex: index (don't change that unless you know what to do) -- path: path and name of soundfile we want to play (in .wav, .ogg or .mp3 format) -- text: "Text that should appear" -- SetAdditionalDialogue(ubProfile, iFaceIndex, path, text) -- Do not use this function in any lua calls outside of HandleAdditionalDialogue(..)! -- -- path: path and name of soundfile we want to play (in .wav or .ogg format) -- volume: optional sound volume (65: medium volume, 127: loud), default 65 -- PlaySound(path, volume) -- handle -- sSectorX, sSectorY and bSectorZ indicate the sector coordinates -- ubProfile is the merc for whom this is called -- iFaceIndex is the face of the merc. DON'T CHANGE THIS UNLESS YOU KNOW WHAT YOU ARE DOING! -- usEventNr indicates which event from DialogueActionEvent is used here -- aData1, aData2, aData3 are additional data, see event description on what they do in each event function HandleAdditionalDialogue(sSectorX, sSectorY, bSectorZ, ubProfile, iFaceIndex, usEventNr, aData1, aData2, aData3 ) if ( ubProfile == Profil.BUNS_CHAOTIC ) then -- we can 'react' on what lines other people use -- this happens when we are in the same sector, awake and concious -- aData1 indicates the profile number in this event -- aData2 indicates the specific voice line we react to -- aData3 indicates whether this person has been recruited (1) or not(0) if ( usEventNr == DialogueActionEvent.ADE_DIALOGUE_REACTION ) then if ( aData1 == Profil.FRED ) then if ( aData2 == 12 ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//nicebutharmless.MP3", "Pleasant fellow, I suppose, but too honest for his own good.") end elseif ( aData1 == Profil.ELLIOT ) then if ( aData2 == 0 ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//elliot.mp3", "Death doesn't seem to have kept him from talking.") end end -- similar to the rebel's quotes, this is called upon visiting a sector for the first time (if no rebel does their quote first) elseif ( usEventNr == DialogueActionEvent.ADE_SECTOR_COMMENTARY ) then -- surface sectors if ( bSectorZ == 0 ) then -- Alma base if ( (sSectorX == 13) and (sSectorY == SectorY.MAP_ROW_H) ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//almabase.mp3", "This must be where the savant has set up shop. Very impressive.") -- Hicks farm elseif ( (sSectorX == 10) and (sSectorY == SectorY.MAP_ROW_F) ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//hicksfarm.ogg", "Nothing but crude brutes. The savant would not ally with them... at least... I hope not.") end end -- aData1 is the itemnumber of the grenade elseif ( usEventNr == DialogueActionEvent.ADE_GRENADEWARNING ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//grenadewarning.ogg", "Be careful, it would probably burn your legs right off!") -- someone died, aData1 is the profile of the dead NPC, aData2 the profile of the killer, aData3 the bodytype of the dead elseif ( usEventNr == DialogueActionEvent.ADE_NPC_DEATH ) then if ( aData2 == Profil.BUNS_CHAOTIC ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//friendlyfire.MP3", "So sorry. I slipped.") elseif ( (aData1 == Profil.BUZZ) or (aData1 == Profil.MELTDOWN) or (aData1 == Profil.ANNIE) or (aData1 == Profil.MADAME) or (aData1 == Profil.DOREEN) ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//likedfemaledeath.MP3", "Her blood will be avenged.") elseif ( (aData1 == Profil.REAPER) or (aData1 == Profil.HAYWIRE) or (aData1 == Profil.RAZOR) or (aData1 == Profil.SLAY) or (aData1 == Profil.CARMEN) or (aData1 == Profil.JOE) or (aData1 == Profil.CHRIS) or (aData1 == Profil.KINGPIN) or (aData1 == Profil.MIKE) or (aData1 == Profil.SKITZ) ) then SetAdditionalDialogue(ubProfile, iFaceIndex, "Speech//Additional//Buns_chaotic//likedmaledeath.MP3", "Very sad. But he was weak.") end end end end -- Look up voicelines in Dialogue Control.h, only listing notable ones often used here Voiceline = { QUOTE_SEE_ENEMY = 0, QUOTE_KILLED_AN_ENEMY = 27, -- these three lines are played at random when we talk to one of our mercs. Despite the name they don't have any special meaning QUOTE_NEGATIVE_COMPANY = 41, QUOTE_SOCIAL_TRAIT = 44, QUOTE_PASSING_DISLIKE = 45, QUOTE_ENEMY_PRESENCE = 59, QUOTE_WARNING_OUTSTANDING_ENEMY_AFTER_RT = 60, QUOTE_SECTOR_SAFE = 65, } -- This function is used to replace dialogue quotes with new ones. This way we can have more variety - a merc doesn't always use the same lines when something happens. -- If a line isn't replaced, it plays normally, so it is a good idea to not always replace lines. -- -- functions used here: -- path: path and name of soundfile we want to play (in .wav, .ogg or .mp3 format) -- text: "Text that should appear" -- SetReplaceDialogue(path, text) -- Do not use this function in any lua calls outside of HandleReplaceQuote(..)! -- -- handle -- ubProfile is the merc for whom this is called -- usQuoteNum is the quote that the game wants to play function HandleReplaceQuote( ubProfile, usQuoteNum ) end -- functions used here: -- -- path: path and name of soundfile we want to play (in .wav, .ogg or .mp3 format) -- volume: optional sound volume (65: medium volume, 127: loud), default 65 -- PlaySound(path, volume) -- handle -- sSectorX, sSectorY and bSectorZ indicate the sector coordinates -- ubMerchantID is the ID of the merchant for whom this is called -- ubBodyType is the character model the merchant uses -- usQuoteNum is the event of the dialogue that is supposed to be called function HandleNPCMerchantQuote(sSectorX, sSectorY, bSectorZ, ubMerchantID, ubBodyType, usQuoteNum ) end