Simple Python Things

This shouldn't make a difference at all.
Are you sure, that nothing else causes the problem? I mean, are all the python effects in genereall working, and do you get any python exceptions?


Another thing: Although i nearly had nothing to do at the university this week, i have time problems :(. I still have to write minimum 2 pages until monday, and i've only written 2 in the last 2 days (and it took me the half day). So i'll probably not be able to do any bigger things.
I'll maybe just attach the python files for 1 or 2 requests, but nothing more, not the XML etc., because that also costs time, and everybody here is able to do it by himself. Not nice, but the python is at this point the essential part.
 
Hello I would want to ask you about a promotion found into the Afterworld Scenario that comes with Civilization. It`s called Inhibitor and it makes a targetable unit unable to move. From what I saw the Afterworld uses only Python since no .DLL is available and I was wondering what exactly i need to copy from all those python files and what needs to be changed so it wont need those specific units. I was thinking it could work as a Delay Tactic/Logistical Interference(makeing all those units in a sqaure you target unable to move for 1 turn). This are the parts of the code I found related to this promotion so far im not sure if there is more since I dont know much about python:

-CvAfterWorldEvents

Spoiler :
1st part iInhibitorTimerValue =pUnitData.getInhibitorTimer()


2nd part if iInhibitorTimerValue > 0:
pUnitData.changeInhibitorTimer(-1)


3rd part #Inhibitor
if Afterworld.pPushButton == 3:
if (not pPlotUnit.isHuman()):
if iUnitID == iBleeder or iUnitID == iSentinel1 or iUnitID == iSentinel2 or iUnitID == iSentinel3 or iUnitID == iSavageBleeder or iUnitID == iRabidBleeder or iUnitID == iFeral:
effectType = gc.getInfoTypeForString('EFFECT_IMPACT_FLASH')
CyEngine().triggerEffect(effectType, pPlot.getPoint())
pPlotUnit.setImmobileTimer(2)
pUnitData.setInhibitorTimer(4)


1).I think something with iUnitID needs to be changed to allow for all units to be targeted


-AW
Spoiler :
1st part self.iInhibitorTimer = 0

2nd part def getInhibitorTimer(self):
return self.iInhibitorTimer
def setInhibitorTimer(self, iValue):
self.iInhibitorTimer = iValue
def changeInhibitorTimer(self, iChange):
self.iInhibitorTimer += iChange

3rd part aData.append(self.getInhibitorTimer())

4th part iIterator += 1
self.setInhibitorTimer(aData[iIterator])



2).Is this part related to the number of turns it has as CD ?

-CvMainInterface
Spoiler :
1st part# Inhibitor button
if g_pSelectedUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_INHIBITOR1')):
g_pSelectedUnitData = pAfterworld.getUnitDataByID(pHeadSelectedUnit.getID())
if (g_pSelectedUnitData.getInhibitorTimer() == 0):
screen.appendMultiListButton( "BottomButtonContainer", gc.getPromotionInfo(gc.getInfoTypeForString('PROMOTION_INHIBITOR1')).getButton(), 0, WidgetTypes.WIDGET_GENERAL, 662, 662, False )
screen.show( "BottomButtonContainer" )
iCount = iCount + 1

2nd part elif inputClass.getData1() == 662: #Inhibitor
pAfterworld.pPushButton = 3

CyInterface().setInterfaceMode(InterfaceModeTypes.INTERFACEMODE_PYTHON_PICK_PLOT)



3).This part is about the number of turns after which the button reapers on the interface?
4). Can the AI use this ?( Makeing it something like everytime a stack bigger than 5 enters his border he will use this skill on that stack)

Help is greately appreciated, thank you.
 
Oh, man, what a question. AW has a lot of python, and from that quick shot, i really can't say, what all is needed. But let's try:

1) Yes, you're right.
You have to remove the complete line, and change the intendation of the following lines.
An easier (but dirty) way would be, just to change the line to "if True:".

2)
First part, yes, i think so.
Second part: No, that's for targeting the unit.

3) I don't know, which part you're referencing to.

4) Not, how it is, no.
I guess, you could maybe program an AI routine, which would hit that button, if a stack comes in the area, but not sure, how good that would be for the performance.
And also you would have to program a small routine to get the AI to promote their units with that promotion.

5) Somewhere is something missing.
I think, aData has to be mentioned somewhere else.
And i'm really not sure, what else belongs to these function, the code is just very much :dunno: :(.



----------------------------------------------

I'll upload my fixed sneak promotion in the next minutes.
For the modders, who have the promotion in their mod: In the code, there's 6 times myteam.setEspionagePointsAgainstTeam mentioned. Change it to myteam.changeEspionagePointsAgainstTeam , that will fix it.

---------------------------------------------

@cfkane: The "interfaith-small" attachment is, what you're requested the last time.
I've only changed the python, that all found religions are spread to the city, where the project is build.
I didn't change the XML or anything else, but i guess, that doesn't matter for you.

-------------------------------------------

2. Attachment is the request by Voltage.
In that small modcomp, the units will be named according to lists, which you can create by yourself.
Spoiler :


There's one part in CvEventManager.py, labeled with "unit names".
The folder of the mod is mentioned in the code, it has to be changed, if you want to merge it into another mod.
The names itself are stored in XML\CustomXML\Unitcombatname\CivilizationName.txt.
For example, i've added the ship names, which voltage had mentioned, so i have for example XML\CustomXML\UNITCOMBAT_NAVAL\CIVILIZATION_AMERICA.txt and XML\CustomXML\UNITCOMBAT_NAVAL\CIVILIZATION_FRANCE.txt.
That will work for every civ and every unitcombat, just create a right named .txt in the right named folder, and it will work.
Issue: The chosen name depends on the number of units, which you have of that unitcombat type at that point.
For example, if you produce your first ship, it will be named Chin Yen. It that ship is destroyed, and you build another one, that ship will also be named Chin Yen, because you don't have a ship at that moment, and so the first name will be chosen.
Also the code itself is not very performant :(.

----------------------------------------------

@wotan321: I've also tried to do your request, but i somehow can't get it to work. Technically the manipulation of the war weariness works, but it seems to have no effect :confused:.
That really bugs me, but i can't do more at the moment, but i'll try to look in that next weekend.
 

Attachments

  • Interfaith-small.zip
    17.9 KB · Views: 47
  • UnitNames.zip
    18.4 KB · Views: 49
  • TrainedChinYen.jpg
    TrainedChinYen.jpg
    148.3 KB · Views: 331
I see thanks for your help I`ll try those lines to see if i can work anything out. I guess I dug too deep :p
 
Okay, i've done some things (besides working on my next patch):

Palace replacing after conquering capital

In this small modcomp, the human player (NOT the AI) can, after conquering an enemy capital, move his palace to this city.

Spoiler :


There are 3 changes in CvEventManager.py and 1 change in CvScreensInterface.py, all labeled with "moving palace".

This modcomp was requested by cybrxkhan for his mod World of Legends.



Well, the name is a bit dull (and too long), so if somebody knows a better one...
And i've thought about teaching the AI also to do that, but that would be a bit complicated. I would have to think about how much units are around, if the city itself is near the core region of the conquering civ, if the city is endangered, if that maybe would increase colony costs, if, if, etc., etc.,

And i know, it's not the most useful one for other modders, but it was requested, and i wanted to do it. Wasn't that hard at the end. Should have read Kael's tutorial a month earlier :rolleyes:.


------------------------------------


FixedMPScoreboard

This mod fixes the issue, that you can see in a multiplayer game also the human civs, which you haven't met already.
-> When you start a MP game with this mod, the other human civs should not appear in the scoreboard.

Attention: It was only tested in hot seat.
If it works in normal MP games, then please report it.


There's only 1 change in CvMainInterface, it's labeled with "FixedMPScoreboard".



I've done that, because it was requested several times, and it was very easy. In fact, i've only added 2 lines of code, and i've investigated that part of the main interface already a bit earlier for the SpawnACiv modcomp.



So, what requests are still up:
- Keldath's road request (that's difficult)
- Wotan's war weariness request (that's confusing)
- cybrxkhan's request for the change in SpawnACiv.

Did i forget anything?
 
Thanks so much, man! :D:D:D

I can't think of a better name that's shorter. I guess maybe "Seizing Enemy Palace" or something? I dunno. Thanks for the thing, though, I've just stuffed it into WoL! :D

So, what requests are still up:
- Keldath's road request (that's difficult)
- Wotan's war weariness request (that's confusing)
- cybrxkhan's request for the change in SpawnACiv.

Did i forget anything?

I dunno how far this is down the line, but I remember a long while back I requested a modern, BtS-version of the modcomp where religions spread with Settlers? :mischief:

Also, since it's been a while, I forgot exactly what change I requested for SpawnACiv. :crazyeye:

Thanks anyhow!
 
I dunno. Thanks for the thing, though, I've just stuffed it into WoL! :D

Already seen :D.

I dunno how far this is down the line, but I remember a long while back I requested a modern, BtS-version of the modcomp where religions spread with Settlers? :mischief:

Ah, yes, i remember it. -> on the list (the list for my next patches, requests and own ideas has now 1,5 pages [hand written], besides that i have a full concept for another mod in my mind...but so less time :()..

I'll probably not be able to mod for a month.
Next weekend i'll visit my parents, the weekend after this i have to prepare for a seminar and 2 exams, then the next weekend for 2 exams and a protocoll, and then i'll have a week free time, before my immunology practica will start...oh, man :sad:.

Also, since it's been a while, I forgot exactly what change I requested for SpawnACiv. :crazyeye:

You wanted the option, that units can only be added to one city, do you remember ;)?
 
Oh, yes, thanks for reminding me. :)

Thanks for all your help, as always.
 
Had these errors with Espionage :

EDIT:

Traceback (most recent call last):
File "BugEventManager", line 349, in _handleDefaultEvent
File "Espionage", line 109, in onCombatResult
RuntimeError: unidentifiable C++ exception


Traceback (most recent call last):
File "BugEventManager", line 349, in _handleDefaultEvent
File "Espionage", line 106, in onCombatResult
RuntimeError: unidentifiable C++ exception

Here is what i had:

Spoiler :
from CvPythonExtensions import *
import CvEventInterface
import CvUtil
import BugUtil
import PyHelpers

gc = CyGlobalContext()
localText = CyTranslator()
PyPlayer = PyHelpers.PyPlayer
PyInfo = PyHelpers.PyInfo
PyCity = PyHelpers.PyCity
PyGame = PyHelpers.PyGame

class Espionage:
def __init__(self, eventManager):

eventManager.addEventHandler("combatResult", self.onCombatResult)

def onCombatResult(self, argsList):
'Combat Result'
pWinner,pLoser = argsList
playerX = PyPlayer(pWinner.getOwner())
unitX = PyInfo.UnitInfo(pWinner.getUnitType())
playerY = PyPlayer(pLoser.getOwner())
unitY = PyInfo.UnitInfo(pLoser.getUnitType())

## Marauder part 1Start ##

pPlayer = gc.getPlayer(pWinner.getOwner())

if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MARAUDER')):

pPlayer = gc.getPlayer(pWinner.getOwner())

iGold = playerY.getGold( )
message = 0

iGoldStolen = ( iGold//25 )

if playerY.getGold( ) >= 500:
playerY.changeGold( -20 )
elif playerY.getGold( ) >= 25:
playerY.changeGold( -iGoldStolen )
elif (playerY.getGold( ) >= 1) and (playerY.getGold( ) < 25):
playerY.changeGold( -1 )

iGold2 = playerX.getGold( )
if playerY.getGold( ) >= 500:
playerX.changeGold( +20 )
message = 1
elif playerY.getGold( ) >= 25:
playerX.changeGold( +iGoldStolen )
message = 2
else:
playerX.changeGold( +1 )
message = 3

pPID = pPlayer.getID()
iX = pWinner.getX()
iY = pWinner.getY()
szName = pPlayer.getName()

## This only controls the text, all actual gold amounts are done above:
iGoldStolenMax = ( 500//25 )
iGoldStolenMin = ( 25//25 )

if ( message == 1 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD1",(szName,iGoldStolenMax)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(pLoser.getOwner(),false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD1",(szName,iGoldStolenMax)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 2 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD2",(szName,iGoldStolen)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(pLoser.getOwner(),false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD2",(szName,iGoldStolen)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 3 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD3",(szName,iGoldStolenMin)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(pLoser.getOwner(),false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD3",(szName,iGoldStolenMin)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###

## Marauder part 1 End ##
## Industry Espionage Part 1 Start ##

pPlayer = gc.getPlayer(pWinner.getOwner())

if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_INDUSTRYESPIONAGE')):

pPlayer = gc.getPlayer(pWinner.getOwner())
myteamINT = pPlayer.getTeam()
myteam = gc.getTeam(myteamINT)
otherplayerINT =pLoser.getOwner()
otherplayer = gc.getPlayer(otherplayerINT)
otherteamINT=otherplayer.getTeam()
otherteam=gc.getTeam(otherteamINT)


iResearch = otherplayer.calculateBaseNetResearch ()

iResearchStolen = ( iResearch//25 )

if iResearch >= 500:
myteam.changeResearchProgress(pPlayer.getCurrentResearch (),20,pWinner.getOwner())
otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-20,pLoser.getOwner())
message = 1
elif iResearch >= 25:
myteam.changeResearchProgress(pPlayer.getCurrentResearch (),iResearchStolen,pWinner.getOwner())
otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-iResearchStolen,pLoser.getOwner())
message = 2
else:
myteam.changeResearchProgress(pPlayer.getCurrentResearch (),1,pWinner.getOwner())
otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-1,pLoser.getOwner())
message = 3

pPID = pPlayer.getID()
otherPID=otherplayer.getID()
iX = pWinner.getX()
iY = pWinner.getY()
szName = pPlayer.getName()

## This only controls the text, all actual gold amounts are done above:
iGoldStolenMax = ( 500//25 )
iGoldStolenMin = ( 25//25 )

if ( message == 1 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE1",(szName,iGoldStolenMax)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE1",(szName,iGoldStolenMax)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 2 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE2",(szName,iResearchStolen)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE2",(szName,iResearchStolen)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 3 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE3",(szName,iGoldStolenMin)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE3",(szName,iGoldStolenMin)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###

## Industry Espionage Part 1 End ##

def onUnitPromoted(self, argsList):
'Unit Promoted'
pUnit, iPromotion = argsList
player = PyPlayer(pUnit.getOwner())
###Marauder Part 2 AI start###
pWinner = pUnit
pPlayer = gc.getPlayer(pWinner.getOwner())
if not pPlayer.isHuman():
iMarauderPromo = gc.getInfoTypeForString('PROMOTION_MARAUDER')
if (iPromotion<>iMarauderPromo):
if not pWinner.isHasPromotion(iMarauderPromo):
if pWinner.canAcquirePromotion(iMarauderPromo):
if ((pPlayer.getGoldPerTurn () <=10)or(pPlayer.getCommercePercent(gc.getInfoTypeForString("COMMERCE_GOLD")) >=30)):
descission = CyGame().getSorenRandNum(4, "Gold")
if ((descission==1) or (descission ==2)):
pWinner.setHasPromotion(iPromotion,False)
if pWinner.canAcquirePromotion(iMarauderPromo):
pWinner.setHasPromotion(iMarauderPromo,True)
else:
pWinner.setHasPromotion(iPromotion,True)
return

###Marauder Part 2 AI End###
###Industry Espionage Part 2 AI start###
pWinner = pUnit
pPlayer = gc.getPlayer(pWinner.getOwner())
if not pPlayer.isHuman():
iIndusPromo = gc.getInfoTypeForString('PROMOTION_INDUSTRYESPIONAGE')
if (iPromotion<>iIndusPromo):
if not pWinner.isHasPromotion(iIndusPromo):
if pWinner.canAcquirePromotion(iIndusPromo):
if (pPlayer.getCommercePercent(gc.getInfoTypeForString("COMMERCE_RESEARCH")) <=70):
descission = CyGame().getSorenRandNum(4, "Research")
if ((descission==1) or (descission ==2)):
pWinner.setHasPromotion(iPromotion,False)
if pWinner.canAcquirePromotion(iIndusPromo):
pWinner.setHasPromotion(iIndusPromo,True)
else:
pWinner.setHasPromotion(iPromotion,True)
return

###Industry Espionage Part 2 AI End###
 
I guess, i see the problem, i'll explain it:
The problem is in the industry espionage promotion. After a combat with this promotion, science points will be substracted from the currently researched tech.
But what happens, if the other player does not research anything, because of anarchy or because he has traded the technology? -> This exception will happen.

Okay, the result of the exception is, that no science points are substracted from the loser, and no points are added to the winner. -> this is gameplaywise fine.
I'll have to fix it, that this case is included, but like explained, the exception is not serious, you can ignore that until i fix it.
Thanks for reporting that :).
 
Oh yes, that reminds me, The J, I'm not sure because whether I have an older unfixed version, or whether I messed up the code or what not, but whenever I play WoL, which has the Sneak promotion, and my unit wins a battle, I get a +1 research points to my current research; but when an enemy wins a battle, they get +1 research points to their current research (including barbarians). It's not really that major of a thing, and I think it actually kind of makes sense in a way (learning more after each battle? :mwaha:), but... yeah.
 
Basically, if, say, my warrior attacks a barbarian wolf and wins, at the top of the screen it says in brown letters "Cybrxkhan has plundered 1 research from combat!". However, if, say, a barbarian horse archer attacks my worker and (of course) wins, at the top of the screen it says in brown letters "Barbarian has plundered 1 research from combat!"
 
^But it happens even if the unit doesn't have the promotion. Is that supposed to happen?
 
Every unit - If it's a battle that involves one of my units, a message always pops up "Civilization X has plundered 1 research!". The mesage only appears when it's a battle involving one of my units, but I'm pretty sure it happens to other civs too.
 
Alright, here is the code for just the Marauder Research. Thanks a lot again! It isn't much a bother to me, but it is something that is not supposed to be happening, so it's good to try to get it out of the way.

I've also attached the whole python file, just in case.

Code:
## Marauder Research Start ##

		pPlayer = gc.getPlayer(pWinner.getOwner())

		if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MINISTER')):

			pPlayer = gc.getPlayer(pWinner.getOwner())
			myteamINT = pPlayer.getTeam()
			myteam = gc.getTeam(myteamINT)				
			otherplayerINT =pLoser.getOwner()
			otherplayer = gc.getPlayer(otherplayerINT)
			otherteamINT=otherplayer.getTeam()
			otherteam=gc.getTeam(otherteamINT)
			

			iResearch = otherplayer.calculateBaseNetResearch ()			

			iResearchStolen = ( iResearch//25 )
			
			if iResearch >= 500:				
                                myteam.changeResearchProgress(pPlayer.getCurrentResearch (),20,pWinner.getOwner())
                                otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-20,pLoser.getOwner())
				message = 1
			elif iResearch >= 25:
				myteam.changeResearchProgress(pPlayer.getCurrentResearch (),iResearchStolen,pWinner.getOwner())
				otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-iResearchStolen,pLoser.getOwner())
				message = 2
			else:
				myteam.changeResearchProgress(pPlayer.getCurrentResearch (),1,pWinner.getOwner())
				otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-1,pLoser.getOwner())
				message = 3

			pPID = pPlayer.getID()
			otherPID=otherplayer.getID()
			iX = pWinner.getX()
			iY = pWinner.getY()
			szName = pPlayer.getName()

			## This only controls the text, all actual gold amounts are done above:
			iGoldStolenMax = ( 500//25 )
			iGoldStolenMin = ( 25//25 )

			if ( message == 1 ):
				CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_RESEARCH1",(szName,iGoldStolenMax)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
				CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_RESEARCH1",(szName,iGoldStolenMax)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
				### message: %s1 has plundered %d2 [ICON_GOLD]!###
			if ( message == 2 ):
				CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_RESEARCH2",(szName,iGoldStolen)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
				CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_RESEARCH2",(szName,iGoldStolen)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
				### message: %s1 has plundered %d2 [ICON_GOLD]!###
			if ( message == 3 ):
				CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_RESEARCH3",(szName,iGoldStolenMin)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
				CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_RESEARCH3",(szName,iGoldStolenMin)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
				### message: %s1 has plundered %d2 [ICON_GOLD]!###

## Marauder Research End ##
 

Attachments

  • CvEventManager.rar
    12.7 KB · Views: 58
Top Bottom