mirror of
https://github.com/1dot13/source.git
synced 2026-08-19 14:20:30 +02:00
MERGED GameDir files from the development GameDir folder from revision 4545 up to 4882
Development GameDir folder: https://ja2svn.dyndns.org/source/ja2/branches/Wanne/JA2%201.13%20MP/GameDir git-svn-id: https://ja2svn.mooo.com/source/ja2_v1.13_data@1353 4f8fa57e-7814-0410-bad4-adc449f26b7c
This commit is contained in:
@@ -0,0 +1,322 @@
|
||||
--[[
|
||||
|
||||
http://www.legion.zone.zg.pl/doku.php/modowanie/ja/art_ja_m_22_lua
|
||||
|
||||
Global :
|
||||
|
||||
- giLairID
|
||||
|
||||
1 - Drassen
|
||||
2 - Cambria
|
||||
3 - Alma
|
||||
4 - Grumm
|
||||
|
||||
Function :
|
||||
|
||||
- SectorEnemyControlled ( IDSector )
|
||||
check if enemy controls sector
|
||||
|
||||
- SECTOR( SectorX, SectorY )
|
||||
|
||||
- CheckMercIsDead (ProfilID)
|
||||
check merc is dead
|
||||
|
||||
- AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
- IncrementTownLoyaltyEverywhere( idLoyalty )
|
||||
increment all town loyalty
|
||||
|
||||
- IncrementTownLoyalty ( idLoyalty )
|
||||
increment town loyalty
|
||||
|
||||
- DecrementTownLoyalty ( idTown, idLoyalty )
|
||||
decrement town loyalty
|
||||
|
||||
- DecrementTownLoyaltyEverywhere ( idLoyalty )
|
||||
decrement all town loyalty
|
||||
|
||||
- SetTownLoyalty ( idTown, idLoyalty )
|
||||
set town loyalty
|
||||
|
||||
Example :
|
||||
|
||||
if SectorEnemyControlled ( SECTOR(4,13) ) == false then
|
||||
-- instructions
|
||||
end
|
||||
|
||||
if SectorEnemyControlled ( SECTOR(4,13) ) == false then
|
||||
-- instructions
|
||||
else
|
||||
-- instructions
|
||||
end
|
||||
|
||||
if ( CheckMercIsDead (101) == true ) then
|
||||
-- merc is dead
|
||||
else
|
||||
-- instructions
|
||||
end
|
||||
|
||||
-- 1 * 500 = 500 = 4%
|
||||
DecrementTownLoyaltyEverywhere ( 1 )
|
||||
|
||||
-- 10 * 500 = 5000 = 45%
|
||||
IncrementTownLoyalty (10)
|
||||
|
||||
-- 20 * 500 = 10000 = 90%
|
||||
DecrementTownLoyalty ( 2 , 20 )
|
||||
|
||||
-- 30 * 500 = 15000 = 100%
|
||||
IncrementTownLoyaltyEverywhere (30)
|
||||
|
||||
-- 100 = 100%
|
||||
SetTownLoyalty ( 1, 100 )
|
||||
|
||||
-- 30 = 30%
|
||||
SetTownLoyalty ( 1, 30 )
|
||||
|
||||
|
||||
EventGlobal = {
|
||||
GLOBAL_LOYALTY_BATTLE_WON = 0,
|
||||
.
|
||||
.
|
||||
MY_GLOBAL_LOYALTY_13 = 13,
|
||||
MY_GLOBAL_LOYALTY_14 = 14,
|
||||
.
|
||||
.
|
||||
.
|
||||
MY_GLOBAL_LOYALTY_100 = 100,
|
||||
}
|
||||
|
||||
]]
|
||||
|
||||
Profil = {
|
||||
MIGUEL = 57,
|
||||
DOREEN = 139,
|
||||
MARTHA = 109,
|
||||
KEITH = 147,
|
||||
YANNI = 108,
|
||||
AUNTIE = 76,
|
||||
MATT = 148,
|
||||
JOEY = 90,
|
||||
}
|
||||
|
||||
Town = {
|
||||
|
||||
OMERTA = 1,
|
||||
DRASSEN = 2,
|
||||
ALMA = 3,
|
||||
GRUMM = 4,
|
||||
CAMBRIA = 6,
|
||||
SANMONA = 7,
|
||||
ESTONI = 8,
|
||||
BALIME = 10,
|
||||
MEDUNa = 11,
|
||||
CHITZENA = 12,
|
||||
}
|
||||
|
||||
-- gain pts per real loyalty pt
|
||||
local GAIN_PTS_PER_LOYALTY_PT = 500
|
||||
|
||||
-- --- LOYALTY BONUSES ---
|
||||
-- Omerta
|
||||
local LOYALTY_BONUS_MIGUEL_READS_LETTER = (10 * GAIN_PTS_PER_LOYALTY_PT) -- multiplied by 4.5 due to Omerta's high seniment, so it's 45%
|
||||
-- Drassen
|
||||
local LOYALTY_BONUS_CHILDREN_FREED_DOREEN_KILLED = (10 * GAIN_PTS_PER_LOYALTY_PT) -- +50% bonus for Drassen -- Overhead.cpp
|
||||
local LOYALTY_BONUS_CHILDREN_FREED_DOREEN_SPARED = (20 * GAIN_PTS_PER_LOYALTY_PT) -- +50% bonus for Drassen -- Overhead.cpp
|
||||
-- Cambria
|
||||
local LOYALTY_BONUS_MARTHA_WHEN_JOEY_RESCUED = (15 * GAIN_PTS_PER_LOYALTY_PT) -- -25% for low Cambria sentiment
|
||||
local LOYALTY_BONUS_KEITH_WHEN_HILLBILLY_SOLVED = (15 * GAIN_PTS_PER_LOYALTY_PT) -- -25% for low Cambria sentiment
|
||||
-- Chitzena
|
||||
local LOYALTY_BONUS_YANNI_WHEN_CHALICE_RETURNED_LOCAL = (20 * GAIN_PTS_PER_LOYALTY_PT) -- +75% higher in Chitzena -- no used
|
||||
local LOYALTY_BONUS_YANNI_WHEN_CHALICE_RETURNED_GLOBAL = (10 * GAIN_PTS_PER_LOYALTY_PT) -- for ALL towns!
|
||||
-- Alma
|
||||
local LOYALTY_BONUS_AUNTIE_WHEN_BLOODCATS_KILLED = (20 * GAIN_PTS_PER_LOYALTY_PT) -- Alma's increases reduced by half due to low rebel sentiment
|
||||
local LOYALTY_BONUS_MATT_WHEN_DYNAMO_FREED = (20 * GAIN_PTS_PER_LOYALTY_PT) -- Alma's increases reduced by half due to low rebel sentiment
|
||||
local LOYALTY_BONUS_FOR_SERGEANT_KROTT = (20 * GAIN_PTS_PER_LOYALTY_PT) -- Alma's increases reduced by half due to low rebel sentiment (Interface Dialogue.cpp)
|
||||
-- Everywhere
|
||||
local LOYALTY_BONUS_TERRORISTS_DEALT_WITH = ( 5 * GAIN_PTS_PER_LOYALTY_PT)
|
||||
local LOYALTY_BONUS_KILL_QUEEN_MONSTER = (10 * GAIN_PTS_PER_LOYALTY_PT)
|
||||
-- Anywhere
|
||||
-- loyalty bonus for completing town training
|
||||
local LOYALTY_BONUS_FOR_TOWN_TRAINING = ( 2 * GAIN_PTS_PER_LOYALTY_PT ) -- 2% (Town Militia.cpp i Map Screen Interface Map.cpp)
|
||||
|
||||
EventGlobal = {
|
||||
-- There are only for distance-adjusted global loyalty effects. Others go into list above instead!
|
||||
GLOBAL_LOYALTY_BATTLE_WON = 0,
|
||||
GLOBAL_LOYALTY_BATTLE_LOST = 1,
|
||||
GLOBAL_LOYALTY_ENEMY_KILLED = 2,
|
||||
GLOBAL_LOYALTY_NATIVE_KILLED = 3,
|
||||
GLOBAL_LOYALTY_GAIN_TOWN_SECTOR = 4,
|
||||
GLOBAL_LOYALTY_LOSE_TOWN_SECTOR = 5,
|
||||
GLOBAL_LOYALTY_LIBERATE_WHOLE_TOWN = 6, -- awarded only the first time it happens
|
||||
GLOBAL_LOYALTY_ABANDON_MILITIA = 7,
|
||||
GLOBAL_LOYALTY_GAIN_MINE = 8,
|
||||
GLOBAL_LOYALTY_LOSE_MINE = 9,
|
||||
GLOBAL_LOYALTY_GAIN_SAM = 10,
|
||||
GLOBAL_LOYALTY_LOSE_SAM = 11,
|
||||
GLOBAL_LOYALTY_QUEEN_BATTLE_WON = 12,
|
||||
}
|
||||
|
||||
|
||||
function CheckConditionsForTriggeringCreatureQuest( sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
local ubValidMines = 0
|
||||
|
||||
if ( gameStyle == 0 or enableCrepitus == 0 ) then
|
||||
return -- No scifi, no creatures...
|
||||
end
|
||||
|
||||
if ( giLairID ) then
|
||||
return -- Creature quest already begun
|
||||
end
|
||||
|
||||
-- Count the number of "infectible mines" the player occupies
|
||||
|
||||
-- SEC_D13
|
||||
if SectorEnemyControlled ( SECTOR(4,13) ) == false then
|
||||
ubValidMines = ubValidMines + 1
|
||||
end
|
||||
|
||||
-- SEC_H8
|
||||
if SectorEnemyControlled ( SECTOR(8,8) ) == false then
|
||||
ubValidMines = ubValidMines + 1
|
||||
end
|
||||
|
||||
-- SEC_I14
|
||||
if SectorEnemyControlled ( SECTOR(9,14) ) == false then
|
||||
ubValidMines = ubValidMines + 1
|
||||
end
|
||||
|
||||
-- SEC_H3
|
||||
if SectorEnemyControlled ( SECTOR(8,3) ) == false then
|
||||
ubValidMines = ubValidMines + 1
|
||||
end
|
||||
|
||||
if ( ubValidMines >= 3 ) then
|
||||
InitCreatureQuest()
|
||||
end
|
||||
end
|
||||
|
||||
function HandleGlobalLoyaltyEvent( ubEventType, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
local iLoyaltyChange = 0
|
||||
|
||||
if ubEventType == EventGlobal.GLOBAL_LOYALTY_BATTLE_WON then
|
||||
|
||||
CheckConditionsForTriggeringCreatureQuest( sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
iLoyaltyChange = 500
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_QUEEN_BATTLE_WON then
|
||||
|
||||
CheckConditionsForTriggeringCreatureQuest( sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
iLoyaltyChange = 1000
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_BATTLE_LOST then
|
||||
|
||||
iLoyaltyChange = -750
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_ENEMY_KILLED then
|
||||
|
||||
iLoyaltyChange = 50
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_NATIVE_KILLED then
|
||||
|
||||
-- note that there is special code (much more severe) for murdering civilians in the currently loaded sector.
|
||||
-- this event is intended more for processing militia casualties, and the like
|
||||
iLoyaltyChange = -50
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_ABANDON_MILITIA then
|
||||
|
||||
-- it doesn't matter how many of them are being abandoned
|
||||
iLoyaltyChange = -750
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_GAIN_TOWN_SECTOR then
|
||||
|
||||
iLoyaltyChange = 500
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_LOSE_TOWN_SECTOR then
|
||||
iLoyaltyChange = -1000
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_LIBERATE_WHOLE_TOWN then
|
||||
|
||||
iLoyaltyChange = 1000
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_GAIN_MINE then
|
||||
|
||||
iLoyaltyChange = 1000
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_LOSE_MINE then
|
||||
|
||||
iLoyaltyChange = -1500
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_GAIN_SAM then
|
||||
|
||||
iLoyaltyChange = 250
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
elseif ubEventType == EventGlobal.GLOBAL_LOYALTY_LOSE_SAM then
|
||||
|
||||
iLoyaltyChange = -250
|
||||
AffectAllTownsLoyaltyByDistanceFrom( iLoyaltyChange, sSectorX, sSectorY, bSectorZ )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function HandleLoyaltyChangeForNPCAction( ubNPCProfileId )
|
||||
|
||||
-- Omerta loyalty increases when Miguel receives letter from Enrico
|
||||
if ubNPCProfileId == Profil.MIGUEL then
|
||||
IncrementTownLoyalty ( Town.OMERTA, LOYALTY_BONUS_MIGUEL_READS_LETTER )
|
||||
end
|
||||
|
||||
-- having freed the child labourers... she is releasing them herself!
|
||||
if ubNPCProfileId == Profil.DOREEN then
|
||||
IncrementTownLoyalty( Town.DRASSEN, LOYALTY_BONUS_CHILDREN_FREED_DOREEN_SPARED )
|
||||
end
|
||||
|
||||
-- if Joey is still alive
|
||||
if ubNPCProfileId == Profil.MARTHA then
|
||||
if ( CheckMercIsDead(Profil.JOEY) == false ) then
|
||||
IncrementTownLoyalty( Town.CAMBRIA, LOYALTY_BONUS_MARTHA_WHEN_JOEY_RESCUED )
|
||||
end
|
||||
end
|
||||
|
||||
-- Hillbilly problem solved
|
||||
if ubNPCProfileId == Profil.KEITH then
|
||||
IncrementTownLoyalty( Town.CAMBRIA, LOYALTY_BONUS_KEITH_WHEN_HILLBILLY_SOLVED )
|
||||
end
|
||||
|
||||
-- Chalice of Chance returned to Chitzena
|
||||
if ubNPCProfileId == Profil.YANNI then
|
||||
|
||||
IncrementTownLoyalty( Town.CHITZENA, LOYALTY_BONUS_YANNI_WHEN_CHALICE_RETURNED_LOCAL )
|
||||
|
||||
-- NOTE: This affects Chitzena,too, a second time, so first value is discounted for it
|
||||
IncrementTownLoyaltyEverywhere( LOYALTY_BONUS_YANNI_WHEN_CHALICE_RETURNED_GLOBAL )
|
||||
end
|
||||
|
||||
-- Bloodcats killed
|
||||
if ubNPCProfileId == Profil.AUNTIE then
|
||||
IncrementTownLoyalty( Town.ALMA, LOYALTY_BONUS_AUNTIE_WHEN_BLOODCATS_KILLED )
|
||||
end
|
||||
|
||||
-- Brother Dynamo freed
|
||||
if ubNPCProfileId == Profil.MATT then
|
||||
IncrementTownLoyalty( Town.ALMA, LOYALTY_BONUS_MATT_WHEN_DYNAMO_FREED )
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user