| Main Civ II Civ III CTP CTP II MoO3 SMAC RoN GalCiv Alt.Civs About Misc | |||
![]()
|
News
| Archive Files Modification Information/Help Screenshots | Art Forums (P)Reviews | Links | ||
|
Modification
SLIC2
Function Reference Following is an alphabetical list of every function
available for use in SLIC scripts in Call to Power II. ·
VOID Abort() messagebox ‘Msgbox’ { Abort(); AddGold(g.player,
100); } //No message will appear when ‘Msgbox’ is called, and the player will receive 100
gold. ·
VOID AddBuildingToBuildList(city, buildingType) if(!city[0].buildqueuelength) { AddBuildingToBuildList(city[0],
BuildingDB(IMPROVE_CITY_WALLS)); } //if the city is not building anything, it will put the
improvement City Walls into its build queue. ·
VOID AddCenter(location) HandleEvent(CreateCity) post { AddCenter(city[0].location); } //causes
a recenter on a city when it has been built. ·
VOID AddCity(city) messagebox ‘MsgBox’ { AddCity(my_city); Text(ID_MY_TEXT); } //allows reference to a city in the text if it is called
by a handler or trigger which does not reference the city ·
VOID AddCityByIndex(owner, index) AddCityByIndex(g.player, 0); //adds the current player’s first city into the reference ·
VOID AddEffect(location, namestring,
soundID) AddEffect(unit.1.pos, “SPECEFFECT_NANO”, “SOUND_ID_NANO_TERROR”); //Note that if the
location is not visible to the onscreen player, this special //effect won’t be seen.
Use AddCenter(loc) first to center on the location. ·
VOID AddFeat(featIndex, playerIndex) ·
VOID AddGold(player, amount) AddGold(0, 100); //gives the Barbarians 100 gold. ·
VOID AddMovement(unit, amount) //gives the unit an additional 200 movement points,
enough to move across 2 grassland tiles or 1 forest tile. ·
INT AddPops(city, count) AddPops(city[0], 5); //increases city[0]’s size by 5 ·
VOID AddUnit(unit) AddUnit(unit[0]); //adds unit[0] to the context when it is not already
referenced. ·
VOID AddUnitToBuildList(city, unittype) AddUnitToBuildList(city[0], UnitDB(UNIT_SETTLER)); //causes city[0] to append a Settler unit to its build
queue. ·
VOID AddWonderToBuildList(city, wonder) if(city[0].buildqueuelength
< 5) { AddWonderToBuildList(city[0],
WonderDB(WONDER_RAMAYANA); } //if
there are fewer than 5 items in city[0]’s build queue, append Ramayana to the list. ·
INT AllUnitsCanBeExpelled(location) int_t i; location_t my_loc; //initialise these variables for(i = 0; i < 8; i = i + 1) { GetNeighbor(city[0].location, i, my_loc); if(AllUnitsCanBeExpelled(my_loc)) { //do
stuff return
CONTINUE; } } //if all
of the enemy units 1 tile away from city[0], do stuff, then break the for loop and
continue. ·
INT ArmyIsValid(army) Returns
true if the army is valid. Used to test
to see if a stored army has been removed from the game. ·
VOID AttachRobot(index) for(i =
0; i <= 4; i = i + 1) { AttachRobot(i); } //causes
players 0 through 4 to be controlled by the AI. ·
VOID Attract(ldlstr) Attract(“ControlPanelWindow.ControlPanel.TurnButton”); //causes the
End Turn button to flash until it is clicked or until StopAttract(ldlstr) is
called. ·
VOID BlankScreen(1 or 0) Blank
the screen out (if called with an argument of 1) or turn it back on (if called
with 0). ·
VOID BreakAlliance(player) When
called from within a button, break an alliance between the recipient of the
message and the specified player. ·
VOID CantAttackCity(city, onoff) CantAttackCity(city[0], 1); //does not allow any attacks on city[0]. ·
VOID CantAttackUnit(unit, onoff) int_t i; unit_t tmpUnit; for(i = 0; i < player[0].units; i = i + 1) { GetUnitByIndex(player[0], i, tmpUnit); if(tmpUnit.valid
&& tmpUnit.type == UnitDB(UNIT_SETTLER)) { CantAttackUnit(tmpUnit, 1); } } //this will loop through all of player[0]’s units; all Settler units will
not be //attackable. ·
VOID CantEndTurn(onoff) CantEndTurn(1); //does not allow the player to end the turn. ·
VOID CatchUp() ·
INT CellOwner(location) ·
VOID ChangeGlobalRegard(player, delta,
explanationID, [duration]) ·
INT Cities(player) ·
VOID CityCantRiotOrRevolt(city, onoff) if(player[0].cities < 2) { for(i = 0; i
< player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(CityIsValid(tmpCity)) { } } } //if player[0] has only 1 city, then make the city
non-attackable ·
INT CityCollectingGood(city, good) if(CityCollectingGood(city[0],
GoodDB(TERRAIN_DESERT_GOOD_ONE)) { //do stuff } //find out whether city[0] is collecting the Glass good ·
INT CityFoodDelta(city) ·
INT CityHasBuilding(city, building) if(CityHasBuilding(city[0], “IMPROVE_TEMPLE”)) { //do stuff } //returns 1 if city[0] has a temple ·
INT CityHasWonder(city, wonder) if(CityHasWonder(city[0], WonderDB(WONDER_EMPIRE_STATE_BUILDING)))
{ //do stuff } //returns 1 if city[0] has the empire state building ·
INT CityIsNamed(city, “String”) ·
INT CityIsValid(city) ·
INT CityNameCompare(city, stringID) ·
INT CityStarvationTurns(city) ·
INT CivilizationIndex(civname) if(PlayerCivilization(g.player) == CivilizationIndex(“AMERICANS”)) { // the current player is the americans } This is especially useful for creating victory conditions for
specific civilizations in scenarios. See also PlayerCivilization and GameOver. ·
VOID ClearBattleFlag(unit) ·
VOID ClearBuildQueue(city) city_t tmpCity; int_t i; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(CityisValid(tmpCity)) { ClearBuildQueue(tmpCity) } } //clears the build queues of all of player[0]’s cities ·
VOID ClearOrders(unit) for(i = 0; i < player[0].units; i = i + 1) { GetUnitByIndex(player[0], i,
tmpUnit); if(tmpUnit.valid) { ClearOrders(tmpUnit) } } //clears the build queues of all of player[0]’s cities ·
INT CreateCity(owner, nearlocation,
distance[, savecity]) //when the first city is created (i.e. I settle a
settler) city_t my_city; city_t new_city; HandleEvent(CreateCity) post { if(IsHumanPlayer(player[0]))
{ my_city = city[0]; //I want to
create a city about 5 tiles from my first city, //and then
save the new city in a variable CreateCity(player[0],
my_city.location, 5, new_city); } } ·
INT CreateCoastalCity(owner, nearlocation, distance[, savecity]) ·
VOID CreateUnit(owner, type,
nearlocation, distance[, saveunit]) //I want to put (cheat) a defender in my city as soon as
I build it HandleEvent(CreateCity) post { CreateUnit(player[0], UnitDB(UNIT_HOPLITE),
city[0].location, 0); } ·
VOID DamageUnit(unit, hp) ·
VOID Deselect() ·
VOID DestroyBuilding(city, building)
Example: DestroyBuilding(city[0],
BuildingDB(IMPROVE_SILO)); ·
VOID DetachRobot(index) for(i = 1; i < max_players; i = i + 1) { if(IsPlayerAlive(i)) { DetachRobot(i); } } //detaches
the AI from every player except the Barbarians ·
VOID DisableChooseResearch() ·
VOID DisableClose() ·
VOID DisableMessageClass(int class) ·
VOID DisableTrigger(‘trigger_id’) HandleEvent(CreateUnit) ‘ExampleTrigger’ post { //stuff } //’ExampleTrigger’ won’t fire again after this handler
until it is re-enabled. HandleEvent(BeginTurn) ‘NextTrigger’ post { //whatever
condition you want DisableTrigger(‘ExampleTrigger’); } ·
INT Distance(point1, point2) ·
VOID DoFreeSlaves(city) Free slaves in the given city (only if
it was captured this turn!) After the message is closed, it will
not be saved in the Message Log. ·
VOID DoPillageOwnLand(unit) Pillage the unit’s current square,
even if it belongs to the unit’s owner. Reenable the choose research dialog. (See DisableChooseResearch) ·
VOID EnableMessageClass(class) Reenable the given message class (see MessageClass) ·
VOID EnableTrigger(‘trigger_id’) ·
VOID EndTurn() ·
VOID ExecuteAllOrders() ·
VOID ExitToDesktop () ·
VOID ExitToShell() ·
VOID Export(“filename”)
·
VOID ExtractLocation(location,
locationvar) //I want to save the location to which I moved my unit location_t my_loc; HandleEvent(MoveUnits) ‘MoveUnit’ post { ExtractLocation(army[0].location,
my_loc); //and I only
want to run this once DisableTrigger(‘MoveUnit’); } ·
VOID EyePoint(location (or unit or
city)) ·
INT FindCoastalCity(player, cityvar) //I want to save this city in my variable city_t
my_coastal_city; HandleEvent(CreateCity) post { if(IsHumanPlayer(player[0]))
{ if(FindCoastalCity(player[0],
my_coastal_city) { //don’t run this trigger again DisableTrigger(‘FindCoastalCity’); } } } ·
VOID FinishImprovements(location) ·
VOID Flood(stage) Change
the turn display to number of turns. ·
INT GameOver(player, reason) //player[0] wins the game GameOver(player[0], 1); ·
INT GetArmyByIndex(player, army,
armyVar) Find
an army by index and save it in armyVar.
Returns 1 if successful, 0 otherwise. //Find my first army army_t my_army; GetArmyByIndex(player[0], 0, my_army); ·
VOID GetArmyFromUnit(unit, armyVar) Finds
the army which contains the unit and saves it into unitVar. unit_t
my_unit; army_t
my_army; //get the army containing my first unit GetUnitByIndex(player[0], 0, my_unit); //get the army my_unit is in GetArmyFromUnit(my_unit, my_army); ·
INT GetCityByIndex(player, index,
cityVar) Get
a city by index and put it into cityVar.
(See ClearBuildQueue example.) ·
INT GetCityByLocation(location, city) Get
a city from the given location. ·
INT GetCurrentRound () Return
the current round number (starts at 0, increases one each turn) ·
INT GetCurrentYear () Return
the current year (for an unmodified game, returns –4000 for 4000BC, through
2300 for 2300AD) ·
INT GetMapHeight () Return
the height of the map < |