{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f4\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica;}{\f37\fswiss\fcharset77\fprq0{\*\panose 00000000000000000000}Helvetica-Oblique;}{\f184\froman\fcharset238\fprq2 Times New Roman CE;}{\f185\froman\fcharset204\fprq2 Times New Roman Cyr;} {\f187\froman\fcharset161\fprq2 Times New Roman Greek;}{\f188\froman\fcharset162\fprq2 Times New Roman Tur;}{\f189\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f190\froman\fcharset178\fprq2 Times New Roman (Arabic);} {\f191\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f192\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f194\fswiss\fcharset238\fprq2 Arial CE;}{\f195\fswiss\fcharset204\fprq2 Arial Cyr;}{\f197\fswiss\fcharset161\fprq2 Arial Greek;} {\f198\fswiss\fcharset162\fprq2 Arial Tur;}{\f199\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f200\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f201\fswiss\fcharset186\fprq2 Arial Baltic;}{\f202\fswiss\fcharset163\fprq2 Arial (Vietnamese);} {\f224\fswiss\fcharset238\fprq2 Helvetica CE;}{\f225\fswiss\fcharset204\fprq2 Helvetica Cyr;}{\f227\fswiss\fcharset161\fprq2 Helvetica Greek;}{\f228\fswiss\fcharset162\fprq2 Helvetica Tur;}{\f229\fswiss\fcharset177\fprq2 Helvetica (Hebrew);} {\f230\fswiss\fcharset178\fprq2 Helvetica (Arabic);}{\f231\fswiss\fcharset186\fprq2 Helvetica Baltic;}{\f232\fswiss\fcharset163\fprq2 Helvetica (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; \red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\rsidtbl \rsid603876\rsid6651127\rsid6701535\rsid7436346\rsid8590707\rsid8675611 \rsid9257036\rsid9337518\rsid9718114\rsid10316119\rsid10890860\rsid11215207\rsid14696916\rsid15346993\rsid16385708}{\*\generator Microsoft Word 10.0.2627;}{\info {\title <------------------------------------ Nexagon: The Pit Mod doc -------------------------------->}{\author Jay Podilchuk}{\operator Jay Podilchuk}{\creatim\yr2002\mo9\dy18\hr12\min34}{\revtim\yr2002\mo9\dy18\hr22\min47} {\version4}{\edmins78}{\nofpages11}{\nofwords3254}{\nofchars18553}{\*\company SFI}{\nofcharsws21764}{\vern16437}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701 \dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl\rsidroot9257036 \fet0\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f1\fs20\insrsid603876\charrsid11215207 <------------------------------------ Nexagon: The Pit Mod doc --------------------------------> \par }{\f1\fs20\insrsid603876 \par }{\b\f1\fs20\insrsid603876\charrsid11215207 Disclaimer: THIS DOCUMENT IS NOT SUPPORTED BY THE DEVELOPERS \par }{\f1\fs20\insrsid603876 \par This document was written to aid the individuals who invest their time selflessly producing rich and exiting post production game content.}{\f1\fs20\insrsid9718114 }{\f1\fs20\insrsid603876 It provides a basic overview of Nexagon's level editing structure and scripting tools. Please feel free to edit the map included in the beta and explore other possibilities of your own creation. Understand though, any problems you encounter while editing the content provided can not be addressed by the developers at Strategy First Inc. You are encouraged however to utilize the forums provided fo r purpose of this beta to }{\f1\fs20\insrsid9257036 discuss}{\f1\fs20\insrsid603876 amongst other members possible solutions to the problems derived by }{\f1\fs20\insrsid9257036 modifying}{\f1\fs20\insrsid603876 content. \par \par }{\b\f1\fs20\insrsid603876\charrsid11215207 Level editor: \par }{\f1\fs20\insrsid603876 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid6701535 {\f1\fs20\insrsid603876 Place the following line in the options.ini file located in the user directory (}{\f1\fs20\insrsid14696916 resources}{\f1\fs20\insrsid603876 \\user\\ options.ini) }{\b\f1\fs20\insrsid603876\charrsid14696916 pit_editor = 1}{\f1\fs20\insrsid603876 . This will prompt the display of the level editor prior to the load of the game. It would be wise to back up the original maps prior to saving. }{ \f1\fs20\insrsid9257036 Modifications}{\f1\fs20\insrsid603876 made in the editor will alter maps contained in the \\pit directory once the save options is selected. Once a new }{\f1\fs20\insrsid11215207 m}{\f1\fs20\insrsid603876 ap has been created it will appear in the map list when the load option is selected. \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \par }{\b\f1\fs20\insrsid603876\charrsid11215207 \tab Load:}{\f1\fs20\insrsid603876 \tab Selecting load displays all pits displayed in the \\pits directory. \par \par \tab }{\b\f1\fs20\insrsid603876\charrsid11215207 Save:}{\f1\fs20\insrsid603876 \tab Saves modifications. \par \par }{\b\f1\fs20\insrsid603876\charrsid11215207 \tab Object List: \par }{\f1\fs20\insrsid603876 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid7436346 {\f1\fs20\insrsid603876 The level design tools are }{\f1\fs20\insrsid9257036 identical}{\f1\fs20\insrsid603876 to the in game sanctum design tools, the only difference is the level editor allows placements for blocks within the limits of the load map platform. \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid7436346 {\b\f1\fs20\insrsid603876\charrsid11215207 Objects:}{\f1\fs20\insrsid7436346 }{\f1\fs20\insrsid603876 All available objects specified in the }{\f1\fs20\insrsid14696916 resources}{\f1\fs20\insrsid9718114 \\pits\\levelname\\pit.ini}{\f1\fs20\insrsid603876 , found in the }{\f1\fs20\insrsid9718114 filename.set}{\f1\fs20\insrsid603876 . Specified }{\f1\fs20\insrsid9718114 b}{\f1\fs20\insrsid603876 y the inclusion of }{ \f1\fs20\insrsid9718114 the line }{\b\f1\fs20\insrsid9718114\charrsid9718114 category "objects"}{\f1\fs20\insrsid6651127 }{\f1\fs20\insrsid603876 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \tab \tab \tab \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid7436346 {\b\f1\fs20\insrsid603876\charrsid11215207 Weapons:}{\f1\fs20\insrsid603876 }{\f1\fs20\insrsid7436346 }{\f1\fs20\insrsid9718114 All available objects specified in the }{ \f1\fs20\insrsid14696916 resources}{\f1\fs20\insrsid9718114 \\pits\\levelname\\pit.ini, found in the filename.set. Specified by the inclusion of the line }{\b\f1\fs20\insrsid9718114\charrsid9718114 category "}{\b\f1\fs20\insrsid9718114 weapons}{ \b\f1\fs20\insrsid9718114\charrsid9718114 "}{\f1\fs20\insrsid9718114 }{\f1\fs20\insrsid603876 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \tab \tab \par }\pard \ql \fi-1440\li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid9718114 {\f1\fs20\insrsid603876 \tab }{\b\f1\fs20\insrsid603876\charrsid11215207 Traps:}{\f1\fs20\insrsid603876 \tab }{\f1\fs20\insrsid9718114 All available objects specified in the }{\f1\fs20\insrsid14696916 resources}{\f1\fs20\insrsid9718114 \\pits\\levelname\\pit.ini, found in the filename.set. Specified by the inclusion of the line }{\b\f1\fs20\insrsid9718114\charrsid9718114 category "}{ \b\f1\fs20\insrsid9718114 traps}{\b\f1\fs20\insrsid9718114\charrsid9718114 "}{\f1\fs20\insrsid9718114 }{\f1\fs20\insrsid603876 \par }{\f1\fs20\insrsid9718114 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid9718114 {\b\f1\fs20\insrsid9257036\charrsid11215207 Embellishments}{\b\f1\fs20\insrsid603876\charrsid11215207 :}{\f1\fs20\insrsid9718114\charrsid9718114 }{\f1\fs20\insrsid9718114 All available objects specified in the }{\f1\fs20\insrsid14696916 resourcesresources}{\f1\fs20\insrsid9718114 \\pits\\levelname\\pit.ini, found in the filename.set. Specified by the inclusion of the line }{\b\f1\fs20\insrsid9718114 category \'93d\'e9cor \'94}{\f1\fs20\insrsid603876 \par }{\f1\fs20\insrsid9718114 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \tab \tab }{\b\f1\fs20\insrsid603876\charrsid11215207 Delete:}{\f1\fs20\insrsid603876 \tab \tab Deletes objects by right clicking when the X icon is displayed. \tab \par \par \tab }{\b\f1\fs20\insrsid603876\charrsid11215207 Level Placement Tool: \par }{\f1\fs20\insrsid603876 \par \tab \tab Functions }{\f1\fs20\insrsid9257036 identically}{\f1\fs20\insrsid603876 to the in game sanctum design tool. \par \par \tab }{\b\f1\fs20\insrsid603876\charrsid11215207 ESC key: \par }{\f1\fs20\insrsid603876 \tab \tab \par \tab \tab Exits editor and continues game load. \par \par \tab }{\b\f1\fs20\insrsid603876\charrsid11215207 Damage area: \par }{\f1\fs20\insrsid603876 \tab \tab \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid11215207 {\f1\fs20\insrsid603876 Toggles the damage area tool. When selected paint squares adjacent to areas and objects that would cause damage to units }{\f1\fs20\insrsid9257036 within}{\f1\fs20\insrsid603876 the scripted range. This will indicate the AI that those are danger areas and prompt them to react accordingly. \par }{\f1\fs20\insrsid11215207 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\b\f1\fs20\insrsid603876\charrsid11215207 \tab }{\b\f1\fs20\insrsid14696916 Explode}{\b\f1\fs20\insrsid603876\charrsid11215207 : \par }{\f1\fs20\insrsid603876 \par \par }{\b\f1\fs20\insrsid603876\charrsid11215207 block set up: \par }{\f1\fs20\insrsid603876 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid603876 Blocks are any object that can be placed while using the level editing tool. They are broken down in the following 3 files which collective function to display the object within the structure of the game engine. Changing the paths and }{ \f1\fs20\insrsid9257036 variables}{\f1\fs20\insrsid603876 contained in these files alters the }{\f1\fs20\insrsid9257036 manner}{\f1\fs20\insrsid603876 in which they look and function within the game. \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \par }{\b\f1\fs20\ul\insrsid15346993\charrsid15346993 Block file:}{\f1\fs20\insrsid9257036 \tab located in the }{\f1\fs20\insrsid14696916 resources\\}{\f1\fs20\insrsid9257036 blocks directory}{\f1\fs20\insrsid603876 \par }{\f1\fs20\insrsid15346993 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid9257036\charrsid9257036 name\tab }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 =}{\f1\fs20\insrsid15346993 }{ \f1\fs20\insrsid9257036\charrsid9257036 "aa_generic_block"}{\f1\fs20\insrsid9257036 }{\b\i\f1\fs20\insrsid9257036\charrsid9257036 string identifying object. The name \par }{\f1\fs20\insrsid9257036\charrsid9257036 model\tab }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = }{\f1\fs20\insrsid15346993 }{\f1\fs20\insrsid9257036\charrsid9257036 "models/aa_generic_block.model"}{\f1\fs20\insrsid9257036 }{\b\i\f1\fs20\insrsid9257036\charrsid9257036 string pointing to model dir}{\f1\fs20\insrsid9257036\charrsid9257036 \par impassable\tab = "YES"}{\f1\fs20\insrsid9257036 }{\b\i\f1\fs20\insrsid15346993\charrsid15346993 Boolean flag indicating if the object can be pathed through}{\f1\fs20\insrsid9257036\charrsid9257036 \par invulnerable\tab = "no}{\b\i\f1\fs20\insrsid9257036\charrsid15346993 "}{\b\i\f1\fs20\insrsid15346993\charrsid15346993 }{\b\i\f1\fs20\insrsid7436346 \tab }{\b\i\f1\fs20\insrsid15346993\charrsid15346993 Boolean flag indicating if an object is destructible }{\f1\fs20\insrsid15346993 }{\f1\fs20\insrsid9257036\charrsid9257036 \par }\pard \ql \fi-720\li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid11215207 {\f1\fs20\insrsid9257036\charrsid9257036 hitPoints\tab = 100}{\f1\fs20\insrsid15346993 }{\f1\fs20\insrsid7436346 \tab }{\b\i\f1\fs20\insrsid15346993\charrsid15346993 Amount of damage that the object can take prior to}{\b\i\f1\fs20\insrsid11215207 \par \tab \tab \tab destruction}{\f1\fs20\insrsid9257036\charrsid9257036 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid9257036\charrsid9257036 armourClass\tab = 10 \par fatigue\tab \tab = 10 \par recouperation\tab = 0 \par clearance }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = 0 \par rampLevel }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = 0 \par unitSupport }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = 1000}{\f1\fs20\insrsid15346993 \tab }{\b\i\f1\fs20\insrsid15346993\charrsid15346993 Number indicative of the size of a unit the object can}{ \b\i\f1\fs20\insrsid11215207 \par }\pard \ql \fi720\li2160\ri0\nowidctlpar\faauto\rin0\lin2160\itap0\pararsid11215207 {\b\i\f1\fs20\insrsid15346993\charrsid15346993 support}{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid9257036\charrsid9257036 blockSupport }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = 2}{\f1\fs20\insrsid15346993 }{ \b\i\f1\fs20\insrsid15346993\charrsid15346993 Controls how the editor interprets how other blocks can be }{\b\i\f1\fs20\insrsid11215207 \par }\pard \ql \fi720\li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid11215207 {\b\i\f1\fs20\insrsid11215207 attached}{\b\i\f1\fs20\insrsid9257036\charrsid15346993 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid9257036\charrsid9257036 isFloor }{\f1\fs20\insrsid15346993 \tab \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = 0 \par isRoof }{\f1\fs20\insrsid15346993 \tab \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = 0 \par material }{\f1\fs20\insrsid15346993 \tab }{\f1\fs20\insrsid9257036\charrsid9257036 = "metal"}{\f1\fs20\insrsid15346993 Indicative of what sounds and emitters will be played when attacked}{\f1\fs20\insrsid9257036\charrsid9257036 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid9257036 {\f1\fs20\insrsid9257036\charrsid9257036 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\b\f1\fs20\ul\insrsid15346993 B}{\b\f1\fs20\ul\insrsid15346993\charrsid15346993 lockset file:}{\f1\fs20\insrsid15346993 \tab Located in the }{\f1\fs20\insrsid14696916 resources\\}{ \f1\fs20\insrsid15346993 blockset directory}{\f1\fs20\insrsid603876 \par }{\f1\fs20\insrsid15346993 \par }\pard \ql \li720\ri-1710\nowidctlpar\faauto\rin-1710\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid15346993\charrsid15346993 name "ss_trap"}{\f1\fs20\insrsid7436346 \tab \tab \tab }{\b\i\f1\fs20\insrsid7436346\charrsid7436346 object name, same as one in the block file}{\f1\fs20\insrsid15346993\charrsid15346993 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid15346993\charrsid15346993 displayName "ss_trap"}{\f1\fs20\insrsid7436346 \tab \tab }{\b\i\f1\fs20\insrsid7436346\charrsid7436346 name displayed in game}{ \f1\fs20\insrsid15346993\charrsid15346993 \par icon "ss_trap_icon.tga"}{\f1\fs20\insrsid7436346 \tab \tab }{\b\i\f1\fs20\insrsid7436346\charrsid7436346 icon displayed in reference to the object in the }{\b\i\f1\fs20\insrsid11215207 \par }\pard \ql \fi720\li2880\ri0\nowidctlpar\faauto\rin0\lin2880\itap0\pararsid11215207 {\b\i\f1\fs20\insrsid11215207 editors.}{\f1\fs20\insrsid15346993\charrsid15346993 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid15346993\charrsid15346993 category "objects"}{\f1\fs20\insrsid7436346 \tab \tab }{\b\i\f1\fs20\insrsid7436346\charrsid7436346 catergory the object is put into in the editors}{\f1\fs20\insrsid15346993\charrsid15346993 \par place "ss_trap" 0 0 0}{\f1\fs20\insrsid7436346 \tab \tab }{\b\i\f1\fs20\insrsid7436346\charrsid7436346 placement of the object based on x, y , z}{\f1\fs20\insrsid15346993\charrsid15346993 \par trigger "ai/gamedata/caitrigger/cairadiusobject/caiicetrap.py" "CAIIceTrap" 0 0 0}{\f1\fs20\insrsid7436346 \par }\pard \ql \li3600\ri0\nowidctlpar\faauto\rin0\lin3600\itap0\pararsid11215207 {\b\i\f1\fs20\insrsid7436346\charrsid7436346 full path to trigger, the class name of the trigger and the x, y ,z coordinates to the block in the block set that the trigger is attached}{\b\i\f1\fs20\insrsid7436346 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid15346993\charrsid15346993 army "all"}{\f1\fs20\insrsid7436346 \tab \tab \tab }{\b\i\f1\fs20\insrsid7436346\charrsid7436346 army the block is associated with}{ \b\i\f1\fs20\insrsid15346993\charrsid7436346 \par }{\f1\fs20\insrsid15346993\charrsid15346993 isUserSet "NO" \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid15346993 \par }{\b\f1\fs20\ul\insrsid15346993\charrsid9718114 Mo}{\b\f1\fs20\ul\insrsid603876\charrsid9718114 del file}{\b\f1\fs20\ul\insrsid15346993\charrsid9718114 :}{\f1\fs20\insrsid15346993 \tab Located in the }{\f1\fs20\insrsid14696916 resources\\}{ \f1\fs20\insrsid15346993 model directory}{\f1\fs20\insrsid603876 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid9718114 {\f1\fs20\insrsid7436346 Modifying these files }{\f1\fs20\insrsid9718114 can have detrimental effects of the game. A good grasp of 3D max and object modeling is necessary for modding these files. If you possess such knowledge no explanation is necessary.}{\f1\fs20\insrsid7436346 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid603876 \par }{\b\f1\fs20\ul\insrsid603876\charrsid11215207 Scripting: \par }{\f1\fs20\insrsid603876 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid11215207 {\f1\fs20\insrsid11215207 The language used to script the various objects in Nexagon is the python, a language that shares many similarities with c/c++. Scripts are attached to the objects via the blockset file. A line similar to this must be included in the blockset file.}{ \f1\fs20\insrsid603876 \par }{\f1\fs20\insrsid14696916 \par }{\b\f1\fs20\insrsid14696916\charrsid14696916 NOTE:}{\f1\fs20\insrsid14696916 all paths follow the unix convention of using a forward slash to denote directory structure \par }{\f1\fs20\insrsid11215207 \par }{\f1\fs20\insrsid11215207\charrsid15346993 trigger "ai/gamedata/caitrigger/cairadiusobject/caiicetrap.py" "CAIIceTrap" 0 0 0}{\f1\fs20\insrsid11215207 \par \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid11215207 {\f1\fs20\insrsid11215207 -\tab Fist parameter trigger indicates that a script is attached to the object \par }\pard \ql \fi-720\li2160\ri0\nowidctlpar\faauto\rin0\lin2160\itap0\pararsid11215207 {\f1\fs20\insrsid11215207 -\tab Second parameter is the full path in relation to resources where the script is located \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid11215207 {\f1\fs20\insrsid11215207 -\tab third parameter is the objects class name \par -\tab fourth parameter is the location of the script in relation to the center block \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid8675611 {\f1\fs20\insrsid8675611 \par }{\b\f1\fs20\insrsid8675611\charrsid8675611 \tab View Script in the Level Editor:}{\b\f1\fs20\insrsid8675611 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid8675611 {\f1\fs20\insrsid8675611 Ctrl-i will toggle display all the scripts attached to the objects placed in the neutral zone. They will appear in the form of red squares followed by the trigger class name. The location of the square in relation the blockset indicates to which block of the blockset the trigger is attached. Use the red square to attach the trigger to the desired block using the x y x coordinates in the trigger line in the blockset file. \par \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid10316119 {\f1\fs20\insrsid8675611 While the trigger info is toggled on, ctrl-left click the red square to display the variables associated with the trigger. Changing these variables alter manner in which the objects reacts within the game. Some of the variables are self explanatory and others aren\rquote t. So when attempting any form of modification be sure to back up the original files.}{\f1\fs20\insrsid10316119 It is unfortunate but some of the variables are not even used so figuring out what does what might prove to be challenging.}{ \f1\fs20\insrsid8675611 \par }{\f1\fs20\insrsid10316119 \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid603876 {\b\f1\fs20\insrsid603876\charrsid603876 Python / C Interface functions:}{\b\f1\fs20\insrsid603876 }{\f1\fs20\insrsid603876 The following information is out dated unfortunately. In time a newer version will hopefully be created, but for the time being these are the available documented function calls possible in python. It is unfortunate but some of the parameters have changed and some may not function as indicated.}{\f1\fs20\insrsid10316119 Information concerning python and its syntax can be found at www.python.org.}{ \f1\fs20\insrsid603876 \par }{\f1\fs20\insrsid10316119 \par All scripts are located in the /resources/ai directory. They may be opened in any text editor but it is highly suggested you use an editor that allows you remove all tabs and replace them with spaces because python does not recognize tabs. \par \par Debug information generated by the engine and python can be found in the /var/python.txt file. Any print statements in the gamescript or trigger scripts will also appear appended to the bottom of this file. Use this file as a debug tool. \par }{\f4\insrsid603876 \par }\pard \ql \li720\ri0\nowidctlpar\tx1440\tx2880\tx4320\tx5760\tx7200\faauto\rin0\lin720\itap0\pararsid603876 {\b\f4\fs20\ul\insrsid603876\charrsid603876 Game Control Interface \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.set_duration( duration ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the length of the game. Duration is measured in milliseconds. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.duration() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the duration of the game. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.time_remaining() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the amount of time remaining in the game. \par \tab \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.time() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the current game time. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.set_is_over() \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the game over flag. There will be a pause between calling this function and the end of the game. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.set_use_team_colors( flag ) \par }{\f4\fs20\insrsid603876\charrsid603876 Tells the engine to use team colors when rendering the units. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.is_using_team_colors() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns YES or NO depending on wether or not the team colors are being used to render the units. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.number_of_active_players() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the number of players left in the game. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.place_player_camp( player_id, x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Loads and places the players camp on the map at X, Y, Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.save_player_camp( player_id, x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Saves the player camp out after a match. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.controller_destoryed( player_id, x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Tells the game that the players controller has been destroyed at location X, Y, Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.controller_attacked( player_id, x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Tells the game that the players controller has been attacked at location X, Y, Z \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.give_player_credits( player_id, amount ) \par }{\f4\fs20\insrsid603876\charrsid603876 Rewards the player is an amount of credits. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.take_player_credits( player_id, amount ) \par }{\f4\fs20\insrsid603876\charrsid603876 Deducts an amount of credits from the players cash. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.popup_notice( icon, x, y, z, size, duration ) \par }{\f4\fs20\insrsid603876\charrsid603876 Popups up an icon over the given grid location. The icon is an icon named in the named icon registry. You can find the registry in /etc. The size paramater controls the scalling of the icon. Duration is the length in seconds the icon will remain on the screen. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.random_percent() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a random number between 0 and 100. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.look_at( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Faces the camera at the grid location given by X, Y, Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.script() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a handle to the script being used as the pit game controller. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 game.open_window( message ) \par }{\f4\fs20\insrsid603876\charrsid603876 Opens up a window with the message text in it. Use \\n characters in the string to split the text onto seperate lines. \par \par }{\b\f4\fs20\ul\insrsid603876\charrsid603876 World / Map interface \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.set_size( width, height, levels ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the size of the game world. Width the the X dimension, Height is Y and levels is Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.load_at( map_name, x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Loads the given map file at position X, Y, Z. Normally this is called in the game script to setup the level. In this case the speci al map_name "$pit_map" may be used. This will ensure that the map designated in the pit.ini file will be used. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.set_area_to_player( player_id, x, y, z, w, h, l ) \par }{\f4\fs20\insrsid603876\charrsid603876 Marks an area of the map as being owned by the player. The area is the cube positioned \par with its lower left hand corner at X, Y, Z and is of width }{\i\f37\fs20\insrsid603876\charrsid603876 w}{\f4\fs20\insrsid603876\charrsid603876 , height }{\i\f37\fs20\insrsid603876\charrsid603876 h}{\f4\fs20\insrsid603876\charrsid603876 , and is }{ \i\f37\fs20\insrsid603876\charrsid603876 l}{\f4\fs20\insrsid603876\charrsid603876 levels high. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.grid_at( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the grid object at X, Y, Z. Returns None if the position is off the world. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.place_mine \par }{\f4\fs20\insrsid603876\charrsid603876 ( x, y, z, \par damage, force, radius, \par model, emitter, scriptClass \par ) \par Places a mine in the world at location X, Y, Z. }{\i\f37\fs20\insrsid603876\charrsid603876 damage}{\f4\fs20\insrsid603876\charrsid603876 is the amount of damage the mine will do if it goes off. }{\i\f37\fs20\insrsid603876\charrsid603876 force}{ \f4\fs20\insrsid603876\charrsid603876 is the amount of knockback it will do. }{\i\f37\fs20\insrsid603876\charrsid603876 radius}{\f4\fs20\insrsid603876\charrsid603876 is the size of the explosion. }{\i\f37\fs20\insrsid603876\charrsid603876 model}{ \f4\fs20\insrsid603876\charrsid603876 is the name of the model file that will be used to represent this mine. }{\i\f37\fs20\insrsid603876\charrsid603876 emitter}{\f4\fs20\insrsid603876\charrsid603876 is the name of the particle emitter that will be triggered when the mine goes off and }{\i\f37\fs20\insrsid603876\charrsid603876 scriptClass}{\f4\fs20\insrsid603876\charrsid603876 is the name of the script class that will manage the effects of this mine. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.place_power_up( x, y, z, level, model ) \par }{\f4\fs20\insrsid603876\charrsid603876 Places a popup up in the world at location X, Y, Z. The power up is of level }{\i\f37\fs20\insrsid603876\charrsid603876 level}{\f4\fs20\insrsid603876\charrsid603876 and is displayed in the engine using the model file indicated by }{\i\f37\fs20\insrsid603876\charrsid603876 model}{\f4\fs20\insrsid603876\charrsid603876 . \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.explode \par }{\f4\fs20\insrsid603876\charrsid603876 ( x, y, z, \par damage, radius, speed, \par range, model, num \par ) \par Creates an explosion at location X, Y, Z. Each projectile in the explosion does }{\i\f37\fs20\insrsid603876\charrsid603876 damage }{\f4\fs20\insrsid603876\charrsid603876 and will travel }{\i\f37\fs20\insrsid603876\charrsid603876 range}{ \f4\fs20\insrsid603876\charrsid603876 grids at }{\i\f37\fs20\insrsid603876\charrsid603876 speed }{\f4\fs20\insrsid603876\charrsid603876 speed. }{\i\f37\fs20\insrsid603876\charrsid603876 radius }{\f4\fs20\insrsid603876\charrsid603876 is ignored and should be 1. Each projectile is rendered using the model given in }{\i\f37\fs20\insrsid603876\charrsid603876 model}{\f4\fs20\insrsid603876\charrsid603876 . There are }{\i\f37\fs20\insrsid603876\charrsid603876 num}{ \f4\fs20\insrsid603876\charrsid603876 projectiles created and they are spead out in a 360 arc around the centre of the explosion. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.place_block_set( name, x, y, z, facing ) \par }{\f4\fs20\insrsid603876\charrsid603876 Places the block set given by }{\i\f37\fs20\insrsid603876\charrsid603876 name}{\f4\fs20\insrsid603876\charrsid603876 at location X, Y, Z with the given }{\i\f37\fs20\insrsid603876\charrsid603876 facing}{ \f4\fs20\insrsid603876\charrsid603876 . \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.remove_block_at( x, y, z, particle_flag ) \par }{\f4\fs20\insrsid603876\charrsid603876 Removes the block at X, Y, Z if particle_flag is YES then the destruction particles are rendered other wise the block is simply removed. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 world.set_terrain_visible( name, flag ) \par }{\f4\fs20\insrsid603876\charrsid603876 Finds the terrain node with the given name and sets its visibility. This can be used for turning on and off terrain features. \par \par }{\b\f4\fs20\ul\insrsid603876\charrsid603876 Grid Object Interface \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_block_type() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a string describing the blocks type. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_clearance() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the clearance level of a grid. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_unit_support() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the unit support value of a grid. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.is_solid() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns YES if the grid is solid, NO otherwise. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_support_level() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the support level of the grid. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.set_hitpoints( points ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the hitpoints of the grid to }{\i\f37\fs20\insrsid603876\charrsid603876 points}{\f4\fs20\insrsid603876\charrsid603876 . If }{\i\f37\fs20\insrsid603876\charrsid603876 points}{ \f4\fs20\insrsid603876\charrsid603876 is less than or equal to zero the block is destroyed. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.hitpoints() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the number of hitpoints the grid has left. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.play_animation( animation_name ) \par }{\f4\fs20\insrsid603876\charrsid603876 Asks the grid to play an animation with the given name. If the block in the grid doesn't support that animation nothing happens. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.is_playing_animation() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns YES if the grid is currently playing an animation or NO other wise. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.fire_at( target_grid, damage, radius, range, speed ) \par }{\f4\fs20\insrsid603876\charrsid603876 Fires a projectile from this grid to }{\i\f37\fs20\insrsid603876\charrsid603876 target_grid}{\f4\fs20\insrsid603876\charrsid603876 with the given attributes. }{\i\f37\fs20\insrsid603876\charrsid603876 damage}{ \f4\fs20\insrsid603876\charrsid603876 is the amount of hitpoints the projectile will damage with. }{\i\f37\fs20\insrsid603876\charrsid603876 radius}{\f4\fs20\insrsid603876\charrsid603876 is currently ignored and should always be 1. }{ \i\f37\fs20\insrsid603876\charrsid603876 range}{\f4\fs20\insrsid603876\charrsid603876 is the number of grid squares the projectile will travel and }{\i\f37\fs20\insrsid603876\charrsid603876 speed}{\f4\fs20\insrsid603876\charrsid603876 is the speed at which it will fly. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.arc_fire_at( target_grid, damage, radius, range, speed ) \par }{\f4\fs20\insrsid603876\charrsid603876 Fires a projectile in an arc from the grid towards the target grid. }{\i\f37\fs20\insrsid603876\charrsid603876 damage }{\f4\fs20\insrsid603876\charrsid603876 is the amount of damage the projectile will carry. }{ \i\f37\fs20\insrsid603876\charrsid603876 radius}{\f4\fs20\insrsid603876\charrsid603876 is currently ignored and should be 1. }{\i\f37\fs20\insrsid603876\charrsid603876 range}{\f4\fs20\insrsid603876\charrsid603876 is the number of grid squares the projectile will travel. }{\i\f37\fs20\insrsid603876\charrsid603876 speed}{\f4\fs20\insrsid603876\charrsid603876 is the speed at which the projectile will travel. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.owning_player() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the player id of whoever owns this grid. Unowned grids will return -1. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.set_callback( string ) \par }{\f4\fs20\insrsid603876\charrsid603876 Used to set a callback for the grid. Callbacks can be used to hook the game script into actions taht units take on the grid. The format of the string is }{\i\f37\fs20\insrsid603876\charrsid603876 callback_type = function_name}{\f4\fs20\insrsid603876\charrsid603876 . \par Valid callback types are: \par use - Called when a unit uses this grid \par unit_inside - Called each server frame when a unit is inside this grid. \par attacked - Called when this grid is damaged. \par destroyed - Called when this grid is destroyed. \par clicked - Called if the user clicks on the grid. \par Function name should be the name of a method that is implemented by the game controller script for each Pit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_x() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the X position of the grid. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_y() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the Y position of the grid. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 grid.get_z() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the Z position of the grid. \par \par }{\b\f4\fs20\ul\insrsid603876\charrsid603876 Particle System Interface \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 particle.create_from_file( filename, x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Loads and triggers the particle system given in }{\i\f37\fs20\insrsid603876\charrsid603876 filename}{\f4\fs20\insrsid603876\charrsid603876 at location X, Y, Z \par \par }{\b\f4\fs20\ul\insrsid603876\charrsid603876 Player Interface \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.unit_list( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a list of the players units. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.controller_information( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a dictionary with the players controller information. The dictionary has the following keys: \par name - the players name \par x - controllers X location \par y - controllers Y location \par z - controlelrs Z location \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.local_player_id() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the player id of the local player. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.rally_points( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a list of dictionaries that describe the players rally points. Each point dictionary has the following keys: \par x - points X position \par y - points Y position \par z - points Z position \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.perimeter_points( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a list of dictionaries that describe the players periemeter points. Each point dictionary has the following keys: \par x - points X position \par y - points Y position \par z - points Z position \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.next_perimeter_point( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns a dictionary describing the next periemeter point to establish. The point dictionary has the following keys: \par x - points X position \par y - points Y position \par z - points Z position \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.is_ai( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns YES if the player is under AI control, NO otherwise. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.cash( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the amount of cash the given player has. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.spend_cash( player_id, amount ) \par }{\f4\fs20\insrsid603876\charrsid603876 Deducts the given amount of cash from the player. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 player.name( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the players name. \par \par }{\b\f4\fs20\ul\insrsid603876\charrsid603876 Unit Factory Interface \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.at( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the unit at location X, Y, Z. Returns None if no unit exists there. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.unit_named( name ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the unit with the given name. Returns None if no unit with that name exists. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.new_from_class( class_name ) \par }{\f4\fs20\insrsid603876\charrsid603876 Creates a new unit of the given class. The new unit is automatically assigned to the team previsously set with a call to }{\i\f37\fs20\insrsid603876\charrsid603876 unit_factory.set_current_team( player_id )}{ \f4\fs20\insrsid603876\charrsid603876 . \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.set_current_team( player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the player new units will be assigned to upon creation. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.current_team() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the player_id of the team units will be assigned to when they are created. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.closest_target_to_grid( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the closest target unit to the given grid location. Line of sight is taken into account. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit_factory.closest_to_grid( x, y, z, player_id ) \par }{\f4\fs20\insrsid603876\charrsid603876 Retuns the closest unit assigned to }{\i\f37\fs20\insrsid603876\charrsid603876 player_id}{\f4\fs20\insrsid603876\charrsid603876 to location X, Y, Z \par \par }{\b\f4\fs20\ul\insrsid603876\charrsid603876 Unit Interface Methods \par }{\f4\fs20\insrsid603876\charrsid603876 \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.name() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the units name. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.player_id() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the player id of the player this unit is assigned to. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.hitpoints() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the number of hitpoints this unit has remaining. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_hitpoints( value ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the number of hitpoints the unit has. Setting hitpoints to 0 or less will kill the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.armour() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the armour level of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_armour( value ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the armour level of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.fatigue() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the amount of fatigue of the units. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_fatigue( value ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the the fatigue of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.moral() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the moral of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_moral( value ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the moral of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.doctrine() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the units current doctrine. Valid doctrines are: \par DOCTRINE_DEFENSIVE \par DOCTRINE_STEADY \par DOCTRINE_AGGRESSIVE \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_doctrine( doctrine ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the doctrine of the unit. Valid doctrines are: \par DOCTRINE_DEFENSIVE \par DOCTRINE_STEADY \par DOCTRINE_AGGRESSIVE \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.experience() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the experience level of the unit. \par unit.set_experience() \par Sets the experience level of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_grid_position( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Moves the unit to the given grid position. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.get_x() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the X grid location of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.get_y() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the X grid location of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.get_z() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the X grid location of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.number_of_matches() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the number of matches this unit has been in. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_number_of_matches() \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the number of matches this unit has been in. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.man_gun( flag, grid ) \par }{\f4\fs20\insrsid603876\charrsid603876 Called by stationary weapons to have the unit man them. If }{\i\f37\fs20\insrsid603876\charrsid603876 flag}{\f4\fs20\insrsid603876\charrsid603876 is YES then the unit will man the gun at the given }{ \i\f37\fs20\insrsid603876\charrsid603876 grid}{\f4\fs20\insrsid603876\charrsid603876 . If }{\i\f37\fs20\insrsid603876\charrsid603876 flag}{\f4\fs20\insrsid603876\charrsid603876 is NO then the unit will stop manning the gun. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_gun_loaded( flag ) \par }{\f4\fs20\insrsid603876\charrsid603876 Used by the stationary weapons to indicate to the unit if they are ready to fire or not. If }{\i\f37\fs20\insrsid603876\charrsid603876 flag}{\f4\fs20\insrsid603876\charrsid603876 is YES then the gun is ready to fire. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_gun_ammo( amount ) \par }{\f4\fs20\insrsid603876\charrsid603876 Used by the staitionary weapons to tell the unit how much ammo is left in the gun they are manning. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_inventory_item( name, callback ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the inventory item the unit is carrying. }{\i\f37\fs20\insrsid603876\charrsid603876 name}{\f4\fs20\insrsid603876\charrsid603876 can be used to identify the item to other scripts. }{ \i\f37\fs20\insrsid603876\charrsid603876 callback}{\f4\fs20\insrsid603876\charrsid603876 is the name of a Python function that is called when the unit uses something while carrying the item. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.inventory_item() \par }{\f4\fs20\insrsid603876\charrsid603876 Retruns the inventory item name set in a previous call to }{\i\f37\fs20\insrsid603876\charrsid603876 unit.set_inventory_item}{\f4\fs20\insrsid603876\charrsid603876 . \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.inventory_count() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the count associated with the inventory item the unit is carrying. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_inventory_count( amount ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the amount of an inventory item the unit is carrying. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.inventory_blurb( ) \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the inventory item blurb previously set with }{\i\f37\fs20\insrsid603876\charrsid603876 unit.set_inventory_blurb}{\f4\fs20\insrsid603876\charrsid603876 . \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_inventory_blurb( string ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets the inventory blurb for the item the unit is currently carrying. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_badge( filename ) \par }{\f4\fs20\insrsid603876\charrsid603876 Sets a badge icon that appears on the units portrait. The badge icon can be used to represent the inventory item the unit is carrying. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.remove_badge() \par }{\f4\fs20\insrsid603876\charrsid603876 Removes the badge used on the units portrait. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.attack_unit( target_unit ) \par }{\f4\fs20\insrsid603876\charrsid603876 Orders the unit to attack the }{\i\f37\fs20\insrsid603876\charrsid603876 target_unit}{\f4\fs20\insrsid603876\charrsid603876 . \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.attack_grid( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Orders the unit to attack the grid at location X, Y, Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.defend_grid( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Orders the unit to defend the grid at location X, Y, Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.move_to_grid( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Orders the unit to move to grid location X, Y, Z. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.current_goal() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the current goal of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.current_action() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the current action of the unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.use_grid( x, y, z ) \par }{\f4\fs20\insrsid603876\charrsid603876 Orders the unit to use the grid at location X, Y, Z \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.find_best_target() \par }{\f4\fs20\insrsid603876\charrsid603876 Finds the best target for the unit. Returns None if no targets exist. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.poison( freq, damage, turns ) \par }{\f4\fs20\insrsid603876\charrsid603876 Will make the unit take }{\i\f37\fs20\insrsid603876\charrsid603876 damage}{\f4\fs20\insrsid603876\charrsid603876 at }{\i\f37\fs20\insrsid603876\charrsid603876 freq}{\f4\fs20\insrsid603876\charrsid603876 frequence for }{\i\f37\fs20\insrsid603876\charrsid603876 turns}{\f4\fs20\insrsid603876\charrsid603876 number of turns. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.remove_poison() \par }{\f4\fs20\insrsid603876\charrsid603876 Removes any effects of poison from a unit. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.use_object_pose_flag() \par }{\f4\fs20\insrsid603876\charrsid603876 Returns the value of the use object pose flag. \par \par }{\b\f4\fs20\insrsid603876\charrsid603876 unit.set_use_object_pose_flag() \par }{\f4\fs20\insrsid603876\charrsid603876 Used by grid scripts to have the unit do a use animation. \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid9337518 {\f1\fs20\insrsid9337518 \par }{\b\f1\fs20\ul\insrsid9337518\charrsid9337518 Gamescript File:}{\b\f1\fs20\ul\insrsid9337518 \par \par }\pard \ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 The game scripts are located in the resources\\ai\\levels directory. The files are broken up into the following functions which are called appropriately by the game engine. \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid9337518 {\f1\fs20\insrsid8590707 \par }{\b\f1\fs20\insrsid8590707\charrsid8590707 \tab def fn_vSetup(self):}{\b\insrsid8590707\charrsid8590707 }{\b\f1\fs20\insrsid8590707\charrsid8590707 \tab \tab \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 Initializes every variable with in the scope of the level. This function is called at load only once \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 \par }{\b\f1\fs20\insrsid8590707\charrsid8590707 \tab def fn_vInitialize(self): \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 Is called after the information in setup is loaded as well as the map file and all other information pertinent to object placement. \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 \par }{\b\f1\fs20\insrsid8590707\charrsid8590707 \tab def fn_vUpdate(self) :}{\b\f1\fs20\insrsid8590707 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 This function is called every 10 processor updates. Adding a lot of code and evaluations to this functions can have detrimental effects on frame rate and over all game performance. Use flags to ensure that once events have transpired the function does not continue to run all the routines.}{\f1\fs20\insrsid8590707\charrsid8590707 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid9337518 {\f1\fs20\insrsid8590707 \tab \par }{\b\f1\fs20\insrsid8590707\charrsid8590707 \tab def fn_vGetHint( self, player ):}{\b\f1\fs20\insrsid8590707 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 Utilize this function to indicate to the AI dangerous areas or other points of interest. \par \par }\pard \ql \fi720\li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid8590707 {\b\f1\fs20\insrsid8590707\charrsid8590707 def fn_vFinalize(self):}{\b\f1\fs20\insrsid8590707 \par }\pard \ql \li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0\pararsid8590707 {\f1\fs20\insrsid8590707 Everything included in this function will happen only once at the point when the level is being unload.}{\f1\fs20\insrsid8590707\charrsid8590707 \par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0\pararsid9337518 {\f1\fs20\insrsid8590707\charrsid8590707 \par }}