diff --git a/TransCore/BattleArena.xml b/TransCore/BattleArena.xml index bad67ceb..410368a2 100644 --- a/TransCore/BattleArena.xml +++ b/TransCore/BattleArena.xml @@ -172,6 +172,9 @@ (block ( (arenaRank (typGetData &stBattleArena; 'arenaRank)) (katamiStatus (typGetData &stBattleArena; 'katamiStatus)) + (usedIllegal (typGetData &stBattleArena; 'usedIllegal)) + (usedMilitary (typGetData &stBattleArena; 'usedMilitary)) + (usedAlien (typGetData &stBattleArena; 'usedAlien)) ) (append (if (and arenaRank (!= arenaRank 'rookie)) @@ -189,7 +192,29 @@ (typTranslate &unidCommonText; 'achievementsAndRegrets) )) ) - + + (if usedIllegal + (list (list + "Used illegal items in the Arena" + Nil + (typTranslate &unidCommonText; 'notes) + )) + ) + (if usedMilitary + (list (list + "Used military items in the Arena" + Nil + (typTranslate &unidCommonText; 'notes) + )) + ) + (if usedAlien + (list (list + "Used alien items in the Arena" + Nil + (typTranslate &unidCommonText; 'notes) + )) + ) + ; Missions (rpgMissionAchievements &stBattleArena; "* +gladiatorFight;") ) diff --git a/TransCore/BattleArenaChallenger.xml b/TransCore/BattleArenaChallenger.xml index cf32009e..a06bdcfd 100644 --- a/TransCore/BattleArenaChallenger.xml +++ b/TransCore/BattleArenaChallenger.xml @@ -39,6 +39,11 @@ > + + (if (typGetData &msBattleArenaChallenger; 'shatteredSlicer) + (list (list "Invoked Shatter on The Slicer in the Arena" Nil (typTranslate &unidCommonText; 'notes))) + ) + (switch ; This mission only works in Rigel Aurelius @@ -86,6 +91,9 @@ (block Nil + (if (eq (msnGetData gSource 'destroyReason) 'shatter) + (typSetData &msBattleArenaChallenger; 'shatteredSlicer True) + ) (msnSetData gSource 'nextSoundTrack &muArenaChampion;) (typFireObjEvent &msBattleArenaFight; gSource 'OnCompleted) (switch diff --git a/TransCore/BattleArenaFight.xml b/TransCore/BattleArenaFight.xml index d16b8442..2c4f7cec 100644 --- a/TransCore/BattleArenaFight.xml +++ b/TransCore/BattleArenaFight.xml @@ -129,6 +129,18 @@ (arenaObj (objGetObjByID (msnGetProperty gSource 'ownerID))) (theShip (objGetObjByID (msnGetData gSource 'opponentID))) ) + + ; Note whether player is using military or illegal items + (if (objGetItems gPlayerShip "*I +military;") + (typSetData &stBattleArena; 'usedMilitary True) + ) + (if (objGetItems gPlayerShip "*I +illegal;") + (typSetData &stBattleArena; 'usedIllegal True) + ) + (if (objGetItems gPlayerShip "*I +alien;") + (typSetData &stBattleArena; 'usedAlien True) + ) + ; Position the opponent at the right spot (objMoveTo theShip (sysVectorPolarOffset arenaObj (random 204 336) 45)) (objResume theShip) @@ -383,6 +395,9 @@ (block ( (fightTime (msnGetData gSource 'fightTime)) ) + + (msnSetData gSource 'destroyReason aDestroyReason) + ; Adjust timers in case we miss the window (if (gr (msnGetData gSource 'timeTo50) fightTime) (msnSetData gSource 'timeTo50 fightTime)) (if (gr (msnGetData gSource 'timeTo25) fightTime) (msnSetData gSource 'timeTo25 fightTime)) diff --git a/TransCore/Code.xml b/TransCore/Code.xml index 76e8242c..ba65ba8d 100644 --- a/TransCore/Code.xml +++ b/TransCore/Code.xml @@ -90,7 +90,9 @@ (block (theList resurrectCount totalGMProfit totalArmsProfit totalEquipProfit totalMedsProfit totalLuxProfit totalIllegalProfit + totalItemsConfiscated friendlyShipsDestroyed friendlyStationsDestroyed + killsByAutons killsByWingmen systemData neverBacktracked slavesFreed slaveSales neverReachedBA neverReachedStK neverReachedJiangs neverReachedPointJuno neverReachedHeretic) @@ -118,12 +120,17 @@ (plyGetItemStat gPlayer "itemsBoughtValue" "*~wsam +Illegal")) ) + (setq totalItemsConfiscated (objGetData gPlayerShip 'totalConfiscatedList)) + ; Conducts (setq systemData (plyGetStat gPlayer "systemData")) (setq neverBacktracked (not (filter systemData theData (not (eq (item theData 1) (item theData 2)))))) (setq friendlyShipsDestroyed (plyGetStat gPlayer "friendlyShipsDestroyed")) (setq friendlyStationsDestroyed (plyGetStat gPlayer "friendlyStationsDestroyed")) + (setq killsByAutons (objGetData gPlayerShip 'killsByAutons)) + (setq killsByWingmen (objGetData gPlayerShip 'killsByWingmen)) + ; Exploration (setq neverReachedBA (not (find systemData "BA" 0))) (setq neverReachedStK (not (find systemData "SK" 0))) @@ -164,6 +171,13 @@ (list (list "Never destroyed friendly stations" Nil "conducts")) ) ) + + (if killsByAutons + (list (list "Kills by autons" killsByAutons (typTranslate &unidCommonText; 'autonsAndWingmen) -1)) + ) + (if killsByWingmen + (list (list "Kills by wingmen" killsByWingmen (typTranslate &unidCommonText; 'autonsAndWingmen) -1)) + ) ; Exploration (if neverReachedBA @@ -204,6 +218,10 @@ (list (list "Profit on ship's equipment" totalEquipProfit "commerce")) ) + (if totalItemsConfiscated + (map (@ totalItemsConfiscated) theItemName (list theItemName (@ totalItemsConfiscated theItemName) "items confiscated")) + ) + ; Slave sales (if slaveSales (list (list "Profit on slave sales" slaveSales "commerce")) @@ -214,7 +232,8 @@ (list (list "Slaves freed" slavesFreed "missions & activities")) ) )) - + + theList ) )) diff --git a/TransCore/Commonwealth.xml b/TransCore/Commonwealth.xml index 9fef4f9e..85c27bf6 100644 --- a/TransCore/Commonwealth.xml +++ b/TransCore/Commonwealth.xml @@ -1609,7 +1609,7 @@ - (block (desc itemToRemove itemsToConfiscate) + (block (desc itemToRemove itemsToConfiscate playerData) ; If we don't have a smuggler's cargo hold, then we confiscate ; all illegal items. @@ -1627,11 +1627,17 @@ )) ) - ; Remove items + (setq recordList (objGetData gPlayerShip 'totalConfiscatedList)) + ; Remove items (and track losses at the player's expense) (enum itemsToConfiscate itemToRemove - (objRemoveItem gPlayerShip itemToRemove) + (block (itemName) + (setq itemName (itmGetName itemToRemove (list 'plural 'actual))) + (set@ recordList itemName (add (@ recordList itemName) (itmGetCount itemToRemove))) + (objRemoveItem gPlayerShip itemToRemove) + ) ) - + (objSetData gPlayerShip 'totalConfiscatedList recordList) + ; Compose text (setq desc "Commonwealth Customs has inspected your ship's cargo hold and confiscated ") (if (eq (count itemsToConfiscate) 1) diff --git a/TransCore/Gaians.xml b/TransCore/Gaians.xml index 8194e505..f079af3a 100644 --- a/TransCore/Gaians.xml +++ b/TransCore/Gaians.xml @@ -48,7 +48,64 @@ sound= "&snRecoillessCannon;" > - + + + (block ( + (wrecks (objGetData gPlayerShip 'demolitionWrecksDestroyed)) + (enemies (objGetData gPlayerShip 'demolitionEnemiesDestroyed)) + (friends (objGetData gPlayerShip 'demolitionFriendsDestroyed)) + ) + (print gType) + (append + (if wrecks + (list (list + "Wrecks destroyed by Gaian Demolition Cannon" + wrecks + (typTranslate &unidCommonText; 'notes) + 1 + )) + ) + (if enemies + (list (list + "Enemies destroyed by Gaian Demolition Cannon" + enemies + (typTranslate &unidCommonText; 'notes) + 2 + )) + ) + (if friends + (list (list + "Friends destroyed by Gaian Demolition Cannon" + friends + (typTranslate &unidCommonText; 'notes) + 3 + )) + ) + ) + ) + + + ; Track the player's kills for this item + (switch + (neq aDestroyer gPlayerShip) + Nil + + ; Wrecks + (objHasAttribute aObjDestroyed 'shipwreck) + (objIncData gPlayerShip 'demolitionWrecksDestroyed) + + (not (objIsShip aObjDestroyed)) + Nil + + ; Enemies + (objIsEnemy gPlayerShip aObjDestroyed) + (objIncData gPlayerShip 'demolitionEnemiesDestroyed) + + ; Friends + (objIncData gPlayerShip 'demolitionFriendsDestroyed) + ) + + diff --git a/TransCore/Jenna.xml b/TransCore/Jenna.xml index 6c77308f..e319c6f5 100644 --- a/TransCore/Jenna.xml +++ b/TransCore/Jenna.xml @@ -60,6 +60,7 @@ "\"Good as new!\"" "\"I got it!\"" "\"Roger, I'm inbound\"" + "\"Done!\"" "\"Roger, I'm inbound\"" "\"Aren't they the good guys?\"" "\"Yeah, right!\"" @@ -79,7 +80,6 @@ "\"Hey, watch it!\"" "\"Ready for action, boss\"" "You have a sad feeling for a moment, then it passes" - (list { @@ -112,8 +112,9 @@ - (block (theList status) + (block (theList status kills) (setq status (typGetData &chJenna; "status")) + (setq kills (typGetData &chJenna; 'kills)) (if status (setq theList (list @@ -131,10 +132,17 @@ ) )) ) + (if kills + (setq theList (append theList + (list (list "Kills by Jenna" kills (typTranslate &unidCommonText; 'autonsAndWingmen) 3)) + )) + ) theList ) + + (sysCreateShip &scRoninJenna; (@ gData 'pos) &svCommonwealth;) diff --git a/TransCore/Penitents.xml b/TransCore/Penitents.xml index 341f1f7d..86a47969 100644 --- a/TransCore/Penitents.xml +++ b/TransCore/Penitents.xml @@ -522,8 +522,77 @@ effect= "&efDarkAcidBoltDefault;" sound= "&snRecoillessCannon;" /> + + + (block ( + (killsPenitent (objGetData gPlayerShip 'absolutionKillsPenitent)) + (killsEnemy (objGetData gPlayerShip 'absolutionKillsEnemy)) + (killsFriend (objGetData gPlayerShip 'absolutionKillsFriend)) + (killsTotal (add killsPenitent killsEnemy killsFriend)) + ) + (append + (if (gr killsTotal 0) + (list (list + "Ships destroyed by Penitent Cannon" + killsTotal + (typTranslate &unidCommonText; 'notes) + 1 + )) + ) + (if killsPenitent + (list (list + "Penitents destroyed by Penitent Cannon" + killsPenitent + (typTranslate &unidCommonText; 'notes) + 2 + )) + ) + (if killsEnemy + (list (list + (if killsPenitent + "Other enemies destroyed by Penitent Cannon" + "Enemies destroyed by Penitent Cannon" + ) + killsEnemy + (typTranslate &unidCommonText; 'notes) + 3 + )) + ) + (if killsFriend + (list (list + "Friends destroyed by Penitent Cannon" + killsFriend + (typTranslate &unidCommonText; 'notes) + 4 + )) + ) + ) + ) + + + ; Track the player's kills for this item + (switch + (neq aDestroyer gPlayerShip) + Nil + + (not (objIsShip aObjDestroyed)) + Nil + + ; Track irony + (objHasAttribute aObjDestroyed 'penitents) + (objIncData gPlayerShip 'absolutionKillsPenitent) + + ; Enemies + (objIsEnemy gPlayerShip aObjDestroyed) + (objIncData gPlayerShip 'absolutionKillsEnemy) + + ; Friends + (objIncData gPlayerShip 'absolutionKillsFriend) + ) + + - + + + + (if (not (typGetData &dsRPGAnalyzeItem; 'hasAnalyzedItems)) + (list (list "Never analyzed any items" Nil (typTranslate &unidCommonText; 'notes))) + ) + + diff --git a/TransCore/RPGUsefulItems.xml b/TransCore/RPGUsefulItems.xml index 0265f0f8..ff6b6bea 100644 --- a/TransCore/RPGUsefulItems.xml +++ b/TransCore/RPGUsefulItems.xml @@ -207,6 +207,10 @@ itemToUseOn: dstItem shipObj: theShip })) + + (if (not (itmIsKnown dstItem)) + (typSetData &dsRPGUseItemBase; 'hasUsedUnidentifiedItem True) + ) ; Restore the cursor position (scrSetListCursor gScreen theCursor) @@ -290,6 +294,13 @@ You cannot use %useItem% on %dstItem%. + + + (if (not (typGetData &dsRPGUseItemBase; 'hasUsedUnidentifiedItem)) + (list (list "Never used any unidentified items" Nil (typTranslate &unidCommonText; 'notes))) + ) + + diff --git a/TransCore/RPGWingmen.xml b/TransCore/RPGWingmen.xml index 3a114df9..c3caf561 100644 --- a/TransCore/RPGWingmen.xml +++ b/TransCore/RPGWingmen.xml @@ -203,6 +203,7 @@ "" ) + "Target neutralized" "Acknowledged" "Unable to comply" "Unable to comply" @@ -225,7 +226,6 @@ "Watch your targets!" "Ready" Wingman killed - %name% refuses to switch to an inferior ship. @@ -319,7 +319,7 @@ (sysAddObjRecurringTimerEvent 60 gSource "OnBehavior") ) - + (switch (eq (objGetCharacterData gSource 'status) 'returnedHome) @@ -334,6 +334,18 @@ ) ) + + + (if (objGetProperty gSource 'playerWingman) + (block Nil + (if (eq (objGetTarget gSource) aObjDestroyed) + (objSendMessage gSender gSource (objTranslate gSource 'DestroyedTarget)) + ) + (objSetCharacterData gSource 'kills (add (objGetCharacterData gSource 'kills) 1)) + (objIncData gPlayerShip 'killsByWingmen) + ) + ) + (if (eq (objGetData gSource "behavior") 'goingHome) diff --git a/TransCore/Rama.xml b/TransCore/Rama.xml index 76a86a05..b7043cf0 100644 --- a/TransCore/Rama.xml +++ b/TransCore/Rama.xml @@ -54,6 +54,7 @@ "\"My ship's as good as new\"" "\"Target acquired\"" "\"Acknowledged\"" + "\"Target destroyed\"" "\"Acknowledged\"" "\"I won't kill innocents!\"" "\"Someday, perhaps...\"" @@ -132,8 +133,9 @@ - (block (theList status) + (block (theList status kills) (setq status (typGetGlobalData &chRama; "status")) + (setq kills (typGetData &chRama; 'kills)) (if status (setq theList (list @@ -152,6 +154,12 @@ )) ) + (if kills + (setq theList (append theList + (list (list "Kills by Rama" kills (typTranslate &unidCommonText; 'autonsAndWingmen) 4)) + )) + ) + theList ) diff --git a/TransCore/Volkov.xml b/TransCore/Volkov.xml index cf14c7a8..f1968e33 100644 --- a/TransCore/Volkov.xml +++ b/TransCore/Volkov.xml @@ -242,6 +242,7 @@ "\"Good! Armor is repaired\"" "\"Da! Target acquired\"" "\"Da! Returning now\"" + "\"Target destroyed\"" "\"Da! Returning now\"" "\"Helena would not want me to\"" "\"Is joke?\"" @@ -296,8 +297,9 @@ - (block (theList status) - (setq status (typGetGlobalData &chVolkov; "status")) + (block (theList status kills) + (setq status (typGetGlobalData &chVolkov; "status")) + (setq kills (typGetData &chVolkov; 'kills)) (if status (setq theList (list @@ -315,6 +317,11 @@ ) )) ) + (if kills + (setq theList (append theList + (list (list "Kills by Volkov" kills (typTranslate &unidCommonText; 'autonsAndWingmen) 2)) + )) + ) theList )