| 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 ·
INT GetMapWidth () Return
the width of the map ·
INT GetNearestWater (fromLocation,
toLocation) Return
the nearest water square to fromLocation in toLocation ·
INT GetNeighbor(locationIn, direction,
locationOut) 0 North 1
Northeast 2 East 3
Northwest 4
Southeast 5 West 6
Southwest 7 South Example: //I want
to get the tile North of my first city HandleEvent(CreateCity)
‘GetCityNorthNeighbor’ post{ if(IsHumanPlayer(city[0].owner)
{ GetNeighbor(city[0].location, 0, tmpLoc); //run this only once DisableTrigger(‘GetCityNorthNeighbor’); } ·
VOID GetRandomNeighbor(location, newlocation) Get
the revolution level from the const DB. ·
INT GetRiotLevel() Get
the riot level from the const DB. ·
INT GetStringDBIndex(stringid) scenarioAuthorStringId =
GetStringDBIndex(ID_SCENARIO_AUTHOR); //Then to use it later, SetStringByDBIndex(1, scenarioAuthorStringId); Text(ID_SCENARIO_AUTHOR_MESSAGE); ·
INT GetUnitByIndex(player, index,
unitVar) Get
a unit by index and put it into unitVar. See example in CantAttackUnit. ·
INT GetUnitFromArmy(army, index, unit) Get
a unit by index from the given army ·
INT GetUnitFromCell(location, index,
unit) Get
a unit by index from the given location ·
INT GetUnitsAtLocation (location) Return
the number of units at the given location ·
VOID GodMode(onoff) ·
VOID GrantAdvance(player, advance) ·
INT HasAdvance(player, advance_name) //check to see if the player has Agriculture if(!HasAdvance(player[0], AdvanceDB(ADVANCE_AGRICULTURE))
{ //if not,
then give it to them GrantAdvance(player[0],
AdvanceDB(ADVANCE_AGRICULTURE)); } ·
INT HasGood(location) ·
INT HasRiver(location) ·
VOID Heal (unit) Import
the specified map file in scenario editor format. (See also Export) ·
INT IsUnitAtHead (city) ·
INT IsUnitInBuildList(city, unittype) ·
INT IsBuildingAtHead(city) ·
INT IsBuildingInBuildList(city,
buildingtype) ·
INT IsCivilian(unit) ·
INT IsContinentBiggerThan(location, size) ·
INT IsFlankingUnit(unit) True
if the unit is a flanking unit ·
INT IsFortress(player, location) True
if the player owns a fortress at location ·
INT IsInZOC(player, location) True
if the location is in the zone of control of player (Note: nothing to do with
boundaries, this is for unit based ZOC) ·
INT IsRoad(player, location) True if the player owns a road at location ·
INT IsVeteran(unit) True if the unit is a veteran ·
INT IsWonderAtHead(city) ·
INT IsWonderInBuildList(city, wonder) ·
INT IsActiveDefender(unit) ·
INT IsBombardingUnit(unit) ·
INT IsCitySelected() ·
INT IsCounterBombardingUnit(unit) ·
INT IsHumanPlayer(player) ·
INT IsPlayerAlive(player) ·
INT IsUnderseaCity(city) ·
INT IsUnitSelected() ·
VOID KillUnitFromBuildList(city, unit) ·
VOID KillBuildingFromBuildList(city,
building) ·
VOID KillWonderFromBuildList(city,
wonder) ·
VOID Kill()(Messages only) ·
VOID KillMessages(objectname) ·
VOID KillUnit(unit) ·
VOID LibraryAdvance ·
VOID LibraryBuilding ·
VOID LibraryConcept ·
VOID LibraryGovernment ·
VOID LibraryTerrain ·
VOID LibraryTileImprovement ·
VOID LibraryUnit ·
VOID LibraryWonder Open
the great library, displaying the entry specified by an integer argument to the
function. The value corresponds to the
database for the object type in question. ·
VOID LoadGame(name) ·
VOID MakeLocation(locationvar, x, y) ·
VOID Message(player, ‘message_id’) ·
VOID MessageAll(‘message_id’) ·
VOID MessageAllBut(player, ‘message_id’) Set
the message class of the current message to int ·
VOID MessageType(message_type) Opem
the build quete for tje specigied citx >![if !swpportLirts]> ·
VOID OpenCiv() ·
VOID OpenCivTab Switch to the
Empire tab on the control panel ·
VOID OpenDiplomacy() ·
VOID OpenInfo() ·
VOID OpenOptions() ·
VOID OpenScenarioEditor() Open the scenario
editor ·
VOID OpenScience() ·
VOID OpenTrade() ·
VOID OpenUnit() ·
VOID Ozone() Cause an Ozone
depletion event ·
VOID PlantGood(location) ·
VOID PlaySound(soundname) ·
INT PlayerCityCount(player) Return the number
of cities the player has ·
INT PlayerCivilization(player) ·
INT PlayerGold(player) Return
how much gold the player has. ·
INT PlayerHasWonder(player, wonder) True
if the player owns the specified wonder (a wonder database index) ·
INT Preference(“pref_name”) Return
the value of the named preference from the profile database
(userprofile.txt). Only works for
boolean and integer prefs. ·
VOID QuitToLobby() ·
INT Random(range) ·
VOID RemoveAdvance(player, advance) Take an advance
away from the player ·
VOID SaveGame(name) ·
VOID SelectCity(city) ·
VOID SelectUnit(unit) ·
VOID SetAllCitiesVisible(player) Set every city in
the world visible to the specified player (Note: may cause cities floating in
blackness effect) Set
the government to gov for the recipient of the current message (only works
inside a message) ·
VOID SetPreference(“pref_name”, value) Set
the named preference in the profile database (userprofile.txt) to value. Works for int or boolean prefs. ·
VOID SetPW(player, pw) ·
VOID SetResearching(player, what) ·
VOID SetScience(player, level) ·
VOID SetString(index, stringid) SCENARIO_AUTHOR_MESSAGE “This scenario was written by
[string.1.name]” SCENARIO_AUTHOR “Joe Rumsey” And you put this in a SLIC messagebox: SetString(1, ID_SCENARIO_AUTHOR); Text(ID_SCENARIO_AUTHOR_MESSAGE); The resulting text in the message will be: This scenario was written by Joe Rumsey ·
VOID SetStringByDBIndex(index,
stringindex) ·
VOID Show() ·
INT Stacked(location) ·
VOID StartTimer(index, duration) ·
<DIR> ·
<DIR> ·
<DIR> ·
<DIR> ·
<DIR> ·
<DIR> ·
<p><li><b>
VOID StealRandomAdvance()</b><br> ·
<p><li><b>
VOID StealSpecificAdvance() uses dropdown</b><br> ·
--> ·
VOID StopTimer(INT) ·
VOID SquaredDistance(location1, location2) Return the squared
distance from location1 to location2.
Faster than Distance ·
VOID Terraform(location, terrain) 0 TERRAIN_TYPE_FOREST 1 TERRAIN_TYPE_PLAINS 2 TERRAIN_TYPE_TUNDRA 3 TERRAIN_TYPE_GLACIER 4 TERRAIN_TYPE_GRASSLAND 5 TERRAIN_TYPE_DESERT 6 TERRAIN_TYPE_SWAMP 7 TERRAIN_TYPE_JUNGLE 8 TERRAIN_TYPE_MOUNTAIN 9 TERRAIN_TYPE_HILL 10 TERRAIN_TYPE_WATER_SHALLOW 11 TERRAIN_TYPE_WATER_DEEP 12 TERRAIN_TYPE_WATER_VOLCANO 13 TERRAIN_TYPE_SPACE 14 TERRAIN_TYPE_WATER_BEACH 15 TERRAIN_TYPE_WATER_SHELF 16 TERRAIN_TYPE_WATER_TRENCH 17 TERRAIN_TYPE_WATER_RIFT 18 TERRAIN_TYPE_DEAD 19 TERRAIN_TYPE_BROWN_HILL 20 TERRAIN_TYPE_BROWN_MOUNTAIN 21 TERRAIN_TYPE_WHITE_HILL 22 TERRAIN_TYPE_WHITE_MOUNTAIN 23 TERRAIN_TYPE_DEAD_HILL ·
INT TerrainType(location) ·
VOID Text(stringid)(Messages only) Sets
the body text of a message ·
INT TileHasImprovement(location, imptype) True
if there is an improvement of type imptype at location. ·
VOID Title(stringid)(Messages only) ·
VOID ToggleVeteran(unit, onoff) Turn
veteran status for a unit on or off ·
INT TradePoints(player) ·
INT TradePointsInUse(player) Return
how many trade points the player is using. ·
INT TradeRoutes(player) ·
INT UnitCount(player, type) ·
INT UnitsInCell(location) ·
VOID UseDirector()(Messages only) ·
INT WonderOwner(wonder) Return the player
who owns the wonder (-1 if no one does)
|
|
All trademarks and trade names are the property of their respective owners. | |