on: GetHitsSelf<Ì Ì* $€$€‚E€‚€‚ÿGetHitsSelf()ŸpdÌ?Í/ .€à€‘€‚E€‚ãvüÿFills the result variable with the number of time the robot has been hit by other robot's energy missiles.C Ì‚Í1fÿÿÿÿÿÿÿÿ@ÿÿÿÿ‚ÍŒDescription: StoreL?ÍÎÍ3 6€2€‚E€‚€€ €€‚ÿStore( variable )‡N‚Ía9 @€€‘€‚E€‚€ €ƒ‚‚€€‚ÿvariable- Variable nameThis function allows a robot that is fighting in a multiple game match to pass values from one game to the next. This function stores the specified variable in permanent storage for the current match. When the next game starts, all stored variables will be automatically restored. Stored variables will have the same values they contained the last time Store was called in a previous game. This may be useful for robots that learn during a match, changing behavior dynaÎÍa?Ímically. This function can not be used to store variables across multiple matches.+ÎÍŒ( €€‘€‚E€‚ÿBaÎ1°ÿÿÿÿÿÿÿÿAÿÿÿÿÎ<Description: NameIŒ3 6€,€‚E€‚€€ €€‚ÿName( string )%ñÎ<4 6€ã€‘€‚E€‚€ €ƒ‚‚‚‚ÿstring- Text surrounded by quotation marksSets the robot's name. The string will be used to reference the robot during game play. If this function is not called anywhere in a robot's script, a name will be automatically assigned.J†1œÿÿÿÿÿÿÿÿBÿÿÿÿ†ØDescription: Print stringJ<Ð3 6€.€‚E€‚€€ €€‚ÿPrint( string )^%†.9 @€K€‘€‚E€‚€ €ƒ‚‚€€‚ÿstring- Text surrounded by quotation marksAdds the specified string to the output display in a robot's information window. Also, a time stamp is prepended to the output display. At any given point in a game, this time stamp will have the same value for all robots. The output display is limited to 200 entries. When Print is called more than 200 times, the oldest entries will be removed first. This function is useful primarily when debugging a robot. During game play, click on a robot's name button to display its information window.-Ð[) "€€‘€‚E€‚‚ÿR%.­- *€J€€€‚ã˜XR ‰‚ÿSee Also:Print for expressions+[Ø( €€‘€‚E€‚ÿL­$1æÿÿÿÿÿÿÿÿCÿÿÿÿ$¾ Description: Print variableLØp3 6€2€‚E€‚€€ €€‚ÿPrint( variable )ÓŽ$C E X€€‘€‚E€‚€ €ƒâÈ@*€ ‰€‚‚€€‚ÿvariable- Variable name or numeric value EXPAdds the specified value to the output display in a robot's information window. Numerical values have 7 digits of precision, but 3 decimal places are always displayed for clarity. Also, a time stamp is prepended to the output display. At any given point in a game, this time stamp will have the same value for all robots. The output display is limited to 200 entries. When Print is called more than 200 times, the oldest entries will be removed first. This function is useful primarily when debugging a robot. During game play, click on a robot's name button to display its information window.-pp ) "€€‘€‚E€‚‚ÿN!C ¾ - *€B€€€‚ã—XR ‰‚ÿSee Also:Print for stringsCp  1ÒÿÿÿÿÿÿÿÿDÿÿÿÿ  Description: StallH¾ I 3 6€*€‚E€‚€€ €€‚ÿStall( time )Gÿ  H ^€ÿ€‘€‚E€‚€ €ƒâÈ@*€ ‰€‚‚‚‚€€‚‚ÿtime- Amount of time to stall EXPCauses the robot to freeze for the specified amount of time. This command is very useful for debugging purposes.Note: The robot will not even respond to events. This function completely disables a robot.FI Ö 1§ ÿÿÿÿÿÿÿÿEÿÿÿÿÖ îDDescription: BlockingO % 5 :€4€‚E€‚€€ €€‚ƒ‚ÿBlocking( bool )ÅbÖ  @c ”€Å€‘€‚E€ €ƒâÈ@*€ ‰€‚‚€€‚‚âWå$‰‚‚€€€ €€€€ €‚ÿbool- True (non-zero) or False (zero) value EXPThis is an advanced feature. Use of the Blocking command is not required to play robot battle.This function allows command blocking to be turned on or off. When blocking is turned off, it remains off for the entire robot script until explicitly turned back on.The default behavior is for blocking to be on. When blocking is on, calls to commands that require multiple turns block. This means that within a section, execution will pause on the multi-turn command. Code following the multi-turn command will not be executed until the multi-turn command completes. In other words, all function calls are synchronous. When blocking is turned off, multi-turn commands do not block. Code following the multi-turn command executes immediately. In other words, all function calls are asynchronous.%  @ ±u% ½B< F€ë€‘€‚E€‚ã Å­ñ‰ã‚ç‡J‰ã Å­ñ‰‚ÿBlocking should be turned off with great care. A robot's body, gun, and radar can perform only one multi-turn command (i.e. movement) at a time. Only the last command on each body part takes effect. For example, when blocking is off, if a call to BodyLeft is followed immediately by a call to Ahead, the original BodyLeft will be ignored while the robot moves ahead. When blocking is turned off, all previously blocked commands remain blocked. Likewise, when blocking is turned on, all previously unblocked commands remain unblocked. Only commands that are called after a change in blocking are effected by the change.㥠@ D> J€K€‘€‚E€‚ãZ쑉ãZ쑉‚€‚€‚ÿTurning blocking off is used primarily with the Continue command. When an event handler is called, for example, movement may be stopped and continued without blocking on the Continue command. This allows the event handler to be ended while restricting blocking to the section and line that initiated to original movement.Note: This command is not related to and has no effect on events or event registration.N½BîD3 6€6€€‚‚€€‚ãQL`t‰‚‚ÿSee Also:WaitForE D3E1µÿÿÿÿÿÿÿÿFÿÿÿÿ3E£JDescription: WaitForTîD‡E5 :€>€‚E€‚€€ €€‚ƒ‚ÿWaitFor( expression )Òr3EYH` Ž€å€‘€‚E€ €âÈ@*€ ‰€‚‚€€‚‚âWå$‰€€€ €€€€ €‚ÿexpression - Expression that evaluates to True (non-zero) or False (zero) EXPThis is an advanced feature. Use of the WaitFor command is not required to play robot battle.This command provides a means of creating a user defined command block. This means that within a section, execution will pause on the WaitFor command until expression becomes true. Code following the WaitFor command will not be executed until expression becomes true. Generally, blocks are created using expressions that change over time. Blocks that are based on constant value expressions either block permanently or never block.½‡E\JF Z€{€‘€‚E€‚€ €ãTÙ:㉂‚€€€€‚‚‚ÿThis command is generally used as a synchronization method. This is particularly useful when normal command blocking has been turned off with the Blocking command. The WaitFor command has no effect on events. All events will be handled normally. If a higher priority event occurs while blocking, for example, its event handler will be called. When the higher priority event handler ends, control will again return to the WaitFor.GYH£J. ,€2€€€‚ãTÙ:㉂‚ÿSee Also:Blocking1\JÔJ1:ÿÿÿÿÿÿÿÿGÿÿÿÿÔJ €;£JK' €(€ˆ€€‚ÿCommand Blocking+¶ÔJ:Mu ¸€m€¶€ãTÙ:ã‰ãQL`t‰‚‚ã‚ç‡J‰ã؉ã Å­ñ‰ã+üm™‰ã€H˜‰ãK ÑŒ‰ãºvn°‰ã ÑË£‰ãC{d‰ãB{d‰ãZ쑉‚ÿCommand blocking is an advanced feature. Unless the Blocking or WaitFor functions are being used, this information should not be needed.Command blocking occurs when a robot function requires multiple turns to execute. Only commands that cause movement require multiple turn to execute. These include Ahead, Back, BodyLeft, BodyRight, GunLeft, GunRight, RadarLeft, RadarRight, SyncAll, SyncGun, and Continue.}=K·O@ N€{€¶€‚€ €‚‚€ €€€€€‚ÿWhen a command blocks, execution will pause on that command. Code following the multi-turn command will not be executed until the multi-turn command completes. In other words, the command is synchronous. Since each robot component can only perform one multi-turn command at a time, blocking greatly simplifies the control of a robot.When blocking is turned off, for example, a GunLeft(20) call followed by another GunLeft(20) will only move the gun left 20 degrees. Since the first call does not block, the second call immediately supersedes the first call. &:M €# €€€‚ÿ·O €£JT#·O`€1ªÿÿÿÿÿÿÿÿHÿÿÿÿ`€²‚Scripting language special sectionsä €u1 0€É€€ ‚€€‚€‚‚‚ÿScripting Language Special SectionThese sections are considered special because both of them handle events without being registered. The game will automatically call these sections when their pre-defined events occur.*`€Ÿ' €€P‘€s€‚ÿu(u‚M#j€PÇš (€€ã$€£€‰€‚ÿ€€€‚ÿÿÿInitHandles game startup eventst'Ÿˆ‚M#j€NÇš (€€ãÜIz£€‰€‚ÿ€€€‚ÿÿÿDeadHandles robot death events*‚²‚' €€P‘€s€‚ÿJˆ‚ü‚1íÿÿÿÿÿÿÿÿIÿÿÿÿü‚Ÿ…Description: Init section0 ²‚,ƒ' €€€‚€‚ÿInit&Üü‚R…J b€¹€‘€€‚€€ €ã%ÎÉK‰‚‚€€€ €€€‚ÿThis section handles game startup events. It is automatically called at the start of every game. It is always the first section to be executed, and will only be called automatically once. Most robots use this section to register other event handlers. Although Init is only called once automatically, it may be called manually at any time by either registering events to it, or by using the Gosub command.Note: Robots are required to have an Init section.M,ƒŸ…/ .€<€€‚‚€‚ãÜIz£‰‚ÿSee Also:Dead SectionJR…é…1šÿÿÿÿÿÿÿÿJÿÿÿÿé…9‰Description: Dead section0 Ÿ…†' €€€‚€‚ÿDead[.é…tˆ- (€]€‘€€‚ãîÁAN‰‚ÿThis section handles robot death events. It is automatically called when a robot is killed. Robots are killed either when their energy reaches zero or when the game they are playing in ends. Even if a robot wins a game, its dead section will be called. Since the robot is dead, only a subset of the robot functions listed above have meaning. Most robots use the dead section to perform some type of calculation then call the Store function to save information for future games. When called manually, a dead section behaves like any other section.zA†îˆ9 B€‚€‘€€‚€€€ €€€‚‚ÿNote: Robots are not required to have a Dead section.Ktˆ9‰. ,€:€€‚€‚ã$€£‰‚ÿSee Also:Init Section1îˆj‰1WÿÿÿÿÿÿÿÿKÿÿÿÿj‰‰&9‰‰# €€€‚ÿT#j‰ä‰1UÿÿÿÿÿÿÿÿLÿÿÿÿä‰äËScripting language system variables߉ö‹3 4€¿€€ ‚€€‚€‚€‚ÿScripting Language System VariablesThese variables describe a robot's state during game play. They may be used in any expression in a robot's script. The only restriction is that these variables are read only. Their values are for informational purposes only and are maintained by the game itself. They may not be changed directly by assignment. Remember, capitalization is not important. A variable named "VARIABLE" will be that same as "variable" or "Variable".(䉌$ €€€‚‚ÿ{.ö‹™ŒM#j€\Çš (€€ã2ü €‰€‚ÿ€€€‚ÿÿÿaccelThe robot's current accelerationz-ŒM#j€ZÇš (€€ãY x€‰€‚ÿ€€€‚ÿÿÿbodyaimCurrent angle of robot's body‹>™ŒžM#j€|Çš (€€ãψx€‰€‚ÿ€€€‚ÿÿÿbodyrmnAngular rotation remaining in the robot's body’E0ŽM#j€ŠÇš (€€ãÉá‘ú€‰€‚ÿ€ €€‚ÿÿÿcldbearingBearing to the last object the robot collided withy,ž©ŽM#j€XÇš (€€ã-:FF€‰€‚ÿ€€€‚ÿÿÿcldcookieCookie collision indicatorC0Ž9M#j€†Çš (€€ãwŒW€‰€‚ÿ€€€‚ÿÿÿcldenergyEnergy of the last object the robot collided withu(©Ž®M#j€PÇš (€€ãDŽèu€‰€‚ÿ€€€‚ÿÿÿcldmineMine collision indicator{.95ÀM#j€\Çš (€€ãå“æQ€‰€‚ÿ€ €€‚ÿÿÿcld®5À‰missileMissile collision indicatorw*®¬ÀM#j€TÇš (€€ãy­Ï€‰€‚ÿ€€€‚ÿÿÿcldrobotRobot collision indicator€35À,ÁM#j€fÇš (€€ãzÝ¿€‰€‚ÿ€€€‚ÿÿÿdeathIndicates that another robot has diedB¬À»ÁM#j€„Çš (€€ã¿¢~×€‰€‚ÿ€€€‚ÿÿÿdistrmnDistance remaining in the robot's lateral movement@,ÁHÂM#j€€Çš (€€ãye9Ÿ€‰€‚ÿ€ €€‚ÿÿÿdtcbearingBearing to the last object the robot detectedy,»ÁÁÂM#j€XÇš (€€ã==»y€‰€‚ÿ€€€‚ÿÿÿdtccookieCookie detection indicator‹>HÂLÃM#j€|Çš (€€ã‘z‹€‰€‚ÿ€€€‚ÿÿÿdtcenergyEnergy of the last object the robot detectedu(ÁÂÁÃM#j€PÇš (€€ãÔ–4€‰€‚ÿ€€€‚ÿÿÿdtcmineMine detection indicatorw*LÃ8ÄM#j€TÇš (€€ã©BÖ€‰€‚ÿ€€€‚ÿÿÿdtcrobotRobot detection indicator~1ÁöÄM#j€bÇš (€€ãJ«×€‰€‚ÿ€€€‚ÿÿÿenergyThe robot's remaining energy leveln!8Ä$ÅM#j€BÇš (€€ãÕ§#€€‰€‚ÿ€€€‚ÿÿÿfalseConstant zero valuep#¶Ä”ÅM#j€FÇš (€€ã¦ürú€‰€‚ÿ€€€‚ÿÿÿgamenbrCurrent game number2$ÅÆM#j€dÇš (€€ãs×W€€‰€‚ÿ€€€‚ÿÿÿgamesNumber of games in the current matcht'”ŇÆM#j€NÇš (€€ãCžÕ’€‰€‚ÿ€€€‚ÿÿÿgunaimAngle of the robot's gunt'ÆûÆM#j€NÇš (€€ã‚ôé©€‰€‚ÿ€€€‚ÿÿÿgunheatHeat of the robot's gun‰<‡Æ„ÇM#j€xÇš (€€ã¹Ö’€‰€‚ÿ€€€‚ÿÿÿgunrmnAngular rotation remaining in the robot's gunv)ûÆúÇM#j€RÇš (€€ã°“9Æ€‰€‚ÿ€€€‚ÿÿÿmovingLateral movement indicatorl„ÇfÈM#j€>Çš (€€ã©[±‰€‰€‚ÿ€€€‚ÿÿÿoffConstant zero valueo"úÇÕÈM#j€DÇš (€€ãAö˜P€‰€‚ÿ€€€‚ÿÿÿonConstant non-zero valuet'fÈIÉM#j€NÇš (€€ã9gÓ뀉€‚ÿ€€€‚ÿÿÿradaraimAngle of robot's radar@ÕÈÖÉM#j€€Çš (€€ã¯âÓ뀉€‚ÿ€€€‚ÿÿÿradarrmnAngular rotation remaining in the robot's radar~1IÉTÊM#j€bÇš (€€ãvü€‚ÿ€€€‚ÿÿÿresultGeneric computation results bufferp#ÖÉÄÊM#j€FÇš (€€ãf ý€‰€‚ÿ€€€‚ÿÿÿrotatingRotation indicator…8TÊIËM#j€pÇš (€€ãíØV€‰€‚ÿ€€€‚ÿÿÿscandistDistance to the nearest detected objectq$ÄʺËM#j€HÇš (€€ãˆÏÐ €‰€‚ÿ€€€‚ÿÿÿtrueConstant non-zero value*IËäË' €€P‘€s€‚ÿFºË*Ì1±ÿÿÿÿÿÿÿÿMÿÿÿÿ*Ì•ÎDescription: scandist4 äË^Ì' €€€‚€‚ÿscandistÜ*ÌmÎ3 4€¹€‘€€‚ãäÂ$؉€ €‚ÿEach time the Scan function is called, this variable is filled with the distance to the nearest object. This may be the distance to a wall, another robot, a cookie, or a mine. Energy missiles are ignored. Distance is measured from the robot's boundary to the boundary of the other object or wall. Also, if another robot, cookie, or mine is detected, the appropriate detection variable will be incremented and the section registered to handle the event will be called.(^Ì•Î% €€‘€€‚ÿFmÎÛÎ1ØÿÿÿÿÿÿÿÿNÿÿÿÿÛ΋Description: cldrobot4 •ÎÏ' €€€‚€‚ÿcldrobotHýÛÎcK d€û€‘€€‚ã0¶…¾‰€€€ €€ €€ €€ €‚ÿSet to true when the robot collides with another robot. When the collision occurs, the section registered by RegCldRobot will also be called. Collision indicatorÏc•Îs are mutually exclusive. When cldrobot is true all other collision variables will be false. This variable is reset to false automatically when the robot collision event handle returns. If no section has been registered to handle robot collision events, this value will remain true until a collision with a different object occurs.(Ï‹% €€‘€€‚ÿHcÓ1þÿÿÿÿÿÿÿÿOÿÿÿÿÓ‰Description: cldmissile6‹ ' €€€‚€‚ÿcldmissileX ÓaN j€€‘€€‚㤅¿†‰€€€ €€ €€ €€ €€ ‚ÿSet to true when the robot collides with an energy missile. When the collision occurs, the section registered by RegCldMissile will also be called. Collision indicators are mutually exclusive. When cldmissile is true all other collision variables will be false. This variable is reset to false automatically when the missile collision event handle returns. If no section has been registered to handle missile collision events, this value will remain true until a collision with a different object occurs.( ‰% €€‘€€‚ÿGaÐ1ïÿÿÿÿÿÿÿÿPÿÿÿÿÐxDescription: cldcookie5‰' €€€‚€‚ÿcldcookieKÐPH ^€€‘€€‚ãê°}‰€ €€ €€ €€ €€ ‚ÿSet to true when the robot collides with an energy cookie. When the collision occurs, the section registered by RegCldCookie will also be called. Collision indicators are mutually exclusive. When cldcookie is true all other collision variables will be false. This variable is reset to false automatically when the cookie collision event handle returns. If no section has been registered to handle cookie collision events, this value will remain true until a collision with a different object occurs.(x% €€‘€€‚ÿEP½1éÿÿÿÿÿÿÿÿQÿÿÿÿ½a Description: cldmine3 xð' €€€‚€‚ÿcldmineIû½9 N j€÷€‘€€‚ãéÕ·‰€€€ €€ €€ €€ €€ ‚ÿSet to true when the robot collides with an energy mine. When the collision occurs, the section registered by RegCldMine will also be called. Collision indicators are mutually exclusive. When cldmine is true all other collision variables will be false. This variable is reset to false automatically when the mine collision event handle returns. If no section has been registered to handle mine collision events, this value will remain true until a collision with a different object occurs.(ða % €€‘€€‚ÿG9 ¨ 1YÿÿÿÿÿÿÿÿRÿÿÿÿ¨ º Description: cldenergy5a Ý ' €€€‚€‚ÿcldenergyݯ¨ º . *€_€‘€€‚€€‚‚ÿWhen a robot collides with any other object, this variable is filled with the energy of that object. Robots may collide with energy missiles, other robots, cookies, and mines. All objects, including mines, return positive energy values. There is no such thing as negative energy. The value of cldenergy will not change until another collision occurs. This variable is often used to judge an enemy robot's relative strength.HÝ  1ÉÿÿÿÿÿÿÿÿSÿÿÿÿ zADescription: cldbearing6º 8 ' €€€‚€‚ÿcldbearingÅ  @5 8€!€‘€€‚€€‚‚€€‚ÿWhen a robot collides with any other object, this variable is filled with the bearing to that object. Robots may collide with energy missiles, other robots, cookies, and mines. This variable is a bearing from the robot's current heading to that object, not an absolute heading. Values are in degrees ranging from -180 to 179. A cldbearing of zero is always directly ahead of the robot.For example, if a robot were heading 135 degrees and an energy missile hit the robot's body at an absolute angle of 90 degrees (3 o-clock), the cldbearing variable would be set to -45. In other words, the robot was hit 45 degrees left of its current heading.8  @º n.8 zA@ N€]€‘€€‚€€€ €€ €€€‚‚ÿRemember, cldbearing says nothing about the direction an object was traveling when it collided with the robot, only where it hit the robot. This should be evident since the other object may not have even been moving. The value of cldbearing will not change until another collision occurs.F @ÀA1/ÿÿÿÿÿÿÿÿTÿÿÿÿÀA©DDescription: dtcrobot4 zAôA' €€€‚€‚ÿdtcrobotHÀADE X€‘€‘€€‚ãäÂ$؉ãäÂ$؉ã`'¬Å‰ãäÂ$؉ãäÂ$؉‚ÿThis variable is incremented by one when another robot is detected by a call to Scan. It is set to zero when a call to Scan does not detect another robot. When robot detection occurs, the section registered by RegDtcRobot will be called. This variable is decremented by one automatically when the robot detection event handle returns. For this reason, many robots call Scan at the end of their detection event handlers. If no section has been registered to handle robot detection events, this value will remain non-zero until a call to Scan detects no other robots.(ôA©D% €€‘€€‚ÿGDðD1áÿÿÿÿÿÿÿÿUÿÿÿÿðDŠGDescription: dtccookie5©D%E' €€€‚€‚ÿdtccookie=þðDbG? L€ý€‘€€‚ãäÂ$؉ãäÂ$؉ãú³Š°‰ãäÂ$؉‚ÿThis variable is incremented by one when an energy cookie is detected by a call to Scan. It is set to zero when a call to Scan does not detect a cookie. When an energy cookie is detected, the section registered by RegDtcCookie will also be called. This variable is decremented by one automatically when the cookie detection event handle returns. If no section has been registered to handle cookie detection events, this value will remain non-zero until a call to Scan detects no energy cookies.(%EŠG% €€‘€€‚ÿEbGÏG1ÈÿÿÿÿÿÿÿÿVÿÿÿÿÏGRJDescription: dtcmine3 ŠGH' €€€‚€‚ÿdtcmine(éÏG*J? L€Ó€‘€€‚ãäÂ$؉ãäÂ$؉ãya°u‰ãäÂ$؉‚ÿThis variable is incremented by one when an energy mine is detected by a call to Scan. It is set to zero when a call to Scan does not detect a mine. When an energy mine is detected, the section registered by RegDtcMine will also be called. This variable is decremented by one automatically when the mine detection event handle returns. If no section has been registered to handle mine detection events, this value will remain non-zero until a call to Scan detects no mines.(HRJ% €€‘€€‚ÿG*J™J1aÿÿÿÿÿÿÿÿWÿÿÿÿ™J³MDescription: dtcenergy5RJÎJ' €€€‚€‚ÿdtcenergy¿~™JMA P€ý€‘€€‚ãäÂ$؉€€‚‚ãäÂ$؉€€‚ÿWhen a robot detects any other object, this variable is filled with the energy of that object. Robots may detect other robots, cookies, and mines. All objects, including mines, return positive energy values. There is no such thing as negative energy. If no objects are detected by Scan, dtcenergy is set to zero. This variable is often used to judge an enemy robot's relative strength. Every time Scan is called, dtcenergy will change. It will either be set to the detected object's energy or zero if no object was detected. This is true even when the detected object does not have a detection event handler registered.&ÎJ³M# €€€‚ÿHMûM1ëÿÿÿÿÿÿÿÿXÿÿÿÿûMìDescription: dtcbearing6³M1N' €€€‚€‚ÿdtcbearingÀûMý€A P€ÿ€‘€€‚€€‚‚€€ãäÂ$؉€€‚ÿWhen a robot detects any other object, this variable is filled with the bearing to that object. Robots may detect other robots, cookies, and mines. This variable is a bearing from the robot's current heading to that object, not an absolute heading. Values are in degrees ranging from -180 to 179. A dtcbearing of zero is always directly ahead of the robot.This variable is provided primari1Ný€³Mly for consistence with collision variables. Since objects may only be detected by a radar ping, dtcbearing always matches the bearing of the robot's radar at the time Scan was called. See cldbearing for more details about bearing.É–1NÆ3 4€-€‘€€‚ãäÂ$؉€€‚ÿEvery time Scan is called, dtcbearing will change. It will always reflect the bearing of the robot's radar, even if no objects were detected.&ý€ì# €€€‚ÿCÆ/‚1nÿÿÿÿÿÿÿÿYÿÿÿÿ/‚Z„Description: death1 ì`‚' €€€‚€‚ÿdeathú®/‚Z„L f€]€‘€€‚€€€ €€€€ €€ €€€‚‚ÿWhen another robot in the current game dies, the death variable is set to true. This variable is an exception to the read only rule. Since the game never resets death to false, this must be done by the robot. This variable can be used for custom events, just remember to change it to false at some point to end the event. It is easiest to think of the death variable as an automatically provided user variable.D`‚ž„1ÚÿÿÿÿÿÿÿÿZÿÿÿÿž„4†Description: energy2 Z„Є' €€€‚€‚ÿenergyd0ž„4†4 6€a€‘€€‚ãd ¥‰€€‚‚ÿThe robot's remaining energy level. This number always starts at 100 and is changed by various events during game play. When this value reaches zero, the robot is out of the game. This value will always match that shown on the game's playing field. Please see Damage Summary for more detail.CЄw†1¨ÿÿÿÿÿÿÿÿ[ÿÿÿÿw†܇Description: accel1 4†¨†' €€€‚€‚ÿaccel4w†܇. *€ €‘€€‚ã!†2¥‰‚‚ÿCurrent setting of the robot's acceleration. While moving laterally, robots are constantly accelerating. Therefore, this value approximately represents a robot's movement speed. This value is changed by calling the SetAccel function and defaults to 3.D¨† ˆ1…ÿÿÿÿÿÿÿÿ\ÿÿÿÿ ˆa‰Description: moving2 ܇Rˆ' €€€‚€‚ÿmovingœj ˆîˆ2 4€Ô€‘€€‚€ €€ €‚ÿTrue while the robot is moving laterally and false while the robot is stationary or rotating only.-Rˆ‰) "€€‘€‚E€‚‚ÿFîˆa‰. ,€0€€€‚ã¿¢~׉‚‚ÿSee Also:distrmnF‰§‰1Ýÿÿÿÿÿÿÿÿ]ÿÿÿÿ§‰>‹Description: rotating4 a‰Û‰' €€€‚€‚ÿrotating¨v§‰ƒŠ2 4€ì€‘€€‚€ €€ €‚ÿTrue while any part of the robot is rotating and false while the robot is stationary or moving laterally only.-Û‰°Š) "€€‘€‚E€‚‚ÿf-ƒŠ‹9 B€Z€€‚ãψx€‰ã¹Ö’‰ã¯âÓ뉂ÿSee Also:bodyrmn, gunrmn, radarrmn(°Š>‹% €€‘€€‚ÿE‹ƒ‹1îÿÿÿÿÿÿÿÿ^ÿÿÿÿƒ‹,Description: gunheat3 >‹¶‹' €€€‚€‚ÿgunheatKƒ‹9 @€%€‘€€‚ã•+؉€€ã•+؉‚ÿCurrent heat of the robot's gun. Every time a robot calls Fire its gun heats up. As time passes, the gun cools down. A robot may only fire another energy missile when gunheat reaches zero. Most robots simply ignore this variable and call Fire as often as possible.+¶‹,( €€‘€‚E€‚ÿEq1Ñÿÿÿÿÿÿÿÿ_ÿÿÿÿq ÀDescription: distrmn3 ,¤' €€€‚€‚ÿdistrmnÜ©q€3 4€S€‘€€‚ã @%؉ãZ쑉‚ÿWhen a robot is moving laterally, this variable contains the distance remaining until the movement is complete. This information is useful when a robot needs to store or test the amount of lateral movement remaining. If the robot is not moving, this variable will be zero. Do not confuse this variable with the internal "continue buffer" described in the Stop and Continue functions, they are similar but independent.-¤­) "€€‘€‚E€‚‚ÿP€ À3 6€:€€‚ã‚ç‡J€‰ã؉‚ÿSee Also:Ahead, Back­ À,E­QÀ1ÿÿÿÿÿÿÿÿ`ÿÿÿÿQÀþÂDescription: bodyrmn3 À„À' €€€‚€‚ÿbodyrmnõÂQÀyÂ3 4€…€‘€€‚ã @%؉ãZ쑉‚ÿWhen a robot's body is rotating, this variable contains the amount of rotation remaining until the rotation is complete. This information is useful when a robot needs to store or test the amount of body rotation currently remaining. If the robot's body is not rotating, this variable will be zero. Do not confuse this variable with the internal "continue buffer" described in the Stop and Continue functions, they are similar but independent.-„À¦Â) "€€‘€‚E€‚‚ÿX%yÂþÂ3 6€J€€‚ã Å­ñ€‰ã+üm™‰‚ÿSee Also:BodyLeft, BodyRightD¦ÂBÃ1ÃÿÿÿÿÿÿÿÿaÿÿÿÿBÃÁÅDescription: gunrmn2 þÂtÃ' €€€‚€‚ÿgunrmnöÁBÃjÅ5 8€ƒ€‘€€‚ã @%؉ãZ쑉‚‚‚ÿWhen a robot's gun is rotating, this variable contains the amount of rotation remaining until the rotation is complete. This information is useful when a robot needs to store or test the amount of gun rotation currently remaining. If the robot's gun is not rotating, this variable will be zero. Do not confuse this variable with the internal "continue buffer" described in the Stop and Continue functions, they are similar but independent.W$tÃÁÅ3 6€H€€‚ã€H˜€‰ãK ÑŒ‰‚ÿSee Also:GunLeft, GunRight,FjÅÆ1ÐÿÿÿÿÿÿÿÿbÿÿÿÿÆ‘ÈDescription: radarrmn4 ÁÅ;Æ' €€€‚€‚ÿradarrmnüÇÆ7È5 8€€‘€€‚ã @%؉ãZ쑉‚‚‚ÿWhen a robot's radar is rotating, this variable contains the amount of rotation remaining until the rotation is complete. This information is useful when a robot needs to store or test the amount of radar rotation currently remaining. If the robot's radar is not rotating, this variable will be zero. Do not confuse this variable with the internal "continue buffer" described in the Stop and Continue functions, they are similar but independent.Z';Æ‘È3 6€N€€‚ãºvn°€‰ã ÑË£‰‚ÿSee Also:RadarLeft, RadarRightE7ÈÖÈ1ûÿÿÿÿÿÿÿÿcÿÿÿÿÖÈŒÊDescription: bodyaim3 ‘È É' €€€‚€‚ÿbodyaimþÑÖÈÊ- (€£€‘€€‚€€‚ÿCurrent angle of the robot's body. Values are in degrees ranging from 0 - 359. A bodyaim of zero is towards the top of the arena, or map north. This value is changed by the various rotation functions.- É4Ê) "€€‘€‚E€‚‚ÿX%ÊŒÊ3 6€J€€‚ã Å­ñ€‰ã+üm™‰‚ÿSee Also:BodyLeft, BodyRightF4ÊÒÊ1ØÿÿÿÿÿÿÿÿdÿÿÿÿÒÊdÌDescription: radaraim4 ŒÊË' €€€‚€‚ÿradaraimÕÒÊ Ì/ ,€«€‘€€‚€€‚‚‚ÿCurrent angle of the robot's radar. Values are in degrees ranging from 0 - 359. A radaraim of zero is towards the top of the arena, or map north. This value is changed by the various rotation functions.Z'ËdÌ3 6€N€€‚ãºvn°€‰ã ÑË£‰‚ÿSee Also:RadarLeft, RadarRightD ̨Ì1Íÿÿÿÿÿÿÿÿeÿÿÿÿ¨Ì1ÎDescription: gunaim2 dÌÚÌ' €€€‚€‚ÿgunaimѨÌÚÍ/ ,€£€‘€€‚€€‚‚‚ÿCurrent angle of the robot's gun. Values are in degrees ranging from 0 - 359. A gunaim of zero is towards the top of the arena, or map north. This value is changed by the various rotation functions.W$ÚÌ1Î3 6€H€€‚ã€H˜€‰ãK ÑŒ‰‚ÿSee Also:GunLeft, GunRight,DÚÍuÎ1¥ÿÿÿÿÿÿÿÿfÿÿÿÿuÎ’Description: result2 1ΧÎ' €€€‚€‚ÿresultß±uÎ’. *€c€‘€€‚ã\žR^‰‚‚ÿThis is a generic results buffer. Since robot functions do not return values, any function that generates a number fills this variable with its results. This value may therefore change often. It should only be used immediately after calling a function that fills it. If the value is needed at a la§Î’1Îter time, it should be assigned to a user defined variable. All functions that use this variable mention it in their description.E§Î×1ÿÿÿÿÿÿÿÿgÿÿÿÿ×¥Description: gamenbr3 ’ ' €€€‚€‚ÿgamenbrY×cA P€1€‘€€‚€€€€€€€€‚‚‚ÿCurrent game number. Robot Battle matches have from 1 to 65,500 games. This variable is set to 1 for the first game of a match and incremented by one for each successive game. The gamenbr variable will be 2 for the second game of a match, 3 for the third, and so on.B ¥- *€*€€‚ãs×W€€‰‚ÿSee Also:gamesCcè1ÊÿÿÿÿÿÿÿÿhÿÿÿÿèoDescription: games1 ¥' €€€‚€‚ÿgameséè+) €Ó€‘€€‚‚‚‚ÿNumber of games in the current match. This variable does not change from game to game, only from match to match. It always contains the total number of planned games in a match. Robot Battle matches have from 1 to 65,500 games.Do- *€.€€‚ã¦ürú€‰‚ÿSee Also:gamenbr@+¯1Üÿÿÿÿÿÿÿÿiÿÿÿÿ¯KDescription: on.oÝ' €€€‚€‚ÿonH"¯%& €D€‘€€‚‚ÿEvaluates to a non-zero value.&ÝK# €€€‚ÿB%1¼ÿÿÿÿÿÿÿÿjÿÿÿÿDescription: true0 K½' €€€‚€‚ÿtrueJ#' €F€‘€€‚‚‚ÿEvaluates to a non-zero value.A½H1ÚÿÿÿÿÿÿÿÿkÿÿÿÿHáDescription: off/w' €€€‚€‚ÿoffDH»& €<€‘€€‚‚ÿEvaluates to a zero value.&wá# €€€‚ÿC»$1ºÿÿÿÿÿÿÿÿlÿÿÿÿ$›Description: false1 áU' €€€‚€‚ÿfalseF$›' €>€‘€€‚‚‚ÿEvaluates to a zero value.1UÌ1WÿÿÿÿÿÿÿÿmÿÿÿÿÌò&›ò# €€€‚ÿLÌ>1$ ÿÿÿÿÿÿÿÿnÿÿÿÿ>óADescription of robot events6ìòt J b€Ù€€ ‚€€‚€‚€ €‚‚ãÛ œ–‰€ €ã`u¾‰‚ÿDescription of Robot EventsThe most important concept to robot design is event driven behavior. Event driven means that robots behave by responding to things (events) that happen to them. Designing an event driven robot involves deciding which events a robot should respond to and how it will respond. Responding to an event is commonly referred to as handling an event.A robot is divided into a number of sections. Each section has a name and instructions associated with that name. Sections are grouped by curly brackets {}. See the sample robot, to see actual sections. Sections are used to handle events. Events are associated with sections by various registration functions described in Event Registration Functions.§n>9 @€Ý€€‚€€ €‚€‚€ €‚ÿThe sections used to handle events define how a robot will behave. Events may be re-registered to new handler sections at any time. This allows for extremely flexible robots. At any time during a game, a robot may re-register its event handlers, completely changing its behavior. Once registered, events may also be individually turned on or off.Events also have a priority associated with them. Since a robot can only do one thing a time, it handles higher priority events first. When an event occurs, and no higher priority events are occurring, the section registered to handle that event is called. Gt n@+ $€9€€‚ã·@‰‚ÿWhen a handler section is called, it always executes to either the last line of code in that section or until a Return statement is hit. This does not mean execution will always go directly from the first to the last line of a handler section, however. Handlers may always be preempted by higher priority events. If an event with a higher priority than the current event happens, its event handler will be called immediately. The lowern@ò priority handler will not continue execution until the higher priority event handler completes.…#óAb ’€G€€‚È#JI("winrob.hlp","HIDD_ROBOT_INFO")‰‚‚‚€€‚ã`u¾‰ãö6Ø扂ÿThe sample robot called event.prg' should be very helpful. Look at its instructions, then run it in a game. Look at its output in the Robot Information Dialog to verify that all events have occurred as expected.See Also:Event Registration Functions, Event Control FunctionsMn@@B1Wÿÿÿÿÿÿÿÿoÿÿÿÿ@BJIEvent registration functions oóAàB1 2€Þ€€ ‚€€‚€‚‚‚‚ÿEvent Registration FunctionsThe following functions register and re-register event handler sections.Š=@BjCM#j€zÇš (€€ã…ܵ选€‚ÿ€€€‚ÿÿÿRegAscanRegisters an event handler for auto scanningžQàBDM#j€¢Çš (€€ãê°}€‰€‚ÿ€$€€‚ÿÿÿRegCldCookieRegisters an event handler for collision with energy cookiesšMjC¢DM#j€šÇš (€€ãéÕ·€‰€‚ÿ€ €€‚ÿÿÿRegCldMineRegisters an event handler for collision with energy mines SDBEM#j€¦Çš (€€ã¤…¿†€‰€‚ÿ€&€€‚ÿÿÿRegCldMissileRegisters an event handler for collision with energy missiles›N¢DÝEM#j€œÇš (€€ã0¶…¾€‰€‚ÿ€"€€‚ÿÿÿRegCldRobotRegisters an event handler for collision with other robots•HBErFM#j€Çš (€€ã€;€‰€‚ÿ€€€‚ÿÿÿRegCoreRegisters an event handler for the robot's core behavior“FÝEGM#j€ŒÇš (€€ãâ©ŽS€‰€‚ÿ€€€‚ÿÿÿRegCustomRegisters an event handler for custom defined eventsœOrF¡GM#j€žÇš (€€ãú³Š°€‰€‚ÿ€$€€‚ÿÿÿRegDtcCookieRegisters an event handler for detection of energy cookies˜KG9HM#j€–Çš (€€ãya°u€‰€‚ÿ€ €€‚ÿÿÿRegDtcMineRegisters an event handler for detection of energy mines™L¡GÒHM#j€˜Çš (€€ã`'¬Å€‰€‚ÿ€"€€‚ÿÿÿRegDtcRobotRegisters an event handler for detection of other robotsx@9HJI8 @€€€€‚‚€€‚ãÅîG»‰ãö6Ø扂ÿSee Also:Events Description, Event Control FunctionsHÒH’I1Âÿÿÿÿÿÿÿÿpÿÿÿÿ’I€Event control functions´‚JIFJ2 2€€€ ‚€€‚€‚‚‚‚ÿEvents Control FunctionsThe following functions turn on or off event handling without effecting the registered handler.…8’IËJM#j€pÇš (€€ãlR¡c€‰€‚ÿ€"€€‚ÿÿÿAscanEventsTurns on or off auto scanning eventsŒ?FJWKM#j€~Çš (€€ãùÞ€‚ÿ€*€€‚ÿÿÿCldCookieEventsTurns on or off cookie collision eventsˆ;ËJßKM#j€vÇš (€€ã@Ù¯ €‰€‚ÿ€&€€‚ÿÿÿCldMineEventsTurns on or off mine collision eventsŽAWKmLM#j€‚Çš (€€ãŸ, !=Greater than or equal to>=Less than or equal to<=Greater than>Less than<Logical ANDand, &&Logical ORor, ||Also see math operators. For a detail description of operators in general, see language semantic.1‰“Š1Wÿÿÿÿÿÿÿÿtÿÿÿÿ“Š¹Š&bŠ¹Š# €€€‚ÿL“Š‹1;ÿÿÿÿÿÿÿÿuÿÿÿÿ‹üÉList of tips and techniquesI¹ŠN‹. ,€6€€ ‚€€‚€‚ÿTips and TechniquesÛ‹OŒ& €·€P¶L€‚ÿ- Organize robots into small sections (subroutines) the perform specific tasks. Small sections enhance robot clarity, are often reusable within a single robot, and make great cut and paste candidates for new robots.&N‹uŒ# €€€‚ÿšuOŒ% €ê€P¶L€‚ÿ- Check out the sample robots (fire.prg in particular) for some useful subroutines that can be copied immediately.&uŒ5# €€€‚ÿ¤yÙ+ &€ò€P¶L€ã—XR ‰‚ÿ- Use the Print statements to help debugging. It can display both strings surrounded by quotations and expressions.&5ÿ# €€€‚ÿ&Ù%& €€P¶L€‚ÿ- Write special purpose debugging robots to help figure out how normal robots will behave. Debugging robots behave in a predictable manner (such as driving to the center of the arena) helping to isolate a particular feature or problem in another robot.&ÿK# €€€‚ÿËŸ%"À, &€?€P¶L€ãÕ[AN‰‚ÿ- When using a debugging robot, use the Stall function in the normal robot. This will give the debugging robot time to start it predeK"À¹Štermined activities.&KHÀ# €€€‚ÿ ×"ÀQÁ2 2€¯€P¶L€€€€€‚ÿ- Use comments liberally in robot scripts. Comments act as helpful reminders when examining robot scripts. Any text after a # or a // is considered a comment. Comments are completely ignored by Robot Battle.&HÀwÁ# €€€‚ÿæ¢QÁ]ÂD V€E€P¶L€ã˜º}¬‰ã˜º}¬‰ãaV¨‰ãØ ؉ãÙÓ_K‰‚ÿ- Use indentation with If statements. Indenting lines between If, Elseif, Else, and Endif statements greatly increases a robot script's readability.&wÁƒÂ# €€€‚ÿV]ÂÙÃD V€%€P¶L€ãvüï‰ãÉá‘ú‰ãwŒW‰ãye9Ÿ‰ã‘z‹‰‚ÿ- Be careful when using variables that are changed often during game play. These include result, cldbearing, cldenergy, dtcbearing, and dtcenergy. If needed at any time other than immediately after they are filled, assign their values to user defined variables.&ƒÂÿÃ# €€€‚ÿÙ³ÙÃØÄ& €g€P¶L€‚ÿ- The arena measures 400 unit in each direction, robots measure 33 units in each direction, cookies and mines have diameters of 9 units, and energy missiles are 3 units square.&ÿÃþÄ# €€€‚ÿEØÄCÆ2 2€'€P¶L€ã±N‰€€‚ÿ- As with most computer languages, floating point (real number) math is not perfectly accurate. Particularly after trigonometric functions, testing for equality without calling Round will not always work. For example, acos( cos(20) ) may yield 19.9999 instead of 20.&þÄiÆ# €€€‚ÿ½…CÆ&È8 >€ €P¶L€€€€€€€‚ÿ- The amount of time it takes for a game with no activity to be automatically ended may be changed. The default value is 10,000 turns. To make this value smaller or larger, open the winrob.ini file in an ASCII text editor. Change the value of the entry under [WinRob] called auto_end_turns. If auto_end_turns does not exist, add it under [WinRob] with the desired time-out value.&iÆLÈ# €€€‚ÿ°…&ÈüÉ+ $€ €P¶L€€€ÿ- Large robots that respond to many events can become quite complicated. Complexities often arise from the need to remember where a robot is and what it is doing before and after each event. Designing robots as state machines can simplify this problem. A robot's behavior can be modeled as transitions from one state to the next, allowing easy state recovery during and after an event.1LÈ-Ê1Yÿÿÿÿÿÿÿÿvÿÿÿÿ-ÊUÊ(üÉUÊ% €€P¶L€‚ÿ1-Êÿÿÿÿ1ÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿ«¢â°HelvTms RmnMS Sans SerifHelveticaCourier NewSymbolCourierTimes New RomanArialMS SerifTimesSystemCourier 20 PitchCourier 5 PitchCourier 10 PitchCourier Bold 20 PitCourier Bold 5 PitcCourier Bold 10 PitCourier Italic 20 PCourier Italic 5 PiCourier Italic 10 PCourier Italic BoldLetter GothicLetter Gothic ItaliLetter Gothic 23 PiLetter Gothic 6 PitLetter Gothic 12 PiLetter Gothic BoldCourier 16.67 PitchCG TimesCG Times BoldCG Times ItalicCG Times Italic BolLucida ConsoleWingdingsBook AntiquaMonotype SortsArial NarrowBookman Old StyleCentury GothicMT ExtraMS LineDrawAlgerianArial Rounded MT BoBraggadocioBritannic BoldBrush Script MTColonna MTDesdemonaFootlight MT LightImpactKino MTWide LatinMatura MT Script CaPlaybillArial SuperRomanScriptModernMS DialogHelvetica-NarrowLetter Gothic 24 PiAntique OliveMonotype CorsivaCentury SchoolbookAardvarkAdelaideAlefbetAlgiersAltoAmherstAmyProseAntiqueArabiaArchitectureAvalonBahamasHeavyBahamasLightBahamasBallroomTangoBanff BangkokBardBassoonBedrockBeehiveBigTopBodnoffBosanovaBravoEngravedBravoBriquetBriskBrochureBrooklynNewBrunswickBuskerCampaignCancunCarinoCarletonCasablancaAntiqueCasablancaCasperOpenFaceCastanetDawnCastleCenturionOldChalkCharlesworthCommonBulletsCopperPotCosmicTwoCosmicCottageCrescentCupertinoCzarDauphinDixielandEklekticEnvisionErieContourErieErieBlackErieLightEuromodeExpoFlorenceFranceFrankfurtGothicHeavFrankfurtGothicFrankHighlightFreeportFrankensteinFujiyama2FujiyamaFujiyamaBlackFujiyamaExtraBoldFujiyamaLightGalleriaGatineauGeographicSymbolsGilbertUltraBoldGlacierGoldenOldStyleGoldMineGriffonShadowGriffonHarpoonHeidelbergHollowHomewardBoundIndianaIndianaSolidIrelandJupiterKabanaBoldKabanaBookKastlerKeypunchKeystrokeKidsKoalaKorinthiaLincolnLinusLiquidCrystalLithographLithographLightMemorandumMerlinMonospacedMotorMusicalSymbolsMysticalNebraskaNewOrderNewOrderEngravedNuanceNewfoundlandOttawaPalettePalmSpringsParadiseParagonPenguinLightPenguinPepperPipelinePlaywrightPossePowerLinePresidentQuantumRenfrewScottScribeShogunSouthernStampSurrealSwitzerlandSwitzerlandBlackSwitzerlandCondBlacSwitzerlandCondenseSwitzerlandCondLighSwitzerlandInseratSwitzerlandLightSwitzerlandNarrowGreekMathSymbolsTechnicalThunderBayTimpaniTimpaniHeavyTorontoTrafalgarUmbrellaUnicornUptownUSABlackUSALightVikingVivienneVogueZurichCalligraphicSmall Fontsÿÿÿ€€ÿÿ  OŒ ™AOáRâ… €:‚€ ú  ‘= 3 %ƒ €<† · šªž“X‰< ™  Š †ƒ :†‡ •… ·. ±„·ˆœ†(Q ð PŠÄ €š 9 ƒ)†Þç„€Ûƒº…Þñ‡ ä u„«†÷ è„9 PŠ_PÑ  ¬œ › C PŠ Ñ  rè† áˆçƒ '€‘»7‰…¨´ˆÇ€Æ„Ò ñˆ ðð # „ - ” žP„ Ö€PŠš Ô PŠ% >PŠ'«†"gÔ   o 4€€Ô 5„/&;)i24 675E88E44ÿÿx§xÿÿÿÿ=AbsAbsolute valueaccel AheadAscanEventsAssignmentBackBlocking bodyaim$BodyLeft(BodyRight,bodyrmn0cldbearing4cldcookie8CldCookieEvents<cldenergy@cldmineDCldMineEventsHcldmissileLCldMissileEventsPcldrobotTCldRobotEventsXCommands\Contents`ContinuedCoreEventshCreating RobotslCustomEventspDead Sectiontdeathxdistrmn|dtcbearing€dtccookie„DtcCookieEventsˆdtcenergyŒdtcmineDtcMineEvents”dtcrobot˜DtcRobotEventsœElse Elseif¤Endif¨energy¬Events°Expressions´false¸Fire¼FunctionsÀgamenbrÄgamesÈGetHitsOtherÌGetHitsSelfÐGetHitStrÔGetOthersØGetRandomÜGetShotsàGetTurnsäGosubègunaimìgunheatðGunLeftôGunRightøgunrmnüIfInit SectionLanguage SemanticsLockAll LockGunLogicMathMaxMin moving$Name(off,on0Operators4Precision@PrintDradaraimLRadarLeftPRadarRightTradarrmnXRegAscan\RegCldCookie`RegCldMinedRegCldMissilehRegCldRobotlRegCorepRegCustomtRegDtcCookiexRegDtcMine|RegDtcRobot€result„ReturnˆRobot EventsŒrotating˜RoundœSample Robot Scan¤scandist¨Scripting Language¬SemanticsÄSetAccelÈSpecial SectionsÌStallÐStatementsÔStopØStoreÜSyncAllàSyncGunäSystem VariablesèTips and TechniquesìTrigonometric FunctionsðtrueôTruncateøUser VariablesüVariablesWaitForÿÿÿÿªŽ•-#gunh'@T'@ÿÿ=Êïer}}{\f2\fs20 \par }{\b\f2\fs20 false \par }\pard \li720 {\f2\fs20 \par Evaluates to a zero va/&;)Lzÿÿx MÿÿContents“Overview of robot creationÖScripting language overview Commented Sample Robot€Scripting language user defined variablesPŠScripting language semanticsšScripting language functions«ODescription: =¨Description: RegCore%€Description: RegAscan…Description: RegCldRobot7‰Description: RegCldMissile‘Description: RegCldCookie»Description: RegCldMineÒ Description: RegDtcRobotÇ€Description: RegDtcCookieÆ„Description: RegDtcMine´ˆDescription: RegCustomžDescription: CoreEventsADescription: AscanEvents· Description: CldRobotEvents@ Description: CldMissileEvents‘Description: CldCookieEvents%ƒDescription: CldMineEvents±„Description: DtcRobotEvents:†Description: DtcCookieEvents·Description: DtcMineEventsX‰Description: CustomEvents%Description: SetAccel™Description: AheadáDescription: Back'Description: StopªDescription: Continue€Description: BodyLeft:‚Description: BodyRightu„Description: GunLeft«†Description: GunRightáˆDescription: RadarLeftDescription: RadarRight_Description: LockAllPDescription: LockGun"Description: SyncAllgDescription: SyncGunžDescription: Scan€Description: Fireè„Description: Ifœ†Description: Elseif·ˆDescription: Else(Description: EndifÞDescription: GosubðDescription: Return”Description: Round4Description: TruncateDescription: AbsDescription: Max¬Description: Min€Description: GetRandomÞDescription: GetHitStrƒDescription: GetHitsOtherÛƒDescription: GetShotsç„Description: GetOthersº…Description: GetTurns)†Description: GetHitsSelf«†Description: StoreDescription: Name Description: Print stringrDescription: Print variable>Description: StallRDescription: Blocking5„Description: WaitForœˆ Scripting language special sections9 Description: Init section< Description: Dead sectionÑ Ô Scripting language system variablesÿ+ÿÿP„ Description: scandist<† Description: cldrobot Description: cldmissile Description: cldcookie3 Description: cldmine= Description: cldenergyú Description: cldbearing. Description: dtcrobot†ƒ Description: dtccookie•… Description: dtcmine‡ Description: dtcenergyŠ Description: dtcbearing™ Description: deathQ Description: energyŒ Description: accelœ Description: moving- Description: rotatingä Description: gunheat Description: distrmn€ Description: bodyrmn÷ Description: gunrmnçƒ Description: radarrmnâ… Description: bodyaimè† Description: radaraimñ‡ Description: gunaimñˆ Description: result Description: gamenbr9 Description: gamesC Description: ono Description: true› Description: offÄ Description: falseí ð Description of robot events# Event registration functions„ Event control functions  Description of math operatorsÑ Description of logic operators  List of tips and techniquesp‡ s‡ ption: GunLeft«†Description: GunRightáˆDescription: RadarLeftDescription: RadarRight_Description: LockAllPDescription: LockGun"Description: SyncAllgDescription: SyncGunžDescription: Scan€Description: Fireè„Description: Ifœ†Description: Elseif·ˆDescription: Else(Description: EndifÞDescription: GosubðDescription: Return”Description: Round4Description: TruncateDescription: AbsDescription: Max¬Description: Min€Description: GetRandomÞDescription: GetHitStrƒDescription: GetHitsOtherÛƒDescription: GetShotsç„Description: GetOthersº…Description: GetTurns)†Description: GetHitsSelf«†Description: StoreDescription: Name Description: Print stringrDescription: Print variable>Description: StallRDescription: Blocking5„Description: WaitForœˆ Scripting language special sections9 Description: Init section< Description: Dead sectionÑ Ô Scripting language system variablesôP„  1 command_blocking hlp\funcs.rtf 65 9E33AD954 cmd_blocking 1 cmd_blocking hlp\funcs.rtf 65 9E33AD954 cmd_blocking 1 cmd_blocking hlp\funcs.rtf 65 A24E55713 command_blocking 0 command_blocking hlp\funcs.rtf 66 9E33AD954 cmd_blocking 1 cmd_blocking hlp\funcs.rtf 66 774604C51 cmd_waitfor 1 cmd_waitfor hlp\funcs.rtf 66 34A87E782 cmd_ahead 1 cmd_ahead hlp\funcs.rtf 66 1D8101502 cmd_back 1 cmd_back hlp\funcs.rtf 66 9F1ADC520 cmd_bodyleft 1 cmd_bodyleft hlp\funcs.rtf 66 ;996DFC2B cmd_bodyright 1 cmd_bodyright hlp\funcs.rtf 66 798154880 cmd_gunleft 1 cmd_gunleft hlp\funcs.rtf 66 98CD10D4B cmd_gunright 1 cmd_gunright hlp\funcs.rtf 66 ;B06E76BA cmd_radarleft 1 cmd_radarleft hlp\funcs.rtf 66 =A3CBD109 cmd_radarright 1 cmd_radarright hlp\funcs.rtf 66 7647B1543 cmd_syncall 1 cmd_syncall hlp\funcs.rtf 66 7647B421E cmd_syncgun 1 cmd_syncgun hlp\funcs.rtf 66 991EC1E5A cmd_continue 1 cmd_continue hlp\funcs.rtf 66 AC8CC182C script_sections 0 script_sections hlp\sections.rtf 1 3A3809D24 sec_init 1 sec_init hlp\sections.rtf 1 3A37A49DC sec_dead 1 sec_dead hlp\sections.rtf 1 3A3809D24 sec_init 0 sec_init hlp\sections.rtf 2 54BC9CE25 cmd_gosub 1 cmd_gosub hlp\sections.rtf 2 3A37A49DC sec_dead 1 sec_dead hlp\sections.rtf 2 3A37A49DC sec_dead 0 sec_dead hlp\sections.rtf 3 54E41C1EE cmd_store 1 cmd_store hlp\sections.rtf 3 3A3809D24 sec_init 1 sec_init hlp\sections.rtf 3 ?62697571 script_variables 0 script_variables hlp\vars.rtf 1 17F20FC32 var_accel 1 var_accel hlp\vars.rtf 1 517780D59 var_bodyaim 1 var_bodyaim hlp\vars.rtf 1 5177888CF var_bodyrmn 1 var_bodyrmn hlp\vars.rtf 1 ;FA91E1C9 var_cldbearing 1 var_cldbearing hlp\vars.rtf 1 946463A2D var_cldcookie 1 var_cldcookie hlp\vars.rtf 1 9578C7781 var_cldenergy 1 var_cldenergy hlp\vars.rtf 1 575E88E44 var_cldmine 1 var_cldmine hlp\vars.rtf 1 ;51E693E5 var_cldmissile 1 var_cldmissile hlp\vars.rtf 1 7CF1BAD79 var_cldrobot 1 var_cldrobot hlp\vars.rtf 1 17FBFDD7A var_death 1 var_death hlp\vars.rtf 1 5D77EA2/&;)L4ÿÿrhrÿÿÿÿÕ§#€Ä s×W€9 ›šQ„· Ù©_†ƒ¤…¿†7‰âî"‡O©[±‰› Ò‰Þ‘z‹‡ K ÑŒ«†Z쑪CžÕ’ñ‡ ¹Ö’÷ Û œ– K‡~—±„€H˜u„+üm™:‚ye9ŸŠ ÜIz£< $€£9 ÑË£!†2¥%aV¨œ†‚ôé©ä ŸîÁAN«†Aö˜PC å“æQ â©ŽS´ˆwŒW= ­§¢XX‰quibÔ lR¡cAC{d"B{dgGNn)†P—Wr·QL`t5„ya°uÆ„DŽèu3 ==»y†ƒ ê°}‘2ü Œ zÝ¿™ J«×Q b02a3048602af049702bf04b002c504b402dc04c502dd04c602f204c602fc04c6020905bd021905b1022005a6023205870236057b0244054a024d0515025005ff015405a8014d053a014b0524014005ea003605c4003105b50020058700200586000b05650009056300f2045300de044400de044400040000002d010200040000002d010300040000002d010000040000002d0101003600000024031900f605effe0106f0fe1806f0fe1e06f0fe1e0630002f063200450634005306350053069800450697002f0694001e0693001e0674031806730301066c03f6056903f6058e00eb058c00d4058900c1058600c1052600d4052900eb052b00f6052c00f605effe040000002d010200040000002d010300040000002d010000040000002d0101004400000038050200180007009e06d7fea006d8feab06dcfeb506effeb606f0febd060cffc0062fffbd0650ffb6066dffb5066dffab0681ffa00687ff9e0688ff910681ff890671ff86066dff7f0651ff7c0630ff7f060eff8606f1fe8906edfe9106ddfe9e06d7fe9e06d7fe8a063700a0063900b2063900b2069803a00694038a068f038a063700040000002d010200040000002d010300040000002d010000040000002d0101006e0000002403350005073b0011073b0027073b002d073b002d07d9003e07a400450789005407690060074e006b0741007e0729008207280098071f009d071c00af072200bd072700c5073100d9074c00dc075300ef078800f2079400ff07d8000908490109084a010c08eMZÿÿÿ¸@€º´ Í!¸LÍ!This program requires Microsoft Windows. $NE<ÄŒƒT [@`Œ­³Ð4F6!@ !:˜0P˜0h† P† B,q ,€z_0 Çç€Ù0 €CTL3DWEPè___EXPORTEDSTUB KERNELGDIUSERÿÍ?ÂÍ?nÍ?2Í?~Í?âÍ?Í?†Í?b#Í?Š%Í?Æ%Í?¨)Í?ÂÍ?úÍ?„0ÿÍ?ªÍ?< Í?tÍ?œÍ? Í?ìÿÿÿÕ3d control dllCOMBOWNDPROC3D STATICWNDPROC3D CTL3DENABLEDCTL3DSUBCLASSDLGEXCTL3DUNREGISTER CTL3DDLGFRAMEPAINT EDITWNDPROC3DCTL3DCOLORCHANGE CTL3DREGISTER CTL3DSUBCLASSDLGCTL3DSUBCLASSCTL LISTWNDPROC3D CTL3DCTLCOLOR CTL3DGETVER BTNWNDPROC3D CTL3DDLGPROCCTL3DCTLCOLOREX CTL3DSETSTYLECTL3DAUTOSUBCLASSŒØEU‹ìŽØìVW¸é_^fþ]MÊButton†ÿÿ6ListBoxŠ%&¤Editb#BŽComboBoxÆ%^ºStatic¨)zŒ0ComboLBoxŠ%–¤U‹ììVWÿv¡dºRPšÿÿº¹èÔ*‰Fú‰Vüÿv¡fºRPšÝº‹Nú‹^ü Á Óé_^‹å]ÃU‹ììVWÿvè£ÿƒÄ‰Fú‰Vüƒ~útésƒ~ütéjƒ~té¡‹‰Fú‰Vüé¸÷n»œØ‹G‹W‰Fú‰Vüÿv¡fºRP‹Fú‹VüPšÿÿÿv¡dºRP‹Fú‹Vü¹è,*%ÿÿƒâPšƒ‹Fú‹Vüé_^‹å]ÃU‹ììVWÿvèÿþƒÄ=téƒúté…ÿv¸ðP¸P¸ºRPšÿÿÿvèÎþƒÄ=té\ƒútéTÿv¸üÿP‹F‹VRPšÿÿ‰Fú‰Vüÿv¡f