{"id":511,"date":"2022-05-12T11:31:01","date_gmt":"2022-05-12T16:31:01","guid":{"rendered":"https:\/\/chronocrash.com\/obor\/wiki\/?p=511"},"modified":"2024-01-09T14:07:10","modified_gmt":"2024-01-09T19:07:10","slug":"cheats","status":"publish","type":"post","link":"https:\/\/chronocrash.com\/obor\/wiki\/cheats\/","title":{"rendered":"Cheats"},"content":{"rendered":"\n<p>OpenBOR includes a set of built in cheats to aid players or allow creators to quickly breeze through their games for testing. The following cheats are available:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implacable March &#8211; Players can walk freely through levels ignoring groups and waits. Note the spawns and groups still activate, so things could get crowded very quickly!<\/li>\n\n\n\n<li>Infinite Credits &#8211; Players never run out of credits when starting or continuing a game.<\/li>\n\n\n\n<li>Infinite Energy &#8211; Players constantly auto recharge any and all spent energy (MP).<\/li>\n\n\n\n<li>Infinite Health &#8211; Players do not take damage from enemy attacks.<\/li>\n\n\n\n<li>Infinite Lives &#8211; Players do not run out of lives when defeated.<\/li>\n\n\n\n<li>Multihit Glitch &#8211; Disables hit detection tracking, meaning an attack box applies its effects on every engine update it overlaps a body box.<\/li>\n\n\n\n<li>Touch of Death &#8211; Player attack damage is always at least equal to the target&#8217;s remaining hitpoints (before offense and defense factors apply). <\/li>\n<\/ul>\n\n\n\n<p>Creators may control the availability of individual cheats, the entire cheat menu, and the default status of a cheat on initial start up. <\/p>\n\n\n\n<p><code>global_config_cheats<\/code> &#8211; Models.txt command. Accepts one or more of the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>credits_active<\/code> &#8211; Game loads with infinite credits cheat active.<\/li>\n\n\n\n<li><code>credits_menu<\/code> &#8211; Infinite credits cheat option appears in cheats menu.<\/li>\n\n\n\n<li><code>energy_active<\/code> &#8211; Game loads with infinite energy cheat active.<\/li>\n\n\n\n<li><code>energy_menu<\/code> &#8211; Infinite energy cheat option appears in cheats menu.<\/li>\n\n\n\n<li><code>health_active<\/code> &#8211; Game loads with Infinite health cheat active.<\/li>\n\n\n\n<li><code>health_menu<\/code> &#8211; Infinite heath cheat option appears in cheats menu.<\/li>\n\n\n\n<li><code>implacable_active<\/code> &#8211; Game loads with implacable march cheat active.<\/li>\n\n\n\n<li><code>implacable_menu<\/code> &#8211; Implacable march cheat option appears in cheats menu.<\/li>\n\n\n\n<li><code>lives_active<\/code> &#8211; Game loads with infinite lives cheat active.<\/li>\n\n\n\n<li><code>lives_menu<\/code> &#8211; Infinite lives cheat option appears in cheats menu.<\/li>\n\n\n\n<li><code>master_menu<\/code> &#8211; Cheats menu is accessible.<\/li>\n\n\n\n<li><code>multihit_active<\/code> &#8211; Game loads with multihit glitch cheat active.<\/li>\n\n\n\n<li><code>multihit_menu<\/code> &#8211; Multihit glitch cheat option appears in cheats menu.<\/li>\n\n\n\n<li><code>touch_of_death_active<\/code> &#8211; Game loads with touch of death cheat active.<\/li>\n\n\n\n<li><code>touch_of_death_menu<\/code> &#8211; Touch of Death cheat option appears in cheats menu.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"OpenBOR 4.0 Preview, Cheats\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/m7ONsfOkun4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Script<\/h2>\n\n\n\n<p>Cheats are exposed to script as a <a href=\"https:\/\/chronocrash.com\/obor\/wiki\/system-variables\/#global_config\" data-type=\"URL\" data-id=\"https:\/\/chronocrash.com\/obor\/wiki\/system-variables\/#global_config\">global_config<\/a> property. Use the following bitmask constants:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>openborconstant(\"CHEAT_OPTIONS_NONE\")<\/code> &#8211; No effect as a mask. Assign directly to reset all flags to false.<\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_CREDITS_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_CREDITS_MENU\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_ENERGY_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_ENERGY_MENU\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_HEALTH_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_HEALTH_MENU\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_IMPLACABLE_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_IMPLACABLE_MENU\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_LIVES_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_LIVES_MENU\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_MASTER_MENU\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_MULTIHIT_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"<code>CHEAT_OPTIONS_MULTIHIT_MENU<\/code>\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_TOD_ACTIVE\")<\/code><\/li>\n\n\n\n<li><code>openborconstant(\"CHEAT_OPTIONS_TOD_MENU\")<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Examples<\/h3>\n\n\n\n<p>Get cheats variable and check if lives cheat is active:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nvoid config = openborvariant(&quot;global_config&quot;);\n\nint value = get_global_config_property(config, openborconstant(&quot;GLOBAL_CONFIG_PROPERTY_CHEATS&quot;));\n\n\/* If lives cheat is active, do something. *\/\nif(value &amp; openborconstant(&quot;CHEAT_OPTIONS_LIVES_ACTIVE&quot;))\n{\n     \/* Do something here. *\/\n}\n<\/pre><\/div>\n\n\n<p>Get cheats variable, then turn the credit cheat on and touch of death cheat off.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nvoid config = openborvariant(&quot;global_config&quot;);\n\nint value = get_global_config_property(config, openborconstant(&quot;GLOBAL_CONFIG_PROPERTY_CHEATS&quot;));\n\n\/* Set TOD cheat bit off (false). *\/\nvalue &amp;= ~openborconstant(&quot;CHEAT_OPTIONS_TOD_ACTIVE&quot;);\n\n\/* Set credit cheat bit on (true) *\/\nvalue |= openborconstant(&quot;CHEAT_OPTIONS_CREDITS_ACTIVE&quot;);\n\n\/* Apply new value to the cheats property. *\/\nset_global_config_property(config, openborconstant(&quot;GLOBAL_CONFIG_PROPERTY_CHEATS&quot;), value);\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Legacy<\/h2>\n\n\n\n<p>Prior to OpenBOR 4.0, cheats were sub-options of the System menu, had more limited choices, and were not accessible to script.<\/p>\n\n\n\n<p><code>nocheats<\/code> &#8211; Model text command. Accepts following values:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>0<\/code> &#8211; Cheats menu available (master menu bit true).<\/li>\n\n\n\n<li><code>1<\/code> &#8211; Cheats menu not available (master menu bit false).<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Built in options to gain a tremendous advantage during game play.<\/p>\n","protected":false},"author":1,"featured_media":657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30,254,328],"tags":[283,306,5,307],"class_list":["post-511","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-mechanics","category-global-configuration","category-openbor","tag-cheats","tag-obor_global_config_cheats","tag-manual","tag-nocheats"],"revision_note":"","jetpack_featured_media_url":"https:\/\/i0.wp.com\/chronocrash.com\/obor\/wiki\/wp-content\/uploads\/2022\/05\/bor-0043.png?fit=480%2C272&ssl=1&wsr","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/posts\/511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/comments?post=511"}],"version-history":[{"count":5,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/posts\/511\/revisions"}],"predecessor-version":[{"id":1390,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/posts\/511\/revisions\/1390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/media\/657"}],"wp:attachment":[{"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/media?parent=511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/categories?post=511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chronocrash.com\/obor\/wiki\/wp-json\/wp\/v2\/tags?post=511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}