diff --git a/.github/actions/upstream-docs/action.yml b/.github/actions/upstream-docs/action.yml new file mode 100644 index 0000000..6ce9cff --- /dev/null +++ b/.github/actions/upstream-docs/action.yml @@ -0,0 +1,89 @@ +name: Pinned upstream documentation +description: >- + Materialises every pinned upstream documentation input that API regeneration reads, as inert data + under .cache/, and exports the IE_LUA_* variables that point the ingestion tool at it. + +# Why this exists: regeneration used to call the GitHub REST API and raw.githubusercontent.com +# anonymously, and hosted runners share the 60-requests-per-hour anonymous REST limit per IP, so the +# required "Pinned API regeneration" job failed at random with "403 rate limit exceeded". Git +# checkouts and one release download are not subject to that limit, and nothing here hands a token +# to repository code: actions/checkout consumes the job token itself and persist-credentials: false +# removes it again before any later step runs. +# +# Trust boundary: everything fetched here is third-party documentation. It is parsed as data by +# packages/tools/src/ingest-docs.ts and is never executed, built, or sourced. The Lua archive is +# accepted only after its SHA-256 matches the pin recorded in packages/tools/upstream-pins.json, +# and only the manual page is extracted from it. + +inputs: + eeex-commit: + description: Full 40-character Bubb13/EEex-Docs commit to check out. + required: true + +runs: + using: composite + steps: + - name: Resolve pinned revisions + id: pins + shell: bash + env: + EEEX_COMMIT: ${{ inputs.eeex-commit }} + run: | + set -euo pipefail + # Every value below reaches a checkout ref, a URL, or a path, so each one is validated + # against its exact expected shape before it is used anywhere. + pins=packages/tools/upstream-pins.json + luajit_repository="$(jq -er '.luajit.repository' "$pins")" + luajit_commit="$(jq -er '.luajit.commit' "$pins")" + lua52_url="$(jq -er '.lua52.url' "$pins")" + lua52_sha256="$(jq -er '.lua52.sha256' "$pins")" + [[ "$EEEX_COMMIT" =~ ^[0-9a-f]{40}$ ]] + [[ "$luajit_repository" == LuaJIT/LuaJIT ]] + [[ "$luajit_commit" =~ ^[0-9a-f]{40}$ ]] + [[ "$lua52_url" =~ ^https://www\.lua\.org/ftp/lua-5\.2\.[0-9]+\.tar\.gz$ ]] + [[ "$lua52_sha256" =~ ^[0-9a-f]{64}$ ]] + { + echo "luajit-repository=$luajit_repository" + echo "luajit-commit=$luajit_commit" + echo "lua52-url=$lua52_url" + echo "lua52-sha256=$lua52_sha256" + } >> "$GITHUB_OUTPUT" + + - name: Check out EEex-Docs at the pinned commit + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: Bubb13/EEex-Docs + ref: ${{ inputs.eeex-commit }} + path: .cache/eeex-docs + persist-credentials: false + + - name: Check out the LuaJIT documentation at the pinned commit + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: ${{ steps.pins.outputs.luajit-repository }} + ref: ${{ steps.pins.outputs.luajit-commit }} + path: .cache/luajit + persist-credentials: false + # Only the HTML documentation is read; the sources are never needed. + sparse-checkout: doc + + - name: Download and verify the Lua 5.2 reference manual + shell: bash + env: + LUA52_URL: ${{ steps.pins.outputs.lua52-url }} + LUA52_SHA256: ${{ steps.pins.outputs.lua52-sha256 }} + run: | + set -euo pipefail + mkdir -p .cache/lua52 + archive=.cache/lua52/lua.tar.gz + # No redirect following: the pinned URL must answer directly, and the digest below is the + # identity check regardless of what the server returns. + curl --fail --silent --show-error --retry 3 --output "$archive" "$LUA52_URL" + echo "$LUA52_SHA256 $archive" | sha256sum --check --strict - + release="$(basename "$LUA52_URL" .tar.gz)" + tar -xzf "$archive" -C .cache/lua52 "$release/doc/manual.html" + { + echo "IE_LUA_EEEX_DOCS_ROOT=$GITHUB_WORKSPACE/.cache/eeex-docs" + echo "IE_LUA_LUAJIT_DOCS_ROOT=$GITHUB_WORKSPACE/.cache/luajit" + echo "IE_LUA_LUA52_MANUAL=$GITHUB_WORKSPACE/.cache/lua52/$release/doc/manual.html" + } >> "$GITHUB_ENV" diff --git a/.github/workflows/conventional-commits.yml b/.github/workflows/conventional-commits.yml index 020572d..2f1d99d 100644 --- a/.github/workflows/conventional-commits.yml +++ b/.github/workflows/conventional-commits.yml @@ -12,9 +12,11 @@ permissions: contents: read pull-requests: read -concurrency: - group: conventional-commits-${{ github.event.pull_request.number }} - cancel-in-progress: true +# No concurrency group on purpose. Dependabot force-pushes (synchronize) and edits the pull request +# (edited) within the same second; with cancel-in-progress one of the two runs was cancelled after +# its check run already existed, leaving a CANCELLED "Validate commit messages" entry beside the +# SUCCESS one and failing the required-check rollup. This job is read-only, idempotent and takes +# seconds, so letting every run finish is cheaper than any cancellation scheme. jobs: validate: @@ -42,7 +44,14 @@ jobs: : [`${commit.sha.slice(0, 7)} ${header || ''}`]; }); - const title = context.payload.pull_request.title; + // Read the title as it is now rather than from the event payload, so overlapping runs for + // one head all judge the same title and cannot leave a stale verdict behind. + const { data: pull } = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.issue.number, + }); + const title = pull.title; if (title.length > 100 || !conventionalHeader.test(title)) invalid.push(`PR title: ${title}`); if (invalid.length > 0) { diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml index 01550cb..8077284 100644 --- a/.github/workflows/dependabot-automerge.yml +++ b/.github/workflows/dependabot-automerge.yml @@ -37,31 +37,55 @@ jobs: run: | set -euo pipefail + # Lists every run of one workflow for the pull request's current head. + runs_for() { + gh run list \ + --repo "$GITHUB_REPOSITORY" \ + --workflow "$1" \ + --event pull_request \ + --commit "$PR_HEAD_SHA" \ + --limit 50 \ + --json databaseId,status,conclusion + } + for workflow in ci.yml codeql.yml dependency-review.yml conventional-commits.yml; do - run_id="" + found="" for _ in {1..30}; do - run_id="$( - gh run list \ - --repo "$GITHUB_REPOSITORY" \ - --workflow "$workflow" \ - --event pull_request \ - --commit "$PR_HEAD_SHA" \ - --limit 1 \ - --json databaseId \ - --jq '.[0].databaseId // empty' - )" - if [[ -n "$run_id" ]]; then + found="$(runs_for "$workflow" | jq -r '.[].databaseId')" + if [[ -n "$found" ]]; then break fi sleep 10 done - if [[ -z "$run_id" ]]; then + if [[ -z "$found" ]]; then echo "No $workflow run found for commit $PR_HEAD_SHA." >&2 exit 1 fi - gh run watch "$run_id" --repo "$GITHUB_REPOSITORY" --exit-status + # One head can have several runs of the same workflow, because Dependabot's push and its + # edit of the pull request arrive together. Judging whichever run a listing returned + # first is how a superseded, cancelled run once failed this job, so every run is awaited + # and the whole set is judged. gh run watch does its own polling until a run completes. + while :; do + pending="$(runs_for "$workflow" | jq -r '.[] | select(.status != "completed") | .databaseId')" + if [[ -z "$pending" ]]; then + break + fi + while read -r run_id; do + gh run watch "$run_id" --repo "$GITHUB_REPOSITORY" > /dev/null + done <<< "$pending" + done + + # A cancelled run is only a superseded duplicate when a run for the same head succeeded; + # any other outcome, or no success at all, keeps the update out of the merge queue. + conclusions="$(runs_for "$workflow" | jq -r '.[].conclusion')" + unexpected="$(grep -vxE 'success|cancelled' <<< "$conclusions" || true)" + if [[ -n "$unexpected" ]] || ! grep -qx success <<< "$conclusions"; then + echo "$workflow did not pass for commit $PR_HEAD_SHA:" >&2 + echo "$conclusions" >&2 + exit 1 + fi done - name: Squash-merge verified patch update if: steps.metadata.outputs.update-type == 'version-update:semver-patch' @@ -75,6 +99,6 @@ jobs: test "$current_head" = "$PR_HEAD_SHA" # The ruleset requires branches to be up to date, so an immediate merge is refused outright # ("N of N required status checks are expected") whenever main has moved since these checks - # ran. Queueing the merge instead lets it complete once the branch is current, which the - # Dependabot rebase workflow arranges. + # ran. Queueing the merge instead lets it complete once the branch is current; a maintainer + # brings a behind update up to date with an "@dependabot rebase" comment. gh pr merge "$PR_URL" --auto --squash --match-head-commit "$PR_HEAD_SHA" diff --git a/.github/workflows/dependabot-rebase.yml b/.github/workflows/dependabot-rebase.yml deleted file mode 100644 index 3ef50c4..0000000 --- a/.github/workflows/dependabot-rebase.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: Dependabot rebase - -# The main ruleset requires branches to be up to date before merging, and Dependabot only rebases on -# its own when an update conflicts. A pull request that merely falls behind therefore stays -# unmergeable until it is asked to rebase, which is what this workflow does when main moves. -on: - push: - branches: [main] - schedule: - - cron: '41 5 * * *' - workflow_dispatch: - -# Everything below reads and writes pull requests and nothing else, so DEPENDABOT_REBASE_TOKEN needs -# only "Pull requests: read and write" alongside the mandatory "Metadata: read". -permissions: - pull-requests: write - -concurrency: - group: dependabot-rebase - cancel-in-progress: false - -jobs: - request-rebase: - name: Request a rebase for out-of-date updates - runs-on: ubuntu-24.04 - timeout-minutes: 10 - steps: - - name: Ask out-of-date Dependabot pull requests to rebase - # Dependabot rejects commands from github-actions[bot] ("only users with push access can use - # that command"), so the default GITHUB_TOKEN would post a comment that is silently ignored. - # A dedicated token is required, and its absence is reported rather than failing the run. - env: - GH_TOKEN: ${{ secrets.DEPENDABOT_REBASE_TOKEN }} - shell: bash - run: | - set -euo pipefail - - if [[ -z "${GH_TOKEN:-}" ]]; then - echo "::notice::DEPENDABOT_REBASE_TOKEN is not configured. Dependabot only honours rebase requests from an account with push access, so no rebase was requested." - exit 0 - fi - - # mergeStateStatus is computed lazily and reports UNKNOWN while GitHub is still working it - # out; only a confirmed BEHIND is actionable, and a later run retries the rest. - behind="$( - gh pr list \ - --repo "$GITHUB_REPOSITORY" \ - --state open \ - --limit 100 \ - --json number,author,mergeStateStatus \ - --jq '.[] - | select(.author.login == "dependabot[bot]") - | select(.mergeStateStatus == "BEHIND") - | .number' - )" - - if [[ -z "$behind" ]]; then - echo "No Dependabot pull request is behind the base branch." - exit 0 - fi - - while read -r number; do - [[ -n "$number" ]] || continue - # Asking again for a head that has already been asked about would comment on every push - # to main, so the current head's commit date is compared against the newest request. - # Both come from this one pull-request read, which is why the token needs no access to - # repository contents. - # The $head, $pushed and $asked below are jq variables, not shell ones, so the - # single quotes are deliberate. - # shellcheck disable=SC2016 - read -r pushed asked <<< "$( - gh pr view "$number" \ - --repo "$GITHUB_REPOSITORY" \ - --json headRefOid,commits,comments \ - --jq '.headRefOid as $head - | [.commits[] | select(.oid == $head) | .committedDate] as $pushed - | [.comments[] - | select(.body | test("^@dependabot rebase[[:space:]]*$")) - | .createdAt] as $asked - | "\($pushed[0] // "-") \(($asked | max) // "-")"' - )" - # "-" means unknown: never asked, or a head this read could not resolve. Either way the - # request is worth making, because Dependabot ignores a redundant one. - if [[ "$asked" != "-" && "$pushed" != "-" && "$asked" > "$pushed" ]]; then - echo "#$number: a rebase was already requested for the current head" - continue - fi - gh pr comment "$number" --repo "$GITHUB_REPOSITORY" --body '@dependabot rebase' - echo "#$number: requested a rebase" - done <<< "$behind" diff --git a/.github/workflows/update-eeex-api.yml b/.github/workflows/update-eeex-api.yml index e095279..6ce74f6 100644 --- a/.github/workflows/update-eeex-api.yml +++ b/.github/workflows/update-eeex-api.yml @@ -45,6 +45,13 @@ jobs: run: npm ci --no-audit --progress=false - if: steps.revision.outputs.changed == 'true' run: npm run compile + # The generator reads pinned local copies of every upstream input; see the action for why the + # network API is no longer used during generation. + - name: Fetch pinned upstream documentation + if: steps.revision.outputs.changed == 'true' + uses: ./.github/actions/upstream-docs + with: + eeex-commit: ${{ steps.revision.outputs.commit }} - if: steps.revision.outputs.changed == 'true' env: IE_LUA_EEEX_COMMIT: ${{ steps.revision.outputs.commit }} diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 115d1f5..26c1d7a 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -221,6 +221,18 @@ jobs: cache-dependency-path: package-lock.json - run: npm ci --no-audit --progress=false - run: npm run compile + # Regeneration reads every upstream input from a pinned local copy instead of the network API, + # so the job cannot fail on the anonymous REST rate limit and no token reaches PR code. + - name: Resolve the pinned EEex revision + id: eeex + run: | + commit="$(jq -er '.sources[] | select(.id == "ee-game-structures-x64") | .commit' resources/api/api-index.json)" + [[ "$commit" =~ ^[0-9a-f]{40}$ ]] + echo "commit=$commit" >> "$GITHUB_OUTPUT" + - name: Fetch pinned upstream documentation + uses: ./.github/actions/upstream-docs + with: + eeex-commit: ${{ steps.eeex.outputs.commit }} - run: node scripts/regenerate.cjs - run: npx --no-install prettier --write resources/api - name: Require reproducible committed data diff --git a/CHANGELOG.md b/CHANGELOG.md index 948b567..8ee2521 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,11 +12,13 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Verify every language service named in the README as its own case against the bundled stdio server on Linux, Windows, and macOS, and fail the policy check when that list and the verification inventory disagree. -- Ask out-of-date Dependabot pull requests to rebase when the base branch moves, so the - up-to-date merge requirement stops leaving them unmergeable. - Ship client configurations and setup guides for Sublime Text, Neovim, Emacs, JetBrains IDEs, Helix, Geany and Kate, and document what Zed and Notepad++ actually require. The policy check validates every shipped configuration against the manifest in `editors/`. +- Hold hovers to the published documentation: the declared-feature and installed-extension suites + compare representative hovers from all six sources byte for byte with the pinned upstream text, + and every shipped hover is audited for Markdown that would render differently from its source. +- Complete and hover members that EEex structures inherit from the structures they extend. ### Fixed @@ -29,6 +31,19 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). so embedded Lua analysis and the formatter boundary no longer depend on the editor's naming. - Open an API symbol's upstream documentation externally on Go to Definition instead of returning a location the editor cannot open. +- Stop the required Pinned API regeneration job from failing on the anonymous GitHub API rate + limit: it now reads every upstream input from pinned local checkouts and a verified archive. +- Keep Dependabot's simultaneous push and pull-request edit from leaving a cancelled required + commit-message check, and let the patch auto-merge judge every run for the head instead of + whichever run was listed first. +- Show published signatures verbatim, including `...` varargs and upstream's `???` markers, + instead of invented `arg1`-style names, with unambiguous signature-help parameter ranges. +- Render Lua 5.2 and LuaJIT help exactly as published: typographic characters, superscripts, + tables, alternative call forms, and links are kept instead of being flattened or dropped. +- Resolve every upstream cross-reference to its pinned source line instead of a dead in-page + link, drop the doubled rule before the source link, and let VS Code render the documentation's + inline HTML. +- Stop offering and hovering EEex `baseclass_` layout rows as if they were readable members. ### Changed @@ -40,6 +55,8 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Remove unused shared exports and fold three hand-rolled offset/position conversions into the indexed mapper that already backs analysis. - Lint the CommonJS scripts and test harnesses, which no lint configuration previously matched. +- Generate Lua 5.2 help from the official 5.2.4 release archive and LuaJIT help from the LuaJIT + repository at a pinned commit, so all six sections are regenerated and verified reproducibly. ## [0.6.0] - 2026-09-08 diff --git a/README.md b/README.md index db14743..87986cb 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ This extension targets: - Embedded Lua analysis in `.menu` files for backtick chunks, `lua "..."` expressions, action/open/close/escape blocks, and `enabled`/`clickable` expressions. - Source-driven API data from official sources only, with immutable upstream provenance. - Full EE Game Lua and EEex function completion, hover, signature help, and source definitions, including namespace members, colon methods, typed instance aliases, parameter defaults, return values, warnings, notes, examples, and tables. -- Full EE Game Structures (x64) layout metadata: structure and field completion, annotation-aware member resolution, chained field hover, exact source definitions, types, offsets, and byte sizes. +- Full EE Game Structures (x64) layout metadata: structure and field completion, annotation-aware member resolution, members inherited from extended structures, chained field hover, exact source definitions, types, offsets, and byte sizes. ## Stable 0.6.x contract and current limits @@ -181,7 +181,7 @@ Open a draft PR to run CI. Compilation, formatting, tests, packaging, and API ge exclusively in GitHub Actions. Download verified VSIX files and maintenance patches from the run. The language server runs as a separate process over IPC from the VS Code extension client. -The docs-ingestion step fetches official Lua 5.2, LuaJIT, EE Game Lua Function, and EEex Function documentation at build time and stores the source wording as Markdown for hover, completion, and signature-help previews. RST presentation is converted to equivalent VS Code Markdown while paragraphs, emphasis, lists, tables, admonitions, links, code blocks, and visible punctuation are retained. +The docs-ingestion step reads official Lua 5.2, LuaJIT, EE Game Lua Function, and EEex Function documentation from pinned inputs and stores the source wording as Markdown for hover, completion, and signature-help previews: the Lua 5.2.4 release archive verified against its published SHA-256, and the LuaJIT and EEex-Docs repositories at fixed commits. RST and HTML presentation is converted to equivalent VS Code Markdown while paragraphs, emphasis, lists, tables, admonitions, superscripts, code blocks, typographic characters, and visible punctuation are retained, published signatures are shown verbatim, and cross-references become links to the pinned upstream location. The declared-feature suite compares representative hovers from every source byte for byte with the pinned sources and audits every shipped hover for Markdown that would render differently. Generated API data uses a schema-v3 manifest for auditability. `resources/api/api-index.json` retains the six logical source sections and lists every data file with its symbol count and, for EE/EEex data, its exact upstream category path. The three EEex-backed sources mirror the top-level categories in the pinned upstream toctrees, including explicit empty shards: @@ -191,7 +191,7 @@ Generated API data uses a schema-v3 manifest for auditability. `resources/api/ap Lua 5.2, LuaJIT, and optional local utility metadata remain single-file sections under `resources/api/sections/`. Category filenames are derived deterministically from upstream names rather than maintained as a hardcoded list. -The Actions ingestion job sets `IE_LUA_FETCH_EEEX=1` to refresh EEex metadata. The generator resolves the latest `dev` revision by default; set `IE_LUA_EEEX_COMMIT` to a full commit SHA for a reproducible run. Function ingestion discovers every standalone EE Game function page, every game function defined directly in a category index, and every `EEex_*` function anchor from the pinned tree. It rejects incomplete or malformed input and records exact commit-and-line provenance. Structure help includes names, fields, types, offsets, byte sizes, upstream narrative, and pinned source lines. +The Actions ingestion job sets `IE_LUA_FETCH_EEEX=1` to refresh EEex metadata. The generator resolves the latest `dev` revision by default; set `IE_LUA_EEEX_COMMIT` to a full commit SHA for a reproducible run. In Actions, `.github/actions/upstream-docs` checks out EEex-Docs and LuaJIT at their pinned commits and downloads the verified Lua archive, and the generator reads them through `IE_LUA_EEEX_DOCS_ROOT`, `IE_LUA_LUAJIT_DOCS_ROOT`, and `IE_LUA_LUA52_MANUAL` instead of calling the GitHub API. The Lua and LuaJIT pins live in `packages/tools/upstream-pins.json`. Function ingestion discovers every standalone EE Game function page, every game function defined directly in a category index, and every `EEex_*` function anchor from the pinned tree. It rejects incomplete or malformed input and records exact commit-and-line provenance. Structure help includes names, fields, types, offsets, byte sizes, upstream narrative, and pinned source lines. The scheduled **Update EEex API data** workflow checks the upstream repository daily. When its revision changes, the workflow regenerates and verifies the API data on a dedicated branch and opens a pull request for review; it never executes upstream code. @@ -210,8 +210,8 @@ The shipped API index is generated from these official sources: - EE Game Lua Functions: `https://github.com/Bubb13/EEex-Docs/tree/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions` - EEex Functions: `https://github.com/Bubb13/EEex-Docs/tree/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions` - EE Game Structures (x64): `https://github.com/Bubb13/EEex-Docs/tree/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)` -- Lua 5.2: `https://www.lua.org/manual/5.2/` -- LuaJIT: `https://luajit.org/` +- Lua 5.2: `https://www.lua.org/ftp/lua-5.2.4.tar.gz` +- LuaJIT: `https://github.com/LuaJIT/LuaJIT/tree/c6ffc141a8762b41703f9287d63d93622a13dd8f/doc` - EE Utility Functions: local, untracked `samples/util.lua` only when explicitly enabled for docs ingestion. Bundled third-party documentation attribution is recorded in `THIRD_PARTY_NOTICES.md`. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 900119f..708630f 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -14,8 +14,8 @@ This project uses third-party packages and generated reference data. Runtime pac Generated API/help data must record source URLs, source commits or versions, and license status. -- Lua 5.2 Reference Manual: Copyright 2011-2013 Lua.org, PUC-Rio. Freely available under the Lua license. -- LuaJIT documentation: Copyright 2005-2026 Mike Pall. Released under the MIT open source license as stated by the official LuaJIT documentation site. +- Lua 5.2 Reference Manual: Copyright 2011-2015 Lua.org, PUC-Rio. Freely available under the Lua license. Source: the `doc/manual.html` page of the official `lua-5.2.4.tar.gz` release, verified against the SHA-256 recorded in `resources/api/api-index.json`. +- LuaJIT documentation: Copyright 2005-2026 Mike Pall. Released under the MIT open source license as stated by the official LuaJIT documentation. Source: `https://github.com/LuaJIT/LuaJIT`, `doc/` at the commit recorded in `resources/api/api-index.json`. - EE Game Lua Functions and EEex Functions documentation: Copyright the EEex-Docs authors and contributors. Source: `https://github.com/Bubb13/EEex-Docs`, pinned to the commit recorded in `resources/api/api-index.json`. The extension bundles function help text with source URLs and line-level provenance. EE Game Structures (x64): Copyright the EEex-Docs authors and contributors. Structure documentation and layout metadata retain pinned source and line provenance. diff --git a/docs/architecture/THREAT_MODEL.md b/docs/architecture/THREAT_MODEL.md index 54c04b1..b845ec8 100644 --- a/docs/architecture/THREAT_MODEL.md +++ b/docs/architecture/THREAT_MODEL.md @@ -12,11 +12,17 @@ is not a filesystem sandbox against symlinks or a malicious local owner. Invalid manifests are skipped after runtime shape validation. Startup uses an empty API index if no candidate loads; failed reloads retain the last good index. Replacement is atomic, and errors report candidate paths without logging JSON excerpts or document contents. Markdown is -returned as documentation, without enabling trusted command links. +returned as documentation, without enabling trusted command links. The VS Code client lets hovers +render inline HTML so the `
`, ``, ``, and `
` tags in upstream documentation
+display; VS Code still sanitizes that HTML against its own allowlist, and command links stay off.
 
 Documentation ingestion reads pinned upstream text and converts it to generated metadata and
 Markdown. It never runs upstream build scripts. Source identity, category counts, source lines,
-and generated-file integrity are audited. Local game samples are excluded from releases.
+and generated-file integrity are audited. Local game samples are excluded from releases. In
+Actions, the upstream inputs are third-party checkouts at pinned commits and one release archive
+accepted only on a SHA-256 match; they are fetched with persisted credentials removed, read as data
+under `.cache/`, and never executed. Checkout reads refuse symbolic links and verify the pinned
+commit from the checkout's own HEAD before any file is parsed.
 
 Dependencies execute during installation/building in disposable GitHub-hosted runners. PR
 verification has read-only repository access and no publication credentials. Label and merge
diff --git a/docs/verification.md b/docs/verification.md
index a10c08a..f1362b1 100644
--- a/docs/verification.md
+++ b/docs/verification.md
@@ -26,6 +26,7 @@ unit tests and real stdio requests provide additional algorithm and protocol cov
 | Formatting                 | Exact text edits, idempotence, current config-path behavior and unchanged menu text                    |
 | Commands and activation    | Real files, open-document validation, reloading changed installed data, picker cancellation and output |
 | Packaged grammars          | Tokenization using the grammar files actually shipped in the VSIX                                      |
+| Hover fidelity             | Byte-exact hovers for every source, rendered HTML enabled, command links disabled                      |
 
 The required **Declared feature coverage** job runs one named case per declared service against the
 bundled stdio server on Linux, Windows, and macOS, and records each outcome with its evidence in
@@ -34,6 +35,23 @@ each named service still answers with a real result on the transport non-VS Code
 behavioural regressions stay in the stdio and installed-extension suites. A missing or failed
 service fails the job.
 
+Hover is additionally held to the published text. `tests/hover-fidelity.json` records, for
+representative symbols from all six sources and every formatting construct they use, the complete
+hover Markdown written from the pinned upstream source: verbatim signatures including `...` and
+`???`, typographic characters, emphasis, superscripts, lists, grid and HTML tables, admonitions,
+literal blocks, and cross-references resolved to pinned upstream lines. The declared-feature job
+compares each one byte for byte over stdio, and the installed-extension suite compares the same
+expectations as VS Code receives them. The job also audits the hover of every shipped symbol for
+Markdown that would render differently from its source: leftover RST, in-page links that lead
+nowhere, relative links, HTML tags editors strip, undecoded entities, doubled rules, or a missing
+final source link.
+
+The required **Pinned API regeneration** job regenerates all six sections from pinned local inputs
+and requires the committed data to match byte for byte. `.github/actions/upstream-docs` checks out
+EEex-Docs and LuaJIT at their pinned commits and downloads the Lua 5.2.4 archive, accepting it only
+when its SHA-256 matches `packages/tools/upstream-pins.json`; no GitHub API call or token is
+involved, so anonymous rate limits cannot fail the job.
+
 Caches contain npm downloads, exact editor distributions, and versioned actionlint binaries. They
 never substitute for compilation, tests, regeneration, archive audits, or fresh editor profiles.
 Stable editor resolution fails visibly if the official update service is unavailable.
diff --git a/packages/client/src/extension.ts b/packages/client/src/extension.ts
index a731474..8b70433 100644
--- a/packages/client/src/extension.ts
+++ b/packages/client/src/extension.ts
@@ -53,6 +53,13 @@ export async function activate(context: vscode.ExtensionContext): Promise
       fileEvents: vscode.workspace.createFileSystemWatcher('**/*.{lua,menu}'),
     },
     outputChannel,
+    // Upstream documentation uses a few inline HTML tags with no Markdown equivalent: 
inside + // table cells, for exponents, ,
. With supportHtml off, VS Code strips them and
+    // table cells run together. VS Code still sanitizes rendered HTML against its own allowlist, and
+    // isTrusted stays unset, so documentation can never run command links.
+    markdown: {
+      supportHtml: true,
+    },
     middleware: {
       // API symbols are defined in upstream documentation, so the server answers with the pinned
       // https source URL. Handing that to the editor as a document location fails, because there is
diff --git a/packages/server/src/apiIndexLoader.ts b/packages/server/src/apiIndexLoader.ts
index 011ec69..b2b6278 100644
--- a/packages/server/src/apiIndexLoader.ts
+++ b/packages/server/src/apiIndexLoader.ts
@@ -90,7 +90,9 @@ export function loadApiIndexFromManifest(manifestPath: string): ApiIndex {
   array(manifest.sources);
   for (const source of manifest.sources) {
     record(source);
-    strings(source, ['title', 'url'], ['commit']);
+    // sha256 identifies sources pinned by release archive rather than by commit (Lua 5.2); both
+    // are optional so manifests written before either existed still load.
+    strings(source, ['title', 'url'], ['commit', 'sha256']);
     choice(source.id, allSourceSections);
     choice(source.licenseStatus, ['allowed', 'unknown']);
   }
diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts
index 43b45ae..46897e5 100644
--- a/packages/server/src/server.ts
+++ b/packages/server/src/server.ts
@@ -46,6 +46,7 @@ import {
   findApiSymbolForExpression,
   makeApiCallableView,
   makeDocumentation,
+  parameterLabelOffsets,
   mergeSettings,
   languageIds,
   normalizeSettings,
@@ -82,6 +83,10 @@ let stopped = false;
 const scheduler = new DebouncedValidationScheduler();
 
 let hasConfigurationCapability = false;
+// Offset parameter labels keep signature help unambiguous when a published signature repeats a
+// name ("???,???") or a name also occurs earlier in the label. Clients that cannot read them get
+// plain names, as before.
+let hasParameterLabelOffsets = false;
 let initializationSettings: SettingsInput | undefined;
 const startupApi = loadApiIndex();
 let apiIndex: ApiIndex = startupApi.index ?? emptyApiIndex;
@@ -105,6 +110,10 @@ const semanticLegend: SemanticTokensLegend = {
 
 connection.onInitialize((params: InitializeParams): InitializeResult => {
   hasConfigurationCapability = Boolean(params.capabilities.workspace?.configuration);
+  hasParameterLabelOffsets = Boolean(
+    params.capabilities.textDocument?.signatureHelp?.signatureInformation?.parameterInformation
+      ?.labelOffsetSupport,
+  );
   initializationSettings = readInitializationSettings(params.initializationOptions);
 
   return {
@@ -317,8 +326,14 @@ connection.onSignatureHelp(async (params) => {
       value: makeDocumentation(apiSymbol),
     },
   };
-  const parameters = callableView.parameters.map((parameter) => ({
-    label: parameter.name,
+  const offsets = hasParameterLabelOffsets
+    ? parameterLabelOffsets(
+        callableView.signature,
+        callableView.parameters.map((parameter) => parameter.name),
+      )
+    : undefined;
+  const parameters = callableView.parameters.map((parameter, index) => ({
+    label: offsets?.[index] ?? parameter.name,
     ...(parameter.description
       ? {
           // Parameter descriptions contain upstream Markdown such as code spans and links.
diff --git a/packages/shared/src/api.test.ts b/packages/shared/src/api.test.ts
index fee1e3d..ddc7b4e 100644
--- a/packages/shared/src/api.test.ts
+++ b/packages/shared/src/api.test.ts
@@ -5,8 +5,10 @@ import {
   findApiStructureMembers,
   findApiSymbol,
   findApiSymbolForExpression,
+  isBaseClassField,
   makeApiCallableView,
   makeDocumentation,
+  parameterLabelOffsets,
 } from './api';
 import { defaultSettings } from './settings';
 import type { ApiIndex, ApiSymbol } from './types';
@@ -167,6 +169,91 @@ void test('layout documentation includes factual field metadata and pinned sourc
   assert.doesNotMatch(documentation, /\\\\n/u);
 });
 
+void test('parameter label offsets stay inside the parameter list and keep repeats distinct', () => {
+  assert.deepEqual(parameterLabelOffsets('Infinity_LuaConsoleInput(???,???)', ['???', '???']), [
+    [25, 28],
+    [29, 32],
+  ]);
+  // "a" also occurs in the callable's own name; the offset must point inside the parentheses.
+  assert.deepEqual(parameterLabelOffsets('Infinity_SetArea(a)', ['a']), [[17, 18]]);
+  assert.deepEqual(parameterLabelOffsets('Infinity_DisplayString(...)', ['...']), [[23, 26]]);
+  assert.equal(parameterLabelOffsets('C:AddGold(Gold)', ['Missing']), undefined);
+  assert.equal(parameterLabelOffsets('ffi.os', ['x']), undefined);
+});
+
+// A synthetic lineage shaped like EEex's CGameSprite -> CGameAIBase -> CGameObject, with a member
+// declared at two levels, a base that names no documented structure, and a cycle back to the top.
+const inheritance: ApiIndex = {
+  ...index,
+  symbols: [
+    makeStructure('CDerived', 32),
+    makeStructure('CMiddle', 24),
+    makeStructure('CRoot', 16),
+    makeField('CDerived', 'baseclass_0', 'CMiddle', '0x0', 24),
+    makeField('CDerived', 'm_derived', 'int', '0x18', 4),
+    makeField('CDerived', 'm_shared', 'short', '0x1c', 2),
+    makeField('CMiddle', 'baseclass_0', 'CRoot', '0x0', 16),
+    makeField('CMiddle', 'baseclass_1', 'CTemplate', '0x10', 8),
+    makeField('CMiddle', 'm_middle', 'int', '0x10', 4),
+    makeField('CRoot', 'baseclass_0', 'CDerived', '0x0', 8),
+    makeField('CRoot', 'm_root', 'int', '0x8', 4),
+    makeField('CRoot', 'm_shared', 'int', '0xc', 4),
+    makeAliasCallable('eeex-functions:EEex_Root_Ping', 'EEex_Root_Ping', 'ping', 'CRoot'),
+  ],
+};
+const derivedDocument = ['---@type CDerived', 'local object', ''].join('\n');
+
+void test('baseclass rows are inheritance, not members', () => {
+  const baseRow = inheritance.symbols.find((symbol) => symbol.name === 'CDerived.baseclass_0')!;
+  assert.equal(isBaseClassField(baseRow), true);
+  assert.equal(
+    isBaseClassField(inheritance.symbols.find((s) => s.name === 'CRoot.m_root')!),
+    false,
+  );
+  assert.equal(findApiSymbol(inheritance, defaultSettings, 'CDerived.baseclass_0'), undefined);
+  assert.equal(
+    findApiSymbolForExpression(
+      inheritance,
+      defaultSettings,
+      'object.baseclass_0',
+      derivedDocument,
+      derivedDocument.length,
+    ),
+    undefined,
+  );
+});
+
+void test('members of every extended structure complete on the derived one, nearest first', () => {
+  const members = findApiStructureMembers(
+    inheritance,
+    defaultSettings,
+    'object',
+    derivedDocument,
+    derivedDocument.length,
+  );
+  assert.deepEqual(
+    members.map((symbol) => symbol.instanceName ?? symbol.name),
+    ['m_derived', 'm_shared', 'm_middle', 'm_root', 'EEex_Root_Ping'],
+  );
+  // The nearest declaration of a repeated name wins, as it would at runtime.
+  assert.equal(members.find((symbol) => symbol.instanceName === 'm_shared')?.dataType, 'short');
+});
+
+void test('inherited fields and methods resolve for hover and signature help', () => {
+  const resolve = (expression: string): ApiSymbol | undefined =>
+    findApiSymbolForExpression(
+      inheritance,
+      defaultSettings,
+      expression,
+      derivedDocument,
+      derivedDocument.length,
+    );
+  assert.equal(resolve('object.m_root')?.name, 'CRoot.m_root');
+  assert.equal(resolve('object.m_middle')?.name, 'CMiddle.m_middle');
+  assert.equal(resolve('object.m_shared')?.name, 'CDerived.m_shared');
+  assert.equal(resolve('object:ping')?.name, 'EEex_Root_Ping');
+});
+
 function makeSymbol(
   id: string,
   name: string,
diff --git a/packages/shared/src/api.ts b/packages/shared/src/api.ts
index c757280..921e645 100644
--- a/packages/shared/src/api.ts
+++ b/packages/shared/src/api.ts
@@ -22,7 +22,7 @@ export function findApiSymbol(
   name: string,
 ): ApiSymbol | undefined {
   const symbols = filterApiSymbols(index, settings);
-  const exactMatch = symbols.find((symbol) => symbol.name === name);
+  const exactMatch = symbols.find((symbol) => symbol.name === name && !isBaseClassField(symbol));
   if (exactMatch) {
     return exactMatch;
   }
@@ -85,14 +85,7 @@ export function findApiSymbolForExpression(
     return callableMatch;
   }
   const structureName = resolveStructureName(symbols, receiver, documentText, offset);
-  return structureName
-    ? symbols.find(
-        (symbol) =>
-          symbol.kind === 'field' &&
-          symbol.containerName === structureName &&
-          symbol.instanceName === memberName,
-      )
-    : undefined;
+  return structureName ? findStructureField(symbols, structureName, memberName) : undefined;
 }
 
 export function findApiStructureMembers(
@@ -104,21 +97,30 @@ export function findApiStructureMembers(
 ): ApiSymbol[] {
   const symbols = filterApiSymbols(index, settings);
   const directMembers = symbols.filter(
-    (symbol) => symbol.containerName === receiver && symbol.instanceName,
+    (symbol) =>
+      symbol.containerName === receiver && symbol.instanceName && !isBaseClassField(symbol),
   );
   const structureName = resolveStructureName(symbols, receiver, documentText, offset);
   const annotatedType = inferAnnotationType(receiver, documentText, offset);
   const resolvedType = annotatedType ?? structureName;
-  const typedMembers = resolvedType
-    ? symbols.filter(
-        (symbol) =>
-          (symbol.kind === 'field' && symbol.containerName === structureName) ||
-          symbol.callableAliases?.some(
-            (alias) => alias.receiverType && typesMatch(alias.receiverType, resolvedType),
-          ),
-      )
-    : [];
-  return uniqueSymbols([...directMembers, ...typedMembers]);
+  // A structure also offers everything it extends; see structureLineage.
+  const receiverTypes = structureName
+    ? structureLineage(symbols, structureName)
+    : resolvedType
+      ? [resolvedType]
+      : [];
+  const methods = symbols.filter((symbol) =>
+    symbol.callableAliases?.some(
+      (alias) =>
+        alias.receiverType !== undefined &&
+        receiverTypes.some((receiverType) => typesMatch(alias.receiverType!, receiverType)),
+    ),
+  );
+  return uniqueSymbols([
+    ...directMembers,
+    ...(structureName ? lineageFields(symbols, structureName) : []),
+    ...methods,
+  ]);
 }
 
 export interface ApiCallableView {
@@ -145,6 +147,33 @@ export function makeApiCallableView(
   };
 }
 
+/**
+ * Locates each parameter inside a signature's own parameter list, as [start, end) UTF-16 offsets
+ * for LSP parameter labels.
+ *
+ * Searching the whole label for a name finds the first occurrence anywhere, which is wrong when
+ * the callable's own name contains it or when a published name repeats, as in
+ * "Infinity_LuaConsoleInput(???,???)". Returns undefined when any parameter cannot be located, so
+ * the caller can fall back to plain names.
+ */
+export function parameterLabelOffsets(
+  signature: string,
+  names: readonly string[],
+): Array<[number, number]> | undefined {
+  const open = signature.indexOf('(');
+  const close = signature.lastIndexOf(')');
+  if (open === -1 || close < open) return undefined;
+  const offsets: Array<[number, number]> = [];
+  let cursor = open + 1;
+  for (const name of names) {
+    const start = name ? signature.indexOf(name, cursor) : -1;
+    if (start === -1 || start + name.length > close) return undefined;
+    offsets.push([start, start + name.length]);
+    cursor = start + name.length;
+  }
+  return offsets;
+}
+
 export function makeDocumentation(symbol: ApiSymbol): string {
   const chunks: string[] = [`### \`${symbol.name}\``];
   if (symbol.signature) {
@@ -200,12 +229,7 @@ function resolveStructureName(
   }
 
   for (const memberName of parts) {
-    const field = symbols.find(
-      (symbol) =>
-        symbol.kind === 'field' &&
-        symbol.containerName === structureName &&
-        symbol.instanceName === memberName,
-    );
+    const field = findStructureField(symbols, structureName, memberName);
     structureName = field?.dataType
       ? findReferencedStructureName(symbols, field.dataType)
       : undefined;
@@ -225,21 +249,123 @@ function findCallableMember(
   offset: number,
 ): ApiSymbol | undefined {
   const direct = symbols.find(
-    (symbol) => symbol.containerName === receiver && symbol.instanceName === memberName,
+    (symbol) =>
+      symbol.containerName === receiver &&
+      symbol.instanceName === memberName &&
+      !isBaseClassField(symbol),
   );
   if (direct) return direct;
 
   const annotatedType = inferAnnotationType(receiver, documentText, offset);
+  // An annotated receiver accepts methods of every structure it extends, nearest first.
+  const annotatedStructure = annotatedType
+    ? findReferencedStructureName(symbols, annotatedType)
+    : undefined;
+  const receiverTypes = annotatedStructure
+    ? structureLineage(symbols, annotatedStructure)
+    : annotatedType
+      ? [annotatedType]
+      : undefined;
   const aliasMatches = symbols.filter((symbol) =>
     symbol.callableAliases?.some(
       (alias) =>
         alias.name === memberName &&
-        (!annotatedType || !alias.receiverType || typesMatch(alias.receiverType, annotatedType)),
+        (!receiverTypes ||
+          !alias.receiverType ||
+          receiverTypes.some((receiverType) => typesMatch(alias.receiverType!, receiverType))),
     ),
   );
+  for (const receiverType of receiverTypes ?? []) {
+    const atLevel = aliasMatches.filter((symbol) =>
+      symbol.callableAliases?.some(
+        (alias) =>
+          alias.name === memberName &&
+          alias.receiverType !== undefined &&
+          typesMatch(alias.receiverType, receiverType),
+      ),
+    );
+    if (atLevel.length > 0) return atLevel.length === 1 ? atLevel[0] : undefined;
+  }
   return aliasMatches.length === 1 ? aliasMatches[0] : undefined;
 }
 
+/**
+ * EEex documents structure inheritance as layout rows named baseclass_ whose type is the base
+ * structure. They are not members a script can read: the base structure's members are reached
+ * directly on the derived one, so these rows are never offered, hovered, or resolved as fields.
+ */
+export function isBaseClassField(symbol: ApiSymbol): boolean {
+  return symbol.kind === 'field' && /^baseclass_\d+$/u.test(symbol.instanceName ?? '');
+}
+
+/**
+ * A structure followed by every structure it extends, nearest first and depth-first in
+ * baseclass_ order. A base whose type is not a documented structure (for example an undocumented
+ * template instantiation) contributes nothing rather than guessed members, and cycles are cut.
+ */
+function structureLineage(symbols: ApiSymbol[], structureName: string): string[] {
+  const lineage: string[] = [];
+  const visit = (name: string): void => {
+    if (lineage.includes(name)) return;
+    lineage.push(name);
+    const bases = symbols
+      .filter((symbol) => symbol.containerName === name && isBaseClassField(symbol))
+      .sort((left, right) => baseClassIndex(left) - baseClassIndex(right));
+    for (const base of bases) {
+      const baseName = base.dataType
+        ? findReferencedStructureName(symbols, base.dataType)
+        : undefined;
+      if (baseName) visit(baseName);
+    }
+  };
+  visit(structureName);
+  return lineage;
+}
+
+function baseClassIndex(symbol: ApiSymbol): number {
+  return Number.parseInt(symbol.instanceName?.slice('baseclass_'.length) ?? '0', 10);
+}
+
+// The nearest declaration of a member name wins, as it would on the usertype at runtime.
+function findStructureField(
+  symbols: ApiSymbol[],
+  structureName: string,
+  memberName: string,
+): ApiSymbol | undefined {
+  for (const name of structureLineage(symbols, structureName)) {
+    const field = symbols.find(
+      (symbol) =>
+        symbol.kind === 'field' &&
+        symbol.containerName === name &&
+        symbol.instanceName === memberName &&
+        !isBaseClassField(symbol),
+    );
+    if (field) return field;
+  }
+  return undefined;
+}
+
+function lineageFields(symbols: ApiSymbol[], structureName: string): ApiSymbol[] {
+  const seen = new Set();
+  const fields: ApiSymbol[] = [];
+  for (const name of structureLineage(symbols, structureName)) {
+    for (const symbol of symbols) {
+      if (
+        symbol.kind !== 'field' ||
+        symbol.containerName !== name ||
+        !symbol.instanceName ||
+        isBaseClassField(symbol) ||
+        seen.has(symbol.instanceName)
+      ) {
+        continue;
+      }
+      seen.add(symbol.instanceName);
+      fields.push(symbol);
+    }
+  }
+  return fields;
+}
+
 function uniqueSymbols(symbols: ApiSymbol[]): ApiSymbol[] {
   return [...new Map(symbols.map((symbol) => [symbol.id, symbol])).values()];
 }
diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts
index 05908a9..2fe6e97 100644
--- a/packages/shared/src/types.ts
+++ b/packages/shared/src/types.ts
@@ -162,7 +162,10 @@ export interface ApiSource {
   id: SourceSectionId;
   title: string;
   url: string;
+  /** Upstream repository commit the section was generated from. */
   commit?: string;
+  /** SHA-256 of the release archive the section was generated from (sources without a repository). */
+  sha256?: string;
   licenseStatus: LicenseStatus;
 }
 
diff --git a/packages/tools/src/audit-package.ts b/packages/tools/src/audit-package.ts
index 557b18a..56a3cac 100644
--- a/packages/tools/src/audit-package.ts
+++ b/packages/tools/src/audit-package.ts
@@ -366,10 +366,13 @@ function auditFunctionSymbol(
     .map((name) => name.trim())
     .filter(Boolean);
   const parameterNames = (symbol.parameters ?? []).map((parameter) => parameter.name);
-  if (
-    parameterNames.some((name) => !name || !/^[A-Za-z_][A-Za-z0-9_]*$/u.test(name)) ||
-    signatureNames.join('\0') !== parameterNames.join('\0')
-  ) {
+  // Upstream names parameters it has not identified "???" and Lua varargs "...". Both are shown
+  // verbatim; "..." is only valid as the final parameter, exactly as in Lua itself.
+  const validName = (name: string | undefined, index: number): boolean =>
+    /^[A-Za-z_][A-Za-z0-9_]*$/u.test(name ?? '') ||
+    name === '???' ||
+    (name === '...' && index === parameterNames.length - 1);
+  if (!parameterNames.every(validName) || signatureNames.join('\0') !== parameterNames.join('\0')) {
     throw new Error(`Function section has inconsistent parameters: ${label}`);
   }
   if (symbol.returns?.some((value) => !value.type && !value.description)) {
diff --git a/packages/tools/src/eeex-functions.test.ts b/packages/tools/src/eeex-functions.test.ts
index bbdc9dc..50be5e2 100644
--- a/packages/tools/src/eeex-functions.test.ts
+++ b/packages/tools/src/eeex-functions.test.ts
@@ -166,8 +166,78 @@ void test('game functions normalize explicit upstream unknown parameters positio
     ].join('\n'),
   });
 
-  assert.equal(symbol.signature, 'Infinity_Unknown(arg1, arg2)');
-  assert.deepEqual(symbol.parameters, [{ name: 'arg1' }, { name: 'arg2' }]);
+  // "???" is upstream's own marker for an unidentified parameter; it is shown, not renamed.
+  assert.equal(symbol.signature, 'Infinity_Unknown(???,???)');
+  assert.deepEqual(symbol.parameters, [{ name: '???' }, { name: '???' }]);
+});
+
+void test('game signatures keep varargs and published spacing, and reject unknown tokens', () => {
+  const page = (signature: string, parameters: string[]): string =>
+    [
+      '.. _Infinity_Show:',
+      '',
+      'Infinity_Show',
+      '^^^^^^^^^^^^^',
+      '',
+      '::',
+      '',
+      `   ${signature}`,
+      '',
+      '**Parameters**',
+      '',
+      ...parameters,
+    ].join('\n');
+  const sourcePath = 'source/EE Game Lua Functions/Infinity/index.rst';
+
+  const vararg = parseGameFunctionSymbol({
+    commit,
+    sourcePath,
+    text: page('Infinity_Show(...)', ['* *...* - values to show']),
+  });
+  assert.equal(vararg.signature, 'Infinity_Show(...)');
+  assert.deepEqual(vararg.parameters, [{ name: '...', description: 'values to show' }]);
+
+  const packed = parseGameFunctionSymbol({
+    commit,
+    sourcePath,
+    text: page('Infinity_Show(x,y)', ['* *x* - column', '* *y* - row']),
+  });
+  assert.equal(packed.signature, 'Infinity_Show(x,y)');
+
+  assert.throws(
+    () =>
+      parseGameFunctionSymbol({
+        commit,
+        sourcePath,
+        text: page('Infinity_Show([opt])', ['* *opt* - optional']),
+      }),
+    /unsupported parameter \[opt\]/u,
+  );
+});
+
+void test(':ref: targets may nest angle brackets and titles lose the space before them', () => {
+  assert.equal(
+    renderRstMarkdown('Reads :ref:`uiItem\\:\\:bam>`.resref here.'),
+    'Reads [uiItem::bam](#uiItem::).resref here.',
+  );
+  assert.equal(
+    renderRstMarkdown('See :ref:`The Option Table ` and :ref:`EEex_Plain`.'),
+    'See [The Option Table](#the-option-table) and [EEex_Plain](#EEex_Plain).',
+  );
+});
+
+void test('angle brackets in RST prose stay text while code and rendered tags keep meaning', () => {
+  assert.equal(
+    renderRstMarkdown(
+      'The range [0, ] with ```` and :raw-html:`
` :underline:`kept`.', + ), + 'The range [0, <max id in .IDS>] with `` and
kept.', + ); +}); + +void test('a trailing RST transition separates entries and is not rendered', () => { + assert.equal(renderRstMarkdown('Body text.\n\n----\n'), 'Body text.'); + assert.equal(renderRstMarkdown('First.\n\n----\n\nSecond.\n\n----'), 'First.\n\n---\n\nSecond.'); }); void test('indented RST quotations render as Markdown blockquotes', () => { diff --git a/packages/tools/src/eeex-functions.ts b/packages/tools/src/eeex-functions.ts index 1dd77d5..a5719f6 100644 --- a/packages/tools/src/eeex-functions.ts +++ b/packages/tools/src/eeex-functions.ts @@ -31,7 +31,8 @@ export function parseGameFunctionSymbol(document: GameFunctionDocument): ApiSymb const signatureBlock = findFirstLiteralBlock(lines, titleIndex + 2); const sourceSignature = signatureBlock.lines.join('\n').trim(); const callable = parseCallableSignature(sourceSignature, document.sourcePath); - const signature = `${callable.name}(${callable.parameterNames.join(', ')})`; + // The documented literal is shown exactly as published, spacing included. + const signature = sourceSignature; const legacyTitle = document.sourcePath .split('/') .at(-1) @@ -382,6 +383,10 @@ export function renderRstMarkdown(source: string, sourcePath = ''): string } } + // Docutils rejects a transition at the end of a document or section, so a trailing "----" only + // separates this entry from the next one. The hover draws its own rule before the source link. + while (output.length > 0 && (output.at(-1) === '' || output.at(-1) === '---')) output.pop(); + return output .join('\n') .replace(/\n{3,}/gu, '\n\n') @@ -520,16 +525,17 @@ function parseCallableSignature( /^([A-Za-z_][A-Za-z0-9_]*(?:(?:[.:])[A-Za-z_][A-Za-z0-9_]*)*)\s*\(([^)]*)\)$/u, ); if (!match?.[1]) throw new Error(`${sourcePath}: malformed callable signature ${signature}`); - const rawParameterNames = (match[2] ?? '') + const parameterNames = (match[2] ?? '') .split(',') .map((value) => value.trim()) .filter(Boolean); - const usedNames = new Set(); - const parameterNames = rawParameterNames.map((value, index) => { - const name = isIdentifier(value) && !usedNames.has(value) ? value : `arg${index + 1}`; - usedNames.add(name); - return name; - }); + // Upstream writes "..." for Lua varargs and "???" for a parameter nobody has identified yet. Both + // are kept verbatim rather than replaced with invented names; anything else unknown fails. + for (const name of parameterNames) { + if (!isIdentifier(name) && name !== '...' && name !== '???') { + throw new Error(`${sourcePath}: unsupported parameter ${name} in ${signature}`); + } + } return { name: match[1], parameterNames }; } @@ -662,11 +668,7 @@ function renderInline(value: string): string { ) .replace(/:bold-italic:`([^`]+)`/gu, '***$1***') .replace(/:underline:`([^`]+)`/gu, '$1') - .replace( - /:ref:`([^`<]*)<([^`>]+)>`/gu, - (_match, label: string, target: string) => `[${label}](#${target})`, - ) - .replace(/:ref:`([^`]+)`/gu, (_match, label: string) => `[${label}](#${label})`) + .replace(/:ref:`([^`]+)`/gu, (_match, text: string) => renderRefRole(text)) .replace(/:ref:``/gu, '') .replace(/`([^`<]+) <(https?:\/\/[^>]+)>`_/gu, '[$1]($2)') .replace(/``([^`]+)``/gu, '`$1`') @@ -677,7 +679,37 @@ function renderInline(value: string): string { if (unsupportedSubstitution) { throw new Error(`unsupported RST substitution ${unsupportedSubstitution}`); } - return rendered; + // Upstream prose uses angle brackets as text ("the range [0, ]"). Markdown would + // read them as an HTML tag, which editors strip, so they become the "<" entity, which Markdown + // renders as "<". An entity rather than a backslash escape keeps table-cell backslash escaping + // independent of it. Code spans, link targets, and the tags the :raw-html: and :underline: roles + // produce keep their meaning. + return rendered.replace( + /(`[^`]*`|\]\([^)]*\)|<\/?(?:br|pre|u)\s*\/?>)| kept ?? '<', + ); +} + +// A :ref: role names its target in a trailing "<...>", and upstream targets can contain angle +// brackets themselves ("uiItem::bam>" links to the label +// "uiItem::"). The target therefore starts at the "<" that balances the final +// ">". Whitespace before it is dropped, as docutils does ("The Option Table "). +// Without a trailing target, the text is both the link text and the target. +function renderRefRole(text: string): string { + if (text.endsWith('>')) { + let depth = 0; + for (let index = text.length - 1; index >= 0; index -= 1) { + if (text[index] === '>') depth += 1; + if (text[index] === '<') depth -= 1; + if (depth === 0) { + const label = text.slice(0, index).trim(); + const target = text.slice(index + 1, -1).trim(); + if (label && target) return `[${label}](#${target})`; + break; + } + } + } + return `[${text}](#${text})`; } function plainInline(value: string): string { @@ -716,6 +748,6 @@ function capitalize(value: string): string { return value.slice(0, 1).toUpperCase() + value.slice(1); } -function githubSourceUrl(commit: string, sourcePath: string, line: number): string { +export function githubSourceUrl(commit: string, sourcePath: string, line: number): string { return `https://github.com/Bubb13/EEex-Docs/blob/${commit}/${sourcePath.split('/').map(encodeURIComponent).join('/')}#L${line}`; } diff --git a/packages/tools/src/ingest-docs.test.ts b/packages/tools/src/ingest-docs.test.ts index 0451077..0b91fc1 100644 --- a/packages/tools/src/ingest-docs.test.ts +++ b/packages/tools/src/ingest-docs.test.ts @@ -1,6 +1,21 @@ import assert from 'node:assert/strict'; +import * as fs from 'node:fs'; +import * as os from 'node:os'; +import * as path from 'node:path'; import test from 'node:test'; -import { parseRootToctreeCategories } from './ingest-docs'; +import type { ApiSymbol } from '@ie-lua/shared'; +import { + AnchorRegistry, + decodeHtml, + htmlToMarkdown, + makeLua52Symbols, + makeLuaJitSymbols, + parseRootToctreeCategories, + readLocalTree, + readUpstreamPins, + resolveReferenceLinks, + verifyLocalCommit, +} from './ingest-docs'; void test('root toctrees preserve upstream category order and spaces', () => { const categories = parseRootToctreeCategories( @@ -40,3 +55,240 @@ void test('root toctrees reject duplicate and nested category paths', () => { /unsupported toctree entry/u, ); }); + +void test('upstream pins are read from the tracked pin file and validated', () => { + const pins = readUpstreamPins(); + assert.match(pins.lua52.url, /^https:\/\/www\.lua\.org\/ftp\/lua-5\.2\.\d+\.tar\.gz$/u); + assert.match(pins.lua52.sha256, /^[0-9a-f]{64}$/u); + assert.equal(pins.luajit.repository, 'LuaJIT/LuaJIT'); + assert.match(pins.luajit.commit, /^[0-9a-f]{40}$/u); + + const directory = fs.mkdtempSync(path.join(os.tmpdir(), 'ie-lua-pins-')); + const file = path.join(directory, 'pins.json'); + fs.writeFileSync(file, JSON.stringify({ ...pins, lua52: { ...pins.lua52, sha256: 'short' } })); + assert.throws(() => readUpstreamPins(file), /malformed upstream pins/u); +}); + +void test('local checkouts list like the Git tree API and must sit at the pinned commit', () => { + const root = fs.mkdtempSync(path.join(os.tmpdir(), 'ie-lua-tree-')); + const commit = 'a'.repeat(40); + fs.mkdirSync(path.join(root, '.git')); + fs.writeFileSync(path.join(root, '.git', 'HEAD'), `${commit}\n`); + fs.mkdirSync(path.join(root, 'source', 'EEex Functions', 'Action'), { recursive: true }); + fs.writeFileSync(path.join(root, 'source', 'EEex Functions', 'index.rst'), ''); + fs.writeFileSync(path.join(root, 'source', 'EEex Functions', 'Action', 'index.rst'), ''); + + assert.deepEqual(readLocalTree(root).tree, [ + { path: 'source', type: 'tree' }, + { path: 'source/EEex Functions', type: 'tree' }, + { path: 'source/EEex Functions/Action', type: 'tree' }, + { path: 'source/EEex Functions/Action/index.rst', type: 'blob' }, + { path: 'source/EEex Functions/index.rst', type: 'blob' }, + ]); + verifyLocalCommit(root, commit); + assert.throws(() => verifyLocalCommit(root, 'b'.repeat(40)), /expected the pinned commit/u); + assert.throws(() => verifyLocalCommit(path.join(root, 'source'), commit), //u); + + // A junction is a directory link that Windows runners can create without privileges; POSIX + // ignores the type and creates an ordinary symbolic link. + fs.symlinkSync(path.join(root, 'source'), path.join(root, 'linked'), 'junction'); + assert.throws(() => readLocalTree(root), /symbolic links are not read/u); +}); + +void test(':ref: links resolve to the one pinned line that defines them, or become plain text', () => { + const anchors = new AnchorRegistry(); + anchors.record( + 'source/EE Game Lua Functions/C/C_AddSpell.rst', + '.. _C_AddSpell:\n\nC\\:AddSpell', + ); + anchors.record('source/A/index.rst', 'Intro\n\n.. _Twice:\n'); + anchors.record('source/B/index.rst', '.. _twice:\n'); + anchors.record('source/C/index.rst', '.. _CAOEEntry\\:\\:AOEType:\n'); + assert.equal(anchors.resolve('CAOEEntry::AOEType')?.sourcePath, 'source/C/index.rst'); + const url = (label: string): string | undefined => { + const target = anchors.resolve(label); + return target ? `https://example.com/${target.sourcePath}#L${target.line}` : undefined; + }; + const symbol: ApiSymbol = { + id: 'ee-game-lua-functions:C:AddGold', + name: 'C:AddGold', + kind: 'method', + sourceSection: 'ee-game-lua-functions', + parameters: [{ name: 'Gold', description: 'see [C:AddSpell](#c_addspell)' }], + returns: [{ description: 'like [Twice](#Twice)' }], + documentationMarkdown: [ + '[C:AddSpell](#C_AddSpell), [Missing](#Nowhere)', + '', + '```lua', + 'local t = x[1](#y)', + '```', + ].join('\n'), + documentationState: 'documented', + upstreamUrl: 'https://example.com/C_AddGold.rst#L11', + licenseStatus: 'allowed', + }; + + const unresolved = resolveReferenceLinks([symbol], url); + const target = 'https://example.com/source/EE Game Lua Functions/C/C_AddSpell.rst#L1'; + assert.equal( + symbol.documentationMarkdown, + [`[C:AddSpell](${target}), Missing`, '', '```lua', 'local t = x[1](#y)', '```'].join('\n'), + ); + // Sphinx labels are case-insensitive, and a label defined twice is ambiguous rather than guessed. + assert.equal(symbol.parameters?.[0]?.description, `see [C:AddSpell](${target})`); + assert.equal(symbol.returns?.[0]?.description, 'like Twice'); + assert.deepEqual([...unresolved].sort(), ['Nowhere', 'Twice']); +}); + +void test('HTML documentation keeps published characters, emphasis, superscripts and links', () => { + const base = 'https://www.lua.org/manual/5.2/manual.html'; + assert.equal( + htmlToMarkdown( + [ + '

', + 'Returns m and e such that x = m2e,', + 'as the ISO C function frexp does', + '(see §6.4) – ‘quoted’ ···', + ].join('\n'), + base, + ), + [ + 'Returns `m` and `e` such that *x = m2e*, as the ISO\u00A0C function', + `[\`frexp\`](${base}#pdf-frexp) does (see §[6.4](${base}#6.4)) – ‘quoted’ ···`, + ].join(' '), + ); + assert.throws(() => htmlToMarkdown('

&unknown;', base), /Unsupported HTML entity &unknown;/u); + assert.equal(decodeHtml('≤ π A B'), '≤ π A B'); +}); + +void test('HTML tables, lists, breaks and LuaJIT link chrome convert to their Markdown forms', () => { + const page = 'https://luajit.org/ext_ffi_api.html'; + assert.equal( + htmlToMarkdown( + [ + '

The following parameters are defined:

', + '', + '', + '', + '
ParameterDescription
32bit32 bit a|b architecture
', + '', + '

First line
second line

', + ].join('\n'), + page, + ), + [ + 'The following parameters are defined:', + '', + '| Parameter | Description |', + '| --- | --- |', + '| 32bit | 32 bit `a\\|b` architecture |', + '', + '- See [conversion rules](https://luajit.org/ext_ffi_semantics.html#convert).', + '- Also [standard Lua](https://www.lua.org/manual/5.1/manual.html#5).', + '', + 'First line
second line', + ].join('\n'), + ); +}); + +void test('HTML list items keep their code blocks, bold closes before spaces, and < stays text', () => { + assert.equal( + htmlToMarkdown( + [ + '
    ', + '
  • "count": ', + 'returns the total memory', + 'so the following equality is always true:', + '', + '
    ',
    +        '     k, b = collectgarbage("count")',
    +        '

    ', + '(The second result is useful.)', + '

  • ', + '
  • "step": performs a step.
  • ', + '
', + '

a <b> c

', + ].join('\n'), + 'https://www.lua.org/manual/5.2/manual.html', + ), + [ + '- **"`count`":** returns the total memory so the following equality is always true:', + '', + ' ```lua', + ' k, b = collectgarbage("count")', + ' ```', + '', + ' (The second result is useful.)', + '- **"`step`":** performs a step.', + '', + 'a <b> c', + ].join('\n'), + ); +}); + +void test('Lua 5.2 symbols render the manual text, including the keyword introduction', () => { + const section = (number: string, title: string, body: string): string => + `

${number} – ${title}

\n${body}\n`; + const manual = [ + section( + '3.1', + 'Lexical Conventions', + '

\nThe following keywords are reserved\nand cannot be used as names:\n\n\n

\n     and       break\n
', + ), + section( + '6.1', + 'Basic Functions', + '

\nBasics.\n


pcall (f [, arg1, ···])

\n

\nCalls function f in protected mode.', + ), + section('6.4', 'String Manipulation', '

\nThis library provides strings.'), + section('6.5', 'Table Manipulation', '

\nThis library provides tables.'), + section('6.6', 'Mathematical Functions', '

\nThis library provides math.'), + section('6.7', 'Bitwise Operations', '

\nThis library provides bits.'), + section('6.10', 'The Debug Library', '

\nThis library provides debugging.'), + ].join(''); + + const symbols = makeLua52Symbols(manual); + const byId = (id: string): ApiSymbol | undefined => symbols.find((symbol) => symbol.id === id); + assert.equal( + byId('lua52:keyword:and')?.documentationMarkdown, + 'The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break\n```', + ); + assert.equal(byId('lua52:pcall')?.signature, 'pcall (f [, arg1, ···])'); + assert.equal( + byId('lua52:pcall')?.documentationMarkdown, + 'Calls function `f` in *protected mode*.', + ); + assert.equal( + byId('lua52:pcall')?.upstreamUrl, + 'https://www.lua.org/manual/5.2/manual.html#pdf-pcall', + ); + assert.equal(byId('lua52:string')?.documentationMarkdown, 'This library provides strings.'); +}); + +void test('LuaJIT headings keep alternative call forms and link to their own entry', () => { + const url = 'https://luajit.org/ext_ffi_api.html'; + const [symbol] = makeLuaJitSymbols([ + { + url, + html: [ + '

cdata = ffi.new(ct [,nelem] [,init...])
', + 'cdata = ctype([nelem,] [init...])

', + '

Creates a cdata object for the given ct.

', + ].join('\n'), + }, + ]); + assert.equal(symbol?.name, 'ffi.new'); + assert.equal( + symbol?.signature, + 'cdata = ffi.new(ct [,nelem] [,init...])\ncdata = ctype([nelem,] [init...])', + ); + assert.equal(symbol?.upstreamUrl, `${url}#ffi_new`); + assert.equal(symbol?.documentationMarkdown, 'Creates a cdata object for the given `ct`.'); + assert.throws( + () => makeLuaJitSymbols([{ url, html: '

ffi.sizeof(ct)

Size.

' }]), + /has no id to link to/u, + ); +}); diff --git a/packages/tools/src/ingest-docs.ts b/packages/tools/src/ingest-docs.ts index 9c37638..e8ad28b 100644 --- a/packages/tools/src/ingest-docs.ts +++ b/packages/tools/src/ingest-docs.ts @@ -11,6 +11,7 @@ import type { } from '@ie-lua/shared'; import { parseEeexStructureSymbols } from './eeex-structures'; import { + githubSourceUrl, parseEeexFunctionSymbols, parseGameFunctionSymbol, parseGameIndexFunctionSymbols, @@ -21,12 +22,13 @@ const repoRoot = path.resolve(__dirname, '../..'); const outputDirectory = path.resolve(repoRoot, 'resources/api'); const outputPath = path.resolve(outputDirectory, 'api-index.json'); const sectionDirectory = path.resolve(outputDirectory, 'sections'); +const upstreamPinsPath = path.resolve(repoRoot, 'packages/tools/upstream-pins.json'); +// Hover links and definitions point at the rendered upstream pages people actually read. The +// immutable identity of the text that was parsed is recorded separately in the source manifest +// (release archive digest or repository commit), because these pages are not versioned URLs. const lua52ManualUrl = 'https://www.lua.org/manual/5.2/manual.html'; -const luaJitExtensionUrls = [ - 'https://luajit.org/extensions.html', - 'https://luajit.org/ext_ffi_api.html', - 'https://luajit.org/ext_jit.html', -] as const; +const luaJitSiteUrl = 'https://luajit.org/'; +const luaJitExtensionPages = ['extensions.html', 'ext_ffi_api.html', 'ext_jit.html'] as const; const allowedLua52Sections = new Set(['6.1', '6.4', '6.5', '6.6', '6.7', '6.10']); const lua52ModuleSections = { '6.4': 'string', @@ -36,7 +38,35 @@ const lua52ModuleSections = { '6.10': 'debug', } satisfies Record; -function makeSources(eeexCommit: string | undefined): ApiSource[] { +/** + * Immutable identities of the non-EEex upstream inputs. + * + * The same file drives the workflow step that fetches these inputs, so the digest the workflow + * verifies and the provenance written into the manifest cannot drift apart. + */ +export interface UpstreamPins { + lua52: { url: string; sha256: string }; + luajit: { repository: string; commit: string }; +} + +export function readUpstreamPins(file = upstreamPinsPath): UpstreamPins { + const pins = JSON.parse(fs.readFileSync(file, 'utf8')) as Partial; + const lua52 = pins.lua52; + const luajit = pins.luajit; + if ( + !lua52 || + !/^https:\/\/www\.lua\.org\/ftp\/lua-5\.2\.\d+\.tar\.gz$/u.test(lua52.url) || + !/^[0-9a-f]{64}$/u.test(lua52.sha256) || + !luajit || + luajit.repository !== 'LuaJIT/LuaJIT' || + !/^[0-9a-f]{40}$/u.test(luajit.commit) + ) { + throw new Error(`${file}: malformed upstream pins`); + } + return { lua52, luajit }; +} + +function makeSources(eeexCommit: string | undefined, pins: UpstreamPins): ApiSource[] { const eeexRef = eeexCommit ?? 'dev'; return [ { @@ -63,13 +93,16 @@ function makeSources(eeexCommit: string | undefined): ApiSource[] { { id: 'lua52', title: 'Lua 5.2', - url: 'https://www.lua.org/manual/5.2/', + // The official release archive, whose manual body is identical to the online manual. + url: pins.lua52.url, + sha256: pins.lua52.sha256, licenseStatus: 'allowed', }, { id: 'luajit', title: 'LuaJIT', - url: 'https://luajit.org/', + url: `https://github.com/${pins.luajit.repository}/tree/${pins.luajit.commit}/doc`, + commit: pins.luajit.commit, licenseStatus: 'allowed', }, { @@ -104,25 +137,20 @@ interface GeneratedShard { async function main(): Promise { const shouldFetchEeex = process.env.IE_LUA_FETCH_EEEX === '1'; const eeexCommit = shouldFetchEeex ? await resolveEeexCommit() : readExistingEeexCommit(); - const preserveOtherSources = process.env.IE_LUA_PRESERVE_OTHER_SOURCES === '1'; - const localSymbols: ApiSymbol[] = preserveOtherSources - ? ['lua52', 'luajit', 'ee-utility-functions'].flatMap((id) => { - const section = JSON.parse( - fs.readFileSync(path.resolve(sectionDirectory, `${id}.json`), 'utf8'), - ) as ApiSectionFile; - return section.symbols; - }) - : [ - ...(process.env.IE_LUA_SCAN_LOCAL_UTIL === '1' - ? scanUtilityFunctions(path.resolve(repoRoot, 'samples/util.lua')) - : []), - ...(await makeLua52Symbols()), - ...(await makeLuaJitSymbols()), - ]; + const pins = readUpstreamPins(); + // Lua 5.2 and LuaJIT are always regenerated from their pinned local inputs, so the pinned + // regeneration job verifies every documentation section rather than carrying two forward. + const localSymbols: ApiSymbol[] = [ + ...(process.env.IE_LUA_SCAN_LOCAL_UTIL === '1' + ? scanUtilityFunctions(path.resolve(repoRoot, 'samples/util.lua')) + : []), + ...makeLua52Symbols(readPinnedLua52Manual()), + ...makeLuaJitSymbols(readPinnedLuaJitPages(pins)), + ]; const eeexShards = shouldFetchEeex ? await fetchEeexShards(eeexCommit!) : loadExistingEeexShards(); - const sources = makeSources(eeexCommit); + const sources = makeSources(eeexCommit, pins); // A supplied timestamp makes a pinned-source regeneration byte-for-byte reproducible. const generatedAt = process.env.IE_LUA_GENERATED_AT ?? new Date().toISOString(); if (!Number.isFinite(Date.parse(generatedAt))) throw new Error('Invalid generation timestamp'); @@ -193,9 +221,7 @@ async function main(): Promise { }; const filePath = path.resolve(outputDirectory, relativeFile); fs.mkdirSync(path.dirname(filePath), { recursive: true }); - if (!preserveOtherSources || eeexSourceSections.has(shard.sourceSection)) { - fs.writeFileSync(filePath, `${JSON.stringify(section, null, 2)}\n`, 'utf8'); - } + fs.writeFileSync(filePath, `${JSON.stringify(section, null, 2)}\n`, 'utf8'); } removeStaleSectionFiles(expectedFiles); @@ -227,8 +253,44 @@ function removeStaleSectionFiles(expectedFiles: Set): void { visit(sectionDirectory); } -async function makeLua52Symbols(): Promise { - const html = await fetchText(lua52ManualUrl); +/** + * Reads the Lua 5.2 manual extracted from the pinned release archive. + * + * The upstream-docs action verifies the archive digest before extracting this single page; the + * page is parsed as text and nothing from the archive is executed. + */ +function readPinnedLua52Manual(): string { + const manual = process.env.IE_LUA_LUA52_MANUAL?.trim(); + if (!manual) { + throw new Error( + 'IE_LUA_LUA52_MANUAL must point at doc/manual.html from the pinned Lua 5.2 release archive.', + ); + } + return fs.readFileSync(path.resolve(manual), 'utf8'); +} + +export interface LuaJitPage { + /** Rendered page on luajit.org; used for source links and to resolve relative links. */ + url: string; + html: string; +} + +/** Reads the LuaJIT extension pages from a checkout proven to be at the pinned commit. */ +function readPinnedLuaJitPages(pins: UpstreamPins): LuaJitPage[] { + const root = process.env.IE_LUA_LUAJIT_DOCS_ROOT?.trim(); + if (!root) { + throw new Error( + 'IE_LUA_LUAJIT_DOCS_ROOT must point at a LuaJIT checkout at the pinned commit.', + ); + } + verifyLocalCommit(root, pins.luajit.commit); + return luaJitExtensionPages.map((page) => ({ + url: new URL(page, luaJitSiteUrl).href, + html: fs.readFileSync(path.resolve(root, 'doc', page), 'utf8'), + })); +} + +export function makeLua52Symbols(html: string): ApiSymbol[] { return [ ...makeLua52KeywordSymbols(html), ...makeLua52ModuleSymbols(html), @@ -238,21 +300,20 @@ async function makeLua52Symbols(): Promise { function makeLua52KeywordSymbols(html: string): ApiSymbol[] { const blockMatch = html.match( - /The following[\s\S]{0,200}?are reserved\s+and cannot be used as names:\s*
([\s\S]*?)<\/pre>/u,
+    /(The following[\s\S]{0,200}?are reserved\s+and cannot be used as names:)\s*
([\s\S]*?)<\/pre>/u,
   );
-  if (!blockMatch?.[1]) {
+  if (!blockMatch?.[1] || blockMatch[2] === undefined) {
     throw new Error('Unable to locate Lua 5.2 keyword block in official manual.');
   }
 
-  const keywordBlock = normalizePreText(blockMatch[1]);
+  const keywordBlock = normalizePreText(blockMatch[2]);
   const keywords = keywordBlock.split(/\s+/u).filter(Boolean);
-  const documentationMarkdown = [
-    'The following keywords are reserved and cannot be used as names:',
-    '',
-    '```lua',
-    keywordBlock,
-    '```',
-  ].join('\n');
+  // The introduction is rendered from the manual's own markup instead of being restated, so its
+  // wording and emphasis ("The following *keywords* are reserved") stay exactly as published.
+  const documentationMarkdown = htmlToMarkdown(
+    `

${blockMatch[1]}

${blockMatch[2]}
`, + lua52ManualUrl, + ); return keywords.map((name) => ({ id: `lua52:keyword:${name}`, @@ -281,7 +342,7 @@ function makeLua52ModuleSymbols(html: string): ApiSymbol[] { kind: 'module', sourceSection: 'lua52', signature: moduleName, - documentationMarkdown: htmlToMarkdown(firstParagraph(section.html)), + documentationMarkdown: htmlToMarkdown(firstParagraph(section.html), lua52ManualUrl), documentationState: 'documented', upstreamUrl: `${lua52ManualUrl}#${sectionNumber}`, licenseStatus: 'allowed', @@ -306,7 +367,7 @@ function makeLua52ManualEntrySymbols(html: string): ApiSymbol[] { } const signature = htmlInlineToText(match[2] ?? ''); - const documentationMarkdown = htmlToMarkdown(html.slice(start, end)); + const documentationMarkdown = htmlToMarkdown(html.slice(start, end), lua52ManualUrl); symbols.push({ id: `lua52:${name}`, name, @@ -323,19 +384,12 @@ function makeLua52ManualEntrySymbols(html: string): ApiSymbol[] { return symbols; } -async function makeLuaJitSymbols(): Promise { - const pages = await Promise.all( - luaJitExtensionUrls.map(async (url) => ({ - url, - html: await fetchText(url), - })), - ); - +export function makeLuaJitSymbols(pages: LuaJitPage[]): ApiSymbol[] { return pages.flatMap(({ url, html }) => makeLuaJitPageSymbols(url, html)); } function makeLuaJitPageSymbols(url: string, html: string): ApiSymbol[] { - const headingPattern = /]*>\s*([\s\S]*?)<\/tt>[\s\S]*?<\/h3>/giu; + const headingPattern = /]*)>\s*([\s\S]*?)<\/tt>[\s\S]*?<\/h3>/giu; const matches = [...html.matchAll(headingPattern)]; const symbols: ApiSymbol[] = []; @@ -343,9 +397,13 @@ function makeLuaJitPageSymbols(url: string, html: string): ApiSymbol[] { const start = (match.index ?? 0) + match[0].length; const nextEntryStart = index + 1 < matches.length ? matches[index + 1]?.index : undefined; const end = Math.min(nextEntryStart ?? html.length, findNextMajorHeading(html, start)); - const signature = htmlInlineToText(match[1] ?? ''); - const documentationMarkdown = htmlToMarkdown(html.slice(start, end)); + const signature = htmlInlineToText(match[2] ?? ''); const names = extractLuaJitSymbolNames(signature); + if (names.length === 0) { + continue; + } + const documentationMarkdown = htmlToMarkdown(html.slice(start, end), url); + const upstreamUrl = luaJitHeadingUrl(url, match[1] ?? '', signature); for (const name of names) { symbols.push({ @@ -356,7 +414,7 @@ function makeLuaJitPageSymbols(url: string, html: string): ApiSymbol[] { signature, documentationMarkdown, documentationState: documentationMarkdown ? 'documented' : 'undocumented', - upstreamUrl: url, + upstreamUrl, licenseStatus: 'allowed', }); } @@ -368,11 +426,11 @@ function makeLuaJitPageSymbols(url: string, html: string): ApiSymbol[] { function makeLuaJitModuleSymbols(html: string, url: string): ApiSymbol[] { const moduleSymbols: ApiSymbol[] = []; - const moduleHeadingPattern = /]*>\s*((?:bit|ffi|jit)\.\*)<\/tt>[\s\S]*?<\/h3>/giu; + const moduleHeadingPattern = /]*)>\s*((?:bit|ffi|jit)\.\*)<\/tt>[\s\S]*?<\/h3>/giu; const matches = [...html.matchAll(moduleHeadingPattern)]; for (const [index, match] of matches.entries()) { - const moduleName = (match[1] ?? '').split('.')[0] ?? ''; + const moduleName = (match[2] ?? '').split('.')[0] ?? ''; const start = (match.index ?? 0) + match[0].length; const nextEntryStart = index + 1 < matches.length ? matches[index + 1]?.index : undefined; const end = Math.min(nextEntryStart ?? html.length, findNextMajorHeading(html, start)); @@ -386,9 +444,9 @@ function makeLuaJitModuleSymbols(html: string, url: string): ApiSymbol[] { kind: 'module', sourceSection: 'luajit', signature: `${moduleName}.*`, - documentationMarkdown: htmlToMarkdown(html.slice(start, end)), + documentationMarkdown: htmlToMarkdown(html.slice(start, end), url), documentationState: 'documented', - upstreamUrl: url, + upstreamUrl: luaJitHeadingUrl(url, match[1] ?? '', match[2] ?? ''), licenseStatus: 'allowed', }); } @@ -396,6 +454,14 @@ function makeLuaJitModuleSymbols(html: string, url: string): ApiSymbol[] { return moduleSymbols; } +// Every documented LuaJIT heading carries an id, so a symbol's source link can land on its own +// entry. A heading without one is reported instead of silently linking to the top of the page. +function luaJitHeadingUrl(pageUrl: string, attributes: string, heading: string): string { + const id = attributes.match(/\bid="([^"]+)"/u)?.[1]; + if (!id) throw new Error(`${pageUrl}: heading ${heading} has no id to link to`); + return `${pageUrl}#${id}`; +} + function extractLuaJitSymbolNames(signature: string): string[] { const names = new Set(); const symbolPattern = @@ -406,7 +472,69 @@ function extractLuaJitSymbolNames(signature: string): string[] { return [...names]; } +type SourceReader = (sourceSection: SourceSectionId, relativePath: string) => Promise; + async function fetchEeexShards(eeexCommit: string): Promise { + const rootTree = await readEeexTree(eeexCommit); + // Every file read is scanned for Sphinx labels, so :ref: links can be resolved once all pages + // are known, whichever section or page defines the label. + const anchors = new AnchorRegistry(); + // Links also point into documentation sections that are not ingested, such as "EE Game Classes + // (x86)". A pinned local checkout makes reading every page cheap, so all of them are scanned. + const localRoot = process.env.IE_LUA_EEEX_DOCS_ROOT?.trim(); + if (localRoot) { + for (const entry of rootTree.tree) { + if ( + entry.type === 'blob' && + entry.path.startsWith('source/') && + entry.path.endsWith('.rst') + ) { + anchors.record(entry.path, fs.readFileSync(path.resolve(localRoot, entry.path), 'utf8')); + } + } + } + const read: SourceReader = async (sourceSection, relativePath) => { + const text = await fetchEeexSourceText(sourceSection, relativePath, eeexCommit); + anchors.record(`source/${sectionPath(sourceSection)}/${relativePath}`, text); + return text; + }; + + const [gameShards, eeexShards, structureShards] = await Promise.all([ + fetchGameFunctionShards(treeForSection(rootTree, 'ee-game-lua-functions'), eeexCommit, read), + fetchEeexFunctionShards(treeForSection(rootTree, 'eeex-functions'), eeexCommit, read), + fetchEeexStructureShards(treeForSection(rootTree, 'ee-game-structures-x64'), eeexCommit, read), + ]); + const shards = [...gameShards, ...eeexShards, ...structureShards]; + const unresolved = resolveReferenceLinks( + shards.flatMap((shard) => shard.symbols), + (label) => { + const target = anchors.resolve(label); + return target ? githubSourceUrl(eeexCommit, target.sourcePath, target.line) : undefined; + }, + ); + const countSymbols = (group: GeneratedShard[]): number => + group.reduce((total, shard) => total + shard.symbols.length, 0); + + console.log( + `EEex-Docs ${eeexCommit}: generated ${countSymbols(gameShards)} EE Game functions in ${gameShards.length} shards, ${countSymbols(eeexShards)} EEex functions in ${eeexShards.length} shards, and ${countSymbols(structureShards)} structure symbols in ${structureShards.length} shards.`, + ); + if (unresolved.size > 0) { + console.log( + `Rendered ${unresolved.size} unresolved or ambiguous :ref: targets as plain text: ${[...unresolved].sort().join(', ')}`, + ); + } + + return shards; +} + +// A pinned local checkout (IE_LUA_EEEX_DOCS_ROOT) replaces both GitHub API calls. The anonymous REST +// API allows 60 requests per hour per address, which shared CI runners exhaust at random. +async function readEeexTree(eeexCommit: string): Promise { + const localRoot = process.env.IE_LUA_EEEX_DOCS_ROOT?.trim(); + if (localRoot) { + verifyLocalCommit(localRoot, eeexCommit); + return readLocalTree(localRoot); + } const gitCommit = await fetchJson( `https://api.github.com/repos/Bubb13/EEex-Docs/git/commits/${eeexCommit}`, ); @@ -416,20 +544,130 @@ async function fetchEeexShards(eeexCommit: string): Promise { if (rootTree.truncated) { throw new Error('EEex repository tree response was truncated.'); } + return rootTree; +} - const [gameShards, eeexShards, structureShards] = await Promise.all([ - fetchGameFunctionShards(treeForSection(rootTree, 'ee-game-lua-functions'), eeexCommit), - fetchEeexFunctionShards(treeForSection(rootTree, 'eeex-functions'), eeexCommit), - fetchEeexStructureShards(treeForSection(rootTree, 'ee-game-structures-x64'), eeexCommit), - ]); - const countSymbols = (shards: GeneratedShard[]): number => - shards.reduce((total, shard) => total + shard.symbols.length, 0); +/** + * Lists a local checkout the way the Git tree API does: repository-relative POSIX paths of every + * file and directory, without the .git directory. + * + * Symbolic links are rejected rather than followed, so a listing can never reach outside the + * pinned checkout it describes. + */ +export function readLocalTree(root: string): GitTree { + const entries: GitTree['tree'] = []; + const visit = (directory: string, prefix: string): void => { + const children = fs + .readdirSync(directory, { withFileTypes: true }) + .sort((left, right) => (left.name < right.name ? -1 : left.name > right.name ? 1 : 0)); + for (const entry of children) { + if (!prefix && entry.name === '.git') continue; + const relative = prefix ? `${prefix}/${entry.name}` : entry.name; + if (entry.isSymbolicLink()) { + throw new Error(`${relative}: symbolic links are not read from upstream checkouts`); + } + if (entry.isDirectory()) { + entries.push({ path: relative, type: 'tree' }); + visit(path.join(directory, entry.name), relative); + } else if (entry.isFile()) { + entries.push({ path: relative, type: 'blob' }); + } + } + }; + visit(path.resolve(root), ''); + return { tree: entries }; +} - console.log( - `EEex-Docs ${eeexCommit}: generated ${countSymbols(gameShards)} EE Game functions in ${gameShards.length} shards, ${countSymbols(eeexShards)} EEex functions in ${eeexShards.length} shards, and ${countSymbols(structureShards)} structure symbols in ${structureShards.length} shards.`, - ); +/** + * Confirms that a checkout is at the expected commit by reading its detached HEAD, which is what + * actions/checkout leaves for a SHA ref. Git itself is never executed. + */ +export function verifyLocalCommit(root: string, commit: string): void { + const headFile = path.resolve(root, '.git', 'HEAD'); + const head = fs.existsSync(headFile) ? fs.readFileSync(headFile, 'utf8').trim() : ''; + if (head !== commit) { + throw new Error(`${root} is at ${head}, expected the pinned commit ${commit}`); + } +} + +export interface AnchorTarget { + sourcePath: string; + line: number; +} + +/** + * Sphinx cross-reference targets (".. _label:") in the upstream sources that were read. + * + * Labels match the way Sphinx matches them: case-insensitively with whitespace collapsed. A label + * defined in more than one place is ambiguous and deliberately resolves to nothing rather than to + * a guess. + */ +export class AnchorRegistry { + private readonly targets = new Map(); + + record(sourcePath: string, text: string): void { + const lines = text.replace(/\r\n?/gu, '\n').split('\n'); + for (const [index, line] of lines.entries()) { + const label = line.match(/^\.\. _(.+):\s*$/u)?.[1]; + if (!label) continue; + // Labels escape their colons and leading underscores (".. _CAOEEntry\:\:AOEType:", + // ".. _\_iobuf:"); docutils removes the backslashes, and :ref: targets are written without them. + const key = normalizeLabel(label.replace(/\\(.)/gu, '$1')); + const known = this.targets.get(key) ?? []; + if (!known.some((target) => target.sourcePath === sourcePath && target.line === index + 1)) { + known.push({ sourcePath, line: index + 1 }); + } + this.targets.set(key, known); + } + } + + resolve(label: string): AnchorTarget | undefined { + const known = this.targets.get(normalizeLabel(label)); + return known?.length === 1 ? known[0] : undefined; + } +} - return [...gameShards, ...eeexShards, ...structureShards]; +function normalizeLabel(label: string): string { + return label.trim().replace(/\s+/gu, ' ').toLowerCase(); +} + +/** + * Rewrites the "[label](#target)" placeholders that RST :ref: roles render to, everywhere a symbol + * carries Markdown. A resolved target becomes the pinned upstream line that defines it; anything + * else keeps only its label, because an in-page fragment leads nowhere inside an editor hover. + * + * @returns the targets that could not be resolved, for the generation log. + */ +export function resolveReferenceLinks( + symbols: ApiSymbol[], + resolve: (label: string) => string | undefined, +): Set { + const unresolved = new Set(); + const fragmentLink = /\[([^\]\n]*)\]\(#([^)\n]+)\)/gu; + const replaceLink = (_match: string, label: string, target: string): string => { + const url = resolve(target); + if (url) return `[${label}](${url})`; + unresolved.add(target); + return label; + }; + // Code blocks are copied verbatim; only prose can contain rendered :ref: links. + const rewrite = (markdown: string): string => + markdown + .split(/(```[\s\S]*?```)/u) + .map((part) => (part.startsWith('```') ? part : part.replace(fragmentLink, replaceLink))) + .join(''); + for (const symbol of symbols) { + if (symbol.documentationMarkdown) { + symbol.documentationMarkdown = rewrite(symbol.documentationMarkdown); + } + for (const parameter of symbol.parameters ?? []) { + if (parameter.description) parameter.description = rewrite(parameter.description); + } + for (const value of symbol.returns ?? []) { + if (value.description) value.description = rewrite(value.description); + } + } + return unresolved; } async function resolveEeexCommit(): Promise { @@ -517,12 +755,12 @@ interface UpstreamCategory { async function fetchUpstreamCategories( tree: GitTree, sourceSection: SourceSectionId, - commit: string, + read: SourceReader, ): Promise { if (!tree.tree.some((entry) => entry.type === 'blob' && entry.path === 'index.rst')) { throw new Error(`${sectionPath(sourceSection)} tree is missing its root index.rst.`); } - const text = await fetchEeexSourceText(sourceSection, 'index.rst', commit); + const text = await read(sourceSection, 'index.rst'); return parseRootToctreeCategories(text, sourceSection).map((title) => { const indexPath = `${title}/index.rst`; if (!tree.tree.some((entry) => entry.type === 'blob' && entry.path === indexPath)) { @@ -567,15 +805,15 @@ export function parseRootToctreeCategories(text: string, sourceSection: SourceSe return categories; } -async function fetchGameFunctionShards(tree: GitTree, commit: string): Promise { - const categories = await fetchUpstreamCategories(tree, 'ee-game-lua-functions', commit); +async function fetchGameFunctionShards( + tree: GitTree, + commit: string, + read: SourceReader, +): Promise { + const categories = await fetchUpstreamCategories(tree, 'ee-game-lua-functions', read); return Promise.all( categories.map(async (category) => { - const indexText = await fetchEeexSourceText( - 'ee-game-lua-functions', - category.indexPath, - commit, - ); + const indexText = await read('ee-game-lua-functions', category.indexPath); const descriptions = parseGameIndexDescriptions(indexText, category.upstreamPath); const pagePaths = tree.tree .filter( @@ -595,7 +833,7 @@ async function fetchGameFunctionShards(tree: GitTree, commit: string): Promise { - const categories = await fetchUpstreamCategories(tree, 'eeex-functions', commit); +async function fetchEeexFunctionShards( + tree: GitTree, + commit: string, + read: SourceReader, +): Promise { + const categories = await fetchUpstreamCategories(tree, 'eeex-functions', read); return Promise.all( categories.map(async (category) => { - const text = await fetchEeexSourceText('eeex-functions', category.indexPath, commit); + const text = await read('eeex-functions', category.indexPath); const symbols = parseEeexFunctionSymbols({ commit, sourcePath: category.upstreamPath, @@ -666,8 +908,12 @@ async function fetchEeexSourceText( ); } -async function fetchEeexStructureShards(tree: GitTree, commit: string): Promise { - const categories = await fetchUpstreamCategories(tree, 'ee-game-structures-x64', commit); +async function fetchEeexStructureShards( + tree: GitTree, + commit: string, + read: SourceReader, +): Promise { + const categories = await fetchUpstreamCategories(tree, 'ee-game-structures-x64', read); return Promise.all( categories.map(async (category) => ({ sourceSection: 'ee-game-structures-x64' as const, @@ -676,7 +922,7 @@ async function fetchEeexStructureShards(tree: GitTree, commit: string): Promise< symbols: parseEeexStructureSymbols({ commit, indexPath: category.indexPath, - text: await fetchEeexSourceText('ee-game-structures-x64', category.indexPath, commit), + text: await read('ee-game-structures-x64', category.indexPath), }), })), ); @@ -688,7 +934,7 @@ interface GitCommit { }; } -interface GitTree { +export interface GitTree { truncated?: boolean; tree: Array<{ path: string; @@ -789,54 +1035,161 @@ function stripHtmlComments(input: string): string { return input; } -function htmlToMarkdown(html: string): string { - const codeBlocks: string[] = []; - let markdown = stripHtmlComments(html) - .replace(/]*)?>([\s\S]*?)<\/pre>/giu, (_match, code: string) => { - const index = codeBlocks.length; - codeBlocks.push(`\n\n\`\`\`lua\n${normalizePreText(code)}\n\`\`\`\n\n`); - return `\n\n@@CODE_BLOCK_${index}@@\n\n`; - }) - .replace(/
    ([\s\S]*?)<\/ul>/giu, (_match, listHtml: string) => { - const items = [...listHtml.matchAll(/
  • ([\s\S]*?)<\/li>/giu)].map((item) => - inlineMarkdown(item[1] ?? '') - .replace(/\s+/gu, ' ') - .trim(), +/** + * Holds Markdown that is already final (code, links, and the few HTML tags a hover renders) while + * the surrounding prose is still stripped of tags and entity-decoded. + * + * Without this, decoded text would be decoded a second time and inline HTML such as would be + * stripped with the page markup. Placeholders use private-use code points, which the upstream + * pages never contain. + */ +class ProtectedMarkdown { + private readonly values: string[] = []; + + add(markdown: string): string { + this.values.push(markdown); + return `\uE000${this.values.length - 1}\uE001`; + } + + restore(text: string): string { + let result = text; + // A protected value may itself contain placeholders, such as a code span inside a table cell. + for (let depth = 0; depth < 4 && /\uE000\d+\uE001/u.test(result); depth += 1) { + result = result.replace( + /\uE000(\d+)\uE001/gu, + (_match, index: string) => this.values[Number(index)] ?? '', + ); + } + return result; + } +} + +/** + * Converts one upstream Lua 5.2 or LuaJIT HTML fragment to hover Markdown. + * + * Everything the page shows is kept: wording and typographic characters exactly as published, + * emphasis, code, lists, tables, headings, superscripts, line breaks, and links. Relative links + * are resolved against the page they came from, so they still work inside an editor. + */ +export function htmlToMarkdown(html: string, baseUrl: string): string { + const kept = new ProtectedMarkdown(); + // A checkout with Windows line endings must not leak carriage returns into hover text. + const markdown = stripHtmlComments(html.replace(/\r\n?/gu, '\n')) + // LuaJIT's repository pages prefix external links with a "»" glyph for the site stylesheet. + // It is navigation decoration, not documentation text, and luajit.org does not render it. + .replace(/»<\/span>(?: )?/gu, '') + .replace( + /]*)?>([\s\S]*?)<\/pre>/giu, + (_match, code: string) => + `\n\n${kept.add(`\`\`\`lua\n${normalizePreText(code)}\n\`\`\``)}\n\n`, + ) + .replace( + /]*)?>([\s\S]*?)<\/table>/giu, + (_match, table: string) => `\n\n${kept.add(htmlTableToMarkdown(table, baseUrl, kept))}\n\n`, + ) + .replace(/]*)?>([\s\S]*?)<\/ul>/giu, (_match, listHtml: string) => { + const items = [...listHtml.matchAll(/]*)?>([\s\S]*?)<\/li>/giu)].map((item) => + htmlListItem(item[1] ?? '', baseUrl, kept), ); - return `\n\n${items.map((item) => `- ${item}`).join('\n')}\n\n`; + // Protected like tables, so item text is not decoded a second time with the page. + return `\n\n${kept.add(items.join('\n'))}\n\n`; }) - .replace(/

    /giu, '\n\n') - .replace(//giu, '\n') - .replace(/<\/?(?:h[1-6]|div|span|small|table|tr|td|th|tbody|thead)[^>]*>/giu, '\n\n'); - - markdown = inlineMarkdown(markdown); - markdown = markdown.replace(/@@CODE_BLOCK_(\d+)@@/gu, (_match, rawIndex: string) => { - const index = Number(rawIndex); - return codeBlocks[index] ?? ''; - }); + .replace( + /]*)?>([\s\S]*?)<\/h[4-6]>/giu, + (_match, heading: string) => + `\n\n${kept.add(`#### ${collapseSpace(inlineMarkdown(heading, baseUrl, kept))}`)}\n\n`, + ) + .replace(/]*)?>/giu, '\n\n') + .replace(//giu, () => kept.add('
    ')) + .replace(/<\/?(?:h[1-6]|div|span|small|tr|td|th|tbody|thead)(?:\s+[^>]*)?>/giu, '\n\n'); - return normalizeMarkdown(markdown); + return kept.restore(normalizeMarkdown(inlineMarkdown(markdown, baseUrl, kept))); } -function inlineMarkdown(html: string): string { - let result = html - .replace(/]*>\s*([\s\S]*?)<\/code>\s*<\/a>/giu, (_match, code: string) => - codeSpan(code), +// A list item can hold several paragraphs and a code block, as collectgarbage's "count" option +// does. Its blocks are rendered like any fragment and indented under the bullet, which is how +// Markdown keeps them inside the item instead of running a code fence into the bullet's line. +function htmlListItem(html: string, baseUrl: string, kept: ProtectedMarkdown): string { + const blocks = kept.restore( + normalizeMarkdown(inlineMarkdown(html.replace(/]*)?>/giu, '\n\n'), baseUrl, kept)), + ); + return blocks + .split('\n') + .map((line, index) => (index === 0 ? `- ${line}` : line ? ` ${line}` : '')) + .join('\n'); +} + +// CommonMark only opens and closes emphasis next to non-space text, so "opt: " must become +// "**opt:** " rather than "**opt: **", which renders its asterisks literally. +function emphasize(marker: string, text: string): string { + const [, before = '', inner = '', after = ''] = + text.match(/^([ \t\r\n]*)([\s\S]*?)([ \t\r\n]*)$/u) ?? []; + return inner ? `${before}${marker}${inner}${marker}${after}` : text; +} + +// Upstream tables use their first row as the header, as ffi.abi's parameter table does. +function htmlTableToMarkdown(html: string, baseUrl: string, kept: ProtectedMarkdown): string { + const rows = [...html.matchAll(/]*)?>([\s\S]*?)<\/tr>/giu)].map((row) => + // GFM splits cells on every unescaped "|", code spans included, so the escape is applied to the + // cell's final text rather than to the prose around protected spans. Backslashes are escaped in + // the same pass, as the RST table converter does, so a "\" before a "|" cannot undo the escape. + [...(row[1] ?? '').matchAll(/]*)?>([\s\S]*?)<\/t[dh]>/giu)].map((cell) => + kept + .restore(collapseSpace(inlineMarkdown(cell[1] ?? '', baseUrl, kept))) + .replace(/[\\|]/gu, (character) => `\\${character}`), + ), + ); + const width = rows[0]?.length ?? 0; + if (width === 0 || rows.some((row) => row.length !== width)) { + throw new Error(`Unsupported upstream HTML table in ${baseUrl}`); + } + const line = (cells: string[]): string => `| ${cells.join(' | ')} |`; + return [ + line(rows[0] ?? []), + line(Array.from({ length: width }, () => '---')), + ...rows.slice(1).map(line), + ].join('\n'); +} + +function inlineMarkdown(html: string, baseUrl: string, kept: ProtectedMarkdown): string { + const link = (attributes: string, label: string): string => { + const href = attributes.match(/\bhref="([^"]*)"/u)?.[1]; + if (!label) return ''; + // The label is final Markdown already; protecting it keeps it from being decoded again. + if (!href) return kept.add(label); + return kept.add(`[${label}](${new URL(decodeHtml(href), baseUrl).href})`); + }; + const result = html + .replace( + /]*)>\s*<(code|tt)>([\s\S]*?)<\/\2>\s*<\/a>/giu, + (_match, attributes: string, _tag: string, code: string) => link(attributes, codeSpan(code)), ) - .replace(/]*>\s*([\s\S]*?)<\/tt>\s*<\/a>/giu, (_match, code: string) => - codeSpan(code), + .replace(/<(code|tt)>([\s\S]*?)<\/\1>/giu, (_match, _tag: string, code: string) => + kept.add(codeSpan(code)), ) - .replace(/([\s\S]*?)<\/code>/giu, (_match, code: string) => codeSpan(code)) - .replace(/([\s\S]*?)<\/tt>/giu, (_match, code: string) => codeSpan(code)) - .replace(/([\s\S]*?)<\/em>/giu, (_match, value: string) => `*${stripTags(value)}*`) - .replace(/([\s\S]*?)<\/b>/giu, (_match, value: string) => `**${stripTags(value)}**`) - .replace(/]*>([\s\S]*?)<\/a>/giu, (_match, value: string) => stripTags(value)); - result = stripTags(result); - return decodeHtml(result); + // Superscripts carry meaning ("m2e" is m·2^e) and render in VS Code hovers, so they + // are kept as HTML. They are protected before emphasis, which strips the tags it encloses. + .replace(//giu, () => kept.add('')) + .replace(/<\/sup>/giu, () => kept.add('')) + .replace(/([\s\S]*?)<\/em>/giu, (_match, value: string) => emphasize('*', stripTags(value))) + .replace(/([\s\S]*?)<\/b>/giu, (_match, value: string) => emphasize('**', stripTags(value))) + .replace(/]*)>([\s\S]*?)<\/a>/giu, (_match, attributes: string, value: string) => + link(attributes, collapseSpace(decodeHtml(stripTags(value)))), + ); + // A decoded "<" is text. Left bare, Markdown would read it as the start of an HTML tag, which + // editors strip, so it is written back as the entity, which Markdown renders as "<". The tags a + // hover should render are all still placeholders at this point. + return decodeHtml(stripTags(result)).replace(/ (LuaJIT lists alternative call forms +// that way) becomes a real line break instead of running the forms together. function htmlInlineToText(html: string): string { - return decodeHtml(stripTags(html)).replace(/\s+/gu, ' ').trim(); + return decodeHtml(stripTags(html.replace(//giu, '\n'))) + .split('\n') + .map(collapseSpace) + .filter(Boolean) + .join('\n'); } function stripTags(html: string): string { @@ -868,10 +1221,16 @@ function normalizePreText(html: string): string { } function codeSpan(html: string): string { - const text = decodeHtml(stripTags(html)).replace(/\s+/gu, ' ').trim(); + const text = collapseSpace(decodeHtml(stripTags(html))); return text ? `\`${text}\`` : ''; } +// Only source-formatting whitespace collapses. A published no-break space (U+00A0, "ISO C") is +// content and is kept, which the Unicode-aware \s class would not do. +function collapseSpace(value: string): string { + return value.replace(/[ \t\r\n]+/gu, ' ').trim(); +} + function normalizeMarkdown(markdown: string): string { return markdown .split(/(```[\s\S]*?```)/gu) @@ -902,35 +1261,47 @@ function normalizeMarkdown(markdown: string): string { .trim(); } -function decodeHtml(value: string): string { - const namedEntities: Record = { - amp: '&', - copy: '(C)', - gt: '>', - hellip: '...', - le: '<=', - lsquo: "'", - lt: '<', - mdash: '-', - middot: '.', - nbsp: ' ', - ndash: '-', - plusmn: '+/-', - quot: '"', - rarr: '->', - rsquo: "'", - sect: 'section', - }; +// Entities decode to the exact characters the page displays ("···", "§", "–", "≤"); an ASCII +// stand-in would change the published text, e.g. turn the vararg "···" into Lua's "...". HTML entity +// names are case-sensitive, and a name missing here fails generation instead of leaking "&name;". +const namedEntities: Readonly> = { + amp: '&', + apos: "'", + copy: '\u00A9', + ge: '\u2265', + gt: '>', + hellip: '\u2026', + laquo: '\u00AB', + ldquo: '\u201C', + le: '\u2264', + lsquo: '\u2018', + lt: '<', + mdash: '\u2014', + middot: '\u00B7', + nbsp: '\u00A0', + ndash: '\u2013', + pi: '\u03C0', + plusmn: '\u00B1', + quot: '"', + raquo: '\u00BB', + rarr: '\u2192', + rdquo: '\u201D', + rsquo: '\u2019', + sect: '\u00A7', + times: '\u00D7', +}; - return value.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/giu, (entity, rawName: string) => { - const name = rawName.toLowerCase(); - if (name.startsWith('#x')) { +export function decodeHtml(value: string): string { + return value.replace(/&(#[xX][0-9a-fA-F]+|#\d+|[A-Za-z]+);/gu, (entity, name: string) => { + if (name.startsWith('#x') || name.startsWith('#X')) { return String.fromCodePoint(Number.parseInt(name.slice(2), 16)); } if (name.startsWith('#')) { return String.fromCodePoint(Number.parseInt(name.slice(1), 10)); } - return namedEntities[name] ?? entity; + const decoded = namedEntities[name]; + if (decoded === undefined) throw new Error(`Unsupported HTML entity ${entity}`); + return decoded; }); } diff --git a/packages/tools/upstream-pins.json b/packages/tools/upstream-pins.json new file mode 100644 index 0000000..9b019ef --- /dev/null +++ b/packages/tools/upstream-pins.json @@ -0,0 +1,10 @@ +{ + "lua52": { + "url": "https://www.lua.org/ftp/lua-5.2.4.tar.gz", + "sha256": "b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b" + }, + "luajit": { + "repository": "LuaJIT/LuaJIT", + "commit": "c6ffc141a8762b41703f9287d63d93622a13dd8f" + } +} diff --git a/resources/api/CLAUDE.md b/resources/api/CLAUDE.md index 145cc1e..2de6921 100644 --- a/resources/api/CLAUDE.md +++ b/resources/api/CLAUDE.md @@ -6,5 +6,8 @@ - Set documentation state from the presence of source Markdown. Keep layout metadata independent of narrative text. Unsupported nonempty RST must fail with a useful source location. - Use the manifest's pinned revision for reproducible verification. A refresh to a new revision is - an explicit generated-data change. Do not refresh unrelated Lua/LuaJIT content during EEex work. + an explicit generated-data change. Do not refresh unrelated Lua/LuaJIT content during EEex work; + those inputs are pinned in `packages/tools/upstream-pins.json` and move only as their own change. +- Keep hover text exactly as published. Do not substitute characters, invent parameter names, or + leave links that cannot be followed from an editor; `tests/hover-fidelity.json` pins examples. - Exclude local game files from commits and release archives. Use synthetic fixtures in CI. diff --git a/resources/api/api-index.json b/resources/api/api-index.json index c619dea..0c67d04 100644 --- a/resources/api/api-index.json +++ b/resources/api/api-index.json @@ -26,13 +26,15 @@ { "id": "lua52", "title": "Lua 5.2", - "url": "https://www.lua.org/manual/5.2/", + "url": "https://www.lua.org/ftp/lua-5.2.4.tar.gz", + "sha256": "b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b", "licenseStatus": "allowed" }, { "id": "luajit", "title": "LuaJIT", - "url": "https://luajit.org/", + "url": "https://github.com/LuaJIT/LuaJIT/tree/c6ffc141a8762b41703f9287d63d93622a13dd8f/doc", + "commit": "c6ffc141a8762b41703f9287d63d93622a13dd8f", "licenseStatus": "allowed" }, { diff --git a/resources/api/sections/ee-game-lua-functions/C.json b/resources/api/sections/ee-game-lua-functions/C.json index f98be89..dae1309 100644 --- a/resources/api/sections/ee-game-lua-functions/C.json +++ b/resources/api/sections/ee-game-lua-functions/C.json @@ -26,7 +26,7 @@ ], "containerName": "C", "instanceName": "AddGold", - "documentationMarkdown": "Adds gold to the party\n\n**Parameters**\n\n- `string` *Gold* - string containing the numeric amount of gold to add to party\n\n**Example**\n\n```lua\nC:AddGold(\"1000\")\n```\n\n**See Also**\n\n[C:AddSpell](#C_AddSpell), [C:CreateItem](#C_CreateItem)", + "documentationMarkdown": "Adds gold to the party\n\n**Parameters**\n\n- `string` *Gold* - string containing the numeric amount of gold to add to party\n\n**Example**\n\n```lua\nC:AddGold(\"1000\")\n```\n\n**See Also**\n\n[C:AddSpell](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddSpell.rst#L1), [C:CreateItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddGold.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -47,7 +47,7 @@ ], "containerName": "C", "instanceName": "AddSpell", - "documentationMarkdown": "Adds a spell to the specified character\n\n**Parameters**\n\n- `string` *SpellName* - string containing the resource reference (ResRef) of the spell to add to character\n\n**Notes**\n\nSpell resource reference (ResRef) used in *SpellName* must be 8 characters or less and must be valid.\n\nA character must be selected for this to work.\n\nTo obtain the spell codes (ResRef) required for this command, please use Near Infinity to browse .spl files, or visit the specific spell page from the [BGII Wiki](https://baldursgate.fandom.com/wiki/Spells_(Baldur%27s_Gate_II)) and look for the spell code in the right hand info bar - **exclude** the .spl extension when using the spell code.\n\n**Example**\n\n```lua\nC:AddSpell(\"SPWI112\")\n```\n\n**See Also**\n\n[C:CreateItem](#C_CreateItem), [C:AddGold](#C_AddGold)", + "documentationMarkdown": "Adds a spell to the specified character\n\n**Parameters**\n\n- `string` *SpellName* - string containing the resource reference (ResRef) of the spell to add to character\n\n**Notes**\n\nSpell resource reference (ResRef) used in *SpellName* must be 8 characters or less and must be valid.\n\nA character must be selected for this to work.\n\nTo obtain the spell codes (ResRef) required for this command, please use Near Infinity to browse .spl files, or visit the specific spell page from the [BGII Wiki](https://baldursgate.fandom.com/wiki/Spells_(Baldur%27s_Gate_II)) and look for the spell code in the right hand info bar - **exclude** the .spl extension when using the spell code.\n\n**Example**\n\n```lua\nC:AddSpell(\"SPWI112\")\n```\n\n**See Also**\n\n[C:CreateItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L1), [C:AddGold](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddGold.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddSpell.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -68,7 +68,7 @@ ], "containerName": "C", "instanceName": "AdvanceRealTime", - "documentationMarkdown": "Advance time\n\n**Parameters**\n\n- `integer` *GameTime* - amount of time in milliseconds to advance\n\n**Notes**\n\nCan be used to trigger banters and love talks etc\n\n**Example**\n\nSpeed up 1 hour real time:\n\n```lua\nC:AdvanceRealTime(60000)\n```\n\n**See Also**\n\n[C:GetGlobal](#C_GetGlobal), [C:SetGlobal](#C_SetGlobal)", + "documentationMarkdown": "Advance time\n\n**Parameters**\n\n- `integer` *GameTime* - amount of time in milliseconds to advance\n\n**Notes**\n\nCan be used to trigger banters and love talks etc\n\n**Example**\n\nSpeed up 1 hour real time:\n\n```lua\nC:AdvanceRealTime(60000)\n```\n\n**See Also**\n\n[C:GetGlobal](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_GetGlobal.rst#L1), [C:SetGlobal](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetGlobal.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AdvanceRealTime.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -89,7 +89,7 @@ ], "containerName": "C", "instanceName": "CreateCreature", - "documentationMarkdown": "Creates the creature specified\n\n**Parameters**\n\n- `string` *CreatureName* - string containing resource reference (ResRef) of creature to spawn (create) \n\n**Notes**\n\nCreature resource reference (ResRef) used in *CreatureName* must be 8 characters or less and must be valid.\n\nThis spawns a creature to the center of the screen (or nearest valid point). If you're spawning a creature you know will be hostile, you may want to pause the game before entering this command for the safety of your party.\n\n**Example**\n\nSpawn a gibberling using `GIBBER.CRE`\n\n```lua\nC:CreateCreature(\"GIBBER\")\n```\n\n**See Also**\n\n[C:CreateItem](#C_CreateItem)", + "documentationMarkdown": "Creates the creature specified\n\n**Parameters**\n\n- `string` *CreatureName* - string containing resource reference (ResRef) of creature to spawn (create) \n\n**Notes**\n\nCreature resource reference (ResRef) used in *CreatureName* must be 8 characters or less and must be valid.\n\nThis spawns a creature to the center of the screen (or nearest valid point). If you're spawning a creature you know will be hostile, you may want to pause the game before entering this command for the safety of your party.\n\n**Example**\n\nSpawn a gibberling using `GIBBER.CRE`\n\n```lua\nC:CreateCreature(\"GIBBER\")\n```\n\n**See Also**\n\n[C:CreateItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateCreature.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -110,7 +110,7 @@ ], "containerName": "C", "instanceName": "CreateEngine", - "documentationMarkdown": "Unknown - seems to start a new single `0` or multi `1` player game\n\n**Parameters**\n\n- `integer` *nEngine* - engine id number to create\n\n**Notes**\n\nUnknown\n\n**Example**\n\n```lua\nC:CreateEngine(0)\n```\n\n**See Also**\n\n[C:new](#C_new)", + "documentationMarkdown": "Unknown - seems to start a new single `0` or multi `1` player game\n\n**Parameters**\n\n- `integer` *nEngine* - engine id number to create\n\n**Notes**\n\nUnknown\n\n**Example**\n\n```lua\nC:CreateEngine(0)\n```\n\n**See Also**\n\n[C:new](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_new.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateEngine.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -121,7 +121,7 @@ "name": "C:CreateItem", "kind": "method", "sourceSection": "ee-game-lua-functions", - "signature": "C:CreateItem(ItemName, Usage)", + "signature": "C:CreateItem(ItemName,Usage)", "parameters": [ { "type": "string", @@ -136,7 +136,7 @@ ], "containerName": "C", "instanceName": "CreateItem", - "documentationMarkdown": "Create an item\n\n**Parameters**\n\n- `string` *ItemName* - string containing resource reference (ResRef) of the item to create\n- `integer` *Usage* - amount / charges (optional parameter)\n\n**Notes**\n\nItem resource reference (ResRef) used in *ItemName* must be 8 characters or less and must be valid.\n\nThis spawns an item, based on its item file name, or a stack of the same item, in the inventory of the current party leader.\n\n**Examples**\n\nCreate a long sword:\n\n```lua\nC:CreateItem(\"SW1H01\")\n```\n\nCreate 10 potions of cure light wounds:\n\n```lua\nC:CreateItem(\"POTN08\", 10)\n```\n\nGreenstone Amulet with 50 charges:\n\n```lua\nC:CreateItem(\"amul17\", 50)\n```\n\n**See Also**\n\n[C:CreateCreature](#C_CreateCreature), [C:AddGold](#C_AddGold), [C:AddSpell](#C_AddSpell)", + "documentationMarkdown": "Create an item\n\n**Parameters**\n\n- `string` *ItemName* - string containing resource reference (ResRef) of the item to create\n- `integer` *Usage* - amount / charges (optional parameter)\n\n**Notes**\n\nItem resource reference (ResRef) used in *ItemName* must be 8 characters or less and must be valid.\n\nThis spawns an item, based on its item file name, or a stack of the same item, in the inventory of the current party leader.\n\n**Examples**\n\nCreate a long sword:\n\n```lua\nC:CreateItem(\"SW1H01\")\n```\n\nCreate 10 potions of cure light wounds:\n\n```lua\nC:CreateItem(\"POTN08\", 10)\n```\n\nGreenstone Amulet with 50 charges:\n\n```lua\nC:CreateItem(\"amul17\", 50)\n```\n\n**See Also**\n\n[C:CreateCreature](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateCreature.rst#L1), [C:AddGold](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddGold.rst#L1), [C:AddSpell](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddSpell.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -157,7 +157,7 @@ ], "containerName": "C", "instanceName": "CreateVEFVidCell", - "documentationMarkdown": "Create VEFVidCell\n\n**Parameters**\n\n- `string` *VidCell* - string containing resource reference (ResRef) of VEFVidCell to create\n\n**Notes**\n\nUnknown\n\n**Example**\n\n```lua\nC:CreateVEFVidCell(\"????????\")\n```\n\n**See Also**\n\n[C:AddSpell](#C_AddSpell), [C:CreateItem](#C_CreateItem)", + "documentationMarkdown": "Create VEFVidCell\n\n**Parameters**\n\n- `string` *VidCell* - string containing resource reference (ResRef) of VEFVidCell to create\n\n**Notes**\n\nUnknown\n\n**Example**\n\n```lua\nC:CreateVEFVidCell(\"????????\")\n```\n\n**See Also**\n\n[C:AddSpell](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddSpell.rst#L1), [C:CreateItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateVEFVidCell.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -171,7 +171,7 @@ "signature": "C:DisplayAllBAMFiles()", "containerName": "C", "instanceName": "DisplayAllBAMFiles", - "documentationMarkdown": "Display all BAM files\n\n**Parameters**\n\nNone\n\n**Notes**\n\nDisplay all BAM files\n\n**Example**\n\n```lua\nC:DisplayAllBAMFiles()\n```\n\n**See Also**\n\n[C:TestAllDialog](#C_TestAllDialog)", + "documentationMarkdown": "Display all BAM files\n\n**Parameters**\n\nNone\n\n**Notes**\n\nDisplay all BAM files\n\n**Example**\n\n```lua\nC:DisplayAllBAMFiles()\n```\n\n**See Also**\n\n[C:TestAllDialog](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_TestAllDialog.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_DisplayAllBAMFiles.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -192,7 +192,7 @@ ], "containerName": "C", "instanceName": "DisplayText", - "documentationMarkdown": "Displays the specified text on screen\n\n**Parameters**\n\n- `string` *text* - string containing text to display\n\n**Notes**\n\n**Example**\n\n```lua\nC:DisplayText(\"This is some text to display\")\n```\n\n**See Also**\n\n[C:StrrefOn](#C_StrrefOn), [C:StrrefOff](#C_StrrefOff)", + "documentationMarkdown": "Displays the specified text on screen\n\n**Parameters**\n\n- `string` *text* - string containing text to display\n\n**Notes**\n\n**Example**\n\n```lua\nC:DisplayText(\"This is some text to display\")\n```\n\n**See Also**\n\n[C:StrrefOn](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_StrrefOn.rst#L1), [C:StrrefOff](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_StrrefOff.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_DisplayText.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -206,7 +206,7 @@ "signature": "C:EnableCheatKeys()", "containerName": "C", "instanceName": "EnableCheatKeys", - "documentationMarkdown": "Enables cheat keys\n\n**Parameters**\n\nNone\n\n**Notes**\n\nThe following cheat key combination are available once cheat keys has been enabled:\n\n| **Key** | **Notes** |\n| --- | --- |\n| CTRL+1 | Change armor level animation |\n| CTRL+2 | Fade screen to black |\n| CTRL+3 | Fade screen to normal |\n| CTRL+4 | Highlight background-interactive objects |\n| CTRL+5 | Displays animation information |\n| CTRL+6 | Change avatar animation previous |\n| CTRL+7 | Change avatar animation next |\n| CTRL+8 | Highlights the text boxes |\n| CTRL+9 | Highlight the sprites |\n| CTRL+0 | Unknown |\n| CTRL+A | Change Selected Animation Sequence |\n| CTRL+C | Jump to next chapter |\n| CTRL+D | Display some numbers (framerate related?) |\n| CTRL+E | Alters visual range |\n| CTRL+F | Turn the character |\n| CTRL+G | Display loaded area ref |\n| CTRL+I | Play Selected Animation effect |\n| CTRL+J | Teleport to cursor position |\n| CTRL+K | Creature under cursor kick out party |\n| CTRL+L | Play Selected Animation effect |\n| CTRL+M | (Followed by ENTER) Debug Dump |\n| CTRL+N | Freeze screen for 5 seconds |\n| CTRL+O | (Followed by ENTER) Write Debug To Log |\n| CTRL+P | Center screen on selected character |\n| CTRL+Q | Creature under cursor joins party |\n| CTRL+R | Heals character under cursor |\n| CTRL+S | Change Selected Animation Sequence |\n| CTRL+T | Advances game time by 1 hour |\n| CTRL+U | Highlight doors and ground objects |\n| CTRL+X | Extended position information |\n| CTRL+Y | Kills creature under cursor |\n\nIn addition CTRL+8 during character creation will set all attributes to 18 (STR 18/00)\n\nCTRL+SHIFT+Z while hovering over a character will grant every spell file in the game - may crash due to invalid spells\n\n**Example**\n\n```lua\nC:EnableCheatKeys()\n```\n\n**See Also**\n\n[createCharScreen:OnCheatyMcCheaterson](#createCharScreen_OnCheatyMcCheaterson)", + "documentationMarkdown": "Enables cheat keys\n\n**Parameters**\n\nNone\n\n**Notes**\n\nThe following cheat key combination are available once cheat keys has been enabled:\n\n| **Key** | **Notes** |\n| --- | --- |\n| CTRL+1 | Change armor level animation |\n| CTRL+2 | Fade screen to black |\n| CTRL+3 | Fade screen to normal |\n| CTRL+4 | Highlight background-interactive objects |\n| CTRL+5 | Displays animation information |\n| CTRL+6 | Change avatar animation previous |\n| CTRL+7 | Change avatar animation next |\n| CTRL+8 | Highlights the text boxes |\n| CTRL+9 | Highlight the sprites |\n| CTRL+0 | Unknown |\n| CTRL+A | Change Selected Animation Sequence |\n| CTRL+C | Jump to next chapter |\n| CTRL+D | Display some numbers (framerate related?) |\n| CTRL+E | Alters visual range |\n| CTRL+F | Turn the character |\n| CTRL+G | Display loaded area ref |\n| CTRL+I | Play Selected Animation effect |\n| CTRL+J | Teleport to cursor position |\n| CTRL+K | Creature under cursor kick out party |\n| CTRL+L | Play Selected Animation effect |\n| CTRL+M | (Followed by ENTER) Debug Dump |\n| CTRL+N | Freeze screen for 5 seconds |\n| CTRL+O | (Followed by ENTER) Write Debug To Log |\n| CTRL+P | Center screen on selected character |\n| CTRL+Q | Creature under cursor joins party |\n| CTRL+R | Heals character under cursor |\n| CTRL+S | Change Selected Animation Sequence |\n| CTRL+T | Advances game time by 1 hour |\n| CTRL+U | Highlight doors and ground objects |\n| CTRL+X | Extended position information |\n| CTRL+Y | Kills creature under cursor |\n\nIn addition CTRL+8 during character creation will set all attributes to 18 (STR 18/00)\n\nCTRL+SHIFT+Z while hovering over a character will grant every spell file in the game - may crash due to invalid spells\n\n**Example**\n\n```lua\nC:EnableCheatKeys()\n```\n\n**See Also**\n\n[createCharScreen:OnCheatyMcCheaterson](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_OnCheatyMcCheaterson.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_EnableCheatKeys.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -227,7 +227,7 @@ ], "containerName": "C", "instanceName": "Eval", - "documentationMarkdown": "Evaluate a string containing script actions for a character\n\n**Parameters**\n\n- `string` *Script* - string containing script actions to evaluate\n\n**Notes**\n\nThe whole string can be enclosed into single quotes (') so that double quotes can still be used within the script action.\n\nSee [BG(2)EE Script Actions](https://gibberlings3.github.io/iesdp/scripting/actions/bgeeactions.htm) for a list of script actions.\n\n**Example**\n\nMove Cernd to the specified location using evaluated script actions.\n\n```lua\nC:Eval(\"ActionOverride(\\\"Cernd\\\",MoveGlobal(\\\"AR0406\\\",Myself,[1368.1922]))\") \n```\n\n**See Also**\n\n[C:Exec](#C_Exec)", + "documentationMarkdown": "Evaluate a string containing script actions for a character\n\n**Parameters**\n\n- `string` *Script* - string containing script actions to evaluate\n\n**Notes**\n\nThe whole string can be enclosed into single quotes (') so that double quotes can still be used within the script action.\n\nSee [BG(2)EE Script Actions](https://gibberlings3.github.io/iesdp/scripting/actions/bgeeactions.htm) for a list of script actions.\n\n**Example**\n\nMove Cernd to the specified location using evaluated script actions.\n\n```lua\nC:Eval(\"ActionOverride(\\\"Cernd\\\",MoveGlobal(\\\"AR0406\\\",Myself,[1368.1922]))\") \n```\n\n**See Also**\n\n[C:Exec](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_Exec.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_Eval.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -248,7 +248,7 @@ ], "containerName": "C", "instanceName": "Exec", - "documentationMarkdown": "Execute console commands contained in the specified file\n\n**Parameters**\n\n- `string` *File* - string containing filename to execute\n\n**Notes**\n\n**Example**\n\nExecute all the commands in the file `test.txt`:\n\n```lua\nC:Eval(\"test.txt\")\n```\n\n**See Also**\n\n[C:Eval](#C_Eval)", + "documentationMarkdown": "Execute console commands contained in the specified file\n\n**Parameters**\n\n- `string` *File* - string containing filename to execute\n\n**Notes**\n\n**Example**\n\nExecute all the commands in the file `test.txt`:\n\n```lua\nC:Eval(\"test.txt\")\n```\n\n**See Also**\n\n[C:Eval](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_Eval.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_Exec.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -262,7 +262,7 @@ "signature": "C:ExploreArea()", "containerName": "C", "instanceName": "ExploreArea", - "documentationMarkdown": "Reveals the entire map for the current area\n\n**Parameters**\n\nNone\n\n**Notes**\n\nThis doesn't remove the fog of war; if a creature is out of your field of vision it will still remain hidden\n\n**Example**\n\n```lua\nC:ExploreArea()\n```\n\n**See Also**\n\n[C:MoveToArea](#C_MoveToArea)", + "documentationMarkdown": "Reveals the entire map for the current area\n\n**Parameters**\n\nNone\n\n**Notes**\n\nThis doesn't remove the fog of war; if a creature is out of your field of vision it will still remain hidden\n\n**Example**\n\n```lua\nC:ExploreArea()\n```\n\n**See Also**\n\n[C:MoveToArea](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_MoveToArea.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_ExploreArea.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -273,7 +273,7 @@ "name": "C:GetGlobal", "kind": "method", "sourceSection": "ee-game-lua-functions", - "signature": "C:GetGlobal(VariableName, AreaName)", + "signature": "C:GetGlobal(VariableName,AreaName)", "parameters": [ { "type": "string", @@ -293,7 +293,7 @@ ], "containerName": "C", "instanceName": "GetGlobal", - "documentationMarkdown": "Gets a global variable value\n\n**Parameters**\n\n- `string` *VariableName* - string containing the name of the global variable to retrieve the value of\n- `string` *AreaName* - string containing the resource reference (ResRef) of the area in which the variable is stored, or `\"GLOBAL\"` for all.\n\n**Returns**\n\nValue of the variable specified\n\n**Notes**\n\nArea resource reference (ResRef) used in *AreaName* must be 8 characters or less and must be valid.\n\n**Examples**\n\nReturns the value of `CHAPTER` variable:\n\n```lua\nC:GetGlobal(\"CHAPTER\", \"GLOBAL\") Will display current GLOBAL setting\n```\n\nReturns the value of `TestValue` variable stored in area `AR0600.ARE`:\n\n```lua\nC:GetGlobal(\"TestValue\", \"AR0600\")\n```\n\n**See Also**\n\n[C:SetGlobal](#C_SetGlobal)", + "documentationMarkdown": "Gets a global variable value\n\n**Parameters**\n\n- `string` *VariableName* - string containing the name of the global variable to retrieve the value of\n- `string` *AreaName* - string containing the resource reference (ResRef) of the area in which the variable is stored, or `\"GLOBAL\"` for all.\n\n**Returns**\n\nValue of the variable specified\n\n**Notes**\n\nArea resource reference (ResRef) used in *AreaName* must be 8 characters or less and must be valid.\n\n**Examples**\n\nReturns the value of `CHAPTER` variable:\n\n```lua\nC:GetGlobal(\"CHAPTER\", \"GLOBAL\") Will display current GLOBAL setting\n```\n\nReturns the value of `TestValue` variable stored in area `AR0600.ARE`:\n\n```lua\nC:GetGlobal(\"TestValue\", \"AR0600\")\n```\n\n**See Also**\n\n[C:SetGlobal](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetGlobal.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_GetGlobal.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -307,7 +307,7 @@ "signature": "C:LogMessages()", "containerName": "C", "instanceName": "LogMessages", - "documentationMarkdown": "Enables logging output to console\n\n**Parameters**\n\nNone\n\n**Notes**\n\nSee [C:LogSet](#C_LogSet) to output logging to a file instead\n\n**Example**\n\n```lua\nC:LogMessages()\n```\n\n**See Also**\n\n[C:LogSet](#C_LogSet)", + "documentationMarkdown": "Enables logging output to console\n\n**Parameters**\n\nNone\n\n**Notes**\n\nSee [C:LogSet](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_LogSet.rst#L1) to output logging to a file instead\n\n**Example**\n\n```lua\nC:LogMessages()\n```\n\n**See Also**\n\n[C:LogSet](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_LogSet.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_LogMessages.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -328,7 +328,7 @@ ], "containerName": "C", "instanceName": "LogSet", - "documentationMarkdown": "Sets logging to a file instead of to console if logging is enabled\n\n**Parameters**\n\n- `string` *LogFile* - string containing log filename\n\n**Notes**\n\nSee [C:LogMessages](#C_LogMessages) to enable logging\n\n**Example**\n\n```lua\nC:LogSet(\"output.txt\")\n```\n\n**See Also**\n\n[C:LogMessages](#C_LogMessages)", + "documentationMarkdown": "Sets logging to a file instead of to console if logging is enabled\n\n**Parameters**\n\n- `string` *LogFile* - string containing log filename\n\n**Notes**\n\nSee [C:LogMessages](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_LogMessages.rst#L1) to enable logging\n\n**Example**\n\n```lua\nC:LogSet(\"output.txt\")\n```\n\n**See Also**\n\n[C:LogMessages](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_LogMessages.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_LogSet.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -349,7 +349,7 @@ ], "containerName": "C", "instanceName": "MoveToArea", - "documentationMarkdown": "Move the selected characters to the area specified\n\n**Parameters**\n\n- `string` *Area* - string containing the resource reference (ResRef) of the area to move players to\n\n**Notes**\n\nArea resource reference (ResRef) used in *Area* must be 8 characters or less and must be valid.\n\n**Example**\n\nMove the selected players to the Friendly Arms Inn `AR2300.ARE`:\n\n```lua\nC:MoveToArea(\"AR2300\")\n```\n\n**See Also**\n\n[C:ExploreArea](#C_ExploreArea), [C:Eval](#C_Eval)", + "documentationMarkdown": "Move the selected characters to the area specified\n\n**Parameters**\n\n- `string` *Area* - string containing the resource reference (ResRef) of the area to move players to\n\n**Notes**\n\nArea resource reference (ResRef) used in *Area* must be 8 characters or less and must be valid.\n\n**Example**\n\nMove the selected players to the Friendly Arms Inn `AR2300.ARE`:\n\n```lua\nC:MoveToArea(\"AR2300\")\n```\n\n**See Also**\n\n[C:ExploreArea](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_ExploreArea.rst#L1), [C:Eval](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_Eval.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_MoveToArea.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -363,7 +363,7 @@ "signature": "C:new()", "containerName": "C", "instanceName": "new", - "documentationMarkdown": "Create a new instance of the CLUAConsole\n\n**Parameters**\n\nNone\n\n**Notes**\n\nThis is used in the game engine to assign `C:` to CLUAConsole:\n\n```lua\nC = CLUAConsole:new()\n```\n\nNot recommended to use this\n\n**Example**\n\n```lua\nC:new()\n```\n\n**See Also**\n\n[C:CreateEngine](#C_CreateEngine)", + "documentationMarkdown": "Create a new instance of the CLUAConsole\n\n**Parameters**\n\nNone\n\n**Notes**\n\nThis is used in the game engine to assign `C:` to CLUAConsole:\n\n```lua\nC = CLUAConsole:new()\n```\n\nNot recommended to use this\n\n**Example**\n\n```lua\nC:new()\n```\n\n**See Also**\n\n[C:CreateEngine](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateEngine.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_new.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -405,7 +405,7 @@ ], "containerName": "C", "instanceName": "PlayMovie", - "documentationMarkdown": "Plays the specified movie\n\n**Parameters**\n\n- `string` *Movie* - string containing resource reference (ResRef) of the movie to play\n\n**Notes**\n\nMovie resource reference (ResRef) used in *Movie* must be 8 characters or less and must be valid.\n\nPlays WebM file format movies (.wbm)\n\n**Example**\n\nPlays `LOGO.WBM`:\n\n```lua\nC:PlayMovie(\"LOGO\")\n```\n\n**See Also**\n\n[C:PlaySound](#C_PlaySound)", + "documentationMarkdown": "Plays the specified movie\n\n**Parameters**\n\n- `string` *Movie* - string containing resource reference (ResRef) of the movie to play\n\n**Notes**\n\nMovie resource reference (ResRef) used in *Movie* must be 8 characters or less and must be valid.\n\nPlays WebM file format movies (.wbm)\n\n**Example**\n\nPlays `LOGO.WBM`:\n\n```lua\nC:PlayMovie(\"LOGO\")\n```\n\n**See Also**\n\n[C:PlaySound](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_PlaySound.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_PlayMovie.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -426,7 +426,7 @@ ], "containerName": "C", "instanceName": "PlaySound", - "documentationMarkdown": "Plays the specified sound\n\n**Parameters**\n\n- `string` *Sound* - string containing resource reference (ResRef) of the sound, music, voices to play\n\n**Notes**\n\nSound resource reference (ResRef) used in *Sound* must be 8 characters or less and must be valid.\n\nPlays WAV file format audio (.wav)\n\n**Example**\n\nPlay cow moo sound `COW01.WAV`:\n\n```lua\nC:PlaySound(\"COW01\")\n```\n\n**See Also**\n\n[C:PlayMovie](#C_PlayMovie)", + "documentationMarkdown": "Plays the specified sound\n\n**Parameters**\n\n- `string` *Sound* - string containing resource reference (ResRef) of the sound, music, voices to play\n\n**Notes**\n\nSound resource reference (ResRef) used in *Sound* must be 8 characters or less and must be valid.\n\nPlays WAV file format audio (.wav)\n\n**Example**\n\nPlay cow moo sound `COW01.WAV`:\n\n```lua\nC:PlaySound(\"COW01\")\n```\n\n**See Also**\n\n[C:PlayMovie](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_PlayMovie.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_PlaySound.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -461,7 +461,7 @@ ], "containerName": "C", "instanceName": "SetCurrentXP", - "documentationMarkdown": "Sets the experience points (XP) of the selected character\n\n**Parameters**\n\n- `string` *ExperiencePoints* - string containing the numeric value of experience points to set for selected character\n\n**Notes**\n\nThis sets the total, rather than adding a value to your current experience points. A level up will be triggered for characters that qualify, based on the experince points table for the character's class level.\n\n**Example**\n\nSet current character at 1000 experience points:\n\n```lua\nC:SetCurrentXP(\"1000\")\n```\n\n**See Also**\n\n[C:AddGold](#C_AddGold), [C:AddSpell](#C_AddSpell), [C:CreateItem](#C_CreateItem)", + "documentationMarkdown": "Sets the experience points (XP) of the selected character\n\n**Parameters**\n\n- `string` *ExperiencePoints* - string containing the numeric value of experience points to set for selected character\n\n**Notes**\n\nThis sets the total, rather than adding a value to your current experience points. A level up will be triggered for characters that qualify, based on the experince points table for the character's class level.\n\n**Example**\n\nSet current character at 1000 experience points:\n\n```lua\nC:SetCurrentXP(\"1000\")\n```\n\n**See Also**\n\n[C:AddGold](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddGold.rst#L1), [C:AddSpell](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_AddSpell.rst#L1), [C:CreateItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetCurrentXP.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -472,7 +472,7 @@ "name": "C:SetGlobal", "kind": "method", "sourceSection": "ee-game-lua-functions", - "signature": "C:SetGlobal(VariableName, AreaName, Value)", + "signature": "C:SetGlobal(VariableName,AreaName,Value)", "parameters": [ { "type": "string", @@ -492,7 +492,7 @@ ], "containerName": "C", "instanceName": "SetGlobal", - "documentationMarkdown": "Set a global variable to the specified value\n\n**Parameters**\n\n- `string` *VariableName* - string containing the name of the global variable to set\n- `string` *AreaName* - string containing the resource reference (ResRef) of the area in which the variable is stored, or `\"GLOBAL\"` for all.\n- `integer` *Value* - new value to set the variable to\n\n**Notes**\n\nArea resource reference (ResRef) used in *AreaName* must be 8 characters or less and must be valid.\n\n**Examples**\n\nSet the value of `CHAPTER` to `2` (and advance to Chapter 2):\n\n```lua\nC:SetGlobal(\"CHAPTER\", \"GLOBAL\", 2)\n```\n\nSets the value of `TestValue` variable stored in area `AR0600.ARE` to `16`:\n\n```lua\nC:GetGlobal(\"TestValue\", \"AR0600\", 16)\n```\n\n**See Also**\n\n[C:GetGlobal](#C_GetGlobal)", + "documentationMarkdown": "Set a global variable to the specified value\n\n**Parameters**\n\n- `string` *VariableName* - string containing the name of the global variable to set\n- `string` *AreaName* - string containing the resource reference (ResRef) of the area in which the variable is stored, or `\"GLOBAL\"` for all.\n- `integer` *Value* - new value to set the variable to\n\n**Notes**\n\nArea resource reference (ResRef) used in *AreaName* must be 8 characters or less and must be valid.\n\n**Examples**\n\nSet the value of `CHAPTER` to `2` (and advance to Chapter 2):\n\n```lua\nC:SetGlobal(\"CHAPTER\", \"GLOBAL\", 2)\n```\n\nSets the value of `TestValue` variable stored in area `AR0600.ARE` to `16`:\n\n```lua\nC:GetGlobal(\"TestValue\", \"AR0600\", 16)\n```\n\n**See Also**\n\n[C:GetGlobal](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_GetGlobal.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetGlobal.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -513,7 +513,7 @@ ], "containerName": "C", "instanceName": "SetWaterAlpha", - "documentationMarkdown": "Sets the alpha blend level for water transparency\n\n**Parameters**\n\n- `integer` *AlphaLevel* - value to set for alpha blending of water transparency\n\n**Notes**\n\nNot tested / verified\n\n**Example**\n\n```lua\nC:SetWaterAlpha(100)\n```\n\n**See Also**\n\n[C:SetWeather](#C_SetWeather)", + "documentationMarkdown": "Sets the alpha blend level for water transparency\n\n**Parameters**\n\n- `integer` *AlphaLevel* - value to set for alpha blending of water transparency\n\n**Notes**\n\nNot tested / verified\n\n**Example**\n\n```lua\nC:SetWaterAlpha(100)\n```\n\n**See Also**\n\n[C:SetWeather](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetWeather.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetWaterAlpha.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -534,7 +534,7 @@ ], "containerName": "C", "instanceName": "SetWeather", - "documentationMarkdown": "Sets the current weather\n\n**Parameters**\n\n- `string` *WeatherID* - string containing the weather id\n\n**Notes**\n\nNot tester / verified: may be an `integer` value for *WeatherID*\n\nValid values to set can be found in `WEATHER.IDS`:\n\n```lua\n0 NOWEATHER\n1 RAIN\n2 SNOW\n3 FOG\n```\n\n**Example**\n\n```lua\nC:SetWeather(\"1\")\n```\n\n**See Also**\n\n[C:SetWaterAlpha](#C_SetWaterAlpha)", + "documentationMarkdown": "Sets the current weather\n\n**Parameters**\n\n- `string` *WeatherID* - string containing the weather id\n\n**Notes**\n\nNot tester / verified: may be an `integer` value for *WeatherID*\n\nValid values to set can be found in `WEATHER.IDS`:\n\n```lua\n0 NOWEATHER\n1 RAIN\n2 SNOW\n3 FOG\n```\n\n**Example**\n\n```lua\nC:SetWeather(\"1\")\n```\n\n**See Also**\n\n[C:SetWaterAlpha](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetWaterAlpha.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_SetWeather.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -569,7 +569,7 @@ "signature": "C:StrrefOff()", "containerName": "C", "instanceName": "StrrefOff", - "documentationMarkdown": "Strings are not displayed with their associated string reference (StrRef) id\n\n**Parameters**\n\nNone\n\n**Notes**\n\n**Example**\n\n```lua\nC:StrrefOff()\n```\n\n**See Also**\n\n[C:StrrefOn](#C_StrrefOn), [C:DisplayText](#C_DisplayText)", + "documentationMarkdown": "Strings are not displayed with their associated string reference (StrRef) id\n\n**Parameters**\n\nNone\n\n**Notes**\n\n**Example**\n\n```lua\nC:StrrefOff()\n```\n\n**See Also**\n\n[C:StrrefOn](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_StrrefOn.rst#L1), [C:DisplayText](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_DisplayText.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_StrrefOff.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -583,7 +583,7 @@ "signature": "C:StrrefOn()", "containerName": "C", "instanceName": "StrrefOn", - "documentationMarkdown": "Strings are displayed with their associated string reference (StrRef) id\n\n**Parameters**\n\nNone\n\n**Notes**\n\n**Example**\n\n```lua\nC:StrrefOn()\n```\n\n**See Also**\n\n[C:StrrefOff](#C_StrrefOff), [C:DisplayText](#C_DisplayText)", + "documentationMarkdown": "Strings are displayed with their associated string reference (StrRef) id\n\n**Parameters**\n\nNone\n\n**Notes**\n\n**Example**\n\n```lua\nC:StrrefOn()\n```\n\n**See Also**\n\n[C:StrrefOff](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_StrrefOff.rst#L1), [C:DisplayText](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_DisplayText.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_StrrefOn.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -597,7 +597,7 @@ "signature": "C:TestAllDialog()", "containerName": "C", "instanceName": "TestAllDialog", - "documentationMarkdown": "Lists all dialog file in the game, and checks for errors\n\n**Parameters**\n\nNone\n\n**Notes**\n\n**Example**\n\n```lua\nC:TestAllDialog()\n```\n\n**See Also**\n\n[C:DisplayAllBAMFiles](#C_DisplayAllBAMFiles)", + "documentationMarkdown": "Lists all dialog file in the game, and checks for errors\n\n**Parameters**\n\nNone\n\n**Notes**\n\n**Example**\n\n```lua\nC:TestAllDialog()\n```\n\n**See Also**\n\n[C:DisplayAllBAMFiles](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_DisplayAllBAMFiles.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_TestAllDialog.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -608,7 +608,7 @@ "name": "C:WorkshopUpload", "kind": "method", "sourceSection": "ee-game-lua-functions", - "signature": "C:WorkshopUpload(ModuleName, ModulePath)", + "signature": "C:WorkshopUpload(ModuleName,ModulePath)", "parameters": [ { "type": "string", @@ -644,7 +644,7 @@ ], "containerName": "C", "instanceName": "WriteScript", - "documentationMarkdown": "Output scripts to directory\n\n**Parameters**\n\n- `string` *Folder* - string containing filepath of folder to output scripts to\n\n**Notes**\n\nIf the mouse is over a creature, the command will evaluate the scripts attached to that creature. Otherwise it will evaluate the area scripts.\n\n**Example**\n\nOutput the script results to a folder called DebugScripts in the root of your game install:\n\n```lua\nC:WriteScript(\"DebugScripts\")\n```\n\n**See Also**\n\n[C:Exec](#C_Exec)", + "documentationMarkdown": "Output scripts to directory\n\n**Parameters**\n\n- `string` *Folder* - string containing filepath of folder to output scripts to\n\n**Notes**\n\nIf the mouse is over a creature, the command will evaluate the scripts attached to that creature. Otherwise it will evaluate the area scripts.\n\n**Example**\n\nOutput the script results to a folder called DebugScripts in the root of your game install:\n\n```lua\nC:WriteScript(\"DebugScripts\")\n```\n\n**See Also**\n\n[C:Exec](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_Exec.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_WriteScript.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-lua-functions/Infinity.json b/resources/api/sections/ee-game-lua-functions/Infinity.json index 677d14b..5012ea6 100644 --- a/resources/api/sections/ee-game-lua-functions/Infinity.json +++ b/resources/api/sections/ee-game-lua-functions/Infinity.json @@ -17,7 +17,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_ActivateInventory()", - "documentationMarkdown": "Opens and activates the inventory screen and updates stats for the character\n\n**Notes**\n\nCalls [CScreenInventory::ResetGroundPile](#CScreenInventoryResetGroundPile) and [CScreenInventory::UpdateLua](#CScreenInventoryUpdateLua), which in turn calls [CGameSprite::UpdateLuaStats](#CGameSpriteUpdateLuaStats)\n\nUpdates ability scores, stats, skills, equiptment, paperdoll and items for display in the inventory screen for the current character\n\n**Example**\n\n```lua\nInfinity_ActivateInventory()\n```\n\n---", + "documentationMarkdown": "Opens and activates the inventory screen and updates stats for the character\n\n**Notes**\n\nCalls [CScreenInventory::ResetGroundPile](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L2045) and [CScreenInventory::UpdateLua](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L2335), which in turn calls [CGameSprite::UpdateLuaStats](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameSprite/index.rst#L15322)\n\nUpdates ability scores, stats, skills, equiptment, paperdoll and items for display in the inventory screen for the current character\n\n**Example**\n\n```lua\nInfinity_ActivateInventory()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L311", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -36,7 +36,7 @@ "description": "0 based index of the character to level up" } ], - "documentationMarkdown": "Opens and activates the level up dialog\n\n**Parameters**\n\n- `integer` *index* - 0 based index of the character to level up\n\n**Notes**\n\nCalls [CScreenCharacter::OnLevelUpButtonClick](#CScreenCharacterOnLevelUpButtonClick) to open and activate the level up dialog\n\n**Example**\n\nEnables the level up button if character 5 (index 4) can level up, and on clicking the enabled button, the `action` opens the level up dialog via [Infinity_ActivateRecord](#Infinity_ActivateRecord):\n\n```lua\nbutton\n{\n enabled \"Infinity_CanLevelUp(4)\"\n bam GUIOSW\n area 0 382 44 44\n sequence 0\n action \"Infinity_ActivateRecord(4)\"\n pulse 1\n}\n```\n\n---", + "documentationMarkdown": "Opens and activates the level up dialog\n\n**Parameters**\n\n- `integer` *index* - 0 based index of the character to level up\n\n**Notes**\n\nCalls [CScreenCharacter::OnLevelUpButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCharacter/index.rst#L1904) to open and activate the level up dialog\n\n**Example**\n\nEnables the level up button if character 5 (index 4) can level up, and on clicking the enabled button, the `action` opens the level up dialog via [Infinity_ActivateRecord](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L329):\n\n```lua\nbutton\n{\n enabled \"Infinity_CanLevelUp(4)\"\n bam GUIOSW\n area 0 382 44 44\n sequence 0\n action \"Infinity_ActivateRecord(4)\"\n pulse 1\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L338", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -47,7 +47,7 @@ "name": "Infinity_AddDLC", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_AddDLC(name, image, title, description, ios_name, purchased, android_name)", + "signature": "Infinity_AddDLC(name,image,title,description,ios_name,purchased,android_name)", "parameters": [ { "type": "string", @@ -85,7 +85,7 @@ "description": "text or ResRef ?" } ], - "documentationMarkdown": "Add DLC to game\n\n**Parameters**\n\n- `string` *name* - text or ResRef ?\n- `string` *image* - DLC image - ResRef to image ?\n- `integer` *title* - long pointer to string or StrRef ?\n- `integer` *description* - long pointer to string or StrRef ?\n- `string` *ios_name* - text or ResRef ?\n- `integer` *purchased* - date time stamp ?\n- `string` *android_name* - text or ResRef ?\n\n**Notes**\n\nFills in a [CDLC](#CDLC) structure from the parameters passed and calls the DLCInsert function, which is defined as:\n\n```lua\nvoid __cdecl DLCInsert(CDLC toInsert);\n```\n\nOnly available on ios or android builds ?\n\nSee also [Infinity_AddDLCContent](#Infinity_AddDLCContent)\n\n**Example**\n\nNo known example\n\n---", + "documentationMarkdown": "Add DLC to game\n\n**Parameters**\n\n- `string` *name* - text or ResRef ?\n- `string` *image* - DLC image - ResRef to image ?\n- `integer` *title* - long pointer to string or StrRef ?\n- `integer` *description* - long pointer to string or StrRef ?\n- `string` *ios_name* - text or ResRef ?\n- `integer` *purchased* - date time stamp ?\n- `string` *android_name* - text or ResRef ?\n\n**Notes**\n\nFills in a [CDLC](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CD/index.rst#L27) structure from the parameters passed and calls the DLCInsert function, which is defined as:\n\n```lua\nvoid __cdecl DLCInsert(CDLC toInsert);\n```\n\nOnly available on ios or android builds ?\n\nSee also [Infinity_AddDLCContent](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L407)\n\n**Example**\n\nNo known example", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L376", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -96,7 +96,7 @@ "name": "Infinity_AddDLCContent", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_AddDLCContent(name, dlc_id)", + "signature": "Infinity_AddDLCContent(name,dlc_id)", "parameters": [ { "type": "string", @@ -109,7 +109,7 @@ "description": "dlc id" } ], - "documentationMarkdown": "Add DLC content to game\n\n**Parameters**\n\n- `string` *name* - text or ResRef ?\n- `integer` *dlc_id* - dlc id\n\n**Notes**\n\nFills in a [CDLC_Content](#CDLC_Content) structure from the parameters passed and calls the DLCInsertContent function, which is defined as:\n\n```lua\nvoid __cdecl DLCInsertContent(CDLC_Content toInsert);\n```\n\nOnly available on ios or android builds ?\n\nSee also [Infinity_AddDLC](#Infinity_AddDLC)\n\n**Example**\n\nNo known example\n\n---", + "documentationMarkdown": "Add DLC content to game\n\n**Parameters**\n\n- `string` *name* - text or ResRef ?\n- `integer` *dlc_id* - dlc id\n\n**Notes**\n\nFills in a [CDLC_Content](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CD/index.rst#L55) structure from the parameters passed and calls the DLCInsertContent function, which is defined as:\n\n```lua\nvoid __cdecl DLCInsertContent(CDLC_Content toInsert);\n```\n\nOnly available on ios or android builds ?\n\nSee also [Infinity_AddDLC](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L367)\n\n**Example**\n\nNo known example", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L416", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -121,7 +121,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_CanCloudSave()", - "documentationMarkdown": "Determines if cloud saves are supported by the platform, for example Steam.\n\n**Return Value**\n\nReturns a `boolean` value: `true` if cloud saves are supported on the platform or `false` otherwise\n\n**Notes**\n\nCalls CPlatform::IsPlatformServiceConnected and reads [CBaldurChitin](#CBaldurChitin).m_cChitin => [CChitin](#CChitin).cSteam => CSteam.m_isSteamConnected\n\n**Example**\n\n```lua\nif Infinity_CanCloudSave() == false and (toggleTitles[1][3] == 60 or toggleTitles[2][3] == 60) then\n removeOptionFromList(toggleTitles,60)\nend\n```\n\n---", + "documentationMarkdown": "Determines if cloud saves are supported by the platform, for example Steam.\n\n**Return Value**\n\nReturns a `boolean` value: `true` if cloud saves are supported on the platform or `false` otherwise\n\n**Notes**\n\nCalls CPlatform::IsPlatformServiceConnected and reads [CBaldurChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L24).m_cChitin => [CChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L151).cSteam => CSteam.m_isSteamConnected\n\n**Example**\n\n```lua\nif Infinity_CanCloudSave() == false and (toggleTitles[1][3] == 60 or toggleTitles[2][3] == 60) then\n removeOptionFromList(toggleTitles,60)\nend\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L452", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -140,7 +140,7 @@ "description": "0 based index of the character to check if level up is available for" } ], - "documentationMarkdown": "Determines if the specified character can level up - has enough experience points to qualify for a level up.\n\n**Parameters**\n\n- `integer` *index* - 0 based index of the character to check if level up is available for\n\n**Return Value**\n\nReturns a `boolean` value: `true` if character can level up or `false` otherwise\n\n**Notes**\n\n**Example**\n\nEnables the level up button if character 5 (index 4) can level up, and on clicking the enabled button, the `action` opens the level up dialog via [Infinity_ActivateRecord](#Infinity_ActivateRecord):\n\n```lua\nbutton\n{\n enabled \"Infinity_CanLevelUp(4)\"\n bam GUIOSW\n area 0 382 44 44\n sequence 0\n action \"Infinity_ActivateRecord(4)\"\n pulse 1\n}\n```\n\n---", + "documentationMarkdown": "Determines if the specified character can level up - has enough experience points to qualify for a level up.\n\n**Parameters**\n\n- `integer` *index* - 0 based index of the character to check if level up is available for\n\n**Return Value**\n\nReturns a `boolean` value: `true` if character can level up or `false` otherwise\n\n**Notes**\n\n**Example**\n\nEnables the level up button if character 5 (index 4) can level up, and on clicking the enabled button, the `action` opens the level up dialog via [Infinity_ActivateRecord](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L329):\n\n```lua\nbutton\n{\n enabled \"Infinity_CanLevelUp(4)\"\n bam GUIOSW\n area 0 382 44 44\n sequence 0\n action \"Infinity_ActivateRecord(4)\"\n pulse 1\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L482", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -151,7 +151,7 @@ "name": "Infinity_ChangeOption", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_ChangeOption(option_id, value, panel_id)", + "signature": "Infinity_ChangeOption(option_id,value,panel_id)", "parameters": [ { "type": "integer", @@ -169,7 +169,7 @@ "description": "id of the panel" } ], - "documentationMarkdown": "Set the value of an option in a panel\n\n**Parameters**\n\n- `integer` *option_id* - id of the option to set\n- `integer` *value* - value to set the option to\n- `integer` *panel_id* - id of the panel\n\n**Notes**\n\nCalls CGameOptions::SetOption\n\n**Example**\n\nGet the value of option id `1` in panel id `8` (`panelID` = `8`) to a variable `ttDelaySLDR` and then set option id `1` in panel id `8` (`panelID` = `8`) to the value of the `ttDelaySLDR` variable\n\n```lua\npanelID = 8\nttDelaySLDR = Infinity_GetOption(1, panelID)\nInfinity_ChangeOption( 1, ttDelaySLDR, panelID)\n```\n\nSee also [Infinity_GetOption](#Infinity_GetOption)\n\n---", + "documentationMarkdown": "Set the value of an option in a panel\n\n**Parameters**\n\n- `integer` *option_id* - id of the option to set\n- `integer` *value* - value to set the option to\n- `integer` *panel_id* - id of the panel\n\n**Notes**\n\nCalls CGameOptions::SetOption\n\n**Example**\n\nGet the value of option id `1` in panel id `8` (`panelID` = `8`) to a variable `ttDelaySLDR` and then set option id `1` in panel id `8` (`panelID` = `8`) to the value of the `ttDelaySLDR` variable\n\n```lua\npanelID = 8\nttDelaySLDR = Infinity_GetOption(1, panelID)\nInfinity_ChangeOption( 1, ttDelaySLDR, panelID)\n```\n\nSee also [Infinity_GetOption](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2140)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L524", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -188,7 +188,7 @@ "description": "slot number that item occupies" } ], - "documentationMarkdown": "Checks lore skill for identifying an item in an inventory slot\n\n**Parameters**\n\n- `integer` *nSlot* - slot number that item occupies\n\n**Notes**\n\nCalls the [CScreenInventory::CheckItemIdentify](#CScreenInventoryCheckItemIdentify) method.\n\nIf character has a high enough lore skill value then the item specified in the inventory slot *nSlot* is identified, the item's name and description is updated in the inventory slot and in any quick slot buttons that it currently occupies.\n\n**Example**\n\n```lua\nfunction showItemDescriptionInventory(slotName)\n if(characters[id].equipment[slotName].empty ~= 0) then\n return\n end\n \n selectedSlot = slotName\n \n Infinity_CheckItemIdentify(characters[id].equipment[slotName].id)\n showItemDescription(characters[id].equipment[slotName].item, 0)\nend\n```\n\n---", + "documentationMarkdown": "Checks lore skill for identifying an item in an inventory slot\n\n**Parameters**\n\n- `integer` *nSlot* - slot number that item occupies\n\n**Notes**\n\nCalls the [CScreenInventory::CheckItemIdentify](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L392) method.\n\nIf character has a high enough lore skill value then the item specified in the inventory slot *nSlot* is identified, the item's name and description is updated in the inventory slot and in any quick slot buttons that it currently occupies.\n\n**Example**\n\n```lua\nfunction showItemDescriptionInventory(slotName)\n if(characters[id].equipment[slotName].empty ~= 0) then\n return\n end\n \n selectedSlot = slotName\n \n Infinity_CheckItemIdentify(characters[id].equipment[slotName].id)\n showItemDescription(characters[id].equipment[slotName].item, 0)\nend\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L560", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -199,13 +199,13 @@ "name": "Infinity_ClickItem", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_ClickItem(arg1)", + "signature": "Infinity_ClickItem(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L599", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -224,7 +224,7 @@ "description": "name of the script (for the object) to click the ground at" } ], - "documentationMarkdown": "Clicks the ground at the location of the object in the world\n\n**Parameters**\n\n- `string` *ScriptName* - name of the script (for the object) to click the ground at\n\n**Return Value**\n\nNone\n\n**Notes**\n\n**Example**\n\nClick the ground at `MINSC.BS`:\n\n```lua\nInfinity_ClickObjectInWorld(\"Minsc\")\n```\n\n---", + "documentationMarkdown": "Clicks the ground at the location of the object in the world\n\n**Parameters**\n\n- `string` *ScriptName* - name of the script (for the object) to click the ground at\n\n**Return Value**\n\nNone\n\n**Notes**\n\n**Example**\n\nClick the ground at `MINSC.BS`:\n\n```lua\nInfinity_ClickObjectInWorld(\"Minsc\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L629", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -236,7 +236,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_ClickScreen()", - "documentationMarkdown": "Clicks the center of the viewscreen\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nNone\n\n**Example**\n\n```lua\nInfinity_ClickScreen()\n```\n\n---", + "documentationMarkdown": "Clicks the center of the viewscreen\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nNone\n\n**Example**\n\n```lua\nInfinity_ClickScreen()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L662", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -247,7 +247,7 @@ "name": "Infinity_ClickWorldAt", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_ClickWorldAt(x, y)", + "signature": "Infinity_ClickWorldAt(x,y)", "parameters": [ { "type": "integer", @@ -260,7 +260,7 @@ "description": "y coordinate to click world at" } ], - "documentationMarkdown": "Clicks the ground at the specified coordinates, relative to the viewscreen\n\n**Parameters**\n\n- `integer` *x* - x coordinate to click world at\n- `integer` *y* - y coordinate to click world at\n\n**Return Value**\n\nNone\n\n**Notes**\n\n> \"Appears entirely broken. It seems to always click the top-left of the current viewscreen\"\n>\n> --[Bubb](https://forums.beamdog.com/discussion/comment/1065334/#Comment_1065334)\n\nIf your mouse cursor is not in the world (such as on the ActionBar or on a SideBar), it clicks on the world coordinates at `0`, `0`\n\nIf you don't include [Infinity_HoverMouseOver](#Infinity_HoverMouseOver) before [Infinity_ClickWorldAt](#Infinity_ClickWorldAt), it will click at world coordinates `0`, `0` by assuming your cursor is over the interface.\n\nYou can force a click in the game world like so:\n\n```lua\nInfinity_HoverMouseOver(x,y)\nInfinity_ClickWorldAt(x,y)\n```\n\n**Example**\n\n```lua\nInfinity_ClickWorldAt(100,200)\n```\n\n---", + "documentationMarkdown": "Clicks the ground at the specified coordinates, relative to the viewscreen\n\n**Parameters**\n\n- `integer` *x* - x coordinate to click world at\n- `integer` *y* - y coordinate to click world at\n\n**Return Value**\n\nNone\n\n**Notes**\n\n> \"Appears entirely broken. It seems to always click the top-left of the current viewscreen\"\n>\n> --[Bubb](https://forums.beamdog.com/discussion/comment/1065334/#Comment_1065334)\n\nIf your mouse cursor is not in the world (such as on the ActionBar or on a SideBar), it clicks on the world coordinates at `0`, `0`\n\nIf you don't include [Infinity_HoverMouseOver](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2644) before [Infinity_ClickWorldAt](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L681), it will click at world coordinates `0`, `0` by assuming your cursor is over the interface.\n\nYou can force a click in the game world like so:\n\n```lua\nInfinity_HoverMouseOver(x,y)\nInfinity_ClickWorldAt(x,y)\n```\n\n**Example**\n\n```lua\nInfinity_ClickWorldAt(100,200)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L690", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -272,7 +272,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_CloseEngine()", - "documentationMarkdown": "Close active engine - unknown\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nNone\n\n**Notes**\n\n- Reads [CBaldurChitin](#CBaldurChitin).m_pEngineJournal => CScreenJournal*\n- Pushes [CBaldurChitin](#CBaldurChitin).m_pEngineWorld => CScreenWorld*\n- Reads [CScreenJournal](#CScreenJournal).m_cBaldurEngine => [CBaldurEngine](#CBaldurEngine).m_cWarp => [CWarp](#CWarp).m_cObject => [CObject](#CObject).vfptr\n- Calls [CObject](#CObject).vfptr + `0x28` = [CWarp::EngineDeactivated](#CWarpEngineDeactivated) ?\n\nUnknown as to the purpose of this function - best leave it alone.\n\n**Example**\n\nNo known examples\n\n---", + "documentationMarkdown": "Close active engine - unknown\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nNone\n\n**Notes**\n\n- Reads [CBaldurChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L24).m_pEngineJournal => CScreenJournal*\n- Pushes [CBaldurChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L24).m_pEngineWorld => CScreenWorld*\n- Reads [CScreenJournal](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1181).m_cBaldurEngine => [CBaldurEngine](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L140).m_cWarp => [CWarp](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CW/index.rst#L24).m_cObject => [CObject](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CO/index.rst#L93).vfptr\n- Calls [CObject](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CO/index.rst#L93).vfptr + `0x28` = [CWarp::EngineDeactivated](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CWarp/index.rst#L581) ?\n\nUnknown as to the purpose of this function - best leave it alone.\n\n**Example**\n\nNo known examples", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L737", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -283,7 +283,7 @@ "name": "Infinity_DestroyAnimation", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_DestroyAnimation(instanceId, templateName)", + "signature": "Infinity_DestroyAnimation(instanceId,templateName)", "parameters": [ { "type": "integer", @@ -296,7 +296,7 @@ "description": "name of the template to remove" } ], - "documentationMarkdown": "Remove and free memory for the UI items that match the template name and instance id specified\n\n**Parameters**\n\n- `integer` *instanceId* - instance id\n- `string` *templateName* - name of the template to remove\n\n**Return Value**\n\nNone\n\n**Notes**\n\nCalls uiRemoveFromTemplate function, defined as:\n\n```lua\nvoid __cdecl uiRemoveFromTemplate(CString sTemplate, int id);\n```\n\n**Example**\n\nNo known examples\n\n---", + "documentationMarkdown": "Remove and free memory for the UI items that match the template name and instance id specified\n\n**Parameters**\n\n- `integer` *instanceId* - instance id\n- `string` *templateName* - name of the template to remove\n\n**Return Value**\n\nNone\n\n**Notes**\n\nCalls uiRemoveFromTemplate function, defined as:\n\n```lua\nvoid __cdecl uiRemoveFromTemplate(CString sTemplate, int id);\n```\n\n**Example**\n\nNo known examples", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L773", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -307,14 +307,14 @@ "name": "Infinity_DisplayString", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_DisplayString(arg1)", + "signature": "Infinity_DisplayString(...)", "parameters": [ { - "name": "arg1", + "name": "...", "description": "special, see notes" } ], - "documentationMarkdown": "Displays to the screen the passed content as a string\n\n**Parameters**\n\n- *...* - special, see notes\n\n**Return Value**\n\nNone\n\n**Notes**\n\nSimilar to printf function, this function can accept a variable amount of parameters. Each parameter passed is evaluated, converted to a string if necessary and concatenated to form the final string to display on the screen.\n\nParameters that are:\n\n- Integers - converted to a string.\n- Variables - evaluated and the value of the variable is taken and converted to a string. \n- Functions - evaluated and the result used in other nested functions and/or evaluated to a string.\n\nParamters supports simple math and other lua functions.\n\nYou can inline concatenate strings and variables by using `..` between the string and variable and/or the next parameter, for example the `class` variable is concatenated to the string:\n\n```lua\nInfinity_DisplayString(\"WARNING: unrecognized class argument: \" .. class)\n```\n\n**Examples**\n\nDisplay to screen using inline concatenate using 2 parameters, both using a string and a variable to evaluate:\n\n```lua\nInfinity_DisplayString(\"config: \"..config..\", state: \"..state)\n```\n\nDisplay to screen the result of simple math: (result is displayed as `20000001`):\n\n```lua\nInfinity_DisplayString(20000000 + 1)\n```\n\n---", + "documentationMarkdown": "Displays to the screen the passed content as a string\n\n**Parameters**\n\n- *...* - special, see notes\n\n**Return Value**\n\nNone\n\n**Notes**\n\nSimilar to printf function, this function can accept a variable amount of parameters. Each parameter passed is evaluated, converted to a string if necessary and concatenated to form the final string to display on the screen.\n\nParameters that are:\n\n- Integers - converted to a string.\n- Variables - evaluated and the value of the variable is taken and converted to a string. \n- Functions - evaluated and the result used in other nested functions and/or evaluated to a string.\n\nParamters supports simple math and other lua functions.\n\nYou can inline concatenate strings and variables by using `..` between the string and variable and/or the next parameter, for example the `class` variable is concatenated to the string:\n\n```lua\nInfinity_DisplayString(\"WARNING: unrecognized class argument: \" .. class)\n```\n\n**Examples**\n\nDisplay to screen using inline concatenate using 2 parameters, both using a string and a variable to evaluate:\n\n```lua\nInfinity_DisplayString(\"config: \"..config..\", state: \"..state)\n```\n\nDisplay to screen the result of simple math: (result is displayed as `20000001`):\n\n```lua\nInfinity_DisplayString(20000000 + 1)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L809", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -332,7 +332,7 @@ "description": "full filepath to lua filename to load and process" } ], - "documentationMarkdown": "Loads and executes the lua file specified\n\n**Parameters**\n\n- *filename* - full filepath to lua filename to load and process\n\n**Notes**\n\nThe `includes.lua` file used by the game engine uses [Infinity_DoFile](#Infinity_DoFile) to setup the lua environement for the `UI.MENU` and provides support for running any lua file that begins with `M_` found in the games `override` folder. The `M_` lua files are designated for modders.\n\n**Example**\n\nLoad and execute the lua file: `MyLuaFile.lua`:\n\n```lua\nInfinity_DoFile(\"MyLuaFile\")\n```\n\n---", + "documentationMarkdown": "Loads and executes the lua file specified\n\n**Parameters**\n\n- *filename* - full filepath to lua filename to load and process\n\n**Notes**\n\nThe `includes.lua` file used by the game engine uses [Infinity_DoFile](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L853) to setup the lua environement for the `UI.MENU` and provides support for running any lua file that begins with `M_` found in the games `override` folder. The `M_` lua files are designated for modders.\n\n**Example**\n\nLoad and execute the lua file: `MyLuaFile.lua`:\n\n```lua\nInfinity_DoFile(\"MyLuaFile\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L862", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -343,7 +343,7 @@ "name": "Infinity_EnterEdit", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_EnterEdit(newText, oldText)", + "signature": "Infinity_EnterEdit(newText,oldText)", "parameters": [ { "type": "string", @@ -356,7 +356,7 @@ "description": "string containing the old text content to replace" } ], - "documentationMarkdown": "Enters new text into a UI edit control\n\n**Parameters**\n\n- `string` *newText* - string containing the new text content\n- `string` *oldText* - string containing the old text content to replace\n\n**Return Value**\n\nNone\n\n**Notes**\n\nSearches through all UI edit controls looking for one that has a string containing *oldText* and replaces it with the *newText* string.\n\nReads [uiItem](#uiItem).edit => [uiItem::edit>](#uiItem::edit>).var to compare against *oldText*, if it matches then it is replaced with *newText*\n\nNot tested or verified\n\n**Example**\n\n```lua\nInfinity_EnterEdit(\"New text to replace\",\"This is a test\")\n```\n\n---", + "documentationMarkdown": "Enters new text into a UI edit control\n\n**Parameters**\n\n- `string` *newText* - string containing the new text content\n- `string` *oldText* - string containing the old text content to replace\n\n**Return Value**\n\nNone\n\n**Notes**\n\nSearches through all UI edit controls looking for one that has a string containing *oldText* and replaces it with the *newText* string.\n\nReads [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).edit => [uiItem::edit](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L280).var to compare against *oldText*, if it matches then it is replaced with *newText*\n\nNot tested or verified\n\n**Example**\n\n```lua\nInfinity_EnterEdit(\"New text to replace\",\"This is a test\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L892", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -375,7 +375,7 @@ "description": "the string reference (StrRef) id to fetch" } ], - "documentationMarkdown": "Returns the string for the string reference id specified\n\n**Parameters**\n\n- `integer` *StrRef* - the string reference (StrRef) id to fetch\n\n**Return Value**\n\nReturns the string for the StrRef id specified in the *StrRef* parameter\n\n**Notes**\n\nCalls the [CTlkTable::Fetch](#CTlkTableFetch) method to fetch the StrRef string into a [STR_RES](#STR_RES) structure and pushes [STR_RES](#STR_RES).szText => CString.m_pchData onto the lua stack.\n\n**Example**\n\nReturns the string for StrRef `38848` (*\"Greetings, good customer. A pearl to you.\"*):\n\n> pearl = Infinity_FetchString(38848)\n\n---", + "documentationMarkdown": "Returns the string for the string reference id specified\n\n**Parameters**\n\n- `integer` *StrRef* - the string reference (StrRef) id to fetch\n\n**Return Value**\n\nReturns the string for the StrRef id specified in the *StrRef* parameter\n\n**Notes**\n\nCalls the [CTlkTable::Fetch](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTlkTable/index.rst#L159) method to fetch the StrRef string into a [STR_RES](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/Other/index.rst#L706) structure and pushes [STR_RES](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/Other/index.rst#L706).szText => CString.m_pchData onto the lua stack.\n\n**Example**\n\nReturns the string for StrRef `38848` (*\"Greetings, good customer. A pearl to you.\"*):\n\n> pearl = Infinity_FetchString(38848)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L930", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -386,7 +386,7 @@ "name": "Infinity_FindItemWithBam", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_FindItemWithBam(BamResRef, Sequence)", + "signature": "Infinity_FindItemWithBam(BamResRef,Sequence)", "parameters": [ { "type": "string", @@ -399,7 +399,7 @@ "description": "the bam sequence to match as well (optional)" } ], - "documentationMarkdown": "Find a UI control that has the specified bam resource reference\n\n**Parameters**\n\n- `string` - *BamResRef* - the resource reference (ResRef) to search for that matches an existing UI control's bam ResRef\n- `integer` - *Sequence* - the bam sequence to match as well (optional)\n\n**Return Value**\n\nReturns userdata version of the item (a pointer to the [uiItem](#uiItem) structure of the matched UI control or a lua `NIL`)\n\nSee notes for further details.\n\n**Notes**\n\nSearches through all UI controls from the main stack menu and linked list of UI controls:\n\n- Reads [uiMenu](#uiMenu).items for an array of pointers. Each pointer in the array is a [uiItem](#uiItem) structure. \n\n- Reads offset `0x98`: [uiItem](#uiItem).bam => [uiItem::bam>](#uiItem::bam>).resref\n\n- If the [uiItem::bam>](#uiItem::bam>).resref field is `0` then the process looks for next uiItem in the linked list to process: reads [uiItem](#uiItem).next field (offset `0x22C`) and repeats the same step above by reading the [uiItem::bam>](#uiItem::bam>).resref field. If the [uiItem](#uiItem).next field is `0` then the next pointer in the array of pointers from [uiMenu](#uiMenu).items is read and repeats the same step above by reading the [uiItem::bam>](#uiItem::bam>).resref field.\n\n- If the [uiItem::bam>](#uiItem::bam>).resref field is not `0` then it converts the field value (a [uiVariant](#uiVariant) type field) to a string. This string is a ResRef. This is then used in comparison with the *BamResRef* ResRef string parameter.\n\n- If the ResRef strings compared match, and the *Sequence* parameter is **not** specified, then the pointer the [uiItem](#uiItem) structure of the currently matched UI control, is pushed onto the lua stack and the function exits. \n\n- If the ResRef strings compared match, and the *Sequence* parameter is specified and matches the value in the [uiItem::bam>](#uiItem::bam>).sequence field, then the pointer to the [uiItem](#uiItem) structure of the currently matched UI control, is pushed onto the lua stack and the function exits. \n\n- If the ResRef strings compared match, and the *Sequence* parameter does **not** match the value in the [uiItem::bam>](#uiItem::bam>).sequence field, then the [uiItem](#uiItem).slot => [uiItem::slot>](#uiItem::slot>).icon field (a [uiVariant](#uiVariant) type) is read, the value converted to a ResRef string and compared to the *BamResRef* string parameter. If this comparison matches then the pointer to the [uiItem](#uiItem) structure of the currently matched UI control, is pushed onto the lua stack and the function exits.\n\n- If the ResRef strings compared do **not** match, then the [uiItem](#uiItem).slot => [uiItem::slot>](#uiItem::slot>).icon field (a [uiVariant](#uiVariant) type) is read, the value converted to a ResRef string and compared to the *BamResRef* string parameter. If this comparison matches then the pointer to the [uiItem](#uiItem) structure of the currently matched UI control, is pushed onto the lua stack and the function exits.\n\n- If the ResRef strings compared do **not** match, and there is a valid [uiItem](#uiItem).next then the search and comparison process continues.\n\n- If the ResRef strings compared do **not** match, and there is a no valid [uiItem](#uiItem).next, but there is another pointer in array of pointers found at [uiMenu](#uiMenu).items then the search and comparison process continues.\n\n- If the ResRef strings compared do **not** match and there are no more [uiItem](#uiItem) (via [uiItem](#uiItem).next or [uiMenu](#uiMenu).items) then a lua nil is pushed to the lua stack and the function exits.\n\nIt is unknown how to exactly use this function as there are no known examples.\n\n**Example**\n\nFind the UI control that uses sequence `3` of `GUIOSTLM.BAM` (*which is the reform party button*)\n\n```lua\nreformpartycontrol = Infinity_FindItemWithBam(\"GUIOSTLM\",3)\n```\n\n---", + "documentationMarkdown": "Find a UI control that has the specified bam resource reference\n\n**Parameters**\n\n- `string` - *BamResRef* - the resource reference (ResRef) to search for that matches an existing UI control's bam ResRef\n- `integer` - *Sequence* - the bam sequence to match as well (optional)\n\n**Return Value**\n\nReturns userdata version of the item (a pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the matched UI control or a lua `NIL`)\n\nSee notes for further details.\n\n**Notes**\n\nSearches through all UI controls from the main stack menu and linked list of UI controls:\n\n- Reads [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items for an array of pointers. Each pointer in the array is a [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure. \n\n- Reads offset `0x98`: [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).bam => [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).resref\n\n- If the [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).resref field is `0` then the process looks for next uiItem in the linked list to process: reads [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next field (offset `0x22C`) and repeats the same step above by reading the [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).resref field. If the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next field is `0` then the next pointer in the array of pointers from [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items is read and repeats the same step above by reading the [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).resref field.\n\n- If the [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).resref field is not `0` then it converts the field value (a [uiVariant](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L630) type field) to a string. This string is a ResRef. This is then used in comparison with the *BamResRef* ResRef string parameter.\n\n- If the ResRef strings compared match, and the *Sequence* parameter is **not** specified, then the pointer the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the currently matched UI control, is pushed onto the lua stack and the function exits. \n\n- If the ResRef strings compared match, and the *Sequence* parameter is specified and matches the value in the [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).sequence field, then the pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the currently matched UI control, is pushed onto the lua stack and the function exits. \n\n- If the ResRef strings compared match, and the *Sequence* parameter does **not** match the value in the [uiItem::bam](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L199).sequence field, then the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).slot => [uiItem::slot](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L499).icon field (a [uiVariant](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L630) type) is read, the value converted to a ResRef string and compared to the *BamResRef* string parameter. If this comparison matches then the pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the currently matched UI control, is pushed onto the lua stack and the function exits.\n\n- If the ResRef strings compared do **not** match, then the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).slot => [uiItem::slot](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L499).icon field (a [uiVariant](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L630) type) is read, the value converted to a ResRef string and compared to the *BamResRef* string parameter. If this comparison matches then the pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the currently matched UI control, is pushed onto the lua stack and the function exits.\n\n- If the ResRef strings compared do **not** match, and there is a valid [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next then the search and comparison process continues.\n\n- If the ResRef strings compared do **not** match, and there is a no valid [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next, but there is another pointer in array of pointers found at [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items then the search and comparison process continues.\n\n- If the ResRef strings compared do **not** match and there are no more [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) (via [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next or [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items) then a lua nil is pushed to the lua stack and the function exits.\n\nIt is unknown how to exactly use this function as there are no known examples.\n\n**Example**\n\nFind the UI control that uses sequence `3` of `GUIOSTLM.BAM` (*which is the reform party button*)\n\n```lua\nreformpartycontrol = Infinity_FindItemWithBam(\"GUIOSTLM\",3)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L962", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -418,7 +418,7 @@ "description": "the text to search for that matches an existing UI control's text" } ], - "documentationMarkdown": "Find a UI control that has the specified text\n\n**Parameters**\n\n- `string` *OriginalText* - the text to search for that matches an existing UI control's text\n\n**Return Value**\n\nReturns userdata version of the item (a pointer to the [uiItem](#uiItem) structure of the matched UI control or a lua `NIL`)\n\nSee notes for further details.\n\n**Notes**\n\nSearches through all UI controls from the main stack menu and linked list of UI controls:\n\n- Reads [uiMenu](#uiMenu).items for an array of pointers. Each pointer in the array is a [uiItem](#uiItem) structure. \n\n- Reads 140 bytes of the [uiItem](#uiItem) structure into a local buffer and checks offset `0x70` of the local buffer, which corresponds to the [uiItem](#uiItem).text => [uiItem::text>](#uiItem::text>).text field. \n\n- If the [uiItem::text>](#uiItem::text>).text field is `0` then the process looks for next uiItem in the linked list to process: reads [uiItem](#uiItem).next field (offset `0x22C`) and repeats the same step above by reading the [uiItem::text>](#uiItem::text>).text field. If the [uiItem](#uiItem).next field is `0` then the next pointer in the array of pointers from [uiMenu](#uiMenu).items is read and repeats the same step above by reading the [uiItem::text>](#uiItem::text>).text field.\n\n- If the [uiItem::text>](#uiItem::text>).text field is not `0` then it converts the field value (a [uiVariant](#uiVariant) type field) to an integer. This integer is a string reference (StrRef) id from the TLK table. The (StrRef) string is loaded into a buffer and this is then used in comparison with the *OriginalText* string parameter.\n\n- If the strings compared match, then the pointer to the [uiItem](#uiItem) structure of the currently matched UI control, is pushed onto the lua stack and the function exits. \n\n- If the strings compared do **not** match, and there is a valid [uiItem](#uiItem).next then the search and comparison process continues.\n\n- If the strings compared do **not** match, and there is a no valid [uiItem](#uiItem).next, but there is another pointer in array of pointers found at [uiMenu](#uiMenu).items then the search and comparison process continues.\n\n- If the strings compared do **not** match and there are no more [uiItem](#uiItem) (via [uiItem](#uiItem).next or [uiMenu](#uiMenu).items) then a lua nil is pushed to the lua stack and the function exits.\n\nIt is unknown how to exactly use this function as there are no known examples.\n\n**Example**\n\n```lua\n--]\nFind the text control that has \"Hello\" \n--[\n\nhellocontrol = Infinity_FindItemWithText(\"Hello\")\n```\n\n---", + "documentationMarkdown": "Find a UI control that has the specified text\n\n**Parameters**\n\n- `string` *OriginalText* - the text to search for that matches an existing UI control's text\n\n**Return Value**\n\nReturns userdata version of the item (a pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the matched UI control or a lua `NIL`)\n\nSee notes for further details.\n\n**Notes**\n\nSearches through all UI controls from the main stack menu and linked list of UI controls:\n\n- Reads [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items for an array of pointers. Each pointer in the array is a [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure. \n\n- Reads 140 bytes of the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure into a local buffer and checks offset `0x70` of the local buffer, which corresponds to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).text => [uiItem::text](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L520).text field. \n\n- If the [uiItem::text](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L520).text field is `0` then the process looks for next uiItem in the linked list to process: reads [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next field (offset `0x22C`) and repeats the same step above by reading the [uiItem::text](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L520).text field. If the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next field is `0` then the next pointer in the array of pointers from [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items is read and repeats the same step above by reading the [uiItem::text](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L520).text field.\n\n- If the [uiItem::text](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L520).text field is not `0` then it converts the field value (a [uiVariant](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L630) type field) to an integer. This integer is a string reference (StrRef) id from the TLK table. The (StrRef) string is loaded into a buffer and this is then used in comparison with the *OriginalText* string parameter.\n\n- If the strings compared match, then the pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the currently matched UI control, is pushed onto the lua stack and the function exits. \n\n- If the strings compared do **not** match, and there is a valid [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next then the search and comparison process continues.\n\n- If the strings compared do **not** match, and there is a no valid [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next, but there is another pointer in array of pointers found at [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items then the search and comparison process continues.\n\n- If the strings compared do **not** match and there are no more [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) (via [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60).next or [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).items) then a lua nil is pushed to the lua stack and the function exits.\n\nIt is unknown how to exactly use this function as there are no known examples.\n\n**Example**\n\n```lua\n--]\nFind the text control that has \"Hello\" \n--[\n\nhellocontrol = Infinity_FindItemWithText(\"Hello\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1024", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -437,7 +437,7 @@ "description": "name of the UI item to find" } ], - "documentationMarkdown": "Find a UI item by the name specified\n\n**Parameters**\n\n- `string` *UIItemName* - name of the UI item to find\n\n**Return Value**\n\nReturns a pointer to a UI item\n\n**Notes**\n\nReturns the pointer to the item stored in the `nameToItem` array, which is defined internally in the game executable as:\n\n```lua\nnameToItem = {}\n```\n\nItems are stored in the array like so:\n\n```lua\nnameToItem['%s'] = nameToItemPointer\n```\n\nThe `nameToItem` array can be accessed directly in `UI.MENU` or other lua files.\n\nFor example, [Infinity_ClickItem](#Infinity_ClickItem) takes a menuItem userdata type and clicks the center of its area:\n\n```lua\nInfinity_ClickItem(nameToItem[\"whaterNameHere\"])\n```\n\n**Example**\n\nGet the inventory menu item:\n\n```lua\ninventory = Infinity_FindUIItemByName(\"INVENTORY\")\n```\n\nGet the button control for the peasant room to rent at an inn:\n\n```lua\nselectedRoom = Infinity_FindUIItemByName('BUTTON_room_peasant')\n```\n\n---", + "documentationMarkdown": "Find a UI item by the name specified\n\n**Parameters**\n\n- `string` *UIItemName* - name of the UI item to find\n\n**Return Value**\n\nReturns a pointer to a UI item\n\n**Notes**\n\nReturns the pointer to the item stored in the `nameToItem` array, which is defined internally in the game executable as:\n\n```lua\nnameToItem = {}\n```\n\nItems are stored in the array like so:\n\n```lua\nnameToItem['%s'] = nameToItemPointer\n```\n\nThe `nameToItem` array can be accessed directly in `UI.MENU` or other lua files.\n\nFor example, [Infinity_ClickItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L590) takes a menuItem userdata type and clicks the center of its area:\n\n```lua\nInfinity_ClickItem(nameToItem[\"whaterNameHere\"])\n```\n\n**Example**\n\nGet the inventory menu item:\n\n```lua\ninventory = Infinity_FindUIItemByName(\"INVENTORY\")\n```\n\nGet the button control for the peasant room to rent at an inn:\n\n```lua\nselectedRoom = Infinity_FindUIItemByName('BUTTON_room_peasant')\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1080", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -456,7 +456,7 @@ "description": "name of the text edit control to set the keyboard focus to" } ], - "documentationMarkdown": "Set the keyboard focus to the specified text edit contol, so that typing will occur in the text edit control.\n\n**Parameters**\n\n- `string` *element_name* - name of the text edit control to set the keyboard focus to\n\n**Notes**\n\nCalls the uiFocusTextEdit function\n\n**Example**\n\nPartial example of the CLUAConsole cheat text edit control being displayed and the focus moving to it so that typing occurs in that text edit control:\n\n```lua\nname 'cheatConsole'\nalign center bottom\nignoreEsc\n\nonOpen \n\"\n toolbarTop = 50\n Infinity_PushMenu('WORLD_MESSAGES')\n Infinity_PushMenu('cheatMenu', 0, 0);\n Infinity_FocusTextEdit('luaEditArea'); \n luaEdit = trim(luaEdit)\n loadLuaHistory()\n\"\n```\n\n---", + "documentationMarkdown": "Set the keyboard focus to the specified text edit contol, so that typing will occur in the text edit control.\n\n**Parameters**\n\n- `string` *element_name* - name of the text edit control to set the keyboard focus to\n\n**Notes**\n\nCalls the uiFocusTextEdit function\n\n**Example**\n\nPartial example of the CLUAConsole cheat text edit control being displayed and the focus moving to it so that typing occurs in that text edit control:\n\n```lua\nname 'cheatConsole'\nalign center bottom\nignoreEsc\n\nonOpen \n\"\n toolbarTop = 50\n Infinity_PushMenu('WORLD_MESSAGES')\n Infinity_PushMenu('cheatMenu', 0, 0);\n Infinity_FocusTextEdit('luaEditArea'); \n luaEdit = trim(luaEdit)\n loadLuaHistory()\n\"\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1139", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -475,7 +475,7 @@ "description": "name of the UI Control to return the bounding rectangle for" } ], - "documentationMarkdown": "Returns the bounding rectangle (area) for the specified UI Control name\n\n**Parameters**\n\n- `string` *element_name* - name of the UI Control to return the bounding rectangle for\n\n**Return Value**\n\nReturns as `integer` values: x, y, w, h - x coordinate, y coordinate, width and height of rectangle\n\n**Notes**\n\n**Example**\n\nWith a UI Label control named `messagesRect`:\n\n```lua\nlabel\n{\n name 'messagesRect'\n area 0 111 863 142\n rectangle 4\n}\n```\n\nTo get the area of the `messagesRect` label control:\n\n```lua\nlocal x,y,w,h = Infinity_GetArea('messagesRect')\n```\n\n---", + "documentationMarkdown": "Returns the bounding rectangle (area) for the specified UI Control name\n\n**Parameters**\n\n- `string` *element_name* - name of the UI Control to return the bounding rectangle for\n\n**Return Value**\n\nReturns as `integer` values: x, y, w, h - x coordinate, y coordinate, width and height of rectangle\n\n**Notes**\n\n**Example**\n\nWith a UI Label control named `messagesRect`:\n\n```lua\nlabel\n{\n name 'messagesRect'\n area 0 111 863 142\n rectangle 4\n}\n```\n\nTo get the area of the `messagesRect` label control:\n\n```lua\nlocal x,y,w,h = Infinity_GetArea('messagesRect')\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1181", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -487,7 +487,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetClockTicks()", - "documentationMarkdown": "Returns the clock tick count in milliseconds\n\n**Return Value**\n\nReturns an `integer` value of the clock tick in milliseconds\n\n**Notes**\n\nCalls the SDL_GetTicks function, coverts it to a lua number and pushes it onto the lua stack\n\nCan be used to measure the time elapsed between calls to [Infinity_GetClockTicks](#Infinity_GetClockTicks)\n\n**Example**\n\nGet tick count and store it to a variable:\n\n```lua\nchatboxScrollTimeLast = Infinity_GetClockTicks()\n```\n\nLater on, get tick count and use previously stored tick count value (`chatboxScrollTimeLast) to measure time elapsed, and store it to a `dT`` variable:\n\n```lua\nlocal dT = Infinity_GetClockTicks() - chatboxScrollTimeLast\nchatboxScrollTimeLast = Infinity_GetClockTicks()\n```\n\nThe `dT` variable now contains the elapsed time since [Infinity_GetClockTicks](#Infinity_GetClockTicks) was last called.\n\n---", + "documentationMarkdown": "Returns the clock tick count in milliseconds\n\n**Return Value**\n\nReturns an `integer` value of the clock tick in milliseconds\n\n**Notes**\n\nCalls the SDL_GetTicks function, coverts it to a lua number and pushes it onto the lua stack\n\nCan be used to measure the time elapsed between calls to [Infinity_GetClockTicks](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1216)\n\n**Example**\n\nGet tick count and store it to a variable:\n\n```lua\nchatboxScrollTimeLast = Infinity_GetClockTicks()\n```\n\nLater on, get tick count and use previously stored tick count value (`chatboxScrollTimeLast) to measure time elapsed, and store it to a `dT`` variable:\n\n```lua\nlocal dT = Infinity_GetClockTicks() - chatboxScrollTimeLast\nchatboxScrollTimeLast = Infinity_GetClockTicks()\n```\n\nThe `dT` variable now contains the elapsed time since [Infinity_GetClockTicks](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1216) was last called.", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1225", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -506,7 +506,7 @@ "description": "slot number to return the item description and and usability text for" } ], - "documentationMarkdown": "Updates the description and usability text of an item from a specified slot in a container\n\n**Parameters**\n\n- `integer` *nSlotNum* - slot number to return the item description and and usability text for\n\n**Return Value**\n\nSpecial, see notes\n\n**Notes**\n\nCalls the following class methods: [CGameContainer::GetItem](#CGameContainerGetItem), [CItem::GetUsabilityText](#CItemGetUsabilityText) and [CItem::GetDescription](#CItemGetDescription)\n\nUpdates an existing array named `loot`, which is defined in `UI.MENU` as:\n\n```lua\nloot = \n{\n containerItems = {},\n groupItems = {},\n groundItems = {}\n}\n```\n\nThe `loot` array is updated with the description and usability text of the item occupying the slot *nSlotNum* in the container.\n\n**Example**\n\nUpdate the item description using [Infinity_GetContainerItemDescription](#Infinity_GetContainerItemDescription) and then access the `loot` array via the internal `UI.MENU` function `showItemDescription`:\n\n```lua\nfunction showContainerItemDescription(index)\n local idxScrolled = index + worldScreen:GetTopContainerItem()\n if(loot.containerItems[idxScrolled] == nil or loot.containerItems[idxScrolled].item == nil) then\n return nil\n end\n Infinity_GetContainerItemDescription(idxScrolled)\n showItemDescription(loot.containerItems[idxScrolled].item, 2)\nend\n```\n\nThe `showItemDescription` function, stores some of the `loot` array entries into another array `itemDesc`. `showItemDescription` is defined as:\n\n```lua\nitemDesc = {}\nfunction showItemDescription(item, mode)\n itemDesc.item = item\n itemDesc.mode = mode\n Infinity_PushMenu('ITEM_DESCRIPTION',0,0)\nend\n```\n\nThe `ITEM_DESCRIPTION` menu, which uses the values in the `itemDesc` array is defined as:\n\n```lua\nmenu\n{\n name 'ITEM_DESCRIPTION'\n align center center\n modal\n label\n {\n area 0 0 864 710\n mosaic GUIINVHI\n }\n label\n {\n area 81 11 700 44\n text \"ITEM_TITLE\"\n text style title\n }\n label\n {\n area 402 66 52 52\n icon lua \"itemDesc.item.icon\"\n }\n label\n {\n area 57 170 295 40\n text lua \"itemDesc.item.name\"\n text align center center\n text style \"label\"\n text color '5'\n }\n text\n {\n area 356 180 430 353\n text lua \"itemDesc.item.description\"\n scrollbar 'GUISCRC'\n text style \"normal_parchment\"\n }\n label\n {\n area 66 210 280 327\n bam lua \"itemDesc.item.descPicture\"\n sequence 0\n frame 0\n align center center\n }\n button\n {\n bam GUIOSTUL\n sequence 6\n area 57 638 234 44\n enabled \"itemDescLeftButtonEnabled()\"\n text lua \"itemDescLeftButtonText()\"\n text style \"button\"\n action\n \"\n itemDescLeftButtonAction()\n \"\n }\n button\n {\n bam GUIOSTUM\n sequence 6\n area 326 638 204 44\n text \"DONE_BUTTON\"\n text style \"button\"\n action\n \"\n Infinity_PopMenu();\n \"\n }\n button\n {\n bam GUIOSTUR\n sequence 6\n area 572 638 234 44\n enabled \"itemDescRightButtonEnabled()\"\n text lua \"itemDescRightButtonText()\"\n text style \"button\"\n action\n \"\n itemDescRightButtonAction()\n \"\n }\n}\n```\n\nNote the use of `itemDesc.item.name` and `itemDesc.item.description` etc\n\n---", + "documentationMarkdown": "Updates the description and usability text of an item from a specified slot in a container\n\n**Parameters**\n\n- `integer` *nSlotNum* - slot number to return the item description and and usability text for\n\n**Return Value**\n\nSpecial, see notes\n\n**Notes**\n\nCalls the following class methods: [CGameContainer::GetItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameContainer/index.rst#L517), [CItem::GetUsabilityText](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CItem/index.rst#L1373) and [CItem::GetDescription](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CItem/index.rst#L537)\n\nUpdates an existing array named `loot`, which is defined in `UI.MENU` as:\n\n```lua\nloot = \n{\n containerItems = {},\n groupItems = {},\n groundItems = {}\n}\n```\n\nThe `loot` array is updated with the description and usability text of the item occupying the slot *nSlotNum* in the container.\n\n**Example**\n\nUpdate the item description using [Infinity_GetContainerItemDescription](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1256) and then access the `loot` array via the internal `UI.MENU` function `showItemDescription`:\n\n```lua\nfunction showContainerItemDescription(index)\n local idxScrolled = index + worldScreen:GetTopContainerItem()\n if(loot.containerItems[idxScrolled] == nil or loot.containerItems[idxScrolled].item == nil) then\n return nil\n end\n Infinity_GetContainerItemDescription(idxScrolled)\n showItemDescription(loot.containerItems[idxScrolled].item, 2)\nend\n```\n\nThe `showItemDescription` function, stores some of the `loot` array entries into another array `itemDesc`. `showItemDescription` is defined as:\n\n```lua\nitemDesc = {}\nfunction showItemDescription(item, mode)\n itemDesc.item = item\n itemDesc.mode = mode\n Infinity_PushMenu('ITEM_DESCRIPTION',0,0)\nend\n```\n\nThe `ITEM_DESCRIPTION` menu, which uses the values in the `itemDesc` array is defined as:\n\n```lua\nmenu\n{\n name 'ITEM_DESCRIPTION'\n align center center\n modal\n label\n {\n area 0 0 864 710\n mosaic GUIINVHI\n }\n label\n {\n area 81 11 700 44\n text \"ITEM_TITLE\"\n text style title\n }\n label\n {\n area 402 66 52 52\n icon lua \"itemDesc.item.icon\"\n }\n label\n {\n area 57 170 295 40\n text lua \"itemDesc.item.name\"\n text align center center\n text style \"label\"\n text color '5'\n }\n text\n {\n area 356 180 430 353\n text lua \"itemDesc.item.description\"\n scrollbar 'GUISCRC'\n text style \"normal_parchment\"\n }\n label\n {\n area 66 210 280 327\n bam lua \"itemDesc.item.descPicture\"\n sequence 0\n frame 0\n align center center\n }\n button\n {\n bam GUIOSTUL\n sequence 6\n area 57 638 234 44\n enabled \"itemDescLeftButtonEnabled()\"\n text lua \"itemDescLeftButtonText()\"\n text style \"button\"\n action\n \"\n itemDescLeftButtonAction()\n \"\n }\n button\n {\n bam GUIOSTUM\n sequence 6\n area 326 638 204 44\n text \"DONE_BUTTON\"\n text style \"button\"\n action\n \"\n Infinity_PopMenu();\n \"\n }\n button\n {\n bam GUIOSTUR\n sequence 6\n area 572 638 234 44\n enabled \"itemDescRightButtonEnabled()\"\n text lua \"itemDescRightButtonText()\"\n text style \"button\"\n action\n \"\n itemDescRightButtonAction()\n \"\n }\n}\n```\n\nNote the use of `itemDesc.item.name` and `itemDesc.item.description` etc", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1265", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -517,7 +517,7 @@ "name": "Infinity_GetContentHeight", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetContentHeight(font, width, textcontent, point, indent, useFontZoom)", + "signature": "Infinity_GetContentHeight(font,width,textcontent,point,indent,useFontZoom)", "parameters": [ { "type": "string", @@ -550,7 +550,7 @@ "description": "boolean value if using font zoom `1`, or `0` otherwise" } ], - "documentationMarkdown": "Returns the height of the text content in a UI control\n\n**Parameters**\n\n- `string` *font* - string containing resource reference (ResRef) of font\n- `integer` *width* - width of the UI control hosting the content\n- `string` *textcontent* - string containing the text content\n- `integer` *point* - font size\n- `integer` *indent* - a boolean value if indented `1`, or `0` otherwise\n- `integer` *useFontZoom* - boolean value if using font zoom `1`, or `0` otherwise\n\n**Return Value**\n\nReturns an `integer` of the calculated content height\n\n**Notes**\n\nCalculates the height of the text content in a UI control, taking into account the font used, the font size, word wrapping for the width of the UI control, indentation and/or font zooming.\n\nYou should account for the width of the scrollbar when specifying the *width* parameter\n\n*useFontZoom* is used for font scaling based on the font size (the *point* parameter). If *useFontZoom* is `0`, the text content (the *textcontent* parameter) will always appear at the defined font size, if *useFontZoom* is `1` then font scaling will occur for the text content.\n\n**Example**\n\n```lua\n--Calculate running total of dialog content height\nlocal x,y,w,h = Infinity_GetArea(\"worldPlayerDialogChoicesList\")\nw = w - 18 --account for scrollbar influence on width\nlocal delta = Infinity_GetContentHeight(styles.normal.font, w, text, styles.normal.point, 1, styles.normal.useFontZoom) --1 for indent.\nchatboxContentHeight = chatboxContentHeight + delta\n```\n\nNote: styles are defined in the `BGEE.LUA` file\n\n---", + "documentationMarkdown": "Returns the height of the text content in a UI control\n\n**Parameters**\n\n- `string` *font* - string containing resource reference (ResRef) of font\n- `integer` *width* - width of the UI control hosting the content\n- `string` *textcontent* - string containing the text content\n- `integer` *point* - font size\n- `integer` *indent* - a boolean value if indented `1`, or `0` otherwise\n- `integer` *useFontZoom* - boolean value if using font zoom `1`, or `0` otherwise\n\n**Return Value**\n\nReturns an `integer` of the calculated content height\n\n**Notes**\n\nCalculates the height of the text content in a UI control, taking into account the font used, the font size, word wrapping for the width of the UI control, indentation and/or font zooming.\n\nYou should account for the width of the scrollbar when specifying the *width* parameter\n\n*useFontZoom* is used for font scaling based on the font size (the *point* parameter). If *useFontZoom* is `0`, the text content (the *textcontent* parameter) will always appear at the defined font size, if *useFontZoom* is `1` then font scaling will occur for the text content.\n\n**Example**\n\n```lua\n--Calculate running total of dialog content height\nlocal x,y,w,h = Infinity_GetArea(\"worldPlayerDialogChoicesList\")\nw = w - 18 --account for scrollbar influence on width\nlocal delta = Infinity_GetContentHeight(styles.normal.font, w, text, styles.normal.point, 1, styles.normal.useFontZoom) --1 for indent.\nchatboxContentHeight = chatboxContentHeight + delta\n```\n\nNote: styles are defined in the `BGEE.LUA` file", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1420", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -562,7 +562,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetCurrentGroundPage()", - "documentationMarkdown": "Returns the current page number of the ground inventory slots\n\n**Return Value**\n\nReturns an `integer` representing the page number of the ground inventory slots\n\n**Notes**\n\nA ground page is a series of inventory slots representing ground items available to pick up or empty slots for items to be dropped into.\n\nGround pages are used to scroll through the groupings of those ground based inventory slots. See also [Infinity_GetMaxGroundPage](#Infinity_GetMaxGroundPage) and [Infinity_GetGroundItemDescription](#Infinity_GetGroundItemDescription)\n\nCalls the [CScreenInventory::GetCurrentGroundPage](#CScreenInventoryGetCurrentGroundPage) method\n\n**Example**\n\n```lua\ncurPage = Infinity_GetCurrentGroundPage()\n```\n\n---", + "documentationMarkdown": "Returns the current page number of the ground inventory slots\n\n**Return Value**\n\nReturns an `integer` representing the page number of the ground inventory slots\n\n**Notes**\n\nA ground page is a series of inventory slots representing ground items available to pick up or empty slots for items to be dropped into.\n\nGround pages are used to scroll through the groupings of those ground based inventory slots. See also [Infinity_GetMaxGroundPage](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1946) and [Infinity_GetGroundItemDescription](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1715)\n\nCalls the [CScreenInventory::GetCurrentGroundPage](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L1030) method\n\n**Example**\n\n```lua\ncurPage = Infinity_GetCurrentGroundPage()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1466", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -574,7 +574,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetCurrentMovie()", - "documentationMarkdown": "Returns the current movie\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nReturns a `string` containing the resource reference (ResRef) of the current movie file (WebM file format)\n\n**Notes**\n\nReads CBaldurChitin.m_pEngineProjector => CBaldurProjector.m_pMovie => CResWebM.CRes\n\nCompares active engine (CWarp)\n\nPushes lua string onto stack or lua `nil`\n\nNote: more research required.\n\n**Example**\n\n```lua\ncurMovie = Infinity_GetCurrentMovie()\n```\n\n---", + "documentationMarkdown": "Returns the current movie\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nReturns a `string` containing the resource reference (ResRef) of the current movie file (WebM file format)\n\n**Notes**\n\nReads CBaldurChitin.m_pEngineProjector => CBaldurProjector.m_pMovie => CResWebM.CRes\n\nCompares active engine (CWarp)\n\nPushes lua string onto stack or lua `nil`\n\nNote: more research required.\n\n**Example**\n\n```lua\ncurMovie = Infinity_GetCurrentMovie()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1500", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -586,7 +586,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetCurrentScreenName()", - "documentationMarkdown": "Returns current menu name\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nReturns a `string` of the current menu name, or an empty string if no menu active\n\n**Notes**\n\nUses getMenuStackTop and getStackMenu functions, and if successful, reads the value at [uiMenu](#uiMenu).name and pushes this value to the lua stack as a lua string.\n\n**Examples**\n\nGet the current menu name:\n\n```lua\ncurMenuName = Infinity_GetCurrentScreenName()\n```\n\nSets the button to clickable only if the current menu equals `CHARGEN`\n\n```lua\nbutton\n{\n area 770 552 204 44\n text \"IMPORT_BUTTON\"\n text style \"button\"\n bam GUIOSTUM\n clickable lua \"Infinity_GetCurrentScreenName() == 'CHARGEN'\"\n action \"createCharScreen:OnImportCharacterButtonClick()\"\n}\n```\n\n---", + "documentationMarkdown": "Returns current menu name\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nReturns a `string` of the current menu name, or an empty string if no menu active\n\n**Notes**\n\nUses getMenuStackTop and getStackMenu functions, and if successful, reads the value at [uiMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L585).name and pushes this value to the lua stack as a lua string.\n\n**Examples**\n\nGet the current menu name:\n\n```lua\ncurMenuName = Infinity_GetCurrentScreenName()\n```\n\nSets the button to clickable only if the current menu equals `CHARGEN`\n\n```lua\nbutton\n{\n area 770 552 204 44\n text \"IMPORT_BUTTON\"\n text style \"button\"\n bam GUIOSTUM\n clickable lua \"Infinity_GetCurrentScreenName() == 'CHARGEN'\"\n action \"createCharScreen:OnImportCharacterButtonClick()\"\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1541", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -605,7 +605,7 @@ "description": "string containing file extension" } ], - "documentationMarkdown": "Returns a list of files that match the specified file extension\n\n**Parameters**\n\n- `string` *extension* - string containing file extension\n\n**Return Value**\n\nAn array of filenames that matched the specified file extension\n\n**Notes**\n\nConverts extension to resource file type using the chExtToType function and fetches those filenames that match the resource type and stores them into an array.\n\nThe following extensions are supported:\n\n- \"bmp\"\n- \"mve\"\n- \"tga\"\n- \"wav\"\n- \"wfx\"\n- \"plt\"\n- \"bam\"\n- \"wed\"\n- \"chu\"\n- \"tis\"\n- \"spl\"\n- \"bcs\"\n- \"ids\"\n- \"cre\"\n- \"are\"\n- \"dlg\"\n- \"2da\"\n- \"gam\"\n- \"sto\"\n- \"wmp\"\n- \"chr\"\n- \"bs\"\n- \"eff\"\n- \"vvc\"\n- \"vef\"\n- \"pro\"\n- \"bio\"\n- \"wbm\"\n- \"gui\"\n- \"sql\"\n- \"pvrz\"\n- \"glsl\"\n- \"tot\"\n- \"toh\"\n- \"menu\"\n- \"lua\"\n- \"ttf\"\n- \"png\"\n- \"ini\"\n\n**Example**\n\n```lua\nbamfilelist = Infinity_GetFilesOfType(\"bam\")\n```\n\n---", + "documentationMarkdown": "Returns a list of files that match the specified file extension\n\n**Parameters**\n\n- `string` *extension* - string containing file extension\n\n**Return Value**\n\nAn array of filenames that matched the specified file extension\n\n**Notes**\n\nConverts extension to resource file type using the chExtToType function and fetches those filenames that match the resource type and stores them into an array.\n\nThe following extensions are supported:\n\n- \"bmp\"\n- \"mve\"\n- \"tga\"\n- \"wav\"\n- \"wfx\"\n- \"plt\"\n- \"bam\"\n- \"wed\"\n- \"chu\"\n- \"tis\"\n- \"spl\"\n- \"bcs\"\n- \"ids\"\n- \"cre\"\n- \"are\"\n- \"dlg\"\n- \"2da\"\n- \"gam\"\n- \"sto\"\n- \"wmp\"\n- \"chr\"\n- \"bs\"\n- \"eff\"\n- \"vvc\"\n- \"vef\"\n- \"pro\"\n- \"bio\"\n- \"wbm\"\n- \"gui\"\n- \"sql\"\n- \"pvrz\"\n- \"glsl\"\n- \"tot\"\n- \"toh\"\n- \"menu\"\n- \"lua\"\n- \"ttf\"\n- \"png\"\n- \"ini\"\n\n**Example**\n\n```lua\nbamfilelist = Infinity_GetFilesOfType(\"bam\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1589", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -617,7 +617,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetFrameCounter()", - "documentationMarkdown": "Returns frame counter\n\n**Return Value**\n\nReturns an `int` value representing frame counter\n\n**Notes**\n\nReads the value stored at offset `0xC48` of [CChitin](#CChitin): [CChitin](#CChitin).nAUCounter, converts it to a float and pushes it onto the lua stack.\n\n**Example**\n\n```lua\nframcounter = Infinity_GetFrameCounter()\n```\n\n---", + "documentationMarkdown": "Returns frame counter\n\n**Return Value**\n\nReturns an `int` value representing frame counter\n\n**Notes**\n\nReads the value stored at offset `0xC48` of [CChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L151): [CChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L151).nAUCounter, converts it to a float and pushes it onto the lua stack.\n\n**Example**\n\n```lua\nframcounter = Infinity_GetFrameCounter()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1664", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -629,7 +629,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetGameTicks()", - "documentationMarkdown": "Returns game ticks\n\n**Return Value**\n\nReturns an `int` value representing game ticks\n\n**Notes**\n\nReads [CBaldurChitin](#CBaldurChitin).m_pObjectGame => [CInfGame](#CInfGame).m_worldTime => [CTimerWorld](#CTimerWorld).m_gameTime and multiplies it by the value stored in the variable `TIMER_UPDATES_PER_SECOND`. The result is added together with itself, converted to a float and pushed onto the lua stack.\n\nThe variable `TIMER_UPDATES_PER_SECOND` located at offset `0x00938778` is initially set to `30` (`0x1E`)\n\n**Example**\n\n```lua\nticks = Infinity_GetGameTicks()\n```\n\n---", + "documentationMarkdown": "Returns game ticks\n\n**Return Value**\n\nReturns an `int` value representing game ticks\n\n**Notes**\n\nReads [CBaldurChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L24).m_pObjectGame => [CInfGame](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L449).m_worldTime => [CTimerWorld](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CT/index.rst#L113).m_gameTime and multiplies it by the value stored in the variable `TIMER_UPDATES_PER_SECOND`. The result is added together with itself, converted to a float and pushed onto the lua stack.\n\nThe variable `TIMER_UPDATES_PER_SECOND` located at offset `0x00938778` is initially set to `30` (`0x1E`)\n\n**Example**\n\n```lua\nticks = Infinity_GetGameTicks()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1693", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -640,7 +640,7 @@ "name": "Infinity_GetGroundItemDescription", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetGroundItemDescription(item_index, slot_id, container_id)", + "signature": "Infinity_GetGroundItemDescription(item_index,slot_id,container_id)", "parameters": [ { "name": "item_index" @@ -652,7 +652,7 @@ "name": "container_id" } ], - "documentationMarkdown": "Returns a string containing the item's description as seen on the ground\n\n**Parameters**\n\n- *item_index* - \n- *slot_id* - \n- *container_id* - \n\n**Return Value**\n\nstring\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Returns a string containing the item's description as seen on the ground\n\n**Parameters**\n\n- *item_index* - \n- *slot_id* - \n- *container_id* - \n\n**Return Value**\n\nstring\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1724", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -669,7 +669,7 @@ "name": "item_index" } ], - "documentationMarkdown": "**Parameters**\n\n- *item_index* - \n\n**Return Value**\n\nstring\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *item_index* - \n\n**Return Value**\n\nstring\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1756", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -680,13 +680,13 @@ "name": "Infinity_GetInCutsceneMode", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetInCutsceneMode(arg1)", + "signature": "Infinity_GetInCutsceneMode(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1786", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -697,7 +697,7 @@ "name": "Infinity_GetINIString", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetINIString(section_name, value_name, default_value)", + "signature": "Infinity_GetINIString(section_name,value_name,default_value)", "parameters": [ { "name": "section_name", @@ -712,7 +712,7 @@ "description": "the default value to return if key does not exist" } ], - "documentationMarkdown": "Returns a string containing an ini section key value\n\n**Parameters**\n\n- *section_name* - section name in an ini file\n- *value_name* - the key in the section to return the value for\n- *default_value* - the default value to return if key does not exist\n\n**Return Value**\n\n`string`\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Returns a string containing an ini section key value\n\n**Parameters**\n\n- *section_name* - section name in an ini file\n- *value_name* - the key in the section to return the value for\n- *default_value* - the default value to return if key does not exist\n\n**Return Value**\n\n`string`\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1816", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -723,7 +723,7 @@ "name": "Infinity_GetINIValue", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetINIValue(section_name, value_name, default_value)", + "signature": "Infinity_GetINIValue(section_name,value_name,default_value)", "parameters": [ { "name": "section_name", @@ -738,7 +738,7 @@ "description": "the default value to return if key does not exist" } ], - "documentationMarkdown": "Returns an integer value containing an ini section key value\n\n**Parameters**\n\n- *section_name* - section name in an ini file\n- *value_name* - the key in the section to return the value for\n- *default_value* - the default value to return if key does not exist\n\n**Return Value**\n\n`int`\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Returns an integer value containing an ini section key value\n\n**Parameters**\n\n- *section_name* - section name in an ini file\n- *value_name* - the key in the section to return the value for\n- *default_value* - the default value to return if key does not exist\n\n**Return Value**\n\n`int`\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1848", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -757,7 +757,7 @@ "description": "name of the UI List control" } ], - "documentationMarkdown": "Returns the height of the sepcified UI List control\n\n**Parameters**\n\n- `string` *list_name* - name of the UI List control\n\n**Return Value**\n\nReturns an `integer` value of the specified list's height\n\n**Notes**\n\n**Example**\n\nGet the height of the `worldPlayerDialogChoicesList` list in `UI.MENU`:\n\n```lua\nlocal choicesHeight = Infinity_GetListHeight('worldPlayerDialogChoicesList')\n```\n\n---", + "documentationMarkdown": "Returns the height of the sepcified UI List control\n\n**Parameters**\n\n- `string` *list_name* - name of the UI List control\n\n**Return Value**\n\nReturns an `integer` value of the specified list's height\n\n**Notes**\n\n**Example**\n\nGet the height of the `worldPlayerDialogChoicesList` list in `UI.MENU`:\n\n```lua\nlocal choicesHeight = Infinity_GetListHeight('worldPlayerDialogChoicesList')\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1881", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -769,7 +769,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetMaxChapterPage()", - "documentationMarkdown": "Returns the chapter number that the game campaign is at currently\n\n**Return Value**\n\nReturns an `integer` containing the current chapter number\n\n**Notes**\n\nReturns the value of the `CHAPTER` token. Calls the [CVariableHash::FindKey](#CVariableHashFindKey) method and reads offset `0x28` of [CVariable](#CVariable): [CVariable](#CVariable).m_cAreaVariable => [CAreaVariable](#CAreaVariable).m_intValue, and pushes that value to the lua stack.\n\n**Example**\n\nUsed in the `JOURNAL` menu in `UI.MENU` to update the current chapter number:\n\n```lua\nmenu\n{\n name 'JOURNAL'\n align left top\n offset 80 0\n ignoreEsc\n enabled \"sidebarsGreyed ~= 1\"\n onopen \"\n reinitQuests()\n buildQuestDisplay()\n chapter = math.max(0,Infinity_GetMaxChapterPage());\n```\n\n---", + "documentationMarkdown": "Returns the chapter number that the game campaign is at currently\n\n**Return Value**\n\nReturns an `integer` containing the current chapter number\n\n**Notes**\n\nReturns the value of the `CHAPTER` token. Calls the [CVariableHash::FindKey](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVariableHash/index.rst#L181) method and reads offset `0x28` of [CVariable](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L46): [CVariable](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L46).m_cAreaVariable => [CAreaVariable](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L1332).m_intValue, and pushes that value to the lua stack.\n\n**Example**\n\nUsed in the `JOURNAL` menu in `UI.MENU` to update the current chapter number:\n\n```lua\nmenu\n{\n name 'JOURNAL'\n align left top\n offset 80 0\n ignoreEsc\n enabled \"sidebarsGreyed ~= 1\"\n onopen \"\n reinitQuests()\n buildQuestDisplay()\n chapter = math.max(0,Infinity_GetMaxChapterPage());\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1915", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -781,7 +781,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetMaxGroundPage()", - "documentationMarkdown": "Returns maximum ground pages\n\n**Return Value**\n\nReturns an `integer` value of the maximum ground pages\n\n**Notes**\n\nA ground page is a series of inventory slots representing ground items available to pick up or empty slots for items to be dropped into.\n\nGround pages are used to scroll through the groupings of those ground based inventory slots. See also [Infinity_GetCurrentGroundPage](#Infinity_GetCurrentGroundPage) and [Infinity_GetGroundItemDescription](#Infinity_GetGroundItemDescription)\n\nCalls the [CScreenInventory::GetMaxGroundPage](#CScreenInventoryGetMaxGroundPage) method and pushed the value to the lua stack.\n\n**Example**\n\n```lua\nlocal maxPages = Infinity_GetMaxGroundPage()\n```\n\n---", + "documentationMarkdown": "Returns maximum ground pages\n\n**Return Value**\n\nReturns an `integer` value of the maximum ground pages\n\n**Notes**\n\nA ground page is a series of inventory slots representing ground items available to pick up or empty slots for items to be dropped into.\n\nGround pages are used to scroll through the groupings of those ground based inventory slots. See also [Infinity_GetCurrentGroundPage](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1457) and [Infinity_GetGroundItemDescription](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1715)\n\nCalls the [CScreenInventory::GetMaxGroundPage](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L1059) method and pushed the value to the lua stack.\n\n**Example**\n\n```lua\nlocal maxPages = Infinity_GetMaxGroundPage()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1955", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -800,7 +800,7 @@ "description": "name of the UI Menu to return the bounding rectangle for" } ], - "documentationMarkdown": "Returns the bounding rectangle (area) for the specified UI Menu name\n\n**Parameters**\n\n- `string` *menu_name* - name of the UI Menu to return the bounding rectangle for\n\n**Return Value**\n\nReturns as `integer` values: x, y, w, h - x coordinate, y coordinate, width and height of rectangle\n\n**Notes**\n\n**Example**\n\nGet the area of the `JOURNAL` menu:\n\n```lua\nlocal offsetX,offsetY,menuWidth,menuHeight = Infinity_GetMenuArea('JOURNAL')\n```\n\n---", + "documentationMarkdown": "Returns the bounding rectangle (area) for the specified UI Menu name\n\n**Parameters**\n\n- `string` *menu_name* - name of the UI Menu to return the bounding rectangle for\n\n**Return Value**\n\nReturns as `integer` values: x, y, w, h - x coordinate, y coordinate, width and height of rectangle\n\n**Notes**\n\n**Example**\n\nGet the area of the `JOURNAL` menu:\n\n```lua\nlocal offsetX,offsetY,menuWidth,menuHeight = Infinity_GetMenuArea('JOURNAL')\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L1987", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -819,7 +819,7 @@ "description": "name of the menu item" } ], - "documentationMarkdown": "Returns the UI menu item that has the specified name\n\n**Parameters**\n\n- `string` *item_name* - name of the menu item\n\n**Return Value**\n\nReturns userdata version of the menu item (a pointer to the [uiItem](#uiItem) structure of the matched UI control or a lua `NIL`)\n\n**Notes**\n\n**Example**\n\n```lua\nMenuItem_InvSlot1 = Infinity_GetMenuItemByName(\"slot_inv_1\")\n```\n\n---", + "documentationMarkdown": "Returns the UI menu item that has the specified name\n\n**Parameters**\n\n- `string` *item_name* - name of the menu item\n\n**Return Value**\n\nReturns userdata version of the menu item (a pointer to the [uiItem](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/UI/index.rst#L60) structure of the matched UI control or a lua `NIL`)\n\n**Notes**\n\n**Example**\n\n```lua\nMenuItem_InvSlot1 = Infinity_GetMenuItemByName(\"slot_inv_1\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2021", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -831,7 +831,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetMousePosition()", - "documentationMarkdown": "Returns mouse position\n\n**Return Value**\n\nReturns as `integer` x,y = x coordinate and y cooordinate of mouse position\n\n**Notes**\n\n**Example**\n\n```lua\nx,y = Infinity_GetMousePosition();\n```\n\n---", + "documentationMarkdown": "Returns mouse position\n\n**Return Value**\n\nReturns as `integer` x,y = x coordinate and y cooordinate of mouse position\n\n**Notes**\n\n**Example**\n\n```lua\nx,y = Infinity_GetMousePosition();\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2054", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -843,7 +843,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetNumCharacters()", - "documentationMarkdown": "Returns total number of characters currently in the party\n\n**Return Value**\n\nReturns an `integer` value of the number of characters in the party\n\n**Notes**\n\n**Example**\n\nFrom `UI.MENU` - enable a portrait button for the 4th character, if there is greater than 3 characters in the party:\n\n```lua\nbutton\n{\n area 11 290 64 90\n portrait 3\n bam GUIRSP10\n enabled \"Infinity_GetNumCharacters() > 3\"\n```\n\n---", + "documentationMarkdown": "Returns total number of characters currently in the party\n\n**Return Value**\n\nReturns an `integer` value of the number of characters in the party\n\n**Notes**\n\n**Example**\n\nFrom `UI.MENU` - enable a portrait button for the 4th character, if there is greater than 3 characters in the party:\n\n```lua\nbutton\n{\n area 11 290 64 90\n portrait 3\n bam GUIRSP10\n enabled \"Infinity_GetNumCharacters() > 3\"\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2082", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -862,7 +862,7 @@ "description": "name of the menu to return the position for" } ], - "documentationMarkdown": "Get the position of a menu on the screen\n\n**Parameters**\n\n- `string` *menu_name* - name of the menu to return the position for\n\n**Return Value**\n\nReturns as `integer` values: x,y - x coordinate and y coordinate of the menu position\n\n**Notes**\n\n**Example**\n\n```lua\nInfinity_GetOffset(\"JOURNAL\")\n```\n\n---", + "documentationMarkdown": "Get the position of a menu on the screen\n\n**Parameters**\n\n- `string` *menu_name* - name of the menu to return the position for\n\n**Return Value**\n\nReturns as `integer` values: x,y - x coordinate and y coordinate of the menu position\n\n**Notes**\n\n**Example**\n\n```lua\nInfinity_GetOffset(\"JOURNAL\")\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2117", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -873,7 +873,7 @@ "name": "Infinity_GetOption", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetOption(option_id, panel_id)", + "signature": "Infinity_GetOption(option_id,panel_id)", "parameters": [ { "type": "integer", @@ -886,7 +886,7 @@ "description": "id of the panel" } ], - "documentationMarkdown": "Get the value of an option in a panel\n\n**Parameters**\n\n- `integer` *option_id* - id of the option to get value for\n- `integer` *panel_id* - id of the panel\n\n**Return Value**\n\nReturns an `integer` value of the option id specified: *option_id* in *panel_id*\n\n**Notes**\n\nSee also [Infinity_ChangeOption](#Infinity_ChangeOption)\n\n**Example**\n\nGet the value of option id `1` in panel id `8` (`panelID` = `8`) to a variable `ttDelaySLDR` and then set option id `1` in panel id `8` (`panelID` = `8`) to the value of the `ttDelaySLDR` variable\n\n```lua\npanelID = 8\nttDelaySLDR = Infinity_GetOption(1, panelID)\nInfinity_ChangeOption( 1, ttDelaySLDR, panelID)\n```\n\n---", + "documentationMarkdown": "Get the value of an option in a panel\n\n**Parameters**\n\n- `integer` *option_id* - id of the option to get value for\n- `integer` *panel_id* - id of the panel\n\n**Return Value**\n\nReturns an `integer` value of the option id specified: *option_id* in *panel_id*\n\n**Notes**\n\nSee also [Infinity_ChangeOption](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L515)\n\n**Example**\n\nGet the value of option id `1` in panel id `8` (`panelID` = `8`) to a variable `ttDelaySLDR` and then set option id `1` in panel id `8` (`panelID` = `8`) to the value of the `ttDelaySLDR` variable\n\n```lua\npanelID = 8\nttDelaySLDR = Infinity_GetOption(1, panelID)\nInfinity_ChangeOption( 1, ttDelaySLDR, panelID)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2149", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -910,7 +910,7 @@ "description": "Special, see notes" } ], - "documentationMarkdown": "Updates the `passwordReq` lua variable with the password requirement\n\n**Parameters**\n\n- `integer` *id* - `1` based index of the `mp_sessions` array entry to update\n\n**Returns**\n\nSpecial, see notes\n\n**Notes**\n\nUpdates an existing multidimensional array named `mp_sessions` defined in the EE game executable and an existing lua variable `passwordReq`.\n\n`passwordReq` is defined in `UI.MENU` as:\n\n```lua\npasswordReq = 0\n```\n\nEach entry in `mp_sessions` has the following elements:\n\n- `description`\n- `flags`\n- `max_players`\n- `players`\n- `port`\n- `name`\n- `password`\n\nAfter the `mp_sessions` array has been updated, the `flags` value (which contains amongst other things the password requirement) is placed into the `passwordReq` lua variable as a `boolean` value: `1` true or `0` false.\n\n**Example**\n\nThe `gameHasPassword` function from `UI.MENU`:\n\n```lua\nfunction gameHasPassword(slot)\n if(mp_sessions[mp_shownSessions[slot][\"actualIndex\"]] == nil) then\n --if the session isn't loaded don't show anything.\n return \"\"\n end\n Infinity_GetPasswordRequired(mp_shownSessions[slot][\"actualIndex\"])\n if passwordReq ~= 0 then \n ret = t(\"YES\")\n else\n ret = t(\"NO\")\n end\n return ret\nend\n```\n\n---", + "documentationMarkdown": "Updates the `passwordReq` lua variable with the password requirement\n\n**Parameters**\n\n- `integer` *id* - `1` based index of the `mp_sessions` array entry to update\n\n**Returns**\n\nSpecial, see notes\n\n**Notes**\n\nUpdates an existing multidimensional array named `mp_sessions` defined in the EE game executable and an existing lua variable `passwordReq`.\n\n`passwordReq` is defined in `UI.MENU` as:\n\n```lua\npasswordReq = 0\n```\n\nEach entry in `mp_sessions` has the following elements:\n\n- `description`\n- `flags`\n- `max_players`\n- `players`\n- `port`\n- `name`\n- `password`\n\nAfter the `mp_sessions` array has been updated, the `flags` value (which contains amongst other things the password requirement) is placed into the `passwordReq` lua variable as a `boolean` value: `1` true or `0` false.\n\n**Example**\n\nThe `gameHasPassword` function from `UI.MENU`:\n\n```lua\nfunction gameHasPassword(slot)\n if(mp_sessions[mp_shownSessions[slot][\"actualIndex\"]] == nil) then\n --if the session isn't loaded don't show anything.\n return \"\"\n end\n Infinity_GetPasswordRequired(mp_shownSessions[slot][\"actualIndex\"])\n if passwordReq ~= 0 then \n ret = t(\"YES\")\n else\n ret = t(\"NO\")\n end\n return ret\nend\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2186", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -929,7 +929,7 @@ "description": "a `0` based index of the portrait to return the tooltip text for" } ], - "documentationMarkdown": "Returns a string containing the tooltip for a specified portrait index\n\n**Parameters**\n\n- `integer` *index* - a `0` based index of the portrait to return the tooltip text for\n\n**Return Value**\n\nReturns a `string` containing the tooltip for a specified portrait index\n\n**Notes**\n\n**Example**\n\nGet tooltip for portrait of character 1:\n\n```lua\nchar1tooltip = Infinity_GetPortraitTooltip(0)\n```\n\n---", + "documentationMarkdown": "Returns a string containing the tooltip for a specified portrait index\n\n**Parameters**\n\n- `integer` *index* - a `0` based index of the portrait to return the tooltip text for\n\n**Return Value**\n\nReturns a `string` containing the tooltip for a specified portrait index\n\n**Notes**\n\n**Example**\n\nGet tooltip for portrait of character 1:\n\n```lua\nchar1tooltip = Infinity_GetPortraitTooltip(0)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2251", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -941,7 +941,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetScreenSize()", - "documentationMarkdown": "Returns the width and height of the screen - the screen resolution\n\n**Return Value**\n\nReturns as `integer`: w, h - width and height\n\n**Notes**\n\n**Example**\n\n```lua\nlocal screenWidth, screenHeight = Infinity_GetScreenSize()\n```\n\n---", + "documentationMarkdown": "Returns the width and height of the screen - the screen resolution\n\n**Return Value**\n\nReturns as `integer`: w, h - width and height\n\n**Notes**\n\n**Example**\n\n```lua\nlocal screenWidth, screenHeight = Infinity_GetScreenSize()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2285", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -960,7 +960,7 @@ "description": "the script variable to return the value of" } ], - "documentationMarkdown": "Returns the value of a script variable as an `integer`\n\n**Parameters**\n\n- `string` *ScriptVar* - the script variable to return the value of\n\n**Return Value**\n\nReturns the value of a script variable as an `integer`\n\n**Notes**\n\nCalls the [CVariableHash::FindKey](#CVariableHashFindKey) method.\n\n**Example**\n\nNo known example\n\n---", + "documentationMarkdown": "Returns the value of a script variable as an `integer`\n\n**Parameters**\n\n- `string` *ScriptVar* - the script variable to return the value of\n\n**Return Value**\n\nReturns the value of a script variable as an `integer`\n\n**Notes**\n\nCalls the [CVariableHash::FindKey](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVariableHash/index.rst#L181) method.\n\n**Example**\n\nNo known example", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2313", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -979,7 +979,7 @@ "description": "item id" } ], - "documentationMarkdown": "Determines if the specified item requires identification, and can be identified via an Indentify scroll\n\n**Parameters**\n\n- `integer` *item_id* - item id\n\n**Return Value**\n\nReturns a `boolean` value: `1` true, or `0` false\n\n**Notes**\n\nCalls the [CScreenInventory::GetScrollIdentifyEnabled](#CScreenInventoryGetScrollIdentifyEnabled) method.\n\nSee also [Infinity_GetSpellIdentifyEnabled](#Infinity_GetSpellIdentifyEnabled)\n\n**Example**\n\nThe Indentify via a scroll button is enabled if the item requires identification (and there is an Identify scroll in the character's possession). Defined in `UI.MENU` as:\n\n```lua\nbutton\n{\n area 52 214 302 44\n bam GUIOSTCL\n text style \"button\"\n text \"SCROLL_BUTTON\"\n \n clickable lua \"Infinity_GetScrollIdentifyEnabled(characters[id].equipment[selectedSlot].id)\"\n action \n \"\n Infinity_OnScrollIdentify(characters[id].equipment[selectedSlot].id)\n Infinity_PopMenu()\n itemDesc.item = characters[id].equipment[selectedSlot].item --update itemDesc item\n \"\n}\n```\n\n---", + "documentationMarkdown": "Determines if the specified item requires identification, and can be identified via an Indentify scroll\n\n**Parameters**\n\n- `integer` *item_id* - item id\n\n**Return Value**\n\nReturns a `boolean` value: `1` true, or `0` false\n\n**Notes**\n\nCalls the [CScreenInventory::GetScrollIdentifyEnabled](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L1146) method.\n\nSee also [Infinity_GetSpellIdentifyEnabled](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2422)\n\n**Example**\n\nThe Indentify via a scroll button is enabled if the item requires identification (and there is an Identify scroll in the character's possession). Defined in `UI.MENU` as:\n\n```lua\nbutton\n{\n area 52 214 302 44\n bam GUIOSTCL\n text style \"button\"\n text \"SCROLL_BUTTON\"\n \n clickable lua \"Infinity_GetScrollIdentifyEnabled(characters[id].equipment[selectedSlot].id)\"\n action \n \"\n Infinity_OnScrollIdentify(characters[id].equipment[selectedSlot].id)\n Infinity_PopMenu()\n itemDesc.item = characters[id].equipment[selectedSlot].item --update itemDesc item\n \"\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2344", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -991,7 +991,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetSelectedCharacterName()", - "documentationMarkdown": "Returns a string containing the currently selected character's name\n\n**Return Value**\n\nReturns a `string` containing the currently selected character's name\n\n**Notes**\n\n**Example**\n\nSet a label UI control's text with the current characters name:\n\n```lua\nlabel\n{\n area 467 116 250 30\n text lua \"Infinity_GetSelectedCharacterName()\"\n text style \"label\"\n align left center\n}\n```\n\n---", + "documentationMarkdown": "Returns a string containing the currently selected character's name\n\n**Return Value**\n\nReturns a `string` containing the currently selected character's name\n\n**Notes**\n\n**Example**\n\nSet a label UI control's text with the current characters name:\n\n```lua\nlabel\n{\n area 467 116 250 30\n text lua \"Infinity_GetSelectedCharacterName()\"\n text style \"label\"\n align left center\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2395", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1010,7 +1010,7 @@ "description": "item id" } ], - "documentationMarkdown": "Determines if the specified item requires identification, and can be identified via an Indentify spell (or a magical item that can cast an Identify spell)\n\n**Parameters**\n\n- `string` *item_id* - item id\n\n**Return Value**\n\nReturns a `boolean` value: `1` true, or `0` false\n\n**Notes**\n\nCalls the [CScreenInventory::GetSpellIdentifyEnabled](#CScreenInventoryGetSpellIdentifyEnabled) method.\n\nSee also [Infinity_GetScrollIdentifyEnabled](#Infinity_GetScrollIdentifyEnabled)\n\n**Example**\n\nThe Indentify via a spell button is enabled if the item requires identification (and there is an Identify spell in the character's possession). Defined in `UI.MENU` as:\n\n```lua\nbutton\n{\n area 52 258 302 44\n bam GUIOSTCL\n text style \"button\"\n text \"SPELL_BUTTON\"\n \n clickable lua \"Infinity_GetSpellIdentifyEnabled(characters[id].equipment[selectedSlot].id)\"\n action \n \"\n Infinity_OnSpellIdentify(characters[id].equipment[selectedSlot].id); \n Infinity_PopMenu()\n itemDesc.item = characters[id].equipment[selectedSlot].item --update itemDesc item\n \"\n}\n```\n\n---", + "documentationMarkdown": "Determines if the specified item requires identification, and can be identified via an Indentify spell (or a magical item that can cast an Identify spell)\n\n**Parameters**\n\n- `string` *item_id* - item id\n\n**Return Value**\n\nReturns a `boolean` value: `1` true, or `0` false\n\n**Notes**\n\nCalls the [CScreenInventory::GetSpellIdentifyEnabled](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L1233) method.\n\nSee also [Infinity_GetScrollIdentifyEnabled](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2335)\n\n**Example**\n\nThe Indentify via a spell button is enabled if the item requires identification (and there is an Identify spell in the character's possession). Defined in `UI.MENU` as:\n\n```lua\nbutton\n{\n area 52 258 302 44\n bam GUIOSTCL\n text style \"button\"\n text \"SPELL_BUTTON\"\n \n clickable lua \"Infinity_GetSpellIdentifyEnabled(characters[id].equipment[selectedSlot].id)\"\n action \n \"\n Infinity_OnSpellIdentify(characters[id].equipment[selectedSlot].id); \n Infinity_PopMenu()\n itemDesc.item = characters[id].equipment[selectedSlot].item --update itemDesc item\n \"\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2431", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1022,7 +1022,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetTimeString()", - "documentationMarkdown": "Returns a formatted date and time string\n\n**Return Value**\n\nReturns a `string` containing the date and time - a timestamp\n\n**Notes**\n\nCalls the [CTimerWorld::GetCurrentTimeString](#CTimerWorldGetCurrentTimeString) method.\n\n**Example**\n\nEditing a journal entry will automatically place a date time value, defined in `UI.MENU` as:\n\n```lua\nlabel\n{\n enabled \"journalMode == const.JOURNAL_MODE_EDIT\"\n area 58 144 382 42\n text style \"label\"\n text color 0 120 0 255\n text lua \"Infinity_GetTimeString()\"\n}\n```\n\n---", + "documentationMarkdown": "Returns a formatted date and time string\n\n**Return Value**\n\nReturns a `string` containing the date and time - a timestamp\n\n**Notes**\n\nCalls the [CTimerWorld::GetCurrentTimeString](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTimerWorld/index.rst#L263) method.\n\n**Example**\n\nEditing a journal entry will automatically place a date time value, defined in `UI.MENU` as:\n\n```lua\nlabel\n{\n enabled \"journalMode == const.JOURNAL_MODE_EDIT\"\n area 58 144 382 42\n text style \"label\"\n text color 0 120 0 255\n text lua \"Infinity_GetTimeString()\"\n}\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2481", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1034,7 +1034,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GetTransitionInProgress()", - "documentationMarkdown": "Returns the transition value\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nPushes the `transition` variable value to the lua stack\n\n**Notes**\n\n`transition` variable located at offset `0x00986720` in BG2EE\n\n`transition` variable value set in [Infinity_TransitionMenu](#Infinity_TransitionMenu), drawTop, and eventMenu functions\n\n**Example**\n\nNo known examples\n\n---", + "documentationMarkdown": "Returns the transition value\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nPushes the `transition` variable value to the lua stack\n\n**Notes**\n\n`transition` variable located at offset `0x00986720` in BG2EE\n\n`transition` variable value set in [Infinity_TransitionMenu](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4704), drawTop, and eventMenu functions\n\n**Example**\n\nNo known examples", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2520", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1045,7 +1045,7 @@ "name": "Infinity_GetUseButtonText", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_GetUseButtonText(item_id, mode)", + "signature": "Infinity_GetUseButtonText(item_id,mode)", "parameters": [ { "type": "integer", @@ -1058,7 +1058,7 @@ "description": "mode" } ], - "documentationMarkdown": "Returns \"Use x\" button text of an item name for an item specified\n\n**Parameters**\n\n- `integer` *item_id* - item id\n- `integer` *mode* - mode\n\n**Return Value**\n\nReturns a `string` containing the \"Use x\" of the item specified\n\n**Notes**\n\nCalls the [CScreenInventory::GetUseButtonText](#CScreenInventoryGetUseButtonText) method\n\n**Example**\n\n---", + "documentationMarkdown": "Returns \"Use x\" button text of an item name for an item specified\n\n**Parameters**\n\n- `integer` *item_id* - item id\n- `integer` *mode* - mode\n\n**Return Value**\n\nReturns a `string` containing the \"Use x\" of the item specified\n\n**Notes**\n\nCalls the [CScreenInventory::GetUseButtonText](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L1291) method\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2553", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1070,7 +1070,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_GooglePlaySignedIn()", - "documentationMarkdown": "Determines if signed into Google Play\n\n**Return Value**\n\nReturns an `integer` value representing `1` true, or `0` false otherwise\n\n**Notes**\n\nCalls the CPlatform::IsPlatformServiceConnected function\n\nReads [CChitin](#CChitin).cSteam => CSteam.m_isSteamConnected\n\nOn builds that are not android returns `false`\n\n**Example**\n\nA Google Play sign in/out button from `UI.MENU`:\n\n```lua\nfunction getGooglePlaySignInText()\n if(Infinity_GooglePlaySignedIn() == 1) then\n return t(\"SIGN_OUT_BUTTON\")\n else\n return t(\"SIGN_IN_BUTTON\")\n end\nend\n```\n\n---", + "documentationMarkdown": "Determines if signed into Google Play\n\n**Return Value**\n\nReturns an `integer` value representing `1` true, or `0` false otherwise\n\n**Notes**\n\nCalls the CPlatform::IsPlatformServiceConnected function\n\nReads [CChitin](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L151).cSteam => CSteam.m_isSteamConnected\n\nOn builds that are not android returns `false`\n\n**Example**\n\nA Google Play sign in/out button from `UI.MENU`:\n\n```lua\nfunction getGooglePlaySignInText()\n if(Infinity_GooglePlaySignedIn() == 1) then\n return t(\"SIGN_OUT_BUTTON\")\n else\n return t(\"SIGN_IN_BUTTON\")\n end\nend\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2585", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1082,7 +1082,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_HighlightJournalButton()", - "documentationMarkdown": "Unknown purpose\n\n**Notes**\n\nReturns `0` false\n\nCalled from highlightJournalButton function in `UTIL.LUA`\n\n**Example**\n\nSee highlightJournalButton function in `UTIL.LUA`\n\nUnknown purpose\n\n---", + "documentationMarkdown": "Unknown purpose\n\n**Notes**\n\nReturns `0` false\n\nCalled from highlightJournalButton function in `UTIL.LUA`\n\n**Example**\n\nSee highlightJournalButton function in `UTIL.LUA`\n\nUnknown purpose", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2626", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1093,7 +1093,7 @@ "name": "Infinity_HoverMouseOver", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_HoverMouseOver(x, y)", + "signature": "Infinity_HoverMouseOver(x,y)", "parameters": [ { "type": "integer", @@ -1106,7 +1106,7 @@ "description": "y coordinate to click world at" } ], - "documentationMarkdown": "Moves where your mouse cursor is in the game world\n\n**Parameters**\n\n- `integer` *x* - x coordinate to click world at\n- `integer` *y* - y coordinate to click world at\n\n**Return Value**\n\nNone\n\n**Notes**\n\nIt doesn't actaully move the mouse cursor, but the game engine thinks it does.\n\n[Infinity_HoverMouseOver](#Infinity_HoverMouseOver) will instantly move your mouse into the game world, but it won't move to the proper x,y for one frame (I think?).\n\nIf you don't include [Infinity_HoverMouseOver](#Infinity_HoverMouseOver) before [Infinity_ClickWorldAt](#Infinity_ClickWorldAt), it will click at world coordinates `0`, `0` by assuming your cursor is over the interface.\n\nYou can force a click in the game world like so:\n\n```lua\nInfinity_HoverMouseOver(x,y)\nInfinity_ClickWorldAt(x,y)\n```\n\n**Example**\n\n```lua\nInfinity_HoverMouseOver(100,200)\n```\n\n---", + "documentationMarkdown": "Moves where your mouse cursor is in the game world\n\n**Parameters**\n\n- `integer` *x* - x coordinate to click world at\n- `integer` *y* - y coordinate to click world at\n\n**Return Value**\n\nNone\n\n**Notes**\n\nIt doesn't actaully move the mouse cursor, but the game engine thinks it does.\n\n[Infinity_HoverMouseOver](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2644) will instantly move your mouse into the game world, but it won't move to the proper x,y for one frame (I think?).\n\nIf you don't include [Infinity_HoverMouseOver](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2644) before [Infinity_ClickWorldAt](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L681), it will click at world coordinates `0`, `0` by assuming your cursor is over the interface.\n\nYou can force a click in the game world like so:\n\n```lua\nInfinity_HoverMouseOver(x,y)\nInfinity_ClickWorldAt(x,y)\n```\n\n**Example**\n\n```lua\nInfinity_HoverMouseOver(100,200)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2653", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1125,7 +1125,7 @@ "description": "name of the object" } ], - "documentationMarkdown": "Activate AI script file for object that mouse is hovering over (?) - not tested/verified\n\n**Parameters**\n\n- `string` *objectname* - name of the object\n\n**Return Value**\n\n??? - Unknown\n\n**Notes**\n\nCalls the [CAIScriptFile::CAIScriptFile](#CAIScriptFileCAIScriptFile) method\n\n**Example**\n\nNo known examples\n\n---", + "documentationMarkdown": "Activate AI script file for object that mouse is hovering over (?) - not tested/verified\n\n**Parameters**\n\n- `string` *objectname* - name of the object\n\n**Return Value**\n\n??? - Unknown\n\n**Notes**\n\nCalls the [CAIScriptFile::CAIScriptFile](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIScriptFile/index.rst#L107) method\n\n**Example**\n\nNo known examples", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2699", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1136,7 +1136,7 @@ "name": "Infinity_InstanceAnimation", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_InstanceAnimation(Template, BamResRef, x, y, w, h, list, list_index)", + "signature": "Infinity_InstanceAnimation(Template,BamResRef,x,y,w,h,list,list_index)", "parameters": [ { "type": "string", @@ -1179,7 +1179,7 @@ "description": "1 based index of entry in *list*" } ], - "documentationMarkdown": "Creates a temporary single instance animation of a bam, based on the UI template provided. Once the animation has finished, the UI control that was created and based on the UI template provided, is no longer present or visible.\n\n**Parameters**\n\n- `string` *Template* - UI template name\n- `string` *BamResRef* - resource reference of bam to show/animate\n- `integer` *x* - left position\n- `integer` *y* - top position\n- `integer` *w* - width\n- `integer` *h* - height\n- `string` *list* - list/array\n- `integer` *list_index* - 1 based index of entry in *list*\n\n**Notes**\n\nAs defined in `UI.MENU` on memorizing a spell: is set to play the default `GAM_24.WAV` sound and to play the `FLASHBR.BAM` animation.\n\n**Example**\n\nShows sparkle as user clicks on mage spell to memorize:\n\n```lua\nInfinity_InstanceAnimation(\"TEMPLATE_mageMemorizationSparkle\",\"FLASHBR\",x,y,w,h,fromList,listIndex)\n```\n\n---", + "documentationMarkdown": "Creates a temporary single instance animation of a bam, based on the UI template provided. Once the animation has finished, the UI control that was created and based on the UI template provided, is no longer present or visible.\n\n**Parameters**\n\n- `string` *Template* - UI template name\n- `string` *BamResRef* - resource reference of bam to show/animate\n- `integer` *x* - left position\n- `integer` *y* - top position\n- `integer` *w* - width\n- `integer` *h* - height\n- `string` *list* - list/array\n- `integer` *list_index* - 1 based index of entry in *list*\n\n**Notes**\n\nAs defined in `UI.MENU` on memorizing a spell: is set to play the default `GAM_24.WAV` sound and to play the `FLASHBR.BAM` animation.\n\n**Example**\n\nShows sparkle as user clicks on mage spell to memorize:\n\n```lua\nInfinity_InstanceAnimation(\"TEMPLATE_mageMemorizationSparkle\",\"FLASHBR\",x,y,w,h,fromList,listIndex)\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2730", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1190,13 +1190,13 @@ "name": "Infinity_IsItemEnabled", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_IsItemEnabled(arg1)", + "signature": "Infinity_IsItemEnabled(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2767", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1213,7 +1213,7 @@ "name": "menu_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Return Value**\n\n`bool`\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Return Value**\n\n`bool`\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2797", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1224,13 +1224,13 @@ "name": "Infinity_IsPlayerMoving", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_IsPlayerMoving(arg1)", + "signature": "Infinity_IsPlayerMoving(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2827", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1247,7 +1247,7 @@ "name": "id" } ], - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2857", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1258,13 +1258,13 @@ "name": "Infinity_LaunchURL", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_LaunchURL(arg1)", + "signature": "Infinity_LaunchURL(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2879", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1276,7 +1276,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_LevelUp()", - "documentationMarkdown": "Opens level up dialog\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nNone\n\n**Notes**\n\nCalls [CScreenCharacter::OnLevelUpButtonClick](#CScreenCharacterOnLevelUpButtonClick) to open the level up dialog.\n\nUnknown if calling this will work without specifying a character like [Infinity_ActivateRecord](#Infinity_ActivateRecord) does.\n\n**Example**\n\nNo known examples\n\n---", + "documentationMarkdown": "Opens level up dialog\n\n**Parameters**\n\nNone\n\n**Return Value**\n\nNone\n\n**Notes**\n\nCalls [CScreenCharacter::OnLevelUpButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCharacter/index.rst#L1904) to open the level up dialog.\n\nUnknown if calling this will work without specifying a character like [Infinity_ActivateRecord](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L329) does.\n\n**Example**\n\nNo known examples", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2909", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1293,7 +1293,7 @@ "name": "msg" } ], - "documentationMarkdown": "**Parameters**\n\n- *msg* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *msg* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2942", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1304,13 +1304,13 @@ "name": "Infinity_LookAtObjectInWorld", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_LookAtObjectInWorld(arg1)", + "signature": "Infinity_LookAtObjectInWorld(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2968", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1321,16 +1321,16 @@ "name": "Infinity_LuaConsoleInput", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_LuaConsoleInput(arg1, arg2)", + "signature": "Infinity_LuaConsoleInput(???,???)", "parameters": [ { - "name": "arg1" + "name": "???" }, { - "name": "arg2" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n- *???* - \n- *???* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *???* - \n- *???* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L2998", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1347,7 +1347,7 @@ "name": "string" } ], - "documentationMarkdown": "**Parameters**\n\n- *string* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *string* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3025", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1364,7 +1364,7 @@ "name": "table_index" } ], - "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3051", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1381,7 +1381,7 @@ "name": "table_index" } ], - "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3077", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1392,7 +1392,7 @@ "name": "Infinity_OnEditUserEntry", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_OnEditUserEntry(string1, string2)", + "signature": "Infinity_OnEditUserEntry(string1,string2)", "parameters": [ { "name": "string1" @@ -1401,7 +1401,7 @@ "name": "string2" } ], - "documentationMarkdown": "**Parameters**\n\n- *string1* - \n- *string2* - \n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *string1* - \n- *string2* - \n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3103", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1418,7 +1418,7 @@ "name": "increment" } ], - "documentationMarkdown": "**Parameters**\n\n- *increment* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *increment* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3134", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1436,7 +1436,7 @@ "description": "index of portrait being double clicked" } ], - "documentationMarkdown": "Event action when mouse double clicks a character portrait\n\n**Parameters**\n\n- *index* - index of portrait being double clicked\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Event action when mouse double clicks a character portrait\n\n**Parameters**\n\n- *index* - index of portrait being double clicked\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3160", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1447,13 +1447,13 @@ "name": "Infinity_OnPortraitItemSelect", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_OnPortraitItemSelect(arg1)", + "signature": "Infinity_OnPortraitItemSelect(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "Event action when character portrait is selected\n\n**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Event action when character portrait is selected\n\n**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3186", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1471,7 +1471,7 @@ "description": "index of portrait being clicked" } ], - "documentationMarkdown": "Event action when mouse left clicks a character portrait\n\n**Parameters**\n\n- *index* - index of portrait being clicked\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Event action when mouse left clicks a character portrait\n\n**Parameters**\n\n- *index* - index of portrait being clicked\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3216", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1489,7 +1489,7 @@ "description": "index of portrait being clicked" } ], - "documentationMarkdown": "Event action when mouse right clicks a character portrait\n\n**Parameters**\n\n- *index* - index of portrait being clicked\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Event action when mouse right clicks a character portrait\n\n**Parameters**\n\n- *index* - index of portrait being clicked\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3242", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1506,7 +1506,7 @@ "name": "string" } ], - "documentationMarkdown": "**Parameters**\n\n- *string* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *string* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3268", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1517,13 +1517,13 @@ "name": "Infinity_OnRest", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_OnRest(arg1)", + "signature": "Infinity_OnRest(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3294", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1540,7 +1540,7 @@ "name": "table_index" } ], - "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3324", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1559,7 +1559,7 @@ "description": "id of the item being identified" } ], - "documentationMarkdown": "Event action when a scroll identifies an item\n\n**Parameters**\n\n- `integer` *item_id* - id of the item being identified\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Event action when a scroll identifies an item\n\n**Parameters**\n\n- `integer` *item_id* - id of the item being identified\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3351", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1576,7 +1576,7 @@ "name": "table_index" } ], - "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *table_index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3377", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1595,7 +1595,7 @@ "description": "id of the item being identified" } ], - "documentationMarkdown": "Event action when a spell identifies an item\n\n**Parameters**\n\n- `integer` *item_id* - id of the item being identified\n\n**Return Value**\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Event action when a spell identifies an item\n\n**Parameters**\n\n- `integer` *item_id* - id of the item being identified\n\n**Return Value**\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3404", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1606,7 +1606,7 @@ "name": "Infinity_OnUseButtonClick", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_OnUseButtonClick(item_id, mode)", + "signature": "Infinity_OnUseButtonClick(item_id,mode)", "parameters": [ { "type": "integer", @@ -1616,7 +1616,7 @@ "name": "mode" } ], - "documentationMarkdown": "**Parameters**\n\n- `integer` *item_id* - \n- *mode* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- `integer` *item_id* - \n- *mode* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3434", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1634,7 +1634,7 @@ "description": "resource reference of the container being opened" } ], - "documentationMarkdown": "**Parameters**\n\n- resref* - resource reference of the container being opened\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- resref* - resource reference of the container being opened\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3461", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1645,7 +1645,7 @@ "name": "Infinity_PlayMovie", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_PlayMovie(movie_name, element_name)", + "signature": "Infinity_PlayMovie(movie_name,element_name)", "parameters": [ { "name": "movie_name", @@ -1655,7 +1655,7 @@ "name": "element_name" } ], - "documentationMarkdown": "Plays a movie (a WebM file format)\n\n**Parameters**\n\n- *movie_name* - resource reference of the movie to play\n- *element_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Plays a movie (a WebM file format)\n\n**Parameters**\n\n- *movie_name* - resource reference of the movie to play\n- *element_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3487", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1673,7 +1673,7 @@ "description": "resource reference of the sound to play" } ], - "documentationMarkdown": "Plays a sound\n\n**Parameters**\n\n- resref* - resource reference of the sound to play\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Plays a sound\n\n**Parameters**\n\n- resref* - resource reference of the sound to play\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3514", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1690,7 +1690,7 @@ "name": "menu_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3540", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1701,13 +1701,13 @@ "name": "Infinity_PressKeyboardButton", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_PressKeyboardButton(arg1)", + "signature": "Infinity_PressKeyboardButton(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n(???)\n\n**Return Value**\n\n(???)\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n(???)\n\n**Return Value**\n\n(???)\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3566", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1724,7 +1724,7 @@ "name": "menu_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3596", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1735,7 +1735,7 @@ "name": "Infinity_RandomNumber", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_RandomNumber(min, range)", + "signature": "Infinity_RandomNumber(min,range)", "parameters": [ { "name": "min", @@ -1746,7 +1746,7 @@ "description": "maximum value of random number" } ], - "documentationMarkdown": "Returns an random number\n\n**Parameters**\n\n- *min* - minimum value of random number\n- *range* - maximum value of random number\n\n**Return Value**\n\n`int`\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Returns an random number\n\n**Parameters**\n\n- *min* - minimum value of random number\n- *range* - maximum value of random number\n\n**Return Value**\n\n`int`\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3622", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1757,7 +1757,7 @@ "name": "Infinity_RemoveINIEntry", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_RemoveINIEntry(section_name, value_name)", + "signature": "Infinity_RemoveINIEntry(section_name,value_name)", "parameters": [ { "name": "section_name", @@ -1768,7 +1768,7 @@ "description": "key in the ini section to remove" } ], - "documentationMarkdown": "Removes an ini section key value\n\n**Parameters**\n\n- section_name* - ini section name\n- value_name* - key in the ini section to remove\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Removes an ini section key value\n\n**Parameters**\n\n- section_name* - ini section name\n- value_name* - key in the ini section to remove\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3653", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1779,13 +1779,13 @@ "name": "Infinity_RequestMultiplayerGameDetails", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_RequestMultiplayerGameDetails(arg1)", + "signature": "Infinity_RequestMultiplayerGameDetails(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3680", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1802,7 +1802,7 @@ "name": "element_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *element_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *element_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3710", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1813,13 +1813,13 @@ "name": "Infinity_ScrollLists", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_ScrollLists(arg1)", + "signature": "Infinity_ScrollLists(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3736", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1830,13 +1830,13 @@ "name": "Infinity_SelectDialogueOption", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SelectDialogueOption(arg1)", + "signature": "Infinity_SelectDialogueOption(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3766", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1847,7 +1847,7 @@ "name": "Infinity_SelectItemAbility", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SelectItemAbility(ability_index, item_num, item_id)", + "signature": "Infinity_SelectItemAbility(ability_index,item_num,item_id)", "parameters": [ { "name": "ability_index" @@ -1860,7 +1860,7 @@ "name": "item_id" } ], - "documentationMarkdown": "**Parameters**\n\n- *ability_index* - \n- *item_num* - \n- `integer` *item_id* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *ability_index* - \n- *item_num* - \n- `integer` *item_id* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3796", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1871,13 +1871,13 @@ "name": "Infinity_SelectListItem", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SelectListItem(arg1)", + "signature": "Infinity_SelectListItem(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3824", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1888,7 +1888,7 @@ "name": "Infinity_SendChatMessage", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SendChatMessage(msg, boolean)", + "signature": "Infinity_SendChatMessage(msg,boolean)", "parameters": [ { "name": "msg" @@ -1897,7 +1897,7 @@ "name": "boolean" } ], - "documentationMarkdown": "**Parameters**\n\n- *msg* - \n- *boolean* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *msg* - \n- *boolean* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3854", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1908,7 +1908,7 @@ "name": "Infinity_SetArea", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetArea(element_name, x, y, w, h)", + "signature": "Infinity_SetArea(element_name,x,y,w,h)", "parameters": [ { "name": "element_name" @@ -1926,7 +1926,7 @@ "name": "h" } ], - "documentationMarkdown": "**Parameters**\n\n- *element_name* - \n- *x* - \n- *y* - \n- *w* - \n- *h* - \n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *element_name* - \n- *x* - \n- *y* - \n- *w* - \n- *h* - \n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3881", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1943,7 +1943,7 @@ "name": "menu_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3915", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1954,13 +1954,13 @@ "name": "Infinity_SetCloudEnabled", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetCloudEnabled(arg1)", + "signature": "Infinity_SetCloudEnabled(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3941", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1971,13 +1971,13 @@ "name": "Infinity_SetGooglePlaySigninState", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetGooglePlaySigninState(arg1)", + "signature": "Infinity_SetGooglePlaySigninState(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L3971", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1994,7 +1994,7 @@ "name": "index" } ], - "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4001", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2005,7 +2005,7 @@ "name": "Infinity_SetHighlightColors", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetHighlightColors(lr, lg, lb, la, cr, cg, cb, ca, rr, rg, rb, ra)", + "signature": "Infinity_SetHighlightColors(lr,lg,lb,la,cr,cg,cb,ca,rr,rg,rb,ra)", "parameters": [ { "type": "hexidecimal", @@ -2068,7 +2068,7 @@ "description": "right color: the transparency level of the alpha channel" } ], - "documentationMarkdown": "Set a color or color gradient for UI elements in the options dialogs that are currently selected\n\n**Parameters**\n\n- `hexidecimal` *lr* - left color: the intensity of the red color channel\n- `hexidecimal` *lg* - left color: the intensity of the green color channel\n- `hexidecimal` *lb* - left color: the intensity of the blue color channel\n- `hexidecimal` *la* - left color: the transparency level of the alpha channel\n- `hexidecimal` *cr* - center color: the intensity of the red color channel\n- `hexidecimal` *cg* - center color: the intensity of the green color channel\n- `hexidecimal` *cb* - center color: the intensity of the blue color channel\n- `hexidecimal` *ca* - center color: the transparency level of the alpha channel\n- `hexidecimal` *rr* - right color: the intensity of the red color channel\n- `hexidecimal` *rg* - right color: the intensity of the green color channel\n- `hexidecimal` *rb* - right color: the intensity of the blue color channel\n- `hexidecimal` *ra* - right color: the transparency level of the alpha channel\n\n**Notes**\n\nUser three color definitions: left, center and right\n\nParameters use **hexidecimal** values (prefixed with `0x`) for each color color and the alpha channel level\n\n**Example**\n\n> Infinity_SetHighlightColors(0x7F,0x00,0x7F,0xff, 0x00,0x7F,0x00,0xff, 0x00,0x00,0x7F,0xff)\n\n---", + "documentationMarkdown": "Set a color or color gradient for UI elements in the options dialogs that are currently selected\n\n**Parameters**\n\n- `hexidecimal` *lr* - left color: the intensity of the red color channel\n- `hexidecimal` *lg* - left color: the intensity of the green color channel\n- `hexidecimal` *lb* - left color: the intensity of the blue color channel\n- `hexidecimal` *la* - left color: the transparency level of the alpha channel\n- `hexidecimal` *cr* - center color: the intensity of the red color channel\n- `hexidecimal` *cg* - center color: the intensity of the green color channel\n- `hexidecimal` *cb* - center color: the intensity of the blue color channel\n- `hexidecimal` *ca* - center color: the transparency level of the alpha channel\n- `hexidecimal` *rr* - right color: the intensity of the red color channel\n- `hexidecimal` *rg* - right color: the intensity of the green color channel\n- `hexidecimal` *rb* - right color: the intensity of the blue color channel\n- `hexidecimal` *ra* - right color: the transparency level of the alpha channel\n\n**Notes**\n\nUser three color definitions: left, center and right\n\nParameters use **hexidecimal** values (prefixed with `0x`) for each color color and the alpha channel level\n\n**Example**\n\n> Infinity_SetHighlightColors(0x7F,0x00,0x7F,0xff, 0x00,0x7F,0x00,0xff, 0x00,0x00,0x7F,0xff)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4027", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2079,7 +2079,7 @@ "name": "Infinity_SetINIValue", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetINIValue(section_name, value_name, value)", + "signature": "Infinity_SetINIValue(section_name,value_name,value)", "parameters": [ { "type": "string", @@ -2097,7 +2097,7 @@ "description": "the new value of the key" } ], - "documentationMarkdown": "Sets a value of an ini section key\n\n**Parameters**\n\n- `string` *section_name* - ini section to set the key value for\n- `string` *value_name* - the key in the ini section to set the value for\n- `string` *value* - the new value of the key\n\n**Notes**\n\n**Example**\n\nSet the `Player Name` key in `Multiplayer` section to the value of the variable `connectionPlayerNameEdit`\n\n```lua\nif connectionPlayerNameEdit == \"\" then\n connectionPlayerNameEdit = Infinity_GetINIString('Multiplayer', 'Player Name', player)\n Infinity_SetINIValue('Multiplayer', 'Player Name', connectionPlayerNameEdit)\nend\n```\n\n---", + "documentationMarkdown": "Sets a value of an ini section key\n\n**Parameters**\n\n- `string` *section_name* - ini section to set the key value for\n- `string` *value_name* - the key in the ini section to set the value for\n- `string` *value* - the new value of the key\n\n**Notes**\n\n**Example**\n\nSet the `Player Name` key in `Multiplayer` section to the value of the variable `connectionPlayerNameEdit`\n\n```lua\nif connectionPlayerNameEdit == \"\" then\n connectionPlayerNameEdit = Infinity_GetINIString('Multiplayer', 'Player Name', player)\n Infinity_SetINIValue('Multiplayer', 'Player Name', connectionPlayerNameEdit)\nend\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4067", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2108,7 +2108,7 @@ "name": "Infinity_SetKey", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetKey(value, type)", + "signature": "Infinity_SetKey(value,type)", "parameters": [ { "name": "value" @@ -2117,7 +2117,7 @@ "name": "type" } ], - "documentationMarkdown": "Sets key in C++ memory\n\n**Parameters**\n\n- *value* - \n- *type* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "Sets key in C++ memory\n\n**Parameters**\n\n- *value* - \n- *type* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4102", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2128,7 +2128,7 @@ "name": "Infinity_SetLanguage", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetLanguage(lang_id, showSubTitles)", + "signature": "Infinity_SetLanguage(lang_id,showSubTitles)", "parameters": [ { "name": "lang_id" @@ -2137,7 +2137,7 @@ "name": "showSubTitles" } ], - "documentationMarkdown": "**Parameters**\n\n- *lang_id* - \n- *showSubTitles* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *lang_id* - \n- *showSubTitles* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4129", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2154,7 +2154,7 @@ "name": "index" } ], - "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4156", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2171,7 +2171,7 @@ "name": "index" } ], - "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4182", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2182,7 +2182,7 @@ "name": "Infinity_SetOffset", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetOffset(menu_name, x, y)", + "signature": "Infinity_SetOffset(menu_name,x,y)", "parameters": [ { "name": "menu_name" @@ -2194,7 +2194,7 @@ "name": "y" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n- *x* - \n- *y* - \n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n- *x* - \n- *y* - \n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4208", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2211,7 +2211,7 @@ "name": "menu_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4240", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2222,7 +2222,7 @@ "name": "Infinity_SetScreenSize", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetScreenSize(w, h)", + "signature": "Infinity_SetScreenSize(w,h)", "parameters": [ { "name": "w" @@ -2231,7 +2231,7 @@ "name": "h" } ], - "documentationMarkdown": "**Parameters**\n\n- *w* - \n- *h* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *w* - \n- *h* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4266", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2242,13 +2242,13 @@ "name": "Infinity_SetScrollTop", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetScrollTop(arg1)", + "signature": "Infinity_SetScrollTop(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4293", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2265,7 +2265,7 @@ "name": "index" } ], - "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4323", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2276,7 +2276,7 @@ "name": "Infinity_SetToken", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SetToken(token_name, value)", + "signature": "Infinity_SetToken(token_name,value)", "parameters": [ { "name": "token_name" @@ -2285,7 +2285,7 @@ "name": "value" } ], - "documentationMarkdown": "**Parameters**\n\n- *token_name* - \n- *value* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *token_name* - \n- *value* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4349", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2297,7 +2297,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_ShutdownGame()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4376", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2308,13 +2308,13 @@ "name": "Infinity_SignInOutButtonEnabled", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SignInOutButtonEnabled(arg1)", + "signature": "Infinity_SignInOutButtonEnabled(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4398", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2325,7 +2325,7 @@ "name": "Infinity_SplitItemStack", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SplitItemStack(item_id, count, slot_name)", + "signature": "Infinity_SplitItemStack(item_id,count,slot_name)", "parameters": [ { "type": "integer", @@ -2338,7 +2338,7 @@ "name": "slot_name" } ], - "documentationMarkdown": "**Parameters**\n\n- `integer` *item_id* - \n- *count* - \n- *slot_name* - \n\n**Return Value**\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- `integer` *item_id* - \n- *count* - \n- *slot_name* - \n\n**Return Value**\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4428", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2355,7 +2355,7 @@ "name": "map_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *map_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *map_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4460", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2372,7 +2372,7 @@ "name": "action" } ], - "documentationMarkdown": "**Parameters**\n\n- *action* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *action* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4487", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2389,7 +2389,7 @@ "name": "map_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *map_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *map_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4513", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2401,7 +2401,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_StopKeybind()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4539", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2418,7 +2418,7 @@ "name": "element_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *element_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *element_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4561", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2429,13 +2429,13 @@ "name": "Infinity_SwapSlot", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_SwapSlot(arg1)", + "signature": "Infinity_SwapSlot(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4587", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2447,7 +2447,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_SwapWithAppearance()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4617", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2464,7 +2464,7 @@ "name": "index" } ], - "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *index* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4639", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2476,7 +2476,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_TakeScreenshot()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4665", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2488,7 +2488,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_TextEditHasFocus()", - "documentationMarkdown": "**Return Value**\n\n`bool`\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Return Value**\n\n`bool`\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4687", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2505,7 +2505,7 @@ "name": "menu_name" } ], - "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n- *menu_name* - \n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4713", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2517,7 +2517,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_UpdateCharacterRecordExportPanel()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4739", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2529,7 +2529,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_UpdateCloudSaveState()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4761", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2540,13 +2540,13 @@ "name": "Infinity_UpdateInventoryRequesterPanel", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_UpdateInventoryRequesterPanel(arg1)", + "signature": "Infinity_UpdateInventoryRequesterPanel(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4783", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2558,7 +2558,7 @@ "kind": "function", "sourceSection": "ee-game-lua-functions", "signature": "Infinity_UpdateLuaStats()", - "documentationMarkdown": "**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4813", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2569,13 +2569,13 @@ "name": "Infinity_UpdateStoreMainPanel", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_UpdateStoreMainPanel(arg1)", + "signature": "Infinity_UpdateStoreMainPanel(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4835", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2586,13 +2586,13 @@ "name": "Infinity_UpdateStoreRequesterPanel", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_UpdateStoreRequesterPanel(arg1)", + "signature": "Infinity_UpdateStoreRequesterPanel(???)", "parameters": [ { - "name": "arg1" + "name": "???" } ], - "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**\n\n---", + "documentationMarkdown": "**Parameters**\n\n???\n\n**Return Value**\n\n???\n\n**Notes**\n\n**Example**", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L4865", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2603,7 +2603,7 @@ "name": "Infinity_WriteINILine", "kind": "function", "sourceSection": "ee-game-lua-functions", - "signature": "Infinity_WriteINILine(file_handle, string)", + "signature": "Infinity_WriteINILine(file_handle,string)", "parameters": [ { "name": "file_handle" diff --git a/resources/api/sections/ee-game-lua-functions/chapterScreen.json b/resources/api/sections/ee-game-lua-functions/chapterScreen.json index 792da14..c3f7e1e 100644 --- a/resources/api/sections/ee-game-lua-functions/chapterScreen.json +++ b/resources/api/sections/ee-game-lua-functions/chapterScreen.json @@ -24,7 +24,7 @@ ], "containerName": "chapterScreen", "instanceName": "IsDoneButtonClickable", - "documentationMarkdown": "Determines if the `Done` button is enabled and clickable by user\n\n**Parameters**\n\nNone\n\n**Returns**\n\nReturns true `1` if successful or false `0` otherwise.\n\nPushes onto lua stack a lua boolean `true` if button is clickable or a lua boolean `false` otherwise.\n\n**Notes**\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_IsDoneButtonClickable00 function\n\n**Example**\n\nThe `Done` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 532 714 234 44\n bam GUIOSTUR\n text \"DONE_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsDoneButtonClickable()\"\n action\n \"\n chapterScreen:OnDoneButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:OnDoneButtonClick](#chapterScreen_OnDoneButtonClick)", + "documentationMarkdown": "Determines if the `Done` button is enabled and clickable by user\n\n**Parameters**\n\nNone\n\n**Returns**\n\nReturns true `1` if successful or false `0` otherwise.\n\nPushes onto lua stack a lua boolean `true` if button is clickable or a lua boolean `false` otherwise.\n\n**Notes**\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_IsDoneButtonClickable00 function\n\n**Example**\n\nThe `Done` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 532 714 234 44\n bam GUIOSTUR\n text \"DONE_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsDoneButtonClickable()\"\n action\n \"\n chapterScreen:OnDoneButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:OnDoneButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_OnDoneButtonClick.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_IsDoneButtonClickable.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -43,7 +43,7 @@ ], "containerName": "chapterScreen", "instanceName": "IsReplayButtonClickable", - "documentationMarkdown": "Determines if the `Replay` button is enabled and clickable by user\n\n**Parameters**\n\nNone\n\n**Returns**\n\nReturns true `1` if successful or false `0` otherwise.\n\nPushes onto lua stack a lua boolean `true` if button is clickable or a lua boolean `false` otherwise.\n\n**Notes**\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_IsReplayButtonClickable00 function which calls the [CScreenChapter::IsReplayButtonClickable](#CScreenChapterIsReplayButtonClickable) method\n\n**Example**\n\nThe `Replay` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 280 714 234 44\n bam GUIOSTUL\n text \"REPLAY_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsReplayButtonClickable()\"\n action\n \"\n chapterScreen:OnReplayButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:OnReplayButtonClick](#chapterScreen_OnReplayButtonClick)", + "documentationMarkdown": "Determines if the `Replay` button is enabled and clickable by user\n\n**Parameters**\n\nNone\n\n**Returns**\n\nReturns true `1` if successful or false `0` otherwise.\n\nPushes onto lua stack a lua boolean `true` if button is clickable or a lua boolean `false` otherwise.\n\n**Notes**\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_IsReplayButtonClickable00 function which calls the [CScreenChapter::IsReplayButtonClickable](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenChapter/index.rst#L611) method\n\n**Example**\n\nThe `Replay` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 280 714 234 44\n bam GUIOSTUL\n text \"REPLAY_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsReplayButtonClickable()\"\n action\n \"\n chapterScreen:OnReplayButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:OnReplayButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_OnReplayButtonClick.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_IsReplayButtonClickable.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -57,7 +57,7 @@ "signature": "chapterScreen:OnDoneButtonClick()", "containerName": "chapterScreen", "instanceName": "OnDoneButtonClick", - "documentationMarkdown": "Event action for when the `Done` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nExits the chapter text screen when this button is clicked\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_OnDoneButtonClick00 function which calls the [CScreenChapter::OnDoneButtonClick](#CScreenChapterOnDoneButtonClick) method\n\n**Example**\n\nThe `Done` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 532 714 234 44\n bam GUIOSTUR\n text \"DONE_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsDoneButtonClickable()\"\n action\n \"\n chapterScreen:OnDoneButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:IsDoneButtonClickable](#chapterScreen_IsDoneButtonClickable)", + "documentationMarkdown": "Event action for when the `Done` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nExits the chapter text screen when this button is clicked\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_OnDoneButtonClick00 function which calls the [CScreenChapter::OnDoneButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenChapter/index.rst#L632) method\n\n**Example**\n\nThe `Done` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 532 714 234 44\n bam GUIOSTUR\n text \"DONE_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsDoneButtonClickable()\"\n action\n \"\n chapterScreen:OnDoneButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:IsDoneButtonClickable](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_IsDoneButtonClickable.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_OnDoneButtonClick.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -71,7 +71,7 @@ "signature": "chapterScreen:OnReplayButtonClick()", "containerName": "chapterScreen", "instanceName": "OnReplayButtonClick", - "documentationMarkdown": "Event action for when the `Replay` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_OnReplayButtonClick00 function which calls the [CScreenChapter::OnReplayButtonClick](#CScreenChapterOnReplayButtonClick) method\n\n**Example**\n\nThe `Replay` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 280 714 234 44\n bam GUIOSTUL\n text \"REPLAY_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsReplayButtonClickable()\"\n action\n \"\n chapterScreen:OnReplayButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:IsReplayButtonClickable](#chapterScreen_IsReplayButtonClickable)", + "documentationMarkdown": "Event action for when the `Replay` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nThe lua `action` occurs if the button is enabled (clickable) and is clicked\n\nCalls the tolua_BaldurLUA_CScreenChapter_OnReplayButtonClick00 function which calls the [CScreenChapter::OnReplayButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenChapter/index.rst#L836) method\n\n**Example**\n\nThe `Replay` button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n area 280 714 234 44\n bam GUIOSTUL\n text \"REPLAY_BUTTON\"\n text style \"button\"\n clickable lua \"chapterScreen:IsReplayButtonClickable()\"\n action\n \"\n chapterScreen:OnReplayButtonClick()\n \"\n}\n```\n\n**See Also**\n\n[chapterScreen:IsReplayButtonClickable](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_IsReplayButtonClickable.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_OnReplayButtonClick.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -85,7 +85,7 @@ "signature": "chapterScreen:StartTextScreen()", "containerName": "chapterScreen", "instanceName": "StartTextScreen", - "documentationMarkdown": "Load chapter text into UI elements\n\n**Parameters**\n\n- `string` *textscreenOverride* - unknown, process custom 2DA?\n\n**Returns**\n\nNone\n\n**Notes**\n\nProcesses string references (StrRef) stored in `CHPTXT?.2DA` (where `?` is the chapter number). For the `DEFAULT` row in the 2DA file, column 0 stores the StrRef of the chapter number: *\"Chapter 1\"* and column 1 stores the StrRef of the chapter text: *\"Disaster comes on the heels of your victory in Baldur's Gate\"...*\n\nAssigns the strings loaded to UI elements.\n\nLoads chapter backgrounds, starts music and the scrolling text (? - to be confirmed)\n\nCalls the tolua_BaldurLUA_CScreenChapter_StartTextScreen00 function which calls the [CScreenChapter:StartTextScreen](#CScreenChapterStartTextScreen) method\n\n**Example**\n\n```lua\nchapterScreen:StartTextScreen()\n```", + "documentationMarkdown": "Load chapter text into UI elements\n\n**Parameters**\n\n- `string` *textscreenOverride* - unknown, process custom 2DA?\n\n**Returns**\n\nNone\n\n**Notes**\n\nProcesses string references (StrRef) stored in `CHPTXT?.2DA` (where `?` is the chapter number). For the `DEFAULT` row in the 2DA file, column 0 stores the StrRef of the chapter number: *\"Chapter 1\"* and column 1 stores the StrRef of the chapter text: *\"Disaster comes on the heels of your victory in Baldur's Gate\"...*\n\nAssigns the strings loaded to UI elements.\n\nLoads chapter backgrounds, starts music and the scrolling text (? - to be confirmed)\n\nCalls the tolua_BaldurLUA_CScreenChapter_StartTextScreen00 function which calls the [CScreenChapter:StartTextScreen](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenChapter/index.rst#L990) method\n\n**Example**\n\n```lua\nchapterScreen:StartTextScreen()\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/chapterScreen/chapterScreen_StartTextScreen.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-lua-functions/createCharScreen.json b/resources/api/sections/ee-game-lua-functions/createCharScreen.json index 072e016..654365b 100644 --- a/resources/api/sections/ee-game-lua-functions/createCharScreen.json +++ b/resources/api/sections/ee-game-lua-functions/createCharScreen.json @@ -369,7 +369,7 @@ "signature": "createCharScreen:OnCheatyMcCheaterson()", "containerName": "createCharScreen", "instanceName": "OnCheatyMcCheaterson", - "documentationMarkdown": "Event action when CTRL+8 cheat keys are pressed\n\n**Parameters**\n\n**Returns**\n\n**Notes**\n\n**Example**\n\n```lua\ncreateCharScreen:OnCheatyMcCheaterson()\n```\n\n**See Also**\n\n[C:EnableCheatKeys](#C_EnableCheatKeys)", + "documentationMarkdown": "Event action when CTRL+8 cheat keys are pressed\n\n**Parameters**\n\n**Returns**\n\n**Notes**\n\n**Example**\n\n```lua\ncreateCharScreen:OnCheatyMcCheaterson()\n```\n\n**See Also**\n\n[C:EnableCheatKeys](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/C/C_EnableCheatKeys.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_OnCheatyMcCheaterson.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -712,7 +712,7 @@ ], "containerName": "createCharScreen", "instanceName": "SetAbilityHelpInfo", - "documentationMarkdown": "Set tokens for ability score information\n\n**Parameters**\n\n- `integer` *stat* - value representing the ability score to set token information for\n\n**Returns**\n\nNone\n\n**Notes**\n\nSets ability score tokens `` and `` for the panel that displays the specifics of each ability score, recommended scores and minimum required scores for specific classes.\n\n> **Note**\n> The full text and description for the ability score help information is fetched outside of this function. By using the [Infinity_FetchString](#Infinity_FetchString) function in `UI.MENU` to fetch a string reference (StrRef) and combining with the ability score tokens fetched by [createCharScreen:SetAbilityHelpInfo](#createCharScreen_SetAbilityHelpInfo), this full text is then output into the help panel.\n\nThe *stat* parameter can be one of the following values, which equate to the ability score to set information for:\n\n| **Stat** | **Ability** |\n| --- | --- |\n| 1 | Strength |\n| 2 | Dexterity |\n| 3 | Constitution |\n| 4 | Intelligence |\n| 5 | Wisdom |\n| 6 | Charisma |\n\n**Examples**\n\nSet ability score help info for Dexterity:\n\n```lua\ncreateCharScreen:SetAbilityHelpInfo(2)\nDexterityAbilityInfo = Infinity_FetchString(9584)\n```\n\nUsing a lua function and an array to dynamically set text for ability score information in `UI.MENU`:\n\n```lua\n`\nchargen.ability = {\n {name = 'STRENGTH_LABEL', desc = 9582},\n {name = 'DEXTERITY_LABEL', desc = 9584},\n {name = 'CONSTITUTION_LABEL', desc = 9583},\n {name = 'INTELLIGENCE_LABEL', desc = 9585},\n {name = 'WISDOM_LABEL', desc = 9586},\n {name = 'CHARISMA_LABEL', desc = 9587},\n}\n\nfunction abilityOrGeneralHelp()\n ability = chargen.ability[currentChargenAbility]\n if ability and ability.desc ~= -1 then\n createCharScreen:SetAbilityHelpInfo(currentChargenAbility)\n return Infinity_FetchString(ability.desc)\n else\n return Infinity_FetchString(17247)\n end\nend\n`\n\n--[[\n This is a comment. Part of the code is excluded for example purposes\n Later on the function is used to fetch the ability score description\n The ability score description is stored as a ResRef in the array above\n The text of the UI control is set via the lua abilityOrGeneralHelp\n--]]\n\n text\n {\n area 582 196 404 400\n text lua \"abilityOrGeneralHelp()\"\n text style \"normal\"\n scrollbar 'GUISCRC'\n }\n```", + "documentationMarkdown": "Set tokens for ability score information\n\n**Parameters**\n\n- `integer` *stat* - value representing the ability score to set token information for\n\n**Returns**\n\nNone\n\n**Notes**\n\nSets ability score tokens `` and `` for the panel that displays the specifics of each ability score, recommended scores and minimum required scores for specific classes.\n\n> **Note**\n> The full text and description for the ability score help information is fetched outside of this function. By using the [Infinity_FetchString](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L921) function in `UI.MENU` to fetch a string reference (StrRef) and combining with the ability score tokens fetched by [createCharScreen:SetAbilityHelpInfo](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_SetAbilityHelpInfo.rst#L1), this full text is then output into the help panel.\n\nThe *stat* parameter can be one of the following values, which equate to the ability score to set information for:\n\n| **Stat** | **Ability** |\n| --- | --- |\n| 1 | Strength |\n| 2 | Dexterity |\n| 3 | Constitution |\n| 4 | Intelligence |\n| 5 | Wisdom |\n| 6 | Charisma |\n\n**Examples**\n\nSet ability score help info for Dexterity:\n\n```lua\ncreateCharScreen:SetAbilityHelpInfo(2)\nDexterityAbilityInfo = Infinity_FetchString(9584)\n```\n\nUsing a lua function and an array to dynamically set text for ability score information in `UI.MENU`:\n\n```lua\n`\nchargen.ability = {\n {name = 'STRENGTH_LABEL', desc = 9582},\n {name = 'DEXTERITY_LABEL', desc = 9584},\n {name = 'CONSTITUTION_LABEL', desc = 9583},\n {name = 'INTELLIGENCE_LABEL', desc = 9585},\n {name = 'WISDOM_LABEL', desc = 9586},\n {name = 'CHARISMA_LABEL', desc = 9587},\n}\n\nfunction abilityOrGeneralHelp()\n ability = chargen.ability[currentChargenAbility]\n if ability and ability.desc ~= -1 then\n createCharScreen:SetAbilityHelpInfo(currentChargenAbility)\n return Infinity_FetchString(ability.desc)\n else\n return Infinity_FetchString(17247)\n end\nend\n`\n\n--[[\n This is a comment. Part of the code is excluded for example purposes\n Later on the function is used to fetch the ability score description\n The ability score description is stored as a ResRef in the array above\n The text of the UI control is set via the lua abilityOrGeneralHelp\n--]]\n\n text\n {\n area 582 196 404 400\n text lua \"abilityOrGeneralHelp()\"\n text style \"normal\"\n scrollbar 'GUISCRC'\n }\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_SetAbilityHelpInfo.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-lua-functions/createPartyScreen.json b/resources/api/sections/ee-game-lua-functions/createPartyScreen.json index 1942e47..011dcd1 100644 --- a/resources/api/sections/ee-game-lua-functions/createPartyScreen.json +++ b/resources/api/sections/ee-game-lua-functions/createPartyScreen.json @@ -19,7 +19,7 @@ "signature": "createPartyScreen:OnBackButtonClick()", "containerName": "createPartyScreen", "instanceName": "OnBackButtonClick", - "documentationMarkdown": "Event action for when the `Back` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nReturns to previous menu when the back button is clicked\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnBackButtonClick00 function which calls the [CScreenCreateParty::OnBackButtonClick](#CScreenCreatePartyOnBackButtonClick) method\n\n**Example**\n\nThe back button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n\ton escape\n\tarea 306 720 204 44\n\tbam 'GUIOSTUM'\n\tsequence 0\n\ttext \"BACK_BUTTON\" -- Back\n\ttext style 'button'\n\taction \n\t\"\n\t\tcreatePartyScreen:OnBackButtonClick()\n\t\"\n}\n```\n\n**See Also**\n\n[createPartyScreen:OnDoneButtonClick](#createPartyScreen_OnDoneButtonClick), [createPartyScreen:OnCreateDeleteButtonClick](#createPartyScreen_OnCreateDeleteButtonClick), [createPartyScreen:OnPortraitButtonClick](#createPartyScreen_OnPortraitButtonClick)", + "documentationMarkdown": "Event action for when the `Back` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nReturns to previous menu when the back button is clicked\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnBackButtonClick00 function which calls the [CScreenCreateParty::OnBackButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCreateParty/index.rst#L479) method\n\n**Example**\n\nThe back button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n\ton escape\n\tarea 306 720 204 44\n\tbam 'GUIOSTUM'\n\tsequence 0\n\ttext \"BACK_BUTTON\" -- Back\n\ttext style 'button'\n\taction \n\t\"\n\t\tcreatePartyScreen:OnBackButtonClick()\n\t\"\n}\n```\n\n**See Also**\n\n[createPartyScreen:OnDoneButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnDoneButtonClick.rst#L1), [createPartyScreen:OnCreateDeleteButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnCreateDeleteButtonClick.rst#L1), [createPartyScreen:OnPortraitButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnPortraitButtonClick.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnBackButtonClick.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -33,7 +33,7 @@ "signature": "createPartyScreen:OnCreateDeleteButtonClick()", "containerName": "createPartyScreen", "instanceName": "OnCreateDeleteButtonClick", - "documentationMarkdown": "Event action for when the `Delete` button is clicked\n\n**Parameters**\n\n- `integer` *Index* - 0 based index of created character's delete button clicked\n\n**Returns**\n\nNone\n\n**Notes**\n\nThe selected character, that has been previously created, is deleted when this button is clicked\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnCreateDeleteButtonClick00 function which calls the [CScreenCreateParty::OnCreateDeleteButtonClick](#CScreenCreatePartyOnCreateDeleteButtonClick) method\n\n**Example**\n\nA delete party member button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n\tarea 155 452 300 44\n\tbam 'GUIOSTCL'\n\tsequence 1\n\ttext lua \"partyImport.character[3].createdelete\"\n\ttext style \"button\"\n\taction\n\t\"\n\t\tcreatePartyScreen:OnCreateDeleteButtonClick(2)\n\t\"\n}\n```\n\n**See Also**\n\n[createPartyScreen:OnDoneButtonClick](#createPartyScreen_OnDoneButtonClick), :[createPartyScreen:OnBackButtonClick](#createPartyScreen_OnBackButtonClick), [createPartyScreen:OnPortraitButtonClick](#createPartyScreen_OnPortraitButtonClick)", + "documentationMarkdown": "Event action for when the `Delete` button is clicked\n\n**Parameters**\n\n- `integer` *Index* - 0 based index of created character's delete button clicked\n\n**Returns**\n\nNone\n\n**Notes**\n\nThe selected character, that has been previously created, is deleted when this button is clicked\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnCreateDeleteButtonClick00 function which calls the [CScreenCreateParty::OnCreateDeleteButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCreateParty/index.rst#L496) method\n\n**Example**\n\nA delete party member button as defined in `UI.MENU`:\n\n```lua\nbutton\n{\n\tarea 155 452 300 44\n\tbam 'GUIOSTCL'\n\tsequence 1\n\ttext lua \"partyImport.character[3].createdelete\"\n\ttext style \"button\"\n\taction\n\t\"\n\t\tcreatePartyScreen:OnCreateDeleteButtonClick(2)\n\t\"\n}\n```\n\n**See Also**\n\n[createPartyScreen:OnDoneButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnDoneButtonClick.rst#L1), :[createPartyScreen:OnBackButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnBackButtonClick.rst#L1), [createPartyScreen:OnPortraitButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnPortraitButtonClick.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnCreateDeleteButtonClick.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -47,7 +47,7 @@ "signature": "createPartyScreen:OnDoneButtonClick()", "containerName": "createPartyScreen", "instanceName": "OnDoneButtonClick", - "documentationMarkdown": "Event action for when the `Done` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nFinishes the create party process\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnDoneButtonClick00 function which calls the [CScreenCreateParty::OnDoneButtonClick](#CScreenCreatePartyOnDoneButtonClick) method\n\n**Example**\n\n```lua\ncreatePartyScreen:OnDoneButtonClick()\n```\n\n**See Also**\n\n[createPartyScreen:OnBackButtonClick](#createPartyScreen_OnBackButtonClick), [createPartyScreen:OnCreateDeleteButtonClick](#createPartyScreen_OnCreateDeleteButtonClick), [createPartyScreen:OnPortraitButtonClick](#createPartyScreen_OnPortraitButtonClick)", + "documentationMarkdown": "Event action for when the `Done` button is clicked\n\n**Parameters**\n\nNone\n\n**Returns**\n\nNone\n\n**Notes**\n\nFinishes the create party process\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnDoneButtonClick00 function which calls the [CScreenCreateParty::OnDoneButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCreateParty/index.rst#L517) method\n\n**Example**\n\n```lua\ncreatePartyScreen:OnDoneButtonClick()\n```\n\n**See Also**\n\n[createPartyScreen:OnBackButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnBackButtonClick.rst#L1), [createPartyScreen:OnCreateDeleteButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnCreateDeleteButtonClick.rst#L1), [createPartyScreen:OnPortraitButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnPortraitButtonClick.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnDoneButtonClick.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -68,7 +68,7 @@ ], "containerName": "createPartyScreen", "instanceName": "OnPortraitButtonClick", - "documentationMarkdown": "Event action for when a portrait button is clicked\n\n**Parameters**\n\n- `integer` *Index* - 0 based index of portrait clicked\n\n**Returns**\n\nNone\n\n**Notes**\n\nSelects the character for the portrait that is clicked\n\nLua arrays use 1 based index when accessing arrays\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnPortraitButtonClick00 function which calls the [CScreenCreateParty::OnPortraitButtonClick](#CScreenCreatePartyOnPortraitButtonClick) method\n\n**Example**\n\nA portrait button as defined in `UI.MENU` for the 5th character:\n\n```lua\nbutton\n{\n area 561 317 56 86\n bitmap lua \"partyImport.character[5].portrait\"\n clickable lua \"partyImport.character[5].name ~= ''\"\n action\n \"\n createPartyScreen:OnPortraitButtonClick(4)\n \"\n}\n```\n\n**See Also**\n\n[createPartyScreen:OnDoneButtonClick](#createPartyScreen_OnDoneButtonClick), [createPartyScreen:OnBackButtonClick](#createPartyScreen_OnBackButtonClick), [createPartyScreen:OnCreateDeleteButtonClick](#createPartyScreen_OnCreateDeleteButtonClick)", + "documentationMarkdown": "Event action for when a portrait button is clicked\n\n**Parameters**\n\n- `integer` *Index* - 0 based index of portrait clicked\n\n**Returns**\n\nNone\n\n**Notes**\n\nSelects the character for the portrait that is clicked\n\nLua arrays use 1 based index when accessing arrays\n\nCalls the tolua_BaldurLUA_CScreenCreateParty_OnPortraitButtonClick00 function which calls the [CScreenCreateParty::OnPortraitButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCreateParty/index.rst#L640) method\n\n**Example**\n\nA portrait button as defined in `UI.MENU` for the 5th character:\n\n```lua\nbutton\n{\n area 561 317 56 86\n bitmap lua \"partyImport.character[5].portrait\"\n clickable lua \"partyImport.character[5].name ~= ''\"\n action\n \"\n createPartyScreen:OnPortraitButtonClick(4)\n \"\n}\n```\n\n**See Also**\n\n[createPartyScreen:OnDoneButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnDoneButtonClick.rst#L1), [createPartyScreen:OnBackButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnBackButtonClick.rst#L1), [createPartyScreen:OnCreateDeleteButtonClick](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnCreateDeleteButtonClick.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Lua%20Functions/createPartyScreen/createPartyScreen_OnPortraitButtonClick.rst#L11", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/C2.json b/resources/api/sections/ee-game-structures-x64/C2.json index 8399d71..e3a1462 100644 --- a/resources/api/sections/ee-game-structures-x64/C2.json +++ b/resources/api/sections/ee-game-structures-x64/C2.json @@ -19,7 +19,7 @@ "signature": "struct C2DArray (56 bytes)", "byteSize": 56, "memberCount": 7, - "documentationMarkdown": "The class that uses this structure is [C2DArray Class](#C2DArray Class)", + "documentationMarkdown": "The class that uses this structure is [C2DArray Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/C2DArray/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/C2/index.rst#L14", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CA.json b/resources/api/sections/ee-game-structures-x64/CA.json index a11f6d6..c31881f 100644 --- a/resources/api/sections/ee-game-structures-x64/CA.json +++ b/resources/api/sections/ee-game-structures-x64/CA.json @@ -301,7 +301,7 @@ "signature": "struct CAIAction (136 bytes)", "byteSize": 136, "memberCount": 12, - "documentationMarkdown": "Used by the [CAIAction Class](#CAIAction Class)", + "documentationMarkdown": "Used by the [CAIAction Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIAction/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L52", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -507,7 +507,7 @@ "signature": "struct CAICondition (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CAICondition Class](#CAICondition Class)", + "documentationMarkdown": "Used by the [CAICondition Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAICondition/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L96", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -582,7 +582,7 @@ "signature": "struct CAIGroup (64 bytes)", "byteSize": 64, "memberCount": 3, - "documentationMarkdown": "Used by the [CAIGroup Class](#CAIGroup Class)", + "documentationMarkdown": "Used by the [CAIGroup Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIGroup/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L128", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -705,7 +705,7 @@ "signature": "struct CAIIdList (112 bytes)", "byteSize": 112, "memberCount": 6, - "documentationMarkdown": "Used by the [CAIIdList Class](#CAIIdList Class)", + "documentationMarkdown": "Used by the [CAIIdList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIIdList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L170", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -844,7 +844,7 @@ "signature": "struct CAIObjectType (24 bytes)", "byteSize": 24, "memberCount": 10, - "documentationMarkdown": "Used by the [CAIObjectType Class](#CAIObjectType Class)\n\n**Notes**\n\nValid values for the following fields can be found in specific .IDS files:\n\n- **m_EnemyAlly** valid values can be found in the `EA.IDS` file\n- **m_General** valid values can be found in the `GENERAL.IDS` file\n- **m_Race** valid values can be found in the `RACE.IDS` file\n- **m_Class** valid values can be found in the `CLASS.IDS` file\n- **m_Specifics** valid values can be found in the `SPECIFIC.IDS` file\n- **m_Gender** valid values can be found in the `GENDER.IDS` file\n- **m_Alignment** valid values can be found in the `ALIGN.IDS` file", + "documentationMarkdown": "Used by the [CAIObjectType Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIObjectType/index.rst#L1)\n\n**Notes**\n\nValid values for the following fields can be found in specific .IDS files:\n\n- **m_EnemyAlly** valid values can be found in the `EA.IDS` file\n- **m_General** valid values can be found in the `GENERAL.IDS` file\n- **m_Race** valid values can be found in the `RACE.IDS` file\n- **m_Class** valid values can be found in the `CLASS.IDS` file\n- **m_Specifics** valid values can be found in the `SPECIFIC.IDS` file\n- **m_Gender** valid values can be found in the `GENDER.IDS` file\n- **m_Alignment** valid values can be found in the `ALIGN.IDS` file", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L216", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1047,7 +1047,7 @@ "signature": "struct CAIResponse (64 bytes)", "byteSize": 64, "memberCount": 5, - "documentationMarkdown": "Used by the [CAIResponse Class](#CAIResponse Class)", + "documentationMarkdown": "Used by the [CAIResponse Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIResponse/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L276", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1186,7 +1186,7 @@ "signature": "struct CAIScript (64 bytes)", "byteSize": 64, "memberCount": 2, - "documentationMarkdown": "Used by the [CAIScript Class](#CAIScript Class)", + "documentationMarkdown": "Used by the [CAIScript Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIScript/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L318", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1232,7 +1232,7 @@ "signature": "struct CAIScriptFile (424 bytes)", "byteSize": 424, "memberCount": 13, - "documentationMarkdown": "Used by the [CAIScriptFile Class](#CAIScriptFile Class)", + "documentationMarkdown": "Used by the [CAIScriptFile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIScriptFile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L336", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1454,7 +1454,7 @@ "signature": "struct CAITrigger (64 bytes)", "byteSize": 64, "memberCount": 8, - "documentationMarkdown": "Used by the [CAITrigger Class](#CAITrigger Class)", + "documentationMarkdown": "Used by the [CAITrigger Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAITrigger/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L378", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1596,7 +1596,7 @@ "signature": "struct CAIUtil (0 bytes)", "byteSize": 0, "memberCount": 0, - "documentationMarkdown": "See [CAIUtil Class](#CAIUtil Class)", + "documentationMarkdown": "See [CAIUtil Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CAIUtil/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CA/index.rst#L412", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CB.json b/resources/api/sections/ee-game-structures-x64/CB.json index e3c8b75..8991f24 100644 --- a/resources/api/sections/ee-game-structures-x64/CB.json +++ b/resources/api/sections/ee-game-structures-x64/CB.json @@ -19,7 +19,7 @@ "signature": "struct CBaldurChitin (6424 bytes)", "byteSize": 6424, "memberCount": 48, - "documentationMarkdown": "Used by the [CBaldurChitin Class](#CBaldurChitin Class)", + "documentationMarkdown": "Used by the [CBaldurChitin Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CBaldurChitin/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L24", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -862,7 +862,7 @@ "signature": "struct CBaldurMessage (368 bytes)", "byteSize": 368, "memberCount": 49, - "documentationMarkdown": "Used by the [CBaldurMessage Class](#CBaldurMessage Class)", + "documentationMarkdown": "Used by the [CBaldurMessage Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CBaldurMessage/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L158", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1660,7 +1660,7 @@ "signature": "struct CBaldurProjector (312 bytes)", "byteSize": 312, "memberCount": 16, - "documentationMarkdown": "Used by the [CBaldurProjector Class](#CBaldurProjector Class)", + "documentationMarkdown": "Used by the [CBaldurProjector Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CBaldurProjector/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L282", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2491,7 +2491,7 @@ "signature": "struct CBounceList (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CBounceList Class](#CBounceList Class)", + "documentationMarkdown": "Used by the [CBounceList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CBounceList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CB/index.rst#L470", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CC.json b/resources/api/sections/ee-game-structures-x64/CC.json index 9f02063..c28c921 100644 --- a/resources/api/sections/ee-game-structures-x64/CC.json +++ b/resources/api/sections/ee-game-structures-x64/CC.json @@ -19,7 +19,7 @@ "signature": "struct CCacheStatus (1080 bytes)", "byteSize": 1080, "memberCount": 20, - "documentationMarkdown": "Used by the [CCacheStatus Class](#CCacheStatus Class)", + "documentationMarkdown": "Used by the [CCacheStatus Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CCacheStatus/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L37", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -443,7 +443,7 @@ "signature": "struct CChatBuffer (120 bytes)", "byteSize": 120, "memberCount": 4, - "documentationMarkdown": "Used by the [CChatBuffer Class](#CChatBuffer Class)", + "documentationMarkdown": "Used by the [CChatBuffer Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CChatBuffer/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L129", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -521,7 +521,7 @@ "signature": "struct CChitin (4232 bytes)", "byteSize": 4232, "memberCount": 105, - "documentationMarkdown": "Used by the [CChitin Class](#CChitin Class)", + "documentationMarkdown": "Used by the [CChitin Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CChitin/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L151", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -4623,7 +4623,7 @@ "signature": "struct CCreatureFileMemorizedSpellLevel (16 bytes)", "byteSize": 16, "memberCount": 6, - "documentationMarkdown": "**Notes**\n\nRelated to [CRE V1.0 Spell Memorization Info](https://gibberlings3.github.io/iesdp/file_formats/ie_formats/cre_v1.htm#CREV1_0_MemSpellInfo)\n\n- **m_magicType** (offset `0x06`) contains: `0` = Priest, `1` = Wizard, `2` = Innate\n- **m_memorizedStartingSpell** (offset `0x08`) index into memorized spells (array of [CCreatureFileMemorizedSpell](#CCreatureFileMemorizedSpell) structures) of first memorized spell of this type in this level\n- **m_memorizedCount** (offset `0x0C`) count of memorized spell entries in memorized spells array of memorized spells of this type in this level", + "documentationMarkdown": "**Notes**\n\nRelated to [CRE V1.0 Spell Memorization Info](https://gibberlings3.github.io/iesdp/file_formats/ie_formats/cre_v1.htm#CREV1_0_MemSpellInfo)\n\n- **m_magicType** (offset `0x06`) contains: `0` = Priest, `1` = Wizard, `2` = Innate\n- **m_memorizedStartingSpell** (offset `0x08`) index into memorized spells (array of [CCreatureFileMemorizedSpell](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L878) structures) of first memorized spell of this type in this level\n- **m_memorizedCount** (offset `0x0C`) count of memorized spell entries in memorized spells array of memorized spells of this type in this level", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CC/index.rst#L902", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CD.json b/resources/api/sections/ee-game-structures-x64/CD.json index e91eb55..01e8591 100644 --- a/resources/api/sections/ee-game-structures-x64/CD.json +++ b/resources/api/sections/ee-game-structures-x64/CD.json @@ -112,7 +112,7 @@ "signature": "struct CDerivedStats (3240 bytes)", "byteSize": 3240, "memberCount": 44, - "documentationMarkdown": "Used by the [CDerivedStats Class](#CDerivedStats Class)", + "documentationMarkdown": "Used by the [CDerivedStats Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CDerivedStats/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CD/index.rst#L121", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -4784,7 +4784,7 @@ "signature": "struct CDungeonMaster (80 bytes)", "byteSize": 80, "memberCount": 1, - "documentationMarkdown": "Used by the [CDungeonMaster Class](#CDungeonMaster Class)", + "documentationMarkdown": "Used by the [CDungeonMaster Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CDungeonMaster/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CD/index.rst#L779", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CF.json b/resources/api/sections/ee-game-structures-x64/CF.json index 95c3037..20731cc 100644 --- a/resources/api/sections/ee-game-structures-x64/CF.json +++ b/resources/api/sections/ee-game-structures-x64/CF.json @@ -144,7 +144,7 @@ "signature": "struct CFile (24 bytes)", "byteSize": 24, "memberCount": 4, - "documentationMarkdown": "Used by the [CFile Class](#CFile Class)", + "documentationMarkdown": "Used by the [CFile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CFile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CF/index.rst#L51", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -222,7 +222,7 @@ "signature": "struct CFileException (32 bytes)", "byteSize": 32, "memberCount": 4, - "documentationMarkdown": "Used by the [CFileException Class](#CFileException Class)", + "documentationMarkdown": "Used by the [CFileException Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CFileException/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CF/index.rst#L73", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -300,7 +300,7 @@ "signature": "struct CFileFind (48 bytes)", "byteSize": 48, "memberCount": 7, - "documentationMarkdown": "Used by the [CFileFind Class](#CFileFind Class)", + "documentationMarkdown": "Used by the [CFileFind Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CFileFind/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CF/index.rst#L95", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -612,7 +612,7 @@ "signature": "struct CFileView (56 bytes)", "byteSize": 56, "memberCount": 4, - "documentationMarkdown": "Used by the [CFileView Class](#CFileView Class)", + "documentationMarkdown": "Used by the [CFileView Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CFileView/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CF/index.rst#L173", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CG.json b/resources/api/sections/ee-game-structures-x64/CG.json index a9b7998..824b9f4 100644 --- a/resources/api/sections/ee-game-structures-x64/CG.json +++ b/resources/api/sections/ee-game-structures-x64/CG.json @@ -106,7 +106,7 @@ "signature": "struct CGameAIBase (1344 bytes)", "byteSize": 1344, "memberCount": 69, - "documentationMarkdown": "Used by the [CGameAIBase Class](#CGameAIBase Class)", + "documentationMarkdown": "Used by the [CGameAIBase Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameAIBase/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L450", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -12096,7 +12096,7 @@ "signature": "struct CGameAreaNotes (168 bytes)", "byteSize": 168, "memberCount": 11, - "documentationMarkdown": "Used by the [CGameAreaNotes Class](#CGameAreaNotes Class)", + "documentationMarkdown": "Used by the [CGameAreaNotes Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameAreaNotes/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L2357", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -12504,7 +12504,7 @@ "signature": "struct CGameContainer (2488 bytes)", "byteSize": 2488, "memberCount": 27, - "documentationMarkdown": "Used by the [CGameContainer Class](#CGameContainer Class)", + "documentationMarkdown": "Used by the [CGameContainer Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameContainer/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L2451", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -12950,7 +12950,7 @@ "signature": "struct CGameDialogEntry (112 bytes)", "byteSize": 112, "memberCount": 7, - "documentationMarkdown": "Used by the [CGameDialogEntry Class](#CGameDialogEntry Class)", + "documentationMarkdown": "Used by the [CGameDialogEntry Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameDialogEntry/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L2531", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -13121,7 +13121,7 @@ "signature": "struct CGameDialogReply (200 bytes)", "byteSize": 200, "memberCount": 15, - "documentationMarkdown": "Used by the [CGameDialogReply Class](#CGameDialogReply Class)", + "documentationMarkdown": "Used by the [CGameDialogReply Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameDialogReply/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L2579", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -13375,7 +13375,7 @@ "signature": "struct CGameDialogSprite (136 bytes)", "byteSize": 136, "memberCount": 17, - "documentationMarkdown": "Used by the [CGameDialogSprite Class](#CGameDialogSprite Class)", + "documentationMarkdown": "Used by the [CGameDialogSprite Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameDialogSprite/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L2631", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -13661,7 +13661,7 @@ "signature": "struct CGameDoor (1704 bytes)", "byteSize": 1704, "memberCount": 40, - "documentationMarkdown": "Used by the [CGameDoor Class](#CGameDoor Class)", + "documentationMarkdown": "Used by the [CGameDoor Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameDoor/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L2681", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -25388,7 +25388,7 @@ "signature": "struct CGameFireball3d (976 bytes)", "byteSize": 976, "memberCount": 39, - "documentationMarkdown": "Used by the [CGameFireball3d Class](#CGameFireball3d Class)", + "documentationMarkdown": "Used by the [CGameFireball3d Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameFireball3d/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L7839", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -26026,7 +26026,7 @@ "signature": "struct CGameJournal (40 bytes)", "byteSize": 40, "memberCount": 2, - "documentationMarkdown": "Used by the [CGameJournal Class](#CGameJournal Class)", + "documentationMarkdown": "Used by the [CGameJournal Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameJournal/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L7947", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -26226,7 +26226,7 @@ "signature": "struct CGameObject (96 bytes)", "byteSize": 96, "memberCount": 15, - "documentationMarkdown": "Used by the [CGameObject Class](#CGameObject Class)\n\n**Notes**\n\nThe *m_objectType* field can contain one of the following values:\n\n| **Object Type** | **Object Type Description** |\n| --- | --- |\n| 0x00 | TYPE_NONE |\n| 0x01 | TYPE_AIBASE |\n| 0x10 | TYPE_SOUND |\n| 0x11 | TYPE_CONTAINER |\n| 0x20 | TYPE_SPAWNING |\n| 0x21 | TYPE_DOOR |\n| 0x30 | TYPE_STATIC |\n| 0x31 | TYPE_SPRITE |\n| 0x40 | TYPE_OBJECT_MARKER |\n| 0x41 | TYPE_TRIGGER |\n| 0x51 | TYPE_TILED_OBJECT |\n| 0x60 | TYPE_TEMPORAL |\n| 0x61 | TYPE_AREA_AI |\n| 0x70 | TYPE_FIREBALL |\n| 0x71 | TYPE_GAME_AI |", + "documentationMarkdown": "Used by the [CGameObject Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameObject/index.rst#L1)\n\n**Notes**\n\nThe *m_objectType* field can contain one of the following values:\n\n| **Object Type** | **Object Type Description** |\n| --- | --- |\n| 0x00 | TYPE_NONE |\n| 0x01 | TYPE_AIBASE |\n| 0x10 | TYPE_SOUND |\n| 0x11 | TYPE_CONTAINER |\n| 0x20 | TYPE_SPAWNING |\n| 0x21 | TYPE_DOOR |\n| 0x30 | TYPE_STATIC |\n| 0x31 | TYPE_SPRITE |\n| 0x40 | TYPE_OBJECT_MARKER |\n| 0x41 | TYPE_TRIGGER |\n| 0x51 | TYPE_TILED_OBJECT |\n| 0x60 | TYPE_TEMPORAL |\n| 0x61 | TYPE_AREA_AI |\n| 0x70 | TYPE_FIREBALL |\n| 0x71 | TYPE_GAME_AI |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8026", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -26480,7 +26480,7 @@ "signature": "struct CGameObjectArray (0 bytes)", "byteSize": 0, "memberCount": 0, - "documentationMarkdown": "See [CGameObjectArray Class](#CGameObjectArray Class)", + "documentationMarkdown": "See [CGameObjectArray Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameObjectArray/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8116", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -29000,7 +29000,7 @@ "signature": "struct CGamePermission (8 bytes)", "byteSize": 8, "memberCount": 1, - "documentationMarkdown": "Used by the [CGamePermission Class](#CGamePermission Class)", + "documentationMarkdown": "Used by the [CGamePermission Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGamePermission/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8472", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -29495,7 +29495,7 @@ "signature": "struct CGameSave (856 bytes)", "byteSize": 856, "memberCount": 12, - "documentationMarkdown": "Used by the [CGameSave Class](#CGameSave Class)", + "documentationMarkdown": "Used by the [CGameSave Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameSave/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8609", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -29778,7 +29778,7 @@ "signature": "struct CGameSound (368 bytes)", "byteSize": 368, "memberCount": 8, - "documentationMarkdown": "Used by the [CGameSound Class](#CGameSound Class)", + "documentationMarkdown": "Used by the [CGameSound Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameSound/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8671", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -29920,7 +29920,7 @@ "signature": "struct CGameSpawning (336 bytes)", "byteSize": 336, "memberCount": 6, - "documentationMarkdown": "Used by the [CGameSpawning Class](#CGameSpawning Class)", + "documentationMarkdown": "Used by the [CGameSpawning Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameSpawning/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8707", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -30030,7 +30030,7 @@ "signature": "struct CGameSprite (21384 bytes)", "byteSize": 21384, "memberCount": 339, - "documentationMarkdown": "Used by the [CGameSprite Class](#CGameSprite Class)", + "documentationMarkdown": "Used by the [CGameSprite Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameSprite/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8733", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -36227,7 +36227,7 @@ "signature": "struct CGameStatic (872 bytes)", "byteSize": 872, "memberCount": 10, - "documentationMarkdown": "Used by the [CGameStatic Class](#CGameStatic Class)", + "documentationMarkdown": "Used by the [CGameStatic Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameStatic/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L9675", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -36462,7 +36462,7 @@ "signature": "struct CGameStatsSprite (232 bytes)", "byteSize": 232, "memberCount": 11, - "documentationMarkdown": "Used by the [CGameStatsSprite Class](#CGameStatsSprite Class)", + "documentationMarkdown": "Used by the [CGameStatsSprite Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameStatsSprite/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L9735", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -36873,7 +36873,7 @@ "signature": "struct CGameText (176 bytes)", "byteSize": 176, "memberCount": 8, - "documentationMarkdown": "Used by the [CGameText Class](#CGameText Class)", + "documentationMarkdown": "Used by the [CGameText Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameText/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L9813", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -37015,7 +37015,7 @@ "signature": "struct CGameTiledObject (1464 bytes)", "byteSize": 1464, "memberCount": 9, - "documentationMarkdown": "Used by the [CGameTiledObject Class](#CGameTiledObject Class)", + "documentationMarkdown": "Used by the [CGameTiledObject Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameTiledObject/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L9849", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -37218,7 +37218,7 @@ "signature": "struct CGameTrigger (1512 bytes)", "byteSize": 1512, "memberCount": 22, - "documentationMarkdown": "Used by the [CGameTrigger Class](#CGameTrigger Class)", + "documentationMarkdown": "Used by the [CGameTrigger Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CGameTrigger/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L9905", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CI.json b/resources/api/sections/ee-game-structures-x64/CI.json index 5608c6d..b25e380 100644 --- a/resources/api/sections/ee-game-structures-x64/CI.json +++ b/resources/api/sections/ee-game-structures-x64/CI.json @@ -19,7 +19,7 @@ "signature": "struct CIcon (0 bytes)", "byteSize": 0, "memberCount": 0, - "documentationMarkdown": "See [CIcon Class](#CIcon Class)", + "documentationMarkdown": "See [CIcon Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CIcon/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L37", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -33,7 +33,7 @@ "signature": "struct CImmunitiesAIType (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesAIType Class](#CImmunitiesAIType Class)", + "documentationMarkdown": "Used by the [CImmunitiesAIType Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesAIType/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L51", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -63,7 +63,7 @@ "signature": "struct CImmunitiesEffect (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesEffect Class](#CImmunitiesEffect Class)", + "documentationMarkdown": "Used by the [CImmunitiesEffect Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesEffect/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L67", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -154,7 +154,7 @@ "signature": "struct CImmunitiesItemEquipList (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesItemEquipList Class](#CImmunitiesItemEquipList Class)", + "documentationMarkdown": "Used by the [CImmunitiesItemEquipList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesItemEquipList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L103", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -245,7 +245,7 @@ "signature": "struct CImmunitiesItemTypeEquipList (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesItemTypeEquipList Class](#CImmunitiesItemTypeEquipList Class)", + "documentationMarkdown": "Used by the [CImmunitiesItemTypeEquipList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesItemTypeEquipList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L137", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -275,7 +275,7 @@ "signature": "struct CImmunitiesProjectile (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesProjectile Class](#CImmunitiesProjectile Class)", + "documentationMarkdown": "Used by the [CImmunitiesProjectile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesProjectile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L153", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -305,7 +305,7 @@ "signature": "struct CImmunitiesSchoolAndSecondary (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesSchoolAndSecondary Class](#CImmunitiesSchoolAndSecondary Class)", + "documentationMarkdown": "Used by the [CImmunitiesSchoolAndSecondary Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesSchoolAndSecondary/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L169", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -335,7 +335,7 @@ "signature": "struct CImmunitiesSchoolAndSecondaryDecrementing (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesSchoolAndSecondaryDecrementing Class](#CImmunitiesSchoolAndSecondaryDecrementing Class)", + "documentationMarkdown": "Used by the [CImmunitiesSchoolAndSecondaryDecrementing Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesSchoolAndSecondaryDecrementing/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L185", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -365,7 +365,7 @@ "signature": "struct CImmunitiesSpellLevel (40 bytes)", "byteSize": 40, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesSpellLevel Class](#CImmunitiesSpellLevel Class)", + "documentationMarkdown": "Used by the [CImmunitiesSpellLevel Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesSpellLevel/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L201", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -395,7 +395,7 @@ "signature": "struct CImmunitiesSpellLevelDecrementing (80 bytes)", "byteSize": 80, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesSpellLevelDecrementing Class](#CImmunitiesSpellLevelDecrementing Class)", + "documentationMarkdown": "Used by the [CImmunitiesSpellLevelDecrementing Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesSpellLevelDecrementing/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L217", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -425,7 +425,7 @@ "signature": "struct CImmunitiesSpellList (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesSpellList Class](#CImmunitiesSpellList Class)", + "documentationMarkdown": "Used by the [CImmunitiesSpellList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesSpellList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L233", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -455,7 +455,7 @@ "signature": "struct CImmunitiesWeapon (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CImmunitiesWeapon Class](#CImmunitiesWeapon Class)", + "documentationMarkdown": "Used by the [CImmunitiesWeapon Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImmunitiesWeapon/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L249", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -546,7 +546,7 @@ "signature": "struct CImportGame (176 bytes)", "byteSize": 176, "memberCount": 11, - "documentationMarkdown": "Used by the [CImportGame Class](#CImportGame Class)", + "documentationMarkdown": "Used by the [CImportGame Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CImportGame/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L283", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -736,7 +736,7 @@ "signature": "struct CInfButtonArray (8824 bytes)", "byteSize": 8824, "memberCount": 14, - "documentationMarkdown": "Used by the [CInfButtonArray Class](#CInfButtonArray Class)", + "documentationMarkdown": "Used by the [CInfButtonArray Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CInfButtonArray/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L325", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1195,7 +1195,7 @@ "signature": "struct CInfCursor (1384 bytes)", "byteSize": 1384, "memberCount": 11, - "documentationMarkdown": "Used by the [CInfCursor Class](#CInfCursor Class)", + "documentationMarkdown": "Used by the [CInfCursor Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CInfCursor/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L409", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1385,7 +1385,7 @@ "signature": "struct CInfGame (38904 bytes)", "byteSize": 38904, "memberCount": 126, - "documentationMarkdown": "Used by the [CInfGame Class](#CInfGame Class)", + "documentationMarkdown": "Used by the [CInfGame Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CInfGame/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L449", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -3415,7 +3415,7 @@ "signature": "struct CInfinity (1176 bytes)", "byteSize": 1176, "memberCount": 90, - "documentationMarkdown": "Used by the [CInfinity Class](#CInfinity Class)", + "documentationMarkdown": "Used by the [CInfinity Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CInfinity/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L807", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -4869,7 +4869,7 @@ "signature": "struct CInfTileSet (312 bytes)", "byteSize": 312, "memberCount": 5, - "documentationMarkdown": "Used by the [CInfTileSet Class](#CInfTileSet Class)", + "documentationMarkdown": "Used by the [CInfTileSet Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CInfTileSet/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L755", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -5072,7 +5072,7 @@ "signature": "struct CItem (168 bytes)", "byteSize": 168, "memberCount": 11, - "documentationMarkdown": "Used by the [CItem Class](#CItem Class)\n\n**Notes**\n\n**m_flags** field can contain bit values from `INVITEM.IDS`:\n\n```lua\n1 IDENTIFIED \n2 NONSTEALABLE \n4 STOLEN \n8 NONDROPABLE\n```\n\n**m_flags** field is checked for identified value in [CItem::GetGenericName](#CItemGetGenericName) and [CItem::GetDescription](#CItemGetDescription)", + "documentationMarkdown": "Used by the [CItem Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CItem/index.rst#L1)\n\n**Notes**\n\n**m_flags** field can contain bit values from `INVITEM.IDS`:\n\n```lua\n1 IDENTIFIED \n2 NONSTEALABLE \n4 STOLEN \n8 NONDROPABLE\n```\n\n**m_flags** field is checked for identified value in [CItem::GetGenericName](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CItem/index.rst#L596) and [CItem::GetDescription](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CItem/index.rst#L537)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CI/index.rst#L1011", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CL.json b/resources/api/sections/ee-game-structures-x64/CL.json index a9e9043..e340924 100644 --- a/resources/api/sections/ee-game-structures-x64/CL.json +++ b/resources/api/sections/ee-game-structures-x64/CL.json @@ -375,7 +375,7 @@ "signature": "struct CLUAConsole (0 bytes)", "byteSize": 0, "memberCount": 0, - "documentationMarkdown": "See [CLUAConsole Class](#CLUAConsole Class)", + "documentationMarkdown": "See [CLUAConsole Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CLUAConsole/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CL/index.rst#L30", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CM.json b/resources/api/sections/ee-game-structures-x64/CM.json index be86abd..b2a69c2 100644 --- a/resources/api/sections/ee-game-structures-x64/CM.json +++ b/resources/api/sections/ee-game-structures-x64/CM.json @@ -48,7 +48,7 @@ "signature": "struct CMachineStates (24 bytes)", "byteSize": 24, "memberCount": 1, - "documentationMarkdown": "Used by the [CMachineStates Class](#CMachineStates Class)", + "documentationMarkdown": "Used by the [CMachineStates Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMachineStates/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L193", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -264,7 +264,7 @@ "signature": "struct CMapStringToString (48 bytes)", "byteSize": 48, "memberCount": 6, - "documentationMarkdown": "Used by the [CMapStringToString Class](#CMapStringToString Class)", + "documentationMarkdown": "Used by the [CMapStringToString Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMapStringToString/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L259", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -762,7 +762,7 @@ "signature": "struct CMemINI (72 bytes)", "byteSize": 72, "memberCount": 3, - "documentationMarkdown": "Used by the [CMemINI Class](#CMemINI Class)", + "documentationMarkdown": "Used by the [CMemINI Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMemINI/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L393", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1026,7 +1026,7 @@ "signature": "struct CMemINISection (64 bytes)", "byteSize": 64, "memberCount": 2, - "documentationMarkdown": "Used by the [CMemINI Class](#CMemINI Class)", + "documentationMarkdown": "Used by the [CMemINI Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMemINI/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L465", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1072,7 +1072,7 @@ "signature": "struct CMemINIValue (24 bytes)", "byteSize": 24, "memberCount": 3, - "documentationMarkdown": "Used by the [CMemINI Class](#CMemINI Class)", + "documentationMarkdown": "Used by the [CMemINI Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMemINI/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L483", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1134,7 +1134,7 @@ "signature": "struct CMessage (16 bytes)", "byteSize": 16, "memberCount": 3, - "documentationMarkdown": "Used by the [CMessage Class](#CMessage Class)", + "documentationMarkdown": "Used by the [CMessage Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMessage/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L503", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -10022,7 +10022,7 @@ "signature": "struct CMoveList (56 bytes)", "byteSize": 56, "memberCount": 1, - "documentationMarkdown": "Used by the [CMoveList Class](#CMoveList Class)", + "documentationMarkdown": "Used by the [CMoveList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMoveList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L3340", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -10161,7 +10161,7 @@ "signature": "struct CMultiplayerSettings (208 bytes)", "byteSize": 208, "memberCount": 24, - "documentationMarkdown": "Used by the [CMultiplayerSettings Class](#CMultiplayerSettings Class)", + "documentationMarkdown": "Used by the [CMultiplayerSettings Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CMultiplayerSettings/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CM/index.rst#L3382", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CN.json b/resources/api/sections/ee-game-structures-x64/CN.json index 99eb8f4..3f09b29 100644 --- a/resources/api/sections/ee-game-structures-x64/CN.json +++ b/resources/api/sections/ee-game-structures-x64/CN.json @@ -19,7 +19,7 @@ "signature": "struct CNetwork (3064 bytes)", "byteSize": 3064, "memberCount": 56, - "documentationMarkdown": "Used by the [CNetwork Class](#CNetwork Class)", + "documentationMarkdown": "Used by the [CNetwork Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CNetwork/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CN/index.rst#L17", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CO.json b/resources/api/sections/ee-game-structures-x64/CO.json index 8b8d011..0360d14 100644 --- a/resources/api/sections/ee-game-structures-x64/CO.json +++ b/resources/api/sections/ee-game-structures-x64/CO.json @@ -186,7 +186,7 @@ "signature": "struct CObList (56 bytes)", "byteSize": 56, "memberCount": 7, - "documentationMarkdown": "Used by the [CObList Class](#CObList Class)", + "documentationMarkdown": "Used by the [CObList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CObList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CO/index.rst#L43", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CP.json b/resources/api/sections/ee-game-structures-x64/CP.json index 3d2dc75..82f00ed 100644 --- a/resources/api/sections/ee-game-structures-x64/CP.json +++ b/resources/api/sections/ee-game-structures-x64/CP.json @@ -19,7 +19,7 @@ "signature": "struct CParticle (52 bytes)", "byteSize": 52, "memberCount": 10, - "documentationMarkdown": "Used by the [CParticle Class](#CParticle Class)", + "documentationMarkdown": "Used by the [CParticle Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CParticle/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CP/index.rst#L70", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -347,7 +347,7 @@ "signature": "struct CPathSearch (48 bytes)", "byteSize": 48, "memberCount": 6, - "documentationMarkdown": "Used by the [CPathSearch Class](#CPathSearch Class)", + "documentationMarkdown": "Used by the [CPathSearch Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CPathSearch/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CP/index.rst#L152", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -457,7 +457,7 @@ "signature": "struct CPersistantEffect (32 bytes)", "byteSize": 32, "memberCount": 9, - "documentationMarkdown": "Used by the [CPersistantEffect Class](#CPersistantEffect Class)", + "documentationMarkdown": "Used by the [CPersistantEffect Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CPersistantEffect/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CP/index.rst#L188", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1453,7 +1453,7 @@ "signature": "struct CPlex (16 bytes)", "byteSize": 16, "memberCount": 2, - "documentationMarkdown": "Used by the [CPlex Class](#CPlex Class)", + "documentationMarkdown": "Used by the [CPlex Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CPlex/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CP/index.rst#L486", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1843,7 +1843,7 @@ "signature": "struct CProjectile (440 bytes)", "byteSize": 440, "memberCount": 50, - "documentationMarkdown": "Used by the [CProjectile Class](#CProjectile Class)", + "documentationMarkdown": "Used by the [CProjectile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CProjectile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CP/index.rst#L587", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -6792,7 +6792,7 @@ "signature": "struct CPtrList (56 bytes)", "byteSize": 56, "memberCount": 7, - "documentationMarkdown": "Used by the [CPtrList Class](#CPtrList Class)", + "documentationMarkdown": "Used by the [CPtrList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CPtrList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CP/index.rst#L1643", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CR.json b/resources/api/sections/ee-game-structures-x64/CR.json index 718f652..58ae199 100644 --- a/resources/api/sections/ee-game-structures-x64/CR.json +++ b/resources/api/sections/ee-game-structures-x64/CR.json @@ -141,7 +141,7 @@ "signature": "struct CRect (16 bytes)", "byteSize": 16, "memberCount": 1, - "documentationMarkdown": "> **Note**\n> Actually defined as [RECT](https://docs.microsoft.com/en-us/windows/win32/api/windef/ns-windef-rect) but adapted/recreated as its own structure.\n\nUsed by the [CRect Class](#CRect Class)", + "documentationMarkdown": "> **Note**\n> Actually defined as [RECT](https://docs.microsoft.com/en-us/windows/win32/api/windef/ns-windef-rect) but adapted/recreated as its own structure.\n\nUsed by the [CRect Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CRect/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CR/index.rst#L90", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1679,7 +1679,7 @@ "signature": "struct CResRef (8 bytes)", "byteSize": 8, "memberCount": 1, - "documentationMarkdown": "Used by the [CResRef Class](#CResRef Class)", + "documentationMarkdown": "Used by the [CResRef Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CResRef/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CR/index.rst#L526", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2591,7 +2591,7 @@ "signature": "struct CRuleTables (16288 bytes)", "byteSize": 16288, "memberCount": 243, - "documentationMarkdown": "Used by the [CRuleTables Class](#CRuleTables Class)", + "documentationMarkdown": "Used by the [CRuleTables Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CRuleTables/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CR/index.rst#L766", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CS.json b/resources/api/sections/ee-game-structures-x64/CS.json index f128383..1363831 100644 --- a/resources/api/sections/ee-game-structures-x64/CS.json +++ b/resources/api/sections/ee-game-structures-x64/CS.json @@ -1695,7 +1695,7 @@ "signature": "struct CScreenAI (528 bytes)", "byteSize": 528, "memberCount": 10, - "documentationMarkdown": "Used by the [CScreenAI Class](#CScreenAI Class)", + "documentationMarkdown": "Used by the [CScreenAI Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenAI/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L375", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1869,7 +1869,7 @@ "signature": "struct CScreenChapter (384 bytes)", "byteSize": 384, "memberCount": 23, - "documentationMarkdown": "Used by the [CScreenChapter Class](#CScreenChapter Class)", + "documentationMarkdown": "Used by the [CScreenChapter Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenChapter/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L415", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2251,7 +2251,7 @@ "signature": "struct CScreenCharacter (2088 bytes)", "byteSize": 2088, "memberCount": 41, - "documentationMarkdown": "Used by the [CScreenCharacter Class](#CScreenCharacter Class)", + "documentationMarkdown": "Used by the [CScreenCharacter Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCharacter/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L483", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2966,7 +2966,7 @@ "signature": "struct CScreenConnection (1752 bytes)", "byteSize": 1752, "memberCount": 32, - "documentationMarkdown": "Used by the [CScreenConnection Class](#CScreenConnection Class)", + "documentationMarkdown": "Used by the [CScreenConnection Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenConnection/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L607", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -3492,7 +3492,7 @@ "signature": "struct CScreenCreateChar (2584 bytes)", "byteSize": 2584, "memberCount": 111, - "documentationMarkdown": "Used by the [CScreenCreateChar Class](#CScreenCreateChar Class)", + "documentationMarkdown": "Used by the [CScreenCreateChar Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCreateChar/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L689", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -5282,7 +5282,7 @@ "signature": "struct CScreenCreateParty (224 bytes)", "byteSize": 224, "memberCount": 8, - "documentationMarkdown": "Used by the [CScreenCreateParty Class](#CScreenCreateParty Class)", + "documentationMarkdown": "Used by the [CScreenCreateParty Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenCreateParty/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1023", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -5424,7 +5424,7 @@ "signature": "struct CScreenDLC (1896 bytes)", "byteSize": 1896, "memberCount": 17, - "documentationMarkdown": "Used by the [CScreenDLC Class](#CScreenDLC Class)", + "documentationMarkdown": "Used by the [CScreenDLC Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenDLC/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1057", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -5710,7 +5710,7 @@ "signature": "struct CScreenInventory (1904 bytes)", "byteSize": 1904, "memberCount": 26, - "documentationMarkdown": "Used by the [CScreenInventory Class](#CScreenInventory Class)", + "documentationMarkdown": "Used by the [CScreenInventory Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenInventory/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1111", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -6140,7 +6140,7 @@ "signature": "struct CScreenJournal (1776 bytes)", "byteSize": 1776, "memberCount": 13, - "documentationMarkdown": "Used by the [CScreenJournal Class](#CScreenJournal Class)", + "documentationMarkdown": "Used by the [CScreenJournal Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenJournal/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1181", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -6362,7 +6362,7 @@ "signature": "struct CScreenLoad (384 bytes)", "byteSize": 384, "memberCount": 18, - "documentationMarkdown": "Used by the [CScreenLoad Class](#CScreenLoad Class)", + "documentationMarkdown": "Used by the [CScreenLoad Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenLoad/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1227", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -6664,7 +6664,7 @@ "signature": "struct CScreenMap (2320 bytes)", "byteSize": 2320, "memberCount": 33, - "documentationMarkdown": "Used by the [CScreenMap Class](#CScreenMap Class)", + "documentationMarkdown": "Used by the [CScreenMap Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenMap/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1281", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -7206,7 +7206,7 @@ "signature": "struct CScreenMovies (1680 bytes)", "byteSize": 1680, "memberCount": 7, - "documentationMarkdown": "Used by the [CScreenMovies Class](#CScreenMovies Class)", + "documentationMarkdown": "Used by the [CScreenMovies Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenMovies/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1377", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -7332,7 +7332,7 @@ "signature": "struct CScreenMultiPlayer (2024 bytes)", "byteSize": 2024, "memberCount": 22, - "documentationMarkdown": "Used by the [CScreenMultiPlayer Class](#CScreenMultiPlayer Class)", + "documentationMarkdown": "Used by the [CScreenMultiPlayer Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenMultiPlayer/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1409", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -7698,7 +7698,7 @@ "signature": "struct CScreenOptions (1944 bytes)", "byteSize": 1944, "memberCount": 27, - "documentationMarkdown": "Used by the [CScreenOptions Class](#CScreenOptions Class)", + "documentationMarkdown": "Used by the [CScreenOptions Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenOptions/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1473", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -8144,7 +8144,7 @@ "signature": "struct CScreenPriestSpell (1712 bytes)", "byteSize": 1712, "memberCount": 16, - "documentationMarkdown": "Used by the [CScreenPriestSpell Class](#CScreenPriestSpell Class)", + "documentationMarkdown": "Used by the [CScreenPriestSpell Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenPriestSpell/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1551", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -8414,7 +8414,7 @@ "signature": "struct CScreenSave (1880 bytes)", "byteSize": 1880, "memberCount": 20, - "documentationMarkdown": "Used by the [CScreenSave Class](#CScreenSave Class)", + "documentationMarkdown": "Used by the [CScreenSave Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenSave/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1599", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -8748,7 +8748,7 @@ "signature": "struct CScreenStart (336 bytes)", "byteSize": 336, "memberCount": 22, - "documentationMarkdown": "Used by the [CScreenStart Class](#CScreenStart Class)", + "documentationMarkdown": "Used by the [CScreenStart Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenStart/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1657", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -9114,7 +9114,7 @@ "signature": "struct CScreenStore (2312 bytes)", "byteSize": 2312, "memberCount": 49, - "documentationMarkdown": "Used by the [CScreenStore Class](#CScreenStore Class)", + "documentationMarkdown": "Used by the [CScreenStore Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenStore/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1717", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -10085,7 +10085,7 @@ "signature": "struct CScreenWizSpell (1712 bytes)", "byteSize": 1712, "memberCount": 17, - "documentationMarkdown": "Used by the [CScreenWizSpell Class](#CScreenWizSpell Class)", + "documentationMarkdown": "Used by the [CScreenWizSpell Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenWizSpell/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1879", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -10371,7 +10371,7 @@ "signature": "struct CScreenWorld (3080 bytes)", "byteSize": 3080, "memberCount": 152, - "documentationMarkdown": "Used by the [CScreenWorld Class](#CScreenWorld Class)", + "documentationMarkdown": "Used by the [CScreenWorld Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenWorld/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L1931", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -12817,7 +12817,7 @@ "signature": "struct CScreenWorldMap (3976 bytes)", "byteSize": 3976, "memberCount": 43, - "documentationMarkdown": "Used by the [CScreenWorldMap Class](#CScreenWorldMap Class)", + "documentationMarkdown": "Used by the [CScreenWorldMap Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScreenWorldMap/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2285", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -13519,7 +13519,7 @@ "signature": "struct CScriptCache (16 bytes)", "byteSize": 16, "memberCount": 1, - "documentationMarkdown": "Used by the [CScriptCache Class](#CScriptCache Class)", + "documentationMarkdown": "Used by the [CScriptCache Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CScriptCache/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2397", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -13549,7 +13549,7 @@ "signature": "struct CSearchBitmap (336 bytes)", "byteSize": 336, "memberCount": 8, - "documentationMarkdown": "Used by the [CSearchBitmap Class](#CSearchBitmap Class)", + "documentationMarkdown": "Used by the [CSearchBitmap Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSearchBitmap/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2417", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -14329,7 +14329,7 @@ "signature": "struct CSequenceSoundList (72 bytes)", "byteSize": 72, "memberCount": 4, - "documentationMarkdown": "Used by the [CSequenceSoundList Class](#CSequenceSoundList Class)", + "documentationMarkdown": "Used by the [CSequenceSoundList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSequenceSoundList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2601", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -14591,7 +14591,7 @@ "signature": "struct CSound (32 bytes)", "byteSize": 32, "memberCount": 3, - "documentationMarkdown": "Used by the [CSound Class](#CSound Class)", + "documentationMarkdown": "Used by the [CSound Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSound/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2683", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -14653,7 +14653,7 @@ "signature": "struct CSoundChannel (88 bytes)", "byteSize": 88, "memberCount": 7, - "documentationMarkdown": "Used by the [CSoundChannel Class](#CSoundChannel Class)", + "documentationMarkdown": "Used by the [CSoundChannel Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSoundChannel/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2703", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -14872,7 +14872,7 @@ "signature": "struct CSoundExtensionFile (16 bytes)", "byteSize": 16, "memberCount": 1, - "documentationMarkdown": "Used by the [CSoundExtensionFile Class](#CSoundExtensionFile Class)", + "documentationMarkdown": "Used by the [CSoundExtensionFile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSoundExtensionFile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2757", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -14902,7 +14902,7 @@ "signature": "struct CSoundImp (136 bytes)", "byteSize": 136, "memberCount": 27, - "documentationMarkdown": "Used by the [CSoundImp Class](#CSoundImp Class)", + "documentationMarkdown": "Used by the [CSoundImp Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSoundImp/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2773", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -15348,7 +15348,7 @@ "signature": "struct CSoundMixer (8 bytes)", "byteSize": 8, "memberCount": 1, - "documentationMarkdown": "Used by the [CSoundMixer Class](#CSoundMixer Class)", + "documentationMarkdown": "Used by the [CSoundMixer Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSoundMixer/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L2849", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -16438,7 +16438,7 @@ "signature": "struct CSpawn (480 bytes)", "byteSize": 480, "memberCount": 50, - "documentationMarkdown": "Used by the [CSpawn Class](#CSpawn Class)", + "documentationMarkdown": "Used by the [CSpawn Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSpawn/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3055", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -17252,7 +17252,7 @@ "signature": "struct CSpawnFile (80 bytes)", "byteSize": 80, "memberCount": 4, - "documentationMarkdown": "Used by the [CSpawnFile Class](#CSpawnFile Class)", + "documentationMarkdown": "Used by the [CSpawnFile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSpawnFile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3201", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -17330,7 +17330,7 @@ "signature": "struct CSpawnList (96 bytes)", "byteSize": 96, "memberCount": 8, - "documentationMarkdown": "Used by the [CSpawnList Class](#CSpawnList Class)", + "documentationMarkdown": "Used by the [CSpawnList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSpawnList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3225", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -17472,7 +17472,7 @@ "signature": "struct CSpawnPoint (24 bytes)", "byteSize": 24, "memberCount": 3, - "documentationMarkdown": "Used by the [CSpawnPoint Class](#CSpawnPoint Class)", + "documentationMarkdown": "Used by the [CSpawnPoint Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSpawnPoint/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3257", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -17653,7 +17653,7 @@ "signature": "struct CSpell (16 bytes)", "byteSize": 16, "memberCount": 1, - "documentationMarkdown": "Used by the [CSpell Class](#CSpell Class)", + "documentationMarkdown": "Used by the [CSpell Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CSpell/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3327", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -17728,7 +17728,7 @@ "signature": "struct CStore (272 bytes)", "byteSize": 272, "memberCount": 11, - "documentationMarkdown": "Used by the [CStore Class](#CStore Class)", + "documentationMarkdown": "Used by the [CStore Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CStore/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3359", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -18755,7 +18755,7 @@ "signature": "struct CString (8 bytes)", "byteSize": 8, "memberCount": 1, - "documentationMarkdown": "Used by the [CString Class](#CString Class)\n\nC Definition\n\n```lua\ntypedef struct tagCString {\n DWORD m_pchData;\n} CString; // size 0x4\n```", + "documentationMarkdown": "Used by the [CString Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CString/index.rst#L1)\n\nC Definition\n\n```lua\ntypedef struct tagCString {\n DWORD m_pchData;\n} CString; // size 0x4\n```", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3573", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -18846,7 +18846,7 @@ "signature": "struct CStringList (56 bytes)", "byteSize": 56, "memberCount": 7, - "documentationMarkdown": "Used by the [CStringList Class](#CStringList Class)", + "documentationMarkdown": "Used by the [CStringList Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CStringList/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CS/index.rst#L3615", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CT.json b/resources/api/sections/ee-game-structures-x64/CT.json index 0d33ac6..238f8ef 100644 --- a/resources/api/sections/ee-game-structures-x64/CT.json +++ b/resources/api/sections/ee-game-structures-x64/CT.json @@ -19,7 +19,7 @@ "signature": "struct CTiledObject (40 bytes)", "byteSize": 40, "memberCount": 6, - "documentationMarkdown": "Used by the [CTiledObject Class](#CTiledObject Class)", + "documentationMarkdown": "Used by the [CTiledObject Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTiledObject/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CT/index.rst#L23", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -129,7 +129,7 @@ "signature": "struct CTime (8 bytes)", "byteSize": 8, "memberCount": 1, - "documentationMarkdown": "Used by the [CTime Class](#CTime Class)", + "documentationMarkdown": "Used by the [CTime Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTime/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CT/index.rst#L53", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -300,7 +300,7 @@ "signature": "struct CTimerWorld (8 bytes)", "byteSize": 8, "memberCount": 3, - "documentationMarkdown": "Used by the [CTimerWorld Class](#CTimerWorld Class)", + "documentationMarkdown": "Used by the [CTimerWorld Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTimerWorld/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CT/index.rst#L113", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -391,7 +391,7 @@ "signature": "struct CTlkFileOverride (8 bytes)", "byteSize": 8, "memberCount": 2, - "documentationMarkdown": "Used by the [CTlkFileOverride Class](#CTlkFileOverride Class)", + "documentationMarkdown": "Used by the [CTlkFileOverride Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTlkFileOverride/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CT/index.rst#L135", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -437,7 +437,7 @@ "signature": "struct CTlkTable (96 bytes)", "byteSize": 96, "memberCount": 7, - "documentationMarkdown": "Used by the [CTlkTable Class](#CTlkTable Class)", + "documentationMarkdown": "Used by the [CTlkTable Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CTlkTable/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CT/index.rst#L153", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CV.json b/resources/api/sections/ee-game-structures-x64/CV.json index 08bf08c..03af667 100644 --- a/resources/api/sections/ee-game-structures-x64/CV.json +++ b/resources/api/sections/ee-game-structures-x64/CV.json @@ -48,7 +48,7 @@ "signature": "struct CVariableHash (16 bytes)", "byteSize": 16, "memberCount": 2, - "documentationMarkdown": "Used by the [CVariableHash Class](#CVariableHash Class)", + "documentationMarkdown": "Used by the [CVariableHash Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVariableHash/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L60", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -219,7 +219,7 @@ "signature": "struct CVEFVidCell (1024 bytes)", "byteSize": 1024, "memberCount": 17, - "documentationMarkdown": "Used by the [CVEFVidCell Class](#CVEFVidCell Class)", + "documentationMarkdown": "Used by the [CVEFVidCell Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVEFVidCell/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L106", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -995,7 +995,7 @@ "signature": "struct CVidBitmap (288 bytes)", "byteSize": 288, "memberCount": 4, - "documentationMarkdown": "Used by the [CVidBitmap Class](#CVidBitmap Class)", + "documentationMarkdown": "Used by the [CVidBitmap Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidBitmap/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L242", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1073,7 +1073,7 @@ "signature": "struct CVidCell (312 bytes)", "byteSize": 312, "memberCount": 9, - "documentationMarkdown": "Used by the [CVidCell Class](#CVidCell Class)", + "documentationMarkdown": "Used by the [CVidCell Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidCell/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L266", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1260,7 +1260,7 @@ "signature": "struct CVidDrawable (16 bytes)", "byteSize": 16, "memberCount": 2, - "documentationMarkdown": "Used by the [CVidDrawable Class](#CVidDrawable Class)", + "documentationMarkdown": "Used by the [CVidDrawable Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidDrawable/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L316", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1306,7 +1306,7 @@ "signature": "struct CVideo (8 bytes)", "byteSize": 8, "memberCount": 1, - "documentationMarkdown": "Used by the [CVideo Class](#CVideo Class)", + "documentationMarkdown": "Used by the [CVideo Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVideo/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L336", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1336,7 +1336,7 @@ "signature": "struct CVidFont (40 bytes)", "byteSize": 40, "memberCount": 6, - "documentationMarkdown": "Used by the [CVidFont Class](#CVidFont Class)", + "documentationMarkdown": "Used by the [CVidFont Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidFont/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L352", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1446,7 +1446,7 @@ "signature": "struct CVidImage (256 bytes)", "byteSize": 256, "memberCount": 2, - "documentationMarkdown": "Used by the [CVidImage Class](#CVidImage Class)", + "documentationMarkdown": "Used by the [CVidImage Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidImage/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L378", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -1665,7 +1665,7 @@ "signature": "struct CVidMode (792 bytes)", "byteSize": 792, "memberCount": 42, - "documentationMarkdown": "Used by the [CVidMode Class](#CVidMode Class)", + "documentationMarkdown": "Used by the [CVidMode Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidMode/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L430", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2524,7 +2524,7 @@ "signature": "struct CVidMosaic (272 bytes)", "byteSize": 272, "memberCount": 2, - "documentationMarkdown": "Used by the [CVidMosaic Class](#CVidMosaic Class)", + "documentationMarkdown": "Used by the [CVidMosaic Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidMosaic/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L574", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2570,7 +2570,7 @@ "signature": "struct CVidPalette (48 bytes)", "byteSize": 48, "memberCount": 9, - "documentationMarkdown": "Used by the [CVidPalette Class](#CVidPalette Class)", + "documentationMarkdown": "Used by the [CVidPalette Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidPalette/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L592", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2789,7 +2789,7 @@ "signature": "struct CVidPng (272 bytes)", "byteSize": 272, "memberCount": 2, - "documentationMarkdown": "Used by the [CVidPng Class](#CVidPng Class)", + "documentationMarkdown": "Used by the [CVidPng Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidPng/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L628", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2835,7 +2835,7 @@ "signature": "struct CVidPoly (40 bytes)", "byteSize": 40, "memberCount": 5, - "documentationMarkdown": "Used by the [CVidPoly Class](#CVidPoly Class)", + "documentationMarkdown": "Used by the [CVidPoly Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidPoly/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L646", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -2974,7 +2974,7 @@ "signature": "struct CVidTile (272 bytes)", "byteSize": 272, "memberCount": 3, - "documentationMarkdown": "Used by the [CVidTile Class](#CVidTile Class)", + "documentationMarkdown": "Used by the [CVidTile Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVidTile/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L672", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -3036,7 +3036,7 @@ "signature": "struct CVisibilityMap (112 bytes)", "byteSize": 112, "memberCount": 8, - "documentationMarkdown": "Used by the [CVisibilityMap Class](#CVisibilityMap Class)", + "documentationMarkdown": "Used by the [CVisibilityMap Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVisibilityMap/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L728", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -3364,7 +3364,7 @@ "signature": "struct CVisualEffect (800 bytes)", "byteSize": 800, "memberCount": 18, - "documentationMarkdown": "Used by the [CVisualEffect Class](#CVisualEffect Class)", + "documentationMarkdown": "Used by the [CVisualEffect Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVisualEffect/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L814", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -3900,7 +3900,7 @@ "signature": "struct CVoice (40 bytes)", "byteSize": 40, "memberCount": 7, - "documentationMarkdown": "Used by the [CVoice Class](#CVoice Class)", + "documentationMarkdown": "Used by the [CVoice Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CVoice/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CV/index.rst#L914", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-game-structures-x64/CW.json b/resources/api/sections/ee-game-structures-x64/CW.json index 25b2942..e2a35bf 100644 --- a/resources/api/sections/ee-game-structures-x64/CW.json +++ b/resources/api/sections/ee-game-structures-x64/CW.json @@ -19,7 +19,7 @@ "signature": "struct CWarp (72 bytes)", "byteSize": 72, "memberCount": 3, - "documentationMarkdown": "Used by the [CWarp Class](#CWarp Class)", + "documentationMarkdown": "Used by the [CWarp Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CWarp/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CW/index.rst#L24", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -158,7 +158,7 @@ "signature": "struct CWeather (368 bytes)", "byteSize": 368, "memberCount": 22, - "documentationMarkdown": "Used by the [CWeather Class](#CWeather Class)", + "documentationMarkdown": "Used by the [CWeather Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CWeather/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CW/index.rst#L66", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -710,7 +710,7 @@ "signature": "struct CWorldMap (40 bytes)", "byteSize": 40, "memberCount": 3, - "documentationMarkdown": "Used by the [CWorldMap Class](#CWorldMap Class)", + "documentationMarkdown": "Used by the [CWorldMap Class](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Classes%20(x86)/CWorldMap/index.rst#L1)", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EE%20Game%20Structures%20(x64)/CW/index.rst#L180", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/ee-utility-functions.json b/resources/api/sections/ee-utility-functions.json index c43f3f5..fe860ee 100644 --- a/resources/api/sections/ee-utility-functions.json +++ b/resources/api/sections/ee-utility-functions.json @@ -1,6 +1,6 @@ { "schemaVersion": 3, - "generatedAt": "2026-08-25T18:10:55.136Z", + "generatedAt": "2026-09-22T13:41:25.745Z", "source": { "id": "ee-utility-functions", "title": "EE Utility Functions", diff --git a/resources/api/sections/eeex-functions/Actionbar.json b/resources/api/sections/eeex-functions/Actionbar.json index 6a6e88b..4177156 100644 --- a/resources/api/sections/eeex-functions/Actionbar.json +++ b/resources/api/sections/eeex-functions/Actionbar.json @@ -36,7 +36,7 @@ "description": "The listener to register." } ], - "documentationMarkdown": "> **Summary**\n> Registers a function as an actionbar listener. Actionbar listeners are called whenever the actionbar changes state. See [EEex_Actionbar_GetState](#EEex_Actionbar_GetState) for more details.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| listener | function | | The listener to register. |\n\n---\n\n#### **The listener function**\n\n**Parameters:**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| config | number | Certain actionbar states map to the same button configuration, albeit with different
    functionality. This value represents a unique button configuration; see below for more
    details. |\n| state | number | See [EEex_Actionbar_GetState](#EEex_Actionbar_GetState). |\n\n**The following shows what actionbar states each** `config` **encompases:**\n\n| Config | Matching States |\n| --- | --- |\n| 0 | 1 |\n| 1 | 2 |\n| 2 | 3 |\n| 3 | 4 |\n| 4 | 5 |\n| 5 | 6 |\n| 6 | 7 |\n| 7 | 8 |\n| 8 | 9 |\n| 9 | 10 |\n| 10 | 11 |\n| 11 | 12 |\n| 12 | 13 |\n| 13 | 14 |\n| 14 | 15 |\n| 15 | 16 |\n| 16 | 17 |\n| 17 | 18 |\n| 18 | 20 |\n| 19 | 21 |\n| 20 | 101 |\n| 21 | 102, 103 |\n| 22 | 104, 105 |\n| 23 | 106 |\n| 24 | 107 |\n| 25 | 108 |\n| 26 | 109 |\n| 27 | 110 |\n| 28 | 111 |\n| 29 | 112 |\n| 30 | 113, 114 |", + "documentationMarkdown": "> **Summary**\n> Registers a function as an actionbar listener. Actionbar listeners are called whenever the actionbar changes state. See [EEex_Actionbar_GetState](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L190) for more details.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| listener | function | | The listener to register. |\n\n---\n\n#### **The listener function**\n\n**Parameters:**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| config | number | Certain actionbar states map to the same button configuration, albeit with different
    functionality. This value represents a unique button configuration; see below for more
    details. |\n| state | number | See [EEex_Actionbar_GetState](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L190). |\n\n**The following shows what actionbar states each** `config` **encompases:**\n\n| Config | Matching States |\n| --- | --- |\n| 0 | 1 |\n| 1 | 2 |\n| 2 | 3 |\n| 3 | 4 |\n| 4 | 5 |\n| 5 | 6 |\n| 6 | 7 |\n| 7 | 8 |\n| 8 | 9 |\n| 9 | 10 |\n| 10 | 11 |\n| 11 | 12 |\n| 12 | 13 |\n| 13 | 14 |\n| 14 | 15 |\n| 15 | 16 |\n| 16 | 17 |\n| 17 | 18 |\n| 18 | 20 |\n| 19 | 21 |\n| 20 | 101 |\n| 21 | 102, 103 |\n| 22 | 104, 105 |\n| 23 | 106 |\n| 24 | 107 |\n| 25 | 108 |\n| 26 | 109 |\n| 27 | 110 |\n| 28 | 111 |\n| 29 | 112 |\n| 30 | 113, 114 |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L24", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -72,7 +72,7 @@ "description": "See summary." } ], - "documentationMarkdown": "> **Summary**\n> Returns the previous actionbar state. See [EEex_Actionbar_GetState](#EEex_Actionbar_GetState) for more details.\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", + "documentationMarkdown": "> **Summary**\n> Returns the previous actionbar state. See [EEex_Actionbar_GetState](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L190) for more details.\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L147", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -211,7 +211,7 @@ "description": "The state to set." } ], - "documentationMarkdown": "> **Summary**\n> Sets the current actionbar state. See [EEex_Actionbar_GetState](#EEex_Actionbar_GetState) for more details.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| state | number | | The state to set. |", + "documentationMarkdown": "> **Summary**\n> Sets the current actionbar state. See [EEex_Actionbar_GetState](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L190) for more details.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| state | number | | The state to set. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Actionbar/index.rst#L403", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/eeex-functions/Area.json b/resources/api/sections/eeex-functions/Area.json index 17d72b5..45ac09e 100644 --- a/resources/api/sections/eeex-functions/Area.json +++ b/resources/api/sections/eeex-functions/Area.json @@ -75,7 +75,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `countAllOfTypeInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectType` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", + "documentationMarkdown": "**Instance Name:** `countAllOfTypeInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectType` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Area/index.rst#L16", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -145,7 +145,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `countAllOfTypeStringInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectTypeString` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", + "documentationMarkdown": "**Instance Name:** `countAllOfTypeStringInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectTypeString` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Area/index.rst#L59", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -226,7 +226,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `forAllOfTypeInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectType` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |", + "documentationMarkdown": "**Instance Name:** `forAllOfTypeInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectType` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Area/index.rst#L110", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -295,7 +295,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `forAllOfTypeStringInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectTypeString` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects passed to `func`.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |", + "documentationMarkdown": "**Instance Name:** `forAllOfTypeStringInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectTypeString` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects passed to `func`.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Area/index.rst#L147", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -365,7 +365,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `getAllOfTypeInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectType` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", + "documentationMarkdown": "**Instance Name:** `getAllOfTypeInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectType` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Area/index.rst#L184", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -435,7 +435,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `getAllOfTypeStringInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectTypeString` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", + "documentationMarkdown": "**Instance Name:** `getAllOfTypeStringInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectTypeString` around (`centerX`, `centerY`) in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| area | CGameArea | | The area to search. |\n| centerX | number | | The x coordinate to use as the center of the search radius. |\n| centerY | number | | The y coordinate to use as the center of the search radius. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around (`centerX`, `centerY`). `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from (`centerX`, `centerY`) to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `CGameObject.DEFAULT_VISIBLE_TERRAIN_TABLE` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Area/index.rst#L227", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/eeex-functions/Key.json b/resources/api/sections/eeex-functions/Key.json index 245a2ca..793cedf 100644 --- a/resources/api/sections/eeex-functions/Key.json +++ b/resources/api/sections/eeex-functions/Key.json @@ -92,7 +92,7 @@ "description": "See summary." } ], - "documentationMarkdown": "> **Summary**\n> Returns a `SDL_Keycode` value that represents the given `keyName`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| keyName | string | | The name of the key whose `SDL_Keycode` value is being fetched. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| SDL_Keycode | See summary. |\n\n---\n\nRecognized `keyName` values \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nUTF-8 character encodings are recognized. For example, all of the following lines would be considered valid:\n\n```Lua\nEEex_Key_GetFromName(\"a\")\nEEex_Key_GetFromName(\"$\")\nEEex_Key_GetFromName(\"£\")\nEEex_Key_GetFromName(\"€\")\nEEex_Key_GetFromName(\"𐍈\")\n```\n\nAdditionally, the following table provides a list of all the specially-recognized key names:\n\n+---------------------+ | Recognized Key Name | +=====================+ | Return | +---------------------+ | Escape | +---------------------+ | Backspace | +---------------------+ | Tab | +---------------------+ | Space | +---------------------+ | CapsLock | +---------------------+ | F1 | +---------------------+ | F2 | +---------------------+ | F3 | +---------------------+ | F4 | +---------------------+ | F5 | +---------------------+ | F6 | +---------------------+ | F7 | +---------------------+ | F8 | +---------------------+ | F9 | +---------------------+ | F10 | +---------------------+ | F11 | +---------------------+ | F12 | +---------------------+ | PrintScreen | +---------------------+ | ScrollLock | +---------------------+ | Pause | +---------------------+ | Insert | +---------------------+ | Home | +---------------------+ | PageUp | +---------------------+ | Delete | +---------------------+ | End | +---------------------+ | PageDown | +---------------------+ | Right | +---------------------+ | Left | +---------------------+ | Down | +---------------------+ | Up | +---------------------+ | Numlock | +---------------------+ | Keypad / | +---------------------+ | Keypad * | +---------------------+ | Keypad - | +---------------------+ | Keypad + | +---------------------+ | Keypad Enter | +---------------------+ | Keypad 1 | +---------------------+ | Keypad 2 | +---------------------+ | Keypad 3 | +---------------------+ | Keypad 4 | +---------------------+ | Keypad 5 | +---------------------+ | Keypad 6 | +---------------------+ | Keypad 7 | +---------------------+ | Keypad 8 | +---------------------+ | Keypad 9 | +---------------------+ | Keypad 0 | +---------------------+ | Keypad . | +---------------------+ | Menu | +---------------------+ | Power | +---------------------+ | Keypad = | +---------------------+ | F13 | +---------------------+ | F14 | +---------------------+ | F15 | +---------------------+ | F16 | +---------------------+ | F17 | +---------------------+ | F18 | +---------------------+ | F19 | +---------------------+ | F20 | +---------------------+ | F21 | +---------------------+ | F22 | +---------------------+ | F23 | +---------------------+ | F24 | +---------------------+ | Execute | +---------------------+ | Help | +---------------------+ | Menu | +---------------------+ | Select | +---------------------+ | Stop | +---------------------+ | Again | +---------------------+ | Undo | +---------------------+ | Cut | +---------------------+ | Copy | +---------------------+ | Paste | +---------------------+ | Find | +---------------------+ | Mute | +---------------------+ | VolumeUp | +---------------------+ | VolumeDown | +---------------------+ | Keypad , | +---------------------+ | Keypad = (AS400) | +---------------------+ | AltErase | +---------------------+ | SysReq | +---------------------+ | Cancel | +---------------------+ | Clear | +---------------------+ | Prior | +---------------------+ | Return | +---------------------+ | Separator | +---------------------+ | Out | +---------------------+ | Oper | +---------------------+ | Clear / Again | +---------------------+ | CrSel | +---------------------+ | ExSel | +---------------------+ | Keypad 00 | +---------------------+ | Keypad 000 | +---------------------+ | ThousandsSeparator | +---------------------+ | DecimalSeparator | +---------------------+ | CurrencyUnit | +---------------------+ | CurrencySubUnit | +---------------------+ | Keypad ( | +---------------------+ | Keypad ) | +---------------------+ | Keypad { | +---------------------+ | Keypad } | +---------------------+ | Keypad Tab | +---------------------+ | Keypad Backspace | +---------------------+ | Keypad A | +---------------------+ | Keypad B | +---------------------+ | Keypad C | +---------------------+ | Keypad D | +---------------------+ | Keypad E | +---------------------+ | Keypad F | +---------------------+ | Keypad XOR | +---------------------+ | Keypad ^ | +---------------------+ | Keypad % | +---------------------+ | Keypad < | +---------------------+ | Keypad > | +---------------------+ | Keypad & | +---------------------+ | Keypad && | +---------------------+ | Keypad | | +---------------------+ | Keypad || | +---------------------+ | Keypad : | +---------------------+ | Keypad # | +---------------------+ | Keypad Space | +---------------------+ | Keypad @ | +---------------------+ | Keypad ! | +---------------------+ | Keypad MemStore | +---------------------+ | Keypad MemRecall | +---------------------+ | Keypad MemClear | +---------------------+ | Keypad MemAdd | +---------------------+ | Keypad MemSubtract | +---------------------+ | Keypad MemMultiply | +---------------------+ | Keypad MemDivide | +---------------------+ | Keypad +/- | +---------------------+ | Keypad Clear | +---------------------+ | Keypad ClearEntry | +---------------------+ | Keypad Binary | +---------------------+ | Keypad Octal | +---------------------+ | Keypad Decimal | +---------------------+ | Keypad Hexadecimal | +---------------------+ | Left Ctrl | +---------------------+ | Left Shift | +---------------------+ | Left Alt | +---------------------+ | Left Windows | +---------------------+ | Right Ctrl | +---------------------+ | Right Shift | +---------------------+ | Right Alt | +---------------------+ | Right Windows | +---------------------+ | ModeSwitch | +---------------------+ | AudioNext | +---------------------+ | AudioPrev | +---------------------+ | AudioStop | +---------------------+ | AudioPlay | +---------------------+ | AudioMute | +---------------------+ | MediaSelect | +---------------------+ | WWW | +---------------------+ | Mail | +---------------------+ | Calculator | +---------------------+ | Computer | +---------------------+ | AC Search | +---------------------+ | AC Home | +---------------------+ | AC Back | +---------------------+ | AC Forward | +---------------------+ | AC Stop | +---------------------+ | AC Refresh | +---------------------+ | AC Bookmarks | +---------------------+ | BrightnessDown | +---------------------+ | BrightnessUp | +---------------------+ | DisplaySwitch | +---------------------+ | KBDIllumToggle | +---------------------+ | KBDIllumDown | +---------------------+ | KBDIllumUp | +---------------------+ | Eject | +---------------------+ | Sleep | +---------------------+", + "documentationMarkdown": "> **Summary**\n> Returns a `SDL_Keycode` value that represents the given `keyName`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| keyName | string | | The name of the key whose `SDL_Keycode` value is being fetched. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| SDL_Keycode | See summary. |\n\n---\n\nRecognized `keyName` values \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nUTF-8 character encodings are recognized. For example, all of the following lines would be considered valid:\n\n```Lua\nEEex_Key_GetFromName(\"a\")\nEEex_Key_GetFromName(\"$\")\nEEex_Key_GetFromName(\"£\")\nEEex_Key_GetFromName(\"€\")\nEEex_Key_GetFromName(\"𐍈\")\n```\n\nAdditionally, the following table provides a list of all the specially-recognized key names:\n\n+---------------------+ | Recognized Key Name | +=====================+ | Return | +---------------------+ | Escape | +---------------------+ | Backspace | +---------------------+ | Tab | +---------------------+ | Space | +---------------------+ | CapsLock | +---------------------+ | F1 | +---------------------+ | F2 | +---------------------+ | F3 | +---------------------+ | F4 | +---------------------+ | F5 | +---------------------+ | F6 | +---------------------+ | F7 | +---------------------+ | F8 | +---------------------+ | F9 | +---------------------+ | F10 | +---------------------+ | F11 | +---------------------+ | F12 | +---------------------+ | PrintScreen | +---------------------+ | ScrollLock | +---------------------+ | Pause | +---------------------+ | Insert | +---------------------+ | Home | +---------------------+ | PageUp | +---------------------+ | Delete | +---------------------+ | End | +---------------------+ | PageDown | +---------------------+ | Right | +---------------------+ | Left | +---------------------+ | Down | +---------------------+ | Up | +---------------------+ | Numlock | +---------------------+ | Keypad / | +---------------------+ | Keypad * | +---------------------+ | Keypad - | +---------------------+ | Keypad + | +---------------------+ | Keypad Enter | +---------------------+ | Keypad 1 | +---------------------+ | Keypad 2 | +---------------------+ | Keypad 3 | +---------------------+ | Keypad 4 | +---------------------+ | Keypad 5 | +---------------------+ | Keypad 6 | +---------------------+ | Keypad 7 | +---------------------+ | Keypad 8 | +---------------------+ | Keypad 9 | +---------------------+ | Keypad 0 | +---------------------+ | Keypad . | +---------------------+ | Menu | +---------------------+ | Power | +---------------------+ | Keypad = | +---------------------+ | F13 | +---------------------+ | F14 | +---------------------+ | F15 | +---------------------+ | F16 | +---------------------+ | F17 | +---------------------+ | F18 | +---------------------+ | F19 | +---------------------+ | F20 | +---------------------+ | F21 | +---------------------+ | F22 | +---------------------+ | F23 | +---------------------+ | F24 | +---------------------+ | Execute | +---------------------+ | Help | +---------------------+ | Menu | +---------------------+ | Select | +---------------------+ | Stop | +---------------------+ | Again | +---------------------+ | Undo | +---------------------+ | Cut | +---------------------+ | Copy | +---------------------+ | Paste | +---------------------+ | Find | +---------------------+ | Mute | +---------------------+ | VolumeUp | +---------------------+ | VolumeDown | +---------------------+ | Keypad , | +---------------------+ | Keypad = (AS400) | +---------------------+ | AltErase | +---------------------+ | SysReq | +---------------------+ | Cancel | +---------------------+ | Clear | +---------------------+ | Prior | +---------------------+ | Return | +---------------------+ | Separator | +---------------------+ | Out | +---------------------+ | Oper | +---------------------+ | Clear / Again | +---------------------+ | CrSel | +---------------------+ | ExSel | +---------------------+ | Keypad 00 | +---------------------+ | Keypad 000 | +---------------------+ | ThousandsSeparator | +---------------------+ | DecimalSeparator | +---------------------+ | CurrencyUnit | +---------------------+ | CurrencySubUnit | +---------------------+ | Keypad ( | +---------------------+ | Keypad ) | +---------------------+ | Keypad { | +---------------------+ | Keypad } | +---------------------+ | Keypad Tab | +---------------------+ | Keypad Backspace | +---------------------+ | Keypad A | +---------------------+ | Keypad B | +---------------------+ | Keypad C | +---------------------+ | Keypad D | +---------------------+ | Keypad E | +---------------------+ | Keypad F | +---------------------+ | Keypad XOR | +---------------------+ | Keypad ^ | +---------------------+ | Keypad % | +---------------------+ | Keypad < | +---------------------+ | Keypad > | +---------------------+ | Keypad & | +---------------------+ | Keypad && | +---------------------+ | Keypad | | +---------------------+ | Keypad || | +---------------------+ | Keypad : | +---------------------+ | Keypad # | +---------------------+ | Keypad Space | +---------------------+ | Keypad @ | +---------------------+ | Keypad ! | +---------------------+ | Keypad MemStore | +---------------------+ | Keypad MemRecall | +---------------------+ | Keypad MemClear | +---------------------+ | Keypad MemAdd | +---------------------+ | Keypad MemSubtract | +---------------------+ | Keypad MemMultiply | +---------------------+ | Keypad MemDivide | +---------------------+ | Keypad +/- | +---------------------+ | Keypad Clear | +---------------------+ | Keypad ClearEntry | +---------------------+ | Keypad Binary | +---------------------+ | Keypad Octal | +---------------------+ | Keypad Decimal | +---------------------+ | Keypad Hexadecimal | +---------------------+ | Left Ctrl | +---------------------+ | Left Shift | +---------------------+ | Left Alt | +---------------------+ | Left Windows | +---------------------+ | Right Ctrl | +---------------------+ | Right Shift | +---------------------+ | Right Alt | +---------------------+ | Right Windows | +---------------------+ | ModeSwitch | +---------------------+ | AudioNext | +---------------------+ | AudioPrev | +---------------------+ | AudioStop | +---------------------+ | AudioPlay | +---------------------+ | AudioMute | +---------------------+ | MediaSelect | +---------------------+ | WWW | +---------------------+ | Mail | +---------------------+ | Calculator | +---------------------+ | Computer | +---------------------+ | AC Search | +---------------------+ | AC Home | +---------------------+ | AC Back | +---------------------+ | AC Forward | +---------------------+ | AC Stop | +---------------------+ | AC Refresh | +---------------------+ | AC Bookmarks | +---------------------+ | BrightnessDown | +---------------------+ | BrightnessUp | +---------------------+ | DisplaySwitch | +---------------------+ | KBDIllumToggle | +---------------------+ | KBDIllumDown | +---------------------+ | KBDIllumUp | +---------------------+ | Eject | +---------------------+ | Sleep | +---------------------+", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Key/index.rst#L94", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/eeex-functions/Keybinds.json b/resources/api/sections/eeex-functions/Keybinds.json index 53220b7..9ef74d8 100644 --- a/resources/api/sections/eeex-functions/Keybinds.json +++ b/resources/api/sections/eeex-functions/Keybinds.json @@ -125,10 +125,10 @@ { "name": "args", "type": "table", - "description": "A table containing fields used to update the keybind.
    See [The Keybind Table ](#the-keybind-table) for more details." + "description": "A table containing fields used to update the keybind.
    See [The Keybind Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L92) for more details." } ], - "documentationMarkdown": "> **Summary**\n> Updates the keybind with the given `id` with the fields present in `args`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| id | string | | The unique id of the associated keybind. |\n| args | table | | A table containing fields used to update the keybind.
    See [The Keybind Table ](#the-keybind-table) for more details. |", + "documentationMarkdown": "> **Summary**\n> Updates the keybind with the given `id` with the fields present in `args`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| id | string | | The unique id of the associated keybind. |\n| args | table | | A table containing fields used to update the keybind.
    See [The Keybind Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L92) for more details. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L146", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/eeex-functions/Options.json b/resources/api/sections/eeex-functions/Options.json index abe6054..561f460 100644 --- a/resources/api/sections/eeex-functions/Options.json +++ b/resources/api/sections/eeex-functions/Options.json @@ -81,10 +81,10 @@ "returns": [ { "type": "EEex_Options_Option | nil", - "description": "See summary / [The Option Table ](#the-option-table) for more details." + "description": "See summary / [The Option Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L157) for more details." } ], - "documentationMarkdown": "> **Summary**\n> Returns the option object with the given `id`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| id | string | | The id of the option to be fetched. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| EEex_Options_Option \\| nil | See summary / [The Option Table ](#the-option-table) for more details. |", + "documentationMarkdown": "> **Summary**\n> Returns the option object with the given `id`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| id | string | | The id of the option to be fetched. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| EEex_Options_Option \\| nil | See summary / [The Option Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L157) for more details. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L64", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -100,7 +100,7 @@ { "name": "keybind", "type": "table", - "description": "A table representing the keybind to marshal.
    See [The Keybind Table ](#the-keybind-table) for more details." + "description": "A table representing the keybind to marshal.
    See [The Keybind Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L92) for more details." } ], "returns": [ @@ -109,7 +109,7 @@ "description": "See summary." } ], - "documentationMarkdown": "> **Summary**\n> Returns a string representing the given `keybind` table.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| keybind | table | | A table representing the keybind to marshal.
    See [The Keybind Table ](#the-keybind-table) for more details. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| string | See summary. |", + "documentationMarkdown": "> **Summary**\n> Returns a string representing the given `keybind` table.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| keybind | table | | A table representing the keybind to marshal.
    See [The Keybind Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L92) for more details. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| string | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L91", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -205,7 +205,7 @@ "name": "o", "type": "table", "defaultValue": "{}", - "description": "The object to become the `EEex_Options_Option` instance.
    See [The Option Table ](#the-option-table) for more details." + "description": "The object to become the `EEex_Options_Option` instance.
    See [The Option Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L157) for more details." } ], "returns": [ @@ -216,7 +216,7 @@ ], "containerName": "EEex_Options_Option", "instanceName": "new", - "documentationMarkdown": "> **Summary**\n> Creates a new `EEex_Options_Option` instance.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| o | table | `{}` | The object to become the `EEex_Options_Option` instance.
    See [The Option Table ](#the-option-table) for more details. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| EEex_Options_Option | See summary. |\n\n---\n\n#### **The Option Table**\n\n| Key | Value Type | Description |\n| --- | --- | --- |\n| accessor | EEex_Options_Accessor | This field is currently undocumented. |\n| default | `` | This field is currently undocumented. |\n| requiresRestart | boolean | This field is currently undocumented. |\n| storage | EEex_Options_Private_Storage | This field is currently undocumented. |", + "documentationMarkdown": "> **Summary**\n> Creates a new `EEex_Options_Option` instance.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| o | table | `{}` | The object to become the `EEex_Options_Option` instance.
    See [The Option Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L157) for more details. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| EEex_Options_Option | See summary. |\n\n---\n\n#### **The Option Table**\n\n| Key | Value Type | Description |\n| --- | --- | --- |\n| accessor | EEex_Options_Accessor | This field is currently undocumented. |\n| default | `` | This field is currently undocumented. |\n| requiresRestart | boolean | This field is currently undocumented. |\n| storage | EEex_Options_Private_Storage | This field is currently undocumented. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L129", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -298,10 +298,10 @@ "returns": [ { "type": "table", - "description": "See summary / [The Keybind Table ](#the-keybind-table) for more details." + "description": "See summary / [The Keybind Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L92) for more details." } ], - "documentationMarkdown": "> **Summary**\n> Returns a table representing the given `keybindStr` string.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| keybindStr | string | | A string representing the keybind to unmarshal.
    This string is of the format `+...\\|` |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary / [The Keybind Table ](#the-keybind-table) for more details. |", + "documentationMarkdown": "> **Summary**\n> Returns a table representing the given `keybindStr` string.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| keybindStr | string | | A string representing the keybind to unmarshal.
    This string is of the format `+...\\|` |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary / [The Keybind Table](https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Keybinds/index.rst#L92) for more details. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Options/index.rst#L307", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/eeex-functions/Resource.json b/resources/api/sections/eeex-functions/Resource.json index 39d7667..9e976d4 100644 --- a/resources/api/sections/eeex-functions/Resource.json +++ b/resources/api/sections/eeex-functions/Resource.json @@ -1177,7 +1177,7 @@ "name": "cacheAsArray", "type": "boolean", "defaultValue": "false", - "description": "If `true`, internally builds an array that maps every id of the .IDS to its corresponding `CAIId` entry in the
    range [0, ].

    Setting this parameter to `true` can speed up entry lookups for the returned `CAIIdList` instance – ***however***,
    care must be taken that the given .IDS does not have a large max id value.

    For example, it would be a bad idea to load `KIT.IDS` with `cacheAsArray=true`, as the max id of `KIT.IDS`,
    `0x80000000`, would cause the `CAIIdList` instance to attempt to allocate an array that has a size of
    `(0x80000000 + 1) * 8 bytes` ***= ~16 gigabytes!***" + "description": "If `true`, internally builds an array that maps every id of the .IDS to its corresponding `CAIId` entry in the
    range [0, <max id in .IDS>].

    Setting this parameter to `true` can speed up entry lookups for the returned `CAIIdList` instance – ***however***,
    care must be taken that the given .IDS does not have a large max id value.

    For example, it would be a bad idea to load `KIT.IDS` with `cacheAsArray=true`, as the max id of `KIT.IDS`,
    `0x80000000`, would cause the `CAIIdList` instance to attempt to allocate an array that has a size of
    `(0x80000000 + 1) * 8 bytes` ***= ~16 gigabytes!***" } ], "returns": [ @@ -1186,7 +1186,7 @@ "description": "See summary." } ], - "documentationMarkdown": "> **Summary**\n> Returns a `CAIIdList` instance that represents the .IDS with `resref`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| resref | string | | The resref of the .IDS to be loaded – (should omit the file extension). |\n| cacheAsArray | boolean | `false` | If `true`, internally builds an array that maps every id of the .IDS to its corresponding `CAIId` entry in the
    range [0, ].

    Setting this parameter to `true` can speed up entry lookups for the returned `CAIIdList` instance – ***however***,
    care must be taken that the given .IDS does not have a large max id value.

    For example, it would be a bad idea to load `KIT.IDS` with `cacheAsArray=true`, as the max id of `KIT.IDS`,
    `0x80000000`, would cause the `CAIIdList` instance to attempt to allocate an array that has a size of
    `(0x80000000 + 1) * 8 bytes` ***= ~16 gigabytes!*** |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| CAIIdList | See summary. |", + "documentationMarkdown": "> **Summary**\n> Returns a `CAIIdList` instance that represents the .IDS with `resref`.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| resref | string | | The resref of the .IDS to be loaded – (should omit the file extension). |\n| cacheAsArray | boolean | `false` | If `true`, internally builds an array that maps every id of the .IDS to its corresponding `CAIId` entry in the
    range [0, <max id in .IDS>].

    Setting this parameter to `true` can speed up entry lookups for the returned `CAIIdList` instance – ***however***,
    care must be taken that the given .IDS does not have a large max id value.

    For example, it would be a bad idea to load `KIT.IDS` with `cacheAsArray=true`, as the max id of `KIT.IDS`,
    `0x80000000`, would cause the `CAIIdList` instance to attempt to allocate an array that has a size of
    `(0x80000000 + 1) * 8 bytes` ***= ~16 gigabytes!*** |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| CAIIdList | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Resource/index.rst#L945", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/eeex-functions/Sprite.json b/resources/api/sections/eeex-functions/Sprite.json index 5ca3a8e..64360ab 100644 --- a/resources/api/sections/eeex-functions/Sprite.json +++ b/resources/api/sections/eeex-functions/Sprite.json @@ -161,7 +161,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `countAllOfTypeInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectType` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", + "documentationMarkdown": "**Instance Name:** `countAllOfTypeInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectType` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Sprite/index.rst#L80", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -221,7 +221,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `countAllOfTypeStringInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectTypeString` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", + "documentationMarkdown": "**Instance Name:** `countAllOfTypeStringInRange`\n\n> **Summary**\n> Returns the number of creatures that match `aiObjectTypeString` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| number | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Sprite/index.rst#L119", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -316,7 +316,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `forAllOfTypeInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectType` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |", + "documentationMarkdown": "**Instance Name:** `forAllOfTypeInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectType` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Sprite/index.rst#L182", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -375,7 +375,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `forAllOfTypeStringInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectTypeString` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects passed to `func`.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |", + "documentationMarkdown": "**Instance Name:** `forAllOfTypeStringInRange`\n\n> **Summary**\n> Calls `func` for every creature that matches `aiObjectTypeString` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects passed to `func`.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| func | function | | The function to call for every creature in the search area. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Sprite/index.rst#L215", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -467,7 +467,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `getAllOfTypeInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectType` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", + "documentationMarkdown": "**Instance Name:** `getAllOfTypeInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectType` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectType | CAIObjectType | | The AI object type used to filter the objects passed to `func`.
    Most commonly retrieved from `EEex_Object_ParseString()`. Remember to call `:free()`. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Sprite/index.rst#L277", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", @@ -527,7 +527,7 @@ "consumesFirstParameter": true } ], - "documentationMarkdown": "**Instance Name:** `getAllOfTypeStringInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectTypeString` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", + "documentationMarkdown": "**Instance Name:** `getAllOfTypeStringInRange`\n\n> **Summary**\n> Returns a table populated by every creature that matches `aiObjectTypeString` around `sprite` in the given `range`, as per the `NumCreature()` trigger.\n\n**Parameters:**\n\n| **Name** | **Type** | **Default Value** | **Description** |\n| --- | --- | --- | --- |\n| sprite | CGameSprite | | The sprite to search around. |\n| aiObjectTypeString | string | | The AI object type string used to filter the objects added to the return table.
    Automatically parsed by `EEex_Object_ParseString()`; the resulting object is freed before return. |\n| range | number | | The radius to search around `sprite`. `448` is a sprite's default visual range. |\n| bCheckForLineOfSight | boolean | `true` | Determines whether LOS is required from `sprite` to considered objects. |\n| bCheckForNonSprites | boolean | `false` | Determines whether non-sprite objects in the main objects list are considered. |\n| terrainTable | Array<byte,16> | `sprite:virtual_GetVisibleTerrainTable()` | The terrain table to use for determining LOS. |\n\n**Return Values:**\n\n| **Type** | **Description** |\n| --- | --- |\n| table | See summary. |", "documentationState": "documented", "upstreamUrl": "https://github.com/Bubb13/EEex-Docs/blob/35445db362f56095156e3b43aa8f6f0f50f728a0/source/EEex%20Functions/Sprite/index.rst#L316", "upstreamCommit": "35445db362f56095156e3b43aa8f6f0f50f728a0", diff --git a/resources/api/sections/lua52.json b/resources/api/sections/lua52.json index 8936ccd..cce8e13 100644 --- a/resources/api/sections/lua52.json +++ b/resources/api/sections/lua52.json @@ -1,10 +1,11 @@ { "schemaVersion": 3, - "generatedAt": "2026-08-25T18:10:55.136Z", + "generatedAt": "2026-09-22T13:41:25.745Z", "source": { "id": "lua52", "title": "Lua 5.2", - "url": "https://www.lua.org/manual/5.2/", + "url": "https://www.lua.org/ftp/lua-5.2.4.tar.gz", + "sha256": "b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b", "licenseStatus": "allowed" }, "title": "Lua 5.2", @@ -15,7 +16,7 @@ "kind": "variable", "sourceSection": "lua52", "signature": "_G", - "documentationMarkdown": "A global variable (not a function) that holds the global environment (see section2.2). Lua itself does not use this variable; changing its value does not affect any environment, nor vice-versa.", + "documentationMarkdown": "A global variable (not a function) that holds the global environment (see [§2.2](https://www.lua.org/manual/5.2/manual.html#2.2)). Lua itself does not use this variable; changing its value does not affect any environment, nor vice-versa.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-_G", "licenseStatus": "allowed" @@ -69,7 +70,7 @@ "name": "bit32.band", "kind": "function", "sourceSection": "lua52", - "signature": "bit32.band (...)", + "signature": "bit32.band (···)", "documentationMarkdown": "Returns the bitwise *and* of its operands.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-bit32.band", @@ -91,7 +92,7 @@ "name": "bit32.bor", "kind": "function", "sourceSection": "lua52", - "signature": "bit32.bor (...)", + "signature": "bit32.bor (···)", "documentationMarkdown": "Returns the bitwise *or* of its operands.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-bit32.bor", @@ -102,7 +103,7 @@ "name": "bit32.btest", "kind": "function", "sourceSection": "lua52", - "signature": "bit32.btest (...)", + "signature": "bit32.btest (···)", "documentationMarkdown": "Returns a boolean signaling whether the bitwise *and* of its operands is different from zero.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-bit32.btest", @@ -113,7 +114,7 @@ "name": "bit32.bxor", "kind": "function", "sourceSection": "lua52", - "signature": "bit32.bxor (...)", + "signature": "bit32.bxor (···)", "documentationMarkdown": "Returns the bitwise *exclusive or* of its operands.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-bit32.bxor", @@ -158,7 +159,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "bit32.replace (n, v, field [, width])", - "documentationMarkdown": "Returns a copy of `n` with the bits `field` to `field + width - 1` replaced by the value `v`. See `bit32.extract` for details about `field` and `width`.", + "documentationMarkdown": "Returns a copy of `n` with the bits `field` to `field + width - 1` replaced by the value `v`. See [`bit32.extract`](https://www.lua.org/manual/5.2/manual.html#pdf-bit32.extract) for details about `field` and `width`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-bit32.replace", "licenseStatus": "allowed" @@ -191,7 +192,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "collectgarbage ([opt [, arg]])", - "documentationMarkdown": "This function is a generic interface to the garbage collector. It performs different functions according to its first argument, `opt`:\n\n- **\"`collect`\": ** performs a full garbage-collection cycle. This is the default option.\n- **\"`stop`\": ** stops automatic execution of the garbage collector. The collector will run only when explicitly invoked, until a call to restart it.\n- **\"`restart`\": ** restarts automatic execution of the garbage collector.\n- **\"`count`\": ** returns the total memory in use by Lua (in Kbytes) and a second value with the total memory in bytes modulo 1024. The first value has a fractional part, so the following equality is always true:\n\n```lua\nk, b = collectgarbage(\"count\")\nassert(k*1024 == math.floor(k)*1024 + b)\n```\n\n(The second result is useful when Lua is compiled with a non floating-point type for numbers.) - **\"`step`\": ** performs a garbage-collection step. The step \"size\" is controlled by `arg` (larger values mean more steps) in a non-specified way. If you want to control the step size you must experimentally tune the value of `arg`. Returns **true** if the step finished a collection cycle. - **\"`setpause`\": ** sets `arg` as the new value for the *pause* of the collector (see section2.5). Returns the previous value for *pause*. - **\"`setstepmul`\": ** sets `arg` as the new value for the *step multiplier* of the collector (see section2.5). Returns the previous value for *step*. - **\"`isrunning`\": ** returns a boolean that tells whether the collector is running (i.e., not stopped). - **\"`generational`\": ** changes the collector to generational mode. This is an experimental feature (see section2.5). - **\"`incremental`\": ** changes the collector to incremental mode. This is the default mode.", + "documentationMarkdown": "This function is a generic interface to the garbage collector. It performs different functions according to its first argument, `opt`:\n\n- **\"`collect`\":** performs a full garbage-collection cycle. This is the default option.\n- **\"`stop`\":** stops automatic execution of the garbage collector. The collector will run only when explicitly invoked, until a call to restart it.\n- **\"`restart`\":** restarts automatic execution of the garbage collector.\n- **\"`count`\":** returns the total memory in use by Lua (in Kbytes) and a second value with the total memory in bytes modulo 1024. The first value has a fractional part, so the following equality is always true:\n\n ```lua\n k, b = collectgarbage(\"count\")\n assert(k*1024 == math.floor(k)*1024 + b)\n ```\n\n (The second result is useful when Lua is compiled with a non floating-point type for numbers.)\n- **\"`step`\":** performs a garbage-collection step. The step \"size\" is controlled by `arg` (larger values mean more steps) in a non-specified way. If you want to control the step size you must experimentally tune the value of `arg`. Returns **true** if the step finished a collection cycle.\n- **\"`setpause`\":** sets `arg` as the new value for the *pause* of the collector (see [§2.5](https://www.lua.org/manual/5.2/manual.html#2.5)). Returns the previous value for *pause*.\n- **\"`setstepmul`\":** sets `arg` as the new value for the *step multiplier* of the collector (see [§2.5](https://www.lua.org/manual/5.2/manual.html#2.5)). Returns the previous value for *step*.\n- **\"`isrunning`\":** returns a boolean that tells whether the collector is running (i.e., not stopped).\n- **\"`generational`\":** changes the collector to generational mode. This is an experimental feature (see [§2.5](https://www.lua.org/manual/5.2/manual.html#2.5)).\n- **\"`incremental`\":** changes the collector to incremental mode. This is the default mode.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-collectgarbage", "licenseStatus": "allowed" @@ -202,7 +203,7 @@ "kind": "module", "sourceSection": "lua52", "signature": "debug", - "documentationMarkdown": "This library provides the functionality of the debug interface (section4.9) to Lua programs. You should exert care when using this library. Several of its functions violate basic assumptions about Lua code (e.g., that variables local to a function cannot be accessed from outside; that userdata metatables cannot be changed by Lua code; that Lua programs do not crash) and therefore can compromise otherwise secure code. Moreover, some functions in this library may be slow.", + "documentationMarkdown": "This library provides the functionality of the debug interface ([§4.9](https://www.lua.org/manual/5.2/manual.html#4.9)) to Lua programs. You should exert care when using this library. Several of its functions violate basic assumptions about Lua code (e.g., that variables local to a function cannot be accessed from outside; that userdata metatables cannot be changed by Lua code; that Lua programs do not crash) and therefore can compromise otherwise secure code. Moreover, some functions in this library may be slow.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#6.10", "licenseStatus": "allowed" @@ -224,7 +225,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "debug.gethook ([thread])", - "documentationMarkdown": "Returns the current hook settings of the thread, as three values: the current hook function, the current hook mask, and the current hook count (as set by the `debug.sethook` function).", + "documentationMarkdown": "Returns the current hook settings of the thread, as three values: the current hook function, the current hook mask, and the current hook count (as set by the [`debug.sethook`](https://www.lua.org/manual/5.2/manual.html#pdf-debug.sethook) function).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-debug.gethook", "licenseStatus": "allowed" @@ -235,7 +236,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "debug.getinfo ([thread,] f [, what])", - "documentationMarkdown": "Returns a table with information about a function. You can give the function directly or you can give a number as the value of `f`, which means the function running at level `f` of the call stack of the given thread: level 0 is the current function (`getinfo` itself); level 1 is the function that called `getinfo` (except for tail calls, which do not count on the stack); and so on. If `f` is a number larger than the number of active functions, then `getinfo` returns **nil**.\n\nThe returned table can contain all the fields returned by `lua_getinfo`, with the string `what` describing which fields to fill in. The default for `what` is to get all information available, except the table of valid lines. If present, the option '`f`' adds a field named `func` with the function itself. If present, the option '`L`' adds a field named `activelines` with the table of valid lines.\n\nFor instance, the expression `debug.getinfo(1,\"n\").name` returns a table with a name for the current function, if a reasonable name can be found, and the expression `debug.getinfo(print)` returns a table with all available information about the `print` function.", + "documentationMarkdown": "Returns a table with information about a function. You can give the function directly or you can give a number as the value of `f`, which means the function running at level `f` of the call stack of the given thread: level 0 is the current function (`getinfo` itself); level 1 is the function that called `getinfo` (except for tail calls, which do not count on the stack); and so on. If `f` is a number larger than the number of active functions, then `getinfo` returns **nil**.\n\nThe returned table can contain all the fields returned by [`lua_getinfo`](https://www.lua.org/manual/5.2/manual.html#lua_getinfo), with the string `what` describing which fields to fill in. The default for `what` is to get all information available, except the table of valid lines. If present, the option '`f`' adds a field named `func` with the function itself. If present, the option '`L`' adds a field named `activelines` with the table of valid lines.\n\nFor instance, the expression `debug.getinfo(1,\"n\").name` returns a table with a name for the current function, if a reasonable name can be found, and the expression `debug.getinfo(print)` returns a table with all available information about the [`print`](https://www.lua.org/manual/5.2/manual.html#pdf-print) function.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-debug.getinfo", "licenseStatus": "allowed" @@ -246,7 +247,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "debug.getlocal ([thread,] f, local)", - "documentationMarkdown": "This function returns the name and the value of the local variable with index `local` of the function at level `f` of the stack. This function accesses not only explicit local variables, but also parameters, temporaries, etc.\n\nThe first parameter or local variable has index 1, and so on, until the last active variable. Negative indices refer to vararg parameters; -1 is the first vararg parameter. The function returns **nil** if there is no variable with the given index, and raises an error when called with a level out of range. (You can call `debug.getinfo` to check whether the level is valid.)\n\nVariable names starting with '`(`' (open parenthesis) represent internal variables (loop control variables, temporaries, varargs, and C function locals).\n\nThe parameter `f` may also be a function. In that case, `getlocal` returns only the name of function parameters.", + "documentationMarkdown": "This function returns the name and the value of the local variable with index `local` of the function at level `f` of the stack. This function accesses not only explicit local variables, but also parameters, temporaries, etc.\n\nThe first parameter or local variable has index 1, and so on, until the last active variable. Negative indices refer to vararg parameters; -1 is the first vararg parameter. The function returns **nil** if there is no variable with the given index, and raises an error when called with a level out of range. (You can call [`debug.getinfo`](https://www.lua.org/manual/5.2/manual.html#pdf-debug.getinfo) to check whether the level is valid.)\n\nVariable names starting with '`(`' (open parenthesis) represent internal variables (loop control variables, temporaries, varargs, and C function locals).\n\nThe parameter `f` may also be a function. In that case, `getlocal` returns only the name of function parameters.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-debug.getlocal", "licenseStatus": "allowed" @@ -268,7 +269,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "debug.getregistry ()", - "documentationMarkdown": "Returns the registry table (see section4.5).", + "documentationMarkdown": "Returns the registry table (see [§4.5](https://www.lua.org/manual/5.2/manual.html#4.5)).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-debug.getregistry", "licenseStatus": "allowed" @@ -301,7 +302,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "debug.sethook ([thread,] hook, mask [, count])", - "documentationMarkdown": "Sets the given function as a hook. The string `mask` and the number `count` describe when the hook will be called. The string mask may have any combination of the following characters, with the given meaning:\n\n- **'`c`': ** the hook is called every time Lua calls a function;\n- **'`r`': ** the hook is called every time Lua returns from a function;\n- **'`l`': ** the hook is called every time Lua enters a new line of code.\n\nMoreover, with a `count` different from zero, the hook is called also after every `count` instructions.\n\nWhen called without arguments, `debug.sethook` turns off the hook.\n\nWhen the hook is called, its first parameter is a string describing the event that has triggered its call: `\"call\"` (or `\"tail call\"`), `\"return\"`, `\"line\"`, and `\"count\"`. For line events, the hook also gets the new line number as its second parameter. Inside a hook, you can call `getinfo` with level 2 to get more information about the running function (level 0 is the `getinfo` function, and level 1 is the hook function).", + "documentationMarkdown": "Sets the given function as a hook. The string `mask` and the number `count` describe when the hook will be called. The string mask may have any combination of the following characters, with the given meaning:\n\n- **'`c`':** the hook is called every time Lua calls a function;\n- **'`r`':** the hook is called every time Lua returns from a function;\n- **'`l`':** the hook is called every time Lua enters a new line of code.\n\nMoreover, with a `count` different from zero, the hook is called also after every `count` instructions.\n\nWhen called without arguments, [`debug.sethook`](https://www.lua.org/manual/5.2/manual.html#pdf-debug.sethook) turns off the hook.\n\nWhen the hook is called, its first parameter is a string describing the event that has triggered its call: `\"call\"` (or `\"tail call\"`), `\"return\"`, `\"line\"`, and `\"count\"`. For line events, the hook also gets the new line number as its second parameter. Inside a hook, you can call `getinfo` with level 2 to get more information about the running function (level 0 is the `getinfo` function, and level 1 is the hook function).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-debug.sethook", "licenseStatus": "allowed" @@ -312,7 +313,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "debug.setlocal ([thread,] level, local, value)", - "documentationMarkdown": "This function assigns the value `value` to the local variable with index `local` of the function at level `level` of the stack. The function returns **nil** if there is no local variable with the given index, and raises an error when called with a `level` out of range. (You can call `getinfo` to check whether the level is valid.) Otherwise, it returns the name of the local variable.\n\nSee `debug.getlocal` for more information about variable indices and names.", + "documentationMarkdown": "This function assigns the value `value` to the local variable with index `local` of the function at level `level` of the stack. The function returns **nil** if there is no local variable with the given index, and raises an error when called with a `level` out of range. (You can call `getinfo` to check whether the level is valid.) Otherwise, it returns the name of the local variable.\n\nSee [`debug.getlocal`](https://www.lua.org/manual/5.2/manual.html#pdf-debug.getlocal) for more information about variable indices and names.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-debug.setlocal", "licenseStatus": "allowed" @@ -400,7 +401,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "error (message [, level])", - "documentationMarkdown": "Terminates the last protected function called and returns `message` as the error message. Function `error` never returns.\n\nUsually, `error` adds some information about the error position at the beginning of the message, if the message is a string. The `level` argument specifies how to get the error position. With level 1 (the default), the error position is where the `error` function was called. Level 2 points the error to where the function that called `error` was called; and so on. Passing a level 0 avoids the addition of error position information to the message.", + "documentationMarkdown": "Terminates the last protected function called and returns `message` as the error message. Function `error` never returns.\n\nUsually, `error` adds some information about the error position at the beginning of the message, if the message is a string. The `level` argument specifies how to get the error position. With level 1 (the default), the error position is where the `error` function was called. Level 2 points the error to where the function that called `error` was called; and so on. Passing a level 0 avoids the addition of error position information to the message.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-error", "licenseStatus": "allowed" @@ -433,7 +434,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "and", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -444,7 +445,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "break", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -455,7 +456,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "do", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -466,7 +467,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "else", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -477,7 +478,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "elseif", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -488,7 +489,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "end", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -499,7 +500,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "false", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -510,7 +511,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "for", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -521,7 +522,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "function", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -532,7 +533,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "goto", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -543,7 +544,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "if", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -554,7 +555,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "in", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -565,7 +566,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "local", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -576,7 +577,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "nil", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -587,7 +588,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "not", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -598,7 +599,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "or", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -609,7 +610,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "repeat", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -620,7 +621,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "return", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -631,7 +632,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "then", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -642,7 +643,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "true", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -653,7 +654,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "until", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -664,7 +665,7 @@ "kind": "keyword", "sourceSection": "lua52", "signature": "while", - "documentationMarkdown": "The following keywords are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", + "documentationMarkdown": "The following *keywords* are reserved and cannot be used as names:\n\n```lua\nand break do else elseif end\nfalse for function goto if in\nlocal nil not or repeat return\nthen true until while\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#3.1", "licenseStatus": "allowed" @@ -675,7 +676,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "load (ld [, source [, mode [, env]]])", - "documentationMarkdown": "Loads a chunk.\n\nIf `ld` is a string, the chunk is this string. If `ld` is a function, `load` calls it repeatedly to get the chunk pieces. Each call to `ld` must return a string that concatenates with previous results. A return of an empty string, **nil**, or no value signals the end of the chunk.\n\nIf there are no syntactic errors, returns the compiled chunk as a function; otherwise, returns **nil** plus the error message.\n\nIf the resulting function has upvalues, the first upvalue is set to the value of `env`, if that parameter is given, or to the value of the global environment. (When you load a main chunk, the resulting function will always have exactly one upvalue, the `_ENV` variable (see section2.2). When you load a binary chunk created from a function (see `string.dump`), the resulting function can have arbitrary upvalues.)\n\n`source` is used as the source of the chunk for error messages and debug information (see section4.9). When absent, it defaults to `ld`, if `ld` is a string, or to \"`=(load)`\" otherwise.\n\nThe string `mode` controls whether the chunk can be text or binary (that is, a precompiled chunk). It may be the string \"`b`\" (only binary chunks), \"`t`\" (only text chunks), or \"`bt`\" (both binary and text). The default is \"`bt`\".", + "documentationMarkdown": "Loads a chunk.\n\nIf `ld` is a string, the chunk is this string. If `ld` is a function, `load` calls it repeatedly to get the chunk pieces. Each call to `ld` must return a string that concatenates with previous results. A return of an empty string, **nil**, or no value signals the end of the chunk.\n\nIf there are no syntactic errors, returns the compiled chunk as a function; otherwise, returns **nil** plus the error message.\n\nIf the resulting function has upvalues, the first upvalue is set to the value of `env`, if that parameter is given, or to the value of the global environment. (When you load a main chunk, the resulting function will always have exactly one upvalue, the `_ENV` variable (see [§2.2](https://www.lua.org/manual/5.2/manual.html#2.2)). When you load a binary chunk created from a function (see [`string.dump`](https://www.lua.org/manual/5.2/manual.html#pdf-string.dump)), the resulting function can have arbitrary upvalues.)\n\n`source` is used as the source of the chunk for error messages and debug information (see [§4.9](https://www.lua.org/manual/5.2/manual.html#4.9)). When absent, it defaults to `ld`, if `ld` is a string, or to \"`=(load)`\" otherwise.\n\nThe string `mode` controls whether the chunk can be text or binary (that is, a precompiled chunk). It may be the string \"`b`\" (only binary chunks), \"`t`\" (only text chunks), or \"`bt`\" (both binary and text). The default is \"`bt`\".", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-load", "licenseStatus": "allowed" @@ -686,7 +687,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "loadfile ([filename [, mode [, env]]])", - "documentationMarkdown": "Similar to `load`, but gets the chunk from file `filename` or from the standard input, if no file name is given.", + "documentationMarkdown": "Similar to [`load`](https://www.lua.org/manual/5.2/manual.html#pdf-load), but gets the chunk from file `filename` or from the standard input, if no file name is given.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-loadfile", "licenseStatus": "allowed" @@ -697,7 +698,7 @@ "kind": "module", "sourceSection": "lua52", "signature": "math", - "documentationMarkdown": "This library is an interface to the standard C math library. It provides all its functions inside the table `math`.", + "documentationMarkdown": "This library is an interface to the standard C math library. It provides all its functions inside the table `math`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#6.6", "licenseStatus": "allowed" @@ -807,7 +808,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "math.exp (x)", - "documentationMarkdown": "Returns the value *ex*.", + "documentationMarkdown": "Returns the value *ex*.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.exp", "licenseStatus": "allowed" @@ -840,7 +841,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "math.frexp (x)", - "documentationMarkdown": "Returns `m` and `e` such that *x = m2e*, `e` is an integer and the absolute value of `m` is in the range *[0.5, 1)* (or zero when `x` is zero).", + "documentationMarkdown": "Returns `m` and `e` such that *x = m2e*, `e` is an integer and the absolute value of `m` is in the range *[0.5, 1)* (or zero when `x` is zero).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.frexp", "licenseStatus": "allowed" @@ -862,7 +863,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "math.ldexp (m, e)", - "documentationMarkdown": "Returns *m2e* (`e` should be an integer).", + "documentationMarkdown": "Returns *m2e* (`e` should be an integer).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.ldexp", "licenseStatus": "allowed" @@ -883,7 +884,7 @@ "name": "math.max", "kind": "function", "sourceSection": "lua52", - "signature": "math.max (x, ...)", + "signature": "math.max (x, ···)", "documentationMarkdown": "Returns the maximum value among its arguments.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.max", @@ -894,7 +895,7 @@ "name": "math.min", "kind": "function", "sourceSection": "lua52", - "signature": "math.min (x, ...)", + "signature": "math.min (x, ···)", "documentationMarkdown": "Returns the minimum value among its arguments.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.min", @@ -917,7 +918,7 @@ "kind": "variable", "sourceSection": "lua52", "signature": "math.pi", - "documentationMarkdown": "The value of *π*.", + "documentationMarkdown": "The value of *π*.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.pi", "licenseStatus": "allowed" @@ -928,7 +929,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "math.pow (x, y)", - "documentationMarkdown": "Returns *xy*. (You can also use the expression `x^y` to compute this value.)", + "documentationMarkdown": "Returns *xy*. (You can also use the expression `x^y` to compute this value.)", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.pow", "licenseStatus": "allowed" @@ -950,7 +951,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "math.random ([m [, n]])", - "documentationMarkdown": "This function is an interface to the simple pseudo-random generator function `rand` provided by Standard C. (No guarantees can be given for its statistical properties.)\n\nWhen called without arguments, returns a uniform pseudo-random real number in the range *[0,1)*. When called with an integer number `m`, `math.random` returns a uniform pseudo-random integer in the range *[1, m]*. When called with two integer numbers `m` and `n`, `math.random` returns a uniform pseudo-random integer in the range *[m, n]*.", + "documentationMarkdown": "This function is an interface to the simple pseudo-random generator function `rand` provided by Standard C. (No guarantees can be given for its statistical properties.)\n\nWhen called without arguments, returns a uniform pseudo-random real number in the range *[0,1)*. When called with an integer number `m`, `math.random` returns a uniform pseudo-random integer in the range *[1, m]*. When called with two integer numbers `m` and `n`, `math.random` returns a uniform pseudo-random integer in the range *[m, n]*.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-math.random", "licenseStatus": "allowed" @@ -1038,7 +1039,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "pairs (t)", - "documentationMarkdown": "If `t` has a metamethod `__pairs`, calls it with `t` as argument and returns the first three results from the call.\n\nOtherwise, returns three values: the `next` function, the table `t`, and **nil**, so that the construction\n\n```lua\nfor k,v in pairs(t) do body end\n```\n\nwill iterate over all key-value pairs of table `t`.\n\nSee function `next` for the caveats of modifying the table during its traversal.", + "documentationMarkdown": "If `t` has a metamethod `__pairs`, calls it with `t` as argument and returns the first three results from the call.\n\nOtherwise, returns three values: the [`next`](https://www.lua.org/manual/5.2/manual.html#pdf-next) function, the table `t`, and **nil**, so that the construction\n\n```lua\nfor k,v in pairs(t) do body end\n```\n\nwill iterate over all key–value pairs of table `t`.\n\nSee function [`next`](https://www.lua.org/manual/5.2/manual.html#pdf-next) for the caveats of modifying the table during its traversal.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-pairs", "licenseStatus": "allowed" @@ -1048,8 +1049,8 @@ "name": "pcall", "kind": "function", "sourceSection": "lua52", - "signature": "pcall (f [, arg1, ...])", - "documentationMarkdown": "Calls function `f` with the given arguments in *protected mode*. This means that any error inside `f` is not propagated; instead, `pcall` catches the error and returns a status code. Its first result is the status code (a boolean), which is true if the call succeeds without errors. In such case, `pcall` also returns all results from the call, after this first result. In case of any error, `pcall` returns **false** plus the error message.", + "signature": "pcall (f [, arg1, ···])", + "documentationMarkdown": "Calls function `f` with the given arguments in *protected mode*. This means that any error inside `f` is not propagated; instead, `pcall` catches the error and returns a status code. Its first result is the status code (a boolean), which is true if the call succeeds without errors. In such case, `pcall` also returns all results from the call, after this first result. In case of any error, `pcall` returns **false** plus the error message.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-pcall", "licenseStatus": "allowed" @@ -1059,8 +1060,8 @@ "name": "print", "kind": "function", "sourceSection": "lua52", - "signature": "print (...)", - "documentationMarkdown": "Receives any number of arguments and prints their values to `stdout`, using the `tostring` function to convert each argument to a string. `print` is not intended for formatted output, but only as a quick way to show a value, for instance for debugging. For complete control over the output, use `string.format` and `io.write`.", + "signature": "print (···)", + "documentationMarkdown": "Receives any number of arguments and prints their values to `stdout`, using the [`tostring`](https://www.lua.org/manual/5.2/manual.html#pdf-tostring) function to convert each argument to a string. `print` is not intended for formatted output, but only as a quick way to show a value, for instance for debugging. For complete control over the output, use [`string.format`](https://www.lua.org/manual/5.2/manual.html#pdf-string.format) and [`io.write`](https://www.lua.org/manual/5.2/manual.html#pdf-io.write).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-print", "licenseStatus": "allowed" @@ -1114,7 +1115,7 @@ "name": "select", "kind": "function", "sourceSection": "lua52", - "signature": "select (index, ...)", + "signature": "select (index, ···)", "documentationMarkdown": "If `index` is a number, returns all arguments after argument number `index`; a negative number indexes from the end (-1 is the last argument). Otherwise, `index` must be the string `\"#\"`, and `select` returns the total number of extra arguments it received.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-select", @@ -1126,7 +1127,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "setmetatable (table, metatable)", - "documentationMarkdown": "Sets the metatable for the given table. (You cannot change the metatable of other types from Lua, only from C.) If `metatable` is **nil**, removes the metatable of the given table. If the original metatable has a `\"__metatable\"` field, raises an error.\n\nThis function returns `table`.", + "documentationMarkdown": "Sets the metatable for the given table. (You cannot change the metatable of other types from Lua, only from C.) If `metatable` is **nil**, removes the metatable of the given table. If the original metatable has a `\"__metatable\"` field, raises an error.\n\nThis function returns `table`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-setmetatable", "licenseStatus": "allowed" @@ -1137,7 +1138,7 @@ "kind": "module", "sourceSection": "lua52", "signature": "string", - "documentationMarkdown": "This library provides generic functions for string manipulation, such as finding and extracting substrings, and pattern matching. When indexing a string in Lua, the first character is at position 1 (not at 0, as in C). Indices are allowed to be negative and are interpreted as indexing backwards, from the end of the string. Thus, the last character is at position -1, and so on.", + "documentationMarkdown": "This library provides generic functions for string manipulation, such as finding and extracting substrings, and pattern matching. When indexing a string in Lua, the first character is at position 1 (not at 0, as in C). Indices are allowed to be negative and are interpreted as indexing backwards, from the end of the string. Thus, the last character is at position -1, and so on.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#6.4", "licenseStatus": "allowed" @@ -1148,7 +1149,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "string.byte (s [, i [, j]])", - "documentationMarkdown": "Returns the internal numerical codes of the characters `s[i]`, `s[i+1]`, ..., `s[j]`. The default value for `i` is 1; the default value for `j` is `i`. These indices are corrected following the same rules of function `string.sub`.\n\nNumerical codes are not necessarily portable across platforms.", + "documentationMarkdown": "Returns the internal numerical codes of the characters `s[i]`, `s[i+1]`, ..., `s[j]`. The default value for `i` is 1; the default value for `j` is `i`. These indices are corrected following the same rules of function [`string.sub`](https://www.lua.org/manual/5.2/manual.html#pdf-string.sub).\n\nNumerical codes are not necessarily portable across platforms.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.byte", "licenseStatus": "allowed" @@ -1158,7 +1159,7 @@ "name": "string.char", "kind": "function", "sourceSection": "lua52", - "signature": "string.char (...)", + "signature": "string.char (···)", "documentationMarkdown": "Receives zero or more integers. Returns a string with length equal to the number of arguments, in which each character has the internal numerical code equal to its corresponding argument.\n\nNumerical codes are not necessarily portable across platforms.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.char", @@ -1170,7 +1171,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "string.dump (function)", - "documentationMarkdown": "Returns a string containing a binary representation of the given function, so that a later `load` on this string returns a copy of the function (but with new upvalues).", + "documentationMarkdown": "Returns a string containing a binary representation of the given function, so that a later [`load`](https://www.lua.org/manual/5.2/manual.html#pdf-load) on this string returns a copy of the function (but with new upvalues).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.dump", "licenseStatus": "allowed" @@ -1181,7 +1182,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "string.find (s, pattern [, init [, plain]])", - "documentationMarkdown": "Looks for the first match of `pattern` in the string `s`. If it finds a match, then `find` returns the indices of `s` where this occurrence starts and ends; otherwise, it returns **nil**. A third, optional numerical argument `init` specifies where to start the search; its default value is 1 and can be negative. A value of **true** as a fourth, optional argument `plain` turns off the pattern matching facilities, so the function does a plain \"find substring\" operation, with no characters in `pattern` being considered magic. Note that if `plain` is given, then `init` must be given as well.\n\nIf the pattern has captures, then in a successful match the captured values are also returned, after the two indices.", + "documentationMarkdown": "Looks for the first match of `pattern` in the string `s`. If it finds a match, then `find` returns the indices of `s` where this occurrence starts and ends; otherwise, it returns **nil**. A third, optional numerical argument `init` specifies where to start the search; its default value is 1 and can be negative. A value of **true** as a fourth, optional argument `plain` turns off the pattern matching facilities, so the function does a plain \"find substring\" operation, with no characters in `pattern` being considered magic. Note that if `plain` is given, then `init` must be given as well.\n\nIf the pattern has captures, then in a successful match the captured values are also returned, after the two indices.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.find", "licenseStatus": "allowed" @@ -1191,8 +1192,8 @@ "name": "string.format", "kind": "function", "sourceSection": "lua52", - "signature": "string.format (formatstring, ...)", - "documentationMarkdown": "Returns a formatted version of its variable number of arguments following the description given in its first argument (which must be a string). The format string follows the same rules as the ISO C function `sprintf`. The only differences are that the options/modifiers `*`, `h`, `L`, `l`, `n`, and `p` are not supported and that there is an extra option, `q`. The `q` option formats a string between double quotes, using escape sequences when necessary to ensure that it can safely be read back by the Lua interpreter. For instance, the call\n\n```lua\nstring.format('%q', 'a string with \"quotes\" and \\n new line')\n```\n\nmay produce the string:\n\n```lua\n\"a string with \\\"quotes\\\" and \\\n new line\"\n```\n\nOptions `A` and `a` (when available), `E`, `e`, `f`, `G`, and `g` all expect a number as argument. Options `c`, `d`, `i`, `o`, `u`, `X`, and `x` also expect a number, but the range of that number may be limited by the underlying C implementation. For options `o`, `u`, `X`, and `x`, the number cannot be negative. Option `q` expects a string; option `s` expects a string without embedded zeros. If the argument to option `s` is not a string, it is converted to one following the same rules of `tostring`.", + "signature": "string.format (formatstring, ···)", + "documentationMarkdown": "Returns a formatted version of its variable number of arguments following the description given in its first argument (which must be a string). The format string follows the same rules as the ISO C function `sprintf`. The only differences are that the options/modifiers `*`, `h`, `L`, `l`, `n`, and `p` are not supported and that there is an extra option, `q`. The `q` option formats a string between double quotes, using escape sequences when necessary to ensure that it can safely be read back by the Lua interpreter. For instance, the call\n\n```lua\nstring.format('%q', 'a string with \"quotes\" and \\n new line')\n```\n\nmay produce the string:\n\n```lua\n\"a string with \\\"quotes\\\" and \\\n new line\"\n```\n\nOptions `A` and `a` (when available), `E`, `e`, `f`, `G`, and `g` all expect a number as argument. Options `c`, `d`, `i`, `o`, `u`, `X`, and `x` also expect a number, but the range of that number may be limited by the underlying C implementation. For options `o`, `u`, `X`, and `x`, the number cannot be negative. Option `q` expects a string; option `s` expects a string without embedded zeros. If the argument to option `s` is not a string, it is converted to one following the same rules of [`tostring`](https://www.lua.org/manual/5.2/manual.html#pdf-tostring).", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.format", "licenseStatus": "allowed" @@ -1214,7 +1215,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "string.gsub (s, pattern, repl [, n])", - "documentationMarkdown": "Returns a copy of `s` in which all (or the first `n`, if given) occurrences of the `pattern` have been replaced by a replacement string specified by `repl`, which can be a string, a table, or a function. `gsub` also returns, as its second value, the total number of matches that occurred. The name `gsub` comes from *Global SUBstitution*.\n\nIf `repl` is a string, then its value is used for replacement. The character `%` works as an escape character: any sequence in `repl` of the form `%d`, with *d* between 1 and 9, stands for the value of the *d*-th captured substring. The sequence `%0` stands for the whole match. The sequence `%%` stands for a single `%`.\n\nIf `repl` is a table, then the table is queried for every match, using the first capture as the key.\n\nIf `repl` is a function, then this function is called every time a match occurs, with all captured substrings passed as arguments, in order.\n\nIn any case, if the pattern specifies no captures, then it behaves as if the whole pattern was inside a capture.\n\nIf the value returned by the table query or by the function call is a string or a number, then it is used as the replacement string; otherwise, if it is **false** or **nil**, then there is no replacement (that is, the original match is kept in the string).\n\nHere are some examples:\n\n```lua\nx = string.gsub(\"hello world\", \"(%w+)\", \"%1 %1\")\n--> x=\"hello hello world world\"\n\nx = string.gsub(\"hello world\", \"%w+\", \"%0 %0\", 1)\n--> x=\"hello hello world\"\n\nx = string.gsub(\"hello world from Lua\", \"(%w+)%s*(%w+)\", \"%2 %1\")\n--> x=\"world hello Lua from\"\n\nx = string.gsub(\"home = $HOME, user = $USER\", \"%$(%w+)\", os.getenv)\n--> x=\"home = /home/roberto, user = roberto\"\n\nx = string.gsub(\"4+5 = $return 4+5$\", \"%$(.-)%$\", function (s)\n return load(s)()\n end)\n--> x=\"4+5 = 9\"\n\nlocal t = {name=\"lua\", version=\"5.2\"}\nx = string.gsub(\"$name-$version.tar.gz\", \"%$(%w+)\", t)\n--> x=\"lua-5.2.tar.gz\"\n```", + "documentationMarkdown": "Returns a copy of `s` in which all (or the first `n`, if given) occurrences of the `pattern` have been replaced by a replacement string specified by `repl`, which can be a string, a table, or a function. `gsub` also returns, as its second value, the total number of matches that occurred. The name `gsub` comes from *Global SUBstitution*.\n\nIf `repl` is a string, then its value is used for replacement. The character `%` works as an escape character: any sequence in `repl` of the form `%d`, with *d* between 1 and 9, stands for the value of the *d*-th captured substring. The sequence `%0` stands for the whole match. The sequence `%%` stands for a single `%`.\n\nIf `repl` is a table, then the table is queried for every match, using the first capture as the key.\n\nIf `repl` is a function, then this function is called every time a match occurs, with all captured substrings passed as arguments, in order.\n\nIn any case, if the pattern specifies no captures, then it behaves as if the whole pattern was inside a capture.\n\nIf the value returned by the table query or by the function call is a string or a number, then it is used as the replacement string; otherwise, if it is **false** or **nil**, then there is no replacement (that is, the original match is kept in the string).\n\nHere are some examples:\n\n```lua\nx = string.gsub(\"hello world\", \"(%w+)\", \"%1 %1\")\n--> x=\"hello hello world world\"\n\nx = string.gsub(\"hello world\", \"%w+\", \"%0 %0\", 1)\n--> x=\"hello hello world\"\n\nx = string.gsub(\"hello world from Lua\", \"(%w+)%s*(%w+)\", \"%2 %1\")\n--> x=\"world hello Lua from\"\n\nx = string.gsub(\"home = $HOME, user = $USER\", \"%$(%w+)\", os.getenv)\n--> x=\"home = /home/roberto, user = roberto\"\n\nx = string.gsub(\"4+5 = $return 4+5$\", \"%$(.-)%$\", function (s)\n return load(s)()\n end)\n--> x=\"4+5 = 9\"\n\nlocal t = {name=\"lua\", version=\"5.2\"}\nx = string.gsub(\"$name-$version.tar.gz\", \"%$(%w+)\", t)\n--> x=\"lua-5.2.tar.gz\"\n```", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.gsub", "licenseStatus": "allowed" @@ -1247,7 +1248,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "string.match (s, pattern [, init])", - "documentationMarkdown": "Looks for the first *match* of `pattern` in the string `s`. If it finds one, then `match` returns the captures from the pattern; otherwise it returns **nil**. If `pattern` specifies no captures, then the whole match is returned. A third, optional numerical argument `init` specifies where to start the search; its default value is 1 and can be negative.", + "documentationMarkdown": "Looks for the first *match* of `pattern` in the string `s`. If it finds one, then `match` returns the captures from the pattern; otherwise it returns **nil**. If `pattern` specifies no captures, then the whole match is returned. A third, optional numerical argument `init` specifies where to start the search; its default value is 1 and can be negative.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-string.match", "licenseStatus": "allowed" @@ -1313,7 +1314,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "table.concat (list [, sep [, i [, j]]])", - "documentationMarkdown": "Given a list where all elements are strings or numbers, returns the string `list[i]..sep..list[i+1] ... sep..list[j]`. The default value for `sep` is the empty string, the default for `i` is 1, and the default for `j` is `#list`. If `i` is greater than `j`, returns the empty string.", + "documentationMarkdown": "Given a list where all elements are strings or numbers, returns the string `list[i]..sep..list[i+1] ··· sep..list[j]`. The default value for `sep` is the empty string, the default for `i` is 1, and the default for `j` is `#list`. If `i` is greater than `j`, returns the empty string.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-table.concat", "licenseStatus": "allowed" @@ -1324,7 +1325,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "table.insert (list, [pos,] value)", - "documentationMarkdown": "Inserts element `value` at position `pos` in `list`, shifting up the elements `list[pos], list[pos+1], ..., list[#list]`. The default value for `pos` is `#list+1`, so that a call `table.insert(t,x)` inserts `x` at the end of list `t`.", + "documentationMarkdown": "Inserts element `value` at position `pos` in `list`, shifting up the elements `list[pos], list[pos+1], ···, list[#list]`. The default value for `pos` is `#list+1`, so that a call `table.insert(t,x)` inserts `x` at the end of list `t`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-table.insert", "licenseStatus": "allowed" @@ -1334,7 +1335,7 @@ "name": "table.pack", "kind": "function", "sourceSection": "lua52", - "signature": "table.pack (...)", + "signature": "table.pack (···)", "documentationMarkdown": "Returns a new table with all parameters stored into keys 1, 2, etc. and with a field \"`n`\" with the total number of parameters. Note that the resulting table may not be a sequence.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-table.pack", @@ -1346,7 +1347,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "table.remove (list [, pos])", - "documentationMarkdown": "Removes from `list` the element at position `pos`, returning the value of the removed element. When `pos` is an integer between 1 and `#list`, it shifts down the elements `list[pos+1], list[pos+2], ..., list[#list]` and erases element `list[#list]`; The index `pos` can also be 0 when `#list` is 0, or `#list + 1`; in those cases, the function erases the element `list[pos]`.\n\nThe default value for `pos` is `#list`, so that a call `table.remove(t)` removes the last element of list `t`.", + "documentationMarkdown": "Removes from `list` the element at position `pos`, returning the value of the removed element. When `pos` is an integer between 1 and `#list`, it shifts down the elements `list[pos+1], list[pos+2], ···, list[#list]` and erases element `list[#list]`; The index `pos` can also be 0 when `#list` is 0, or `#list + 1`; in those cases, the function erases the element `list[pos]`.\n\nThe default value for `pos` is `#list`, so that a call `table.remove(t)` removes the last element of list `t`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-table.remove", "licenseStatus": "allowed" @@ -1368,7 +1369,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "table.unpack (list [, i [, j]])", - "documentationMarkdown": "Returns the elements from the given table. This function is equivalent to\n\n```lua\nreturn list[i], list[i+1], ..., list[j]\n```\n\nBy default, `i` is 1 and `j` is `#list`.", + "documentationMarkdown": "Returns the elements from the given table. This function is equivalent to\n\n```lua\nreturn list[i], list[i+1], ···, list[j]\n```\n\nBy default, `i` is 1 and `j` is `#list`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-table.unpack", "licenseStatus": "allowed" @@ -1379,7 +1380,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "tonumber (e [, base])", - "documentationMarkdown": "When called with no `base`, `tonumber` tries to convert its argument to a number. If the argument is already a number or a string convertible to a number (see section3.4.2), then `tonumber` returns this number; otherwise, it returns **nil**.\n\nWhen called with `base`, then `e` should be a string to be interpreted as an integer numeral in that base. The base may be any integer between 2 and 36, inclusive. In bases above 10, the letter '`A`' (in either upper or lower case) represents 10, '`B`' represents 11, and so forth, with '`Z`' representing 35. If the string `e` is not a valid numeral in the given base, the function returns **nil**.", + "documentationMarkdown": "When called with no `base`, `tonumber` tries to convert its argument to a number. If the argument is already a number or a string convertible to a number (see [§3.4.2](https://www.lua.org/manual/5.2/manual.html#3.4.2)), then `tonumber` returns this number; otherwise, it returns **nil**.\n\nWhen called with `base`, then `e` should be a string to be interpreted as an integer numeral in that base. The base may be any integer between 2 and 36, inclusive. In bases above 10, the letter '`A`' (in either upper or lower case) represents 10, '`B`' represents 11, and so forth, with '`Z`' representing 35. If the string `e` is not a valid numeral in the given base, the function returns **nil**.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-tonumber", "licenseStatus": "allowed" @@ -1390,7 +1391,7 @@ "kind": "function", "sourceSection": "lua52", "signature": "tostring (v)", - "documentationMarkdown": "Receives a value of any type and converts it to a string in a reasonable format. (For complete control of how numbers are converted, use `string.format`.)\n\nIf the metatable of `v` has a `\"__tostring\"` field, then `tostring` calls the corresponding value with `v` as argument, and uses the result of the call as its result.", + "documentationMarkdown": "Receives a value of any type and converts it to a string in a reasonable format. (For complete control of how numbers are converted, use [`string.format`](https://www.lua.org/manual/5.2/manual.html#pdf-string.format).)\n\nIf the metatable of `v` has a `\"__tostring\"` field, then `tostring` calls the corresponding value with `v` as argument, and uses the result of the call as its result.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-tostring", "licenseStatus": "allowed" @@ -1411,8 +1412,8 @@ "name": "xpcall", "kind": "function", "sourceSection": "lua52", - "signature": "xpcall (f, msgh [, arg1, ...])", - "documentationMarkdown": "This function is similar to `pcall`, except that it sets a new message handler `msgh`.", + "signature": "xpcall (f, msgh [, arg1, ···])", + "documentationMarkdown": "This function is similar to [`pcall`](https://www.lua.org/manual/5.2/manual.html#pdf-pcall), except that it sets a new message handler `msgh`.", "documentationState": "documented", "upstreamUrl": "https://www.lua.org/manual/5.2/manual.html#pdf-xpcall", "licenseStatus": "allowed" diff --git a/resources/api/sections/luajit.json b/resources/api/sections/luajit.json index 4498d24..6d5b6ff 100644 --- a/resources/api/sections/luajit.json +++ b/resources/api/sections/luajit.json @@ -1,10 +1,11 @@ { "schemaVersion": 3, - "generatedAt": "2026-08-25T18:10:55.136Z", + "generatedAt": "2026-09-22T13:41:25.745Z", "source": { "id": "luajit", "title": "LuaJIT", - "url": "https://luajit.org/", + "url": "https://github.com/LuaJIT/LuaJIT/tree/c6ffc141a8762b41703f9287d63d93622a13dd8f/doc", + "commit": "c6ffc141a8762b41703f9287d63d93622a13dd8f", "licenseStatus": "allowed" }, "title": "LuaJIT", @@ -15,9 +16,9 @@ "kind": "module", "sourceSection": "luajit", "signature": "bit.*", - "documentationMarkdown": "LuaJIT supports all bitwise operations as defined by Lua BitOp:\n\n```lua\nbit.tobit bit.tohex bit.bnot bit.band bit.bor bit.bxor\nbit.lshift bit.rshift bit.arshift bit.rol bit.ror bit.bswap\n```\n\nThis module is a LuaJIT built-in - you don't need to download or install Lua BitOp. The Lua BitOp site has full documentation for all Lua BitOp API functions. The FFI adds support for 64 bit bitwise operations, using the same API functions.\n\nPlease make sure to `require` the module before using any of its functions:\n\n```lua\nlocal bit = require(\"bit\")\n```\n\nAn already installed Lua BitOp module is ignored by LuaJIT. This way you can use bit operations from both Lua and LuaJIT on a shared installation.", + "documentationMarkdown": "LuaJIT supports all bitwise operations as defined by [Lua BitOp](https://bitop.luajit.org/):\n\n```lua\nbit.tobit bit.tohex bit.bnot bit.band bit.bor bit.bxor\nbit.lshift bit.rshift bit.arshift bit.rol bit.ror bit.bswap\n```\n\nThis module is a LuaJIT built-in — you don't need to download or install Lua BitOp. The Lua BitOp site has full documentation for all [Lua BitOp API functions](https://bitop.luajit.org/api.html). The FFI adds support for [64 bit bitwise operations](https://luajit.org/ext_ffi_semantics.html#cdata_arith), using the same API functions.\n\nPlease make sure to `require` the module before using any of its functions:\n\n```lua\nlocal bit = require(\"bit\")\n```\n\nAn already installed Lua BitOp module is ignored by LuaJIT. This way you can use bit operations from both Lua and LuaJIT on a shared installation.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#bit", "licenseStatus": "allowed" }, { @@ -26,9 +27,9 @@ "kind": "module", "sourceSection": "luajit", "signature": "ffi.*", - "documentationMarkdown": "The FFI library allows calling external C functions and the use of C data structures from pure Lua code.", + "documentationMarkdown": "The [FFI library](https://luajit.org/ext_ffi.html) allows calling external C functions and the use of C data structures from pure Lua code.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#ffi", "licenseStatus": "allowed" }, { @@ -37,9 +38,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "status = ffi.abi(param)", - "documentationMarkdown": "Returns `true` if `param` (a Lua string) applies for the target ABI (Application Binary Interface). Returns `false` otherwise. The following parameters are currently defined:\n\nParameter\n\nDescription\n\n32bit\n\n32 bit architecture\n\n64bit\n\n64 bit architecture\n\nle\n\nLittle-endian architecture\n\nbe\n\nBig-endian architecture\n\nfpu\n\nTarget has a hardware FPU\n\nsoftfp\n\nsoftfp calling conventions\n\nhardfp\n\nhardfp calling conventions\n\neabi\n\nEABI variant of the standard ABI\n\nwin\n\nWindows variant of the standard ABI\n\npauth\n\nPointer authentication ABI\n\nuwp\n\nUniversal Windows Platform\n\ngc64\n\n64 bit GC references\n\ndualnum\n\nDual-number mode", + "documentationMarkdown": "Returns `true` if `param` (a Lua string) applies for the target ABI (Application Binary Interface). Returns `false` otherwise. The following parameters are currently defined:\n\n| Parameter | Description |\n| --- | --- |\n| 32bit | 32 bit architecture |\n| 64bit | 64 bit architecture |\n| le | Little-endian architecture |\n| be | Big-endian architecture |\n| fpu | Target has a hardware FPU |\n| softfp | softfp calling conventions |\n| hardfp | hardfp calling conventions |\n| eabi | EABI variant of the standard ABI |\n| win | Windows variant of the standard ABI |\n| pauth | Pointer authentication ABI |\n| uwp | Universal Windows Platform |\n| gc64 | 64 bit GC references |\n| dualnum | Dual-number mode |", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_abi", "licenseStatus": "allowed" }, { @@ -50,7 +51,7 @@ "signature": "align = ffi.alignof(ct)", "documentationMarkdown": "Returns the minimum required alignment for `ct` in bytes.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_alignof", "licenseStatus": "allowed" }, { @@ -59,9 +60,9 @@ "kind": "variable", "sourceSection": "luajit", "signature": "ffi.arch", - "documentationMarkdown": "Contains the target architecture name. Same contents as `jit.arch`.", + "documentationMarkdown": "Contains the target architecture name. Same contents as [`jit.arch`](https://luajit.org/ext_jit.html#jit_arch).", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_arch", "licenseStatus": "allowed" }, { @@ -70,9 +71,9 @@ "kind": "variable", "sourceSection": "luajit", "signature": "ffi.C", - "documentationMarkdown": "This is the default C library namespace - note the uppercase `'C'`. It binds to the default set of symbols or libraries on the target system. These are more or less the same as a C compiler would offer by default, without specifying extra link libraries.\n\nOn POSIX systems, this binds to symbols in the default or global namespace. This includes all exported symbols from the executable and any libraries loaded into the global namespace. This includes at least `libc`, `libm`, `libdl` (on Linux), `libgcc` (if compiled with GCC), as well as any exported symbols from the Lua/C API provided by LuaJIT itself.\n\nOn Windows systems, this binds to symbols exported from the `*.exe`, the `lua51.dll` (i.e. the Lua/C API provided by LuaJIT itself), the C runtime library LuaJIT was linked with (`msvcrt*.dll`), `kernel32.dll`, `user32.dll` and `gdi32.dll`.", + "documentationMarkdown": "This is the default C library namespace — note the uppercase `'C'`. It binds to the default set of symbols or libraries on the target system. These are more or less the same as a C compiler would offer by default, without specifying extra link libraries.\n\nOn POSIX systems, this binds to symbols in the default or global namespace. This includes all exported symbols from the executable and any libraries loaded into the global namespace. This includes at least `libc`, `libm`, `libdl` (on Linux), `libgcc` (if compiled with GCC), as well as any exported symbols from the Lua/C API provided by LuaJIT itself.\n\nOn Windows systems, this binds to symbols exported from the `*.exe`, the `lua51.dll` (i.e. the Lua/C API provided by LuaJIT itself), the C runtime library LuaJIT was linked with (`msvcrt*.dll`), `kernel32.dll`, `user32.dll` and `gdi32.dll`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_C", "licenseStatus": "allowed" }, { @@ -81,9 +82,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "cdata = ffi.cast(ct, init)", - "documentationMarkdown": "Creates a scalar cdata object for the given `ct`. The cdata object is initialized with `init` using the \"cast\" variant of the C type conversion rules.\n\nThis functions is mainly useful to override the pointer compatibility checks or to convert pointers to addresses or vice versa.", + "documentationMarkdown": "Creates a scalar cdata object for the given `ct`. The cdata object is initialized with `init` using the \"cast\" variant of the [C type conversion rules](https://luajit.org/ext_ffi_semantics.html#convert).\n\nThis functions is mainly useful to override the pointer compatibility checks or to convert pointers to addresses or vice versa.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_cast", "licenseStatus": "allowed" }, { @@ -92,9 +93,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "ffi.cdef(def)", - "documentationMarkdown": "Adds multiple C declarations for types or external symbols (named variables or functions). `def` must be a Lua string. It's recommended to use the syntactic sugar for string arguments as follows:\n\n```lua\nffi.cdef[[\ntypedef struct foo { int a, b; } foo_t; // Declare a struct and typedef.\nint dofoo(foo_t *f, int n); /* Declare an external C function. */\n]]\n```\n\nThe contents of the string (the part in green above) must be a sequence of C declarations, separated by semicolons. The trailing semicolon for a single declaration may be omitted.\n\nPlease note, that external symbols are only *declared*, but they are *not bound* to any specific address, yet. Binding is achieved with C library namespaces (see below).\n\nC declarations are not passed through a C pre-processor, yet. No pre-processor tokens are allowed, except for `#pragma pack`. Replace `#define` in existing C header files with `enum`, `static const` or `typedef` and/or pass the files through an external C pre-processor (once). Be careful not to include unneeded or redundant declarations from unrelated header files.", + "documentationMarkdown": "Adds multiple C declarations for types or external symbols (named variables or functions). `def` must be a Lua string. It's recommended to use the syntactic sugar for string arguments as follows:\n\n```lua\nffi.cdef[[\ntypedef struct foo { int a, b; } foo_t; // Declare a struct and typedef.\nint dofoo(foo_t *f, int n); /* Declare an external C function. */\n]]\n```\n\nThe contents of the string (the part in green above) must be a sequence of [C declarations](https://luajit.org/ext_ffi_semantics.html#clang), separated by semicolons. The trailing semicolon for a single declaration may be omitted.\n\nPlease note, that external symbols are only *declared*, but they are *not bound* to any specific address, yet. Binding is achieved with C library namespaces (see below).\n\nC declarations are not passed through a C pre-processor, yet. No pre-processor tokens are allowed, except for `#pragma pack`. Replace `#define` in existing C header files with `enum`, `static const` or `typedef` and/or pass the files through an external C pre-processor (once). Be careful not to include unneeded or redundant declarations from unrelated header files.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_cdef", "licenseStatus": "allowed" }, { @@ -102,10 +103,10 @@ "name": "ffi.copy", "kind": "function", "sourceSection": "luajit", - "signature": "ffi.copy(dst, src, len) ffi.copy(dst, str)", - "documentationMarkdown": "Copies the data pointed to by `src` to `dst`. `dst` is converted to a `\"void *\"` and `src` is converted to a `\"const void *\"`.\n\nIn the first syntax, `len` gives the number of bytes to copy. Caveat: if `src` is a Lua string, then `len` must not exceed `#src+1`.\n\nIn the second syntax, the source of the copy must be a Lua string. All bytes of the string *plus a zero-terminator* are copied to `dst` (i.e. `#src+1` bytes).\n\nPerformance notice: `ffi.copy()` may be used as a faster (inlinable) replacement for the C library functions `memcpy()`, `strcpy()` and `strncpy()`.", + "signature": "ffi.copy(dst, src, len)\nffi.copy(dst, str)", + "documentationMarkdown": "Copies the data pointed to by `src` to `dst`. `dst` is converted to a `\"void *\"` and `src` is converted to a `\"const void *\"`.\n\nIn the first syntax, `len` gives the number of bytes to copy. Caveat: if `src` is a Lua string, then `len` must not exceed `#src+1`.\n\nIn the second syntax, the source of the copy must be a Lua string. All bytes of the string *plus a zero-terminator* are copied to `dst` (i.e. `#src+1` bytes).\n\nPerformance notice: `ffi.copy()` may be used as a faster (inlinable) replacement for the C library functions `memcpy()`, `strcpy()` and `strncpy()`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_copy", "licenseStatus": "allowed" }, { @@ -114,9 +115,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "err = ffi.errno([newerr])", - "documentationMarkdown": "Returns the error number set by the last C function call which indicated an error condition. If the optional `newerr` argument is present, the error number is set to the new value and the previous value is returned.\n\nThis function offers a portable and OS-independent way to get and set the error number. Note that only *some* C functions set the error number. And it's only significant if the function actually indicated an error condition (e.g. with a return value of `-1` or `NULL`). Otherwise, it may or may not contain any previously set value.\n\nYou're advised to call this function only when needed and as close as possible after the return of the related C function. The `errno` value is preserved across hooks, memory allocations, invocations of the JIT compiler and other internal VM activity. The same applies to the value returned by `GetLastError()` on Windows, but you need to declare and call it yourself.", + "documentationMarkdown": "Returns the error number set by the last C function call which indicated an error condition. If the optional `newerr` argument is present, the error number is set to the new value and the previous value is returned.\n\nThis function offers a portable and OS-independent way to get and set the error number. Note that only *some* C functions set the error number. And it's only significant if the function actually indicated an error condition (e.g. with a return value of `-1` or `NULL`). Otherwise, it may or may not contain any previously set value.\n\nYou're advised to call this function only when needed and as close as possible after the return of the related C function. The `errno` value is preserved across hooks, memory allocations, invocations of the JIT compiler and other internal VM activity. The same applies to the value returned by `GetLastError()` on Windows, but you need to declare and call it yourself.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_errno", "licenseStatus": "allowed" }, { @@ -125,9 +126,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "ffi.fill(dst, len [,c])", - "documentationMarkdown": "Fills the data pointed to by `dst` with `len` constant bytes, given by `c`. If `c` is omitted, the data is zero-filled.\n\nPerformance notice: `ffi.fill()` may be used as a faster (inlinable) replacement for the C library function `memset(dst, c, len)`. Please note the different order of arguments!", + "documentationMarkdown": "Fills the data pointed to by `dst` with `len` constant bytes, given by `c`. If `c` is omitted, the data is zero-filled.\n\nPerformance notice: `ffi.fill()` may be used as a faster (inlinable) replacement for the C library function `memset(dst, c, len)`. Please note the different order of arguments!", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_fill", "licenseStatus": "allowed" }, { @@ -138,7 +139,7 @@ "signature": "cdata = ffi.gc(cdata, finalizer)", "documentationMarkdown": "Associates a finalizer with a pointer or aggregate cdata object. The cdata object is returned unchanged.\n\nThis function allows safe integration of unmanaged resources into the automatic memory management of the LuaJIT garbage collector. Typical usage:\n\n```lua\nlocal p = ffi.gc(ffi.C.malloc(n), ffi.C.free)\n...\np = nil -- Last reference to p is gone.\n-- GC will eventually run finalizer: ffi.C.free(p)\n```\n\nA cdata finalizer works like the `__gc` metamethod for userdata objects: when the last reference to a cdata object is gone, the associated finalizer is called with the cdata object as an argument. The finalizer can be a Lua function or a cdata function or cdata function pointer. An existing finalizer can be removed by setting a `nil` finalizer, e.g. right before explicitly deleting a resource:\n\n```lua\nffi.C.free(ffi.gc(p, nil)) -- Manually free the memory.\n```", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_gc", "licenseStatus": "allowed" }, { @@ -147,9 +148,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "status = ffi.istype(ct, obj)", - "documentationMarkdown": "Returns `true` if `obj` has the C type given by `ct`. Returns `false` otherwise.\n\nC type qualifiers (`const` etc.) are ignored. Pointers are checked with the standard pointer compatibility rules, but without any special treatment for `void *`. If `ct` specifies a `struct`/`union`, then a pointer to this type is accepted, too. Otherwise the types must match exactly.\n\nNote: this function accepts all kinds of Lua objects for the `obj` argument, but always returns `false` for non-cdata objects.", + "documentationMarkdown": "Returns `true` if `obj` has the C type given by `ct`. Returns `false` otherwise.\n\nC type qualifiers (`const` etc.) are ignored. Pointers are checked with the standard pointer compatibility rules, but without any special treatment for `void *`. If `ct` specifies a `struct`/`union`, then a pointer to this type is accepted, too. Otherwise the types must match exactly.\n\nNote: this function accepts all kinds of Lua objects for the `obj` argument, but always returns `false` for non-cdata objects.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_istype", "licenseStatus": "allowed" }, { @@ -158,9 +159,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "clib = ffi.load(name [,global])", - "documentationMarkdown": "This loads the dynamic library given by `name` and returns a new C library namespace which binds to its symbols. On POSIX systems, if `global` is `true`, the library symbols are loaded into the global namespace, too.\n\nIf `name` is a path, the library is loaded from this path. Otherwise `name` is canonicalized in a system-dependent way and searched in the default search path for dynamic libraries:\n\nOn POSIX systems, if the name contains no dot, the extension `.so` is appended. Also, the `lib` prefix is prepended if necessary. So `ffi.load(\"z\")` looks for `\"libz.so\"` in the default shared library search path.\n\nOn Windows systems, if the name contains no dot, the extension `.dll` is appended. So `ffi.load(\"ws2_32\")` looks for `\"ws2_32.dll\"` in the default DLL search path.", + "documentationMarkdown": "This loads the dynamic library given by `name` and returns a new C library namespace which binds to its symbols. On POSIX systems, if `global` is `true`, the library symbols are loaded into the global namespace, too.\n\nIf `name` is a path, the library is loaded from this path. Otherwise `name` is canonicalized in a system-dependent way and searched in the default search path for dynamic libraries:\n\nOn POSIX systems, if the name contains no dot, the extension `.so` is appended. Also, the `lib` prefix is prepended if necessary. So `ffi.load(\"z\")` looks for `\"libz.so\"` in the default shared library search path.\n\nOn Windows systems, if the name contains no dot, the extension `.dll` is appended. So `ffi.load(\"ws2_32\")` looks for `\"ws2_32.dll\"` in the default DLL search path.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_load", "licenseStatus": "allowed" }, { @@ -169,9 +170,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "ctype = ffi.metatype(ct, metatable)", - "documentationMarkdown": "Creates a ctype object for the given `ct` and associates it with a metatable. Only `struct`/`union` types, complex numbers and vectors are allowed. Other types may be wrapped in a `struct`, if needed.\n\nThe association with a metatable is permanent and cannot be changed afterwards. Neither the contents of the `metatable` nor the contents of an `__index` table (if any) may be modified afterwards. The associated metatable automatically applies to all uses of this type, no matter how the objects are created or where they originate from. Note that predefined operations on types have precedence (e.g. declared field names cannot be overridden).\n\nAll standard Lua metamethods are implemented. These are called directly, without shortcuts, and on any mix of types. For binary operations, the left operand is checked first for a valid ctype metamethod. The `__gc` metamethod only applies to `struct`/`union` types and performs an implicit `ffi.gc()` call during creation of an instance.", + "documentationMarkdown": "Creates a ctype object for the given `ct` and associates it with a metatable. Only `struct`/`union` types, complex numbers and vectors are allowed. Other types may be wrapped in a `struct`, if needed.\n\nThe association with a metatable is permanent and cannot be changed afterwards. Neither the contents of the `metatable` nor the contents of an `__index` table (if any) may be modified afterwards. The associated metatable automatically applies to all uses of this type, no matter how the objects are created or where they originate from. Note that predefined operations on types have precedence (e.g. declared field names cannot be overridden).\n\nAll standard Lua metamethods are implemented. These are called directly, without shortcuts, and on any mix of types. For binary operations, the left operand is checked first for a valid ctype metamethod. The `__gc` metamethod only applies to `struct`/`union` types and performs an implicit [`ffi.gc()`](https://luajit.org/ext_ffi_api.html#ffi_gc) call during creation of an instance.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_metatype", "licenseStatus": "allowed" }, { @@ -179,10 +180,10 @@ "name": "ffi.new", "kind": "function", "sourceSection": "luajit", - "signature": "cdata = ffi.new(ct [,nelem] [,init...]) cdata = ctype([nelem,] [init...])", - "documentationMarkdown": "Creates a cdata object for the given `ct`. VLA/VLS types require the `nelem` argument. The second syntax uses a ctype as a constructor and is otherwise fully equivalent.\n\nThe cdata object is initialized according to the rules for initializers, using the optional `init` arguments. Excess initializers cause an error.\n\nPerformance notice: if you want to create many objects of one kind, parse the cdecl only once and get its ctype with `ffi.typeof()`. Then use the ctype as a constructor repeatedly.\n\nPlease note, that an anonymous `struct` declaration implicitly creates a new and distinguished ctype every time you use it for `ffi.new()`. This is probably **not** what you want, especially if you create more than one cdata object. Different anonymous `structs` are not considered assignment-compatible by the C standard, even though they may have the same fields! Also, they are considered different types by the JIT-compiler, which may cause an excessive number of traces. It's strongly suggested to either declare a named `struct` or `typedef` with `ffi.cdef()` or to create a single ctype object for an anonymous `struct` with `ffi.typeof()`.", + "signature": "cdata = ffi.new(ct [,nelem] [,init...])\ncdata = ctype([nelem,] [init...])", + "documentationMarkdown": "Creates a cdata object for the given `ct`. VLA/VLS types require the `nelem` argument. The second syntax uses a ctype as a constructor and is otherwise fully equivalent.\n\nThe cdata object is initialized according to the [rules for initializers](https://luajit.org/ext_ffi_semantics.html#init), using the optional `init` arguments. Excess initializers cause an error.\n\nPerformance notice: if you want to create many objects of one kind, parse the cdecl only once and get its ctype with `ffi.typeof()`. Then use the ctype as a constructor repeatedly.\n\nPlease note, that an anonymous `struct` declaration implicitly creates a new and distinguished ctype every time you use it for `ffi.new()`. This is probably **not** what you want, especially if you create more than one cdata object. Different anonymous `structs` are not considered assignment-compatible by the C standard, even though they may have the same fields! Also, they are considered different types by the JIT-compiler, which may cause an excessive number of traces. It's strongly suggested to either declare a named `struct` or `typedef` with `ffi.cdef()` or to create a single ctype object for an anonymous `struct` with `ffi.typeof()`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_new", "licenseStatus": "allowed" }, { @@ -193,7 +194,7 @@ "signature": "ofs [,bpos,bsize] = ffi.offsetof(ct, field)", "documentationMarkdown": "Returns the offset (in bytes) of `field` relative to the start of `ct`, which must be a `struct`. Additionally returns the position and the field size (in bits) for bit fields.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_offsetof", "licenseStatus": "allowed" }, { @@ -202,9 +203,9 @@ "kind": "variable", "sourceSection": "luajit", "signature": "ffi.os", - "documentationMarkdown": "Contains the target OS name. Same contents as `jit.os`.", + "documentationMarkdown": "Contains the target OS name. Same contents as [`jit.os`](https://luajit.org/ext_jit.html#jit_os).", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_os", "licenseStatus": "allowed" }, { @@ -215,7 +216,7 @@ "signature": "size = ffi.sizeof(ct [,nelem])", "documentationMarkdown": "Returns the size of `ct` in bytes. Returns `nil` if the size is not known (e.g. for `\"void\"` or function types). Requires `nelem` for VLA/VLS types, except for cdata objects.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_sizeof", "licenseStatus": "allowed" }, { @@ -224,9 +225,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "str = ffi.string(ptr [,len])", - "documentationMarkdown": "Creates an interned Lua string from the data pointed to by `ptr`.\n\nIf the optional argument `len` is missing, `ptr` is converted to a `\"char *\"` and the data is assumed to be zero-terminated. The length of the string is computed with `strlen()`.\n\nOtherwise `ptr` is converted to a `\"void *\"` and `len` gives the length of the data. The data may contain embedded zeros and need not be byte-oriented (though this may cause endianess issues).\n\nThis function is mainly useful to convert (temporary) `\"const char *\"` pointers returned by C functions to Lua strings and store them or pass them to other functions expecting a Lua string. The Lua string is an (interned) copy of the data and bears no relation to the original data area anymore. Lua strings are 8 bit clean and may be used to hold arbitrary, non-character data.\n\nPerformance notice: it's faster to pass the length of the string, if it's known. E.g. when the length is returned by a C call like `sprintf()`.", + "documentationMarkdown": "Creates an interned Lua string from the data pointed to by `ptr`.\n\nIf the optional argument `len` is missing, `ptr` is converted to a `\"char *\"` and the data is assumed to be zero-terminated. The length of the string is computed with `strlen()`.\n\nOtherwise `ptr` is converted to a `\"void *\"` and `len` gives the length of the data. The data may contain embedded zeros and need not be byte-oriented (though this may cause endianess issues).\n\nThis function is mainly useful to convert (temporary) `\"const char *\"` pointers returned by C functions to Lua strings and store them or pass them to other functions expecting a Lua string. The Lua string is an (interned) copy of the data and bears no relation to the original data area anymore. Lua strings are 8 bit clean and may be used to hold arbitrary, non-character data.\n\nPerformance notice: it's faster to pass the length of the string, if it's known. E.g. when the length is returned by a C call like `sprintf()`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_string", "licenseStatus": "allowed" }, { @@ -235,9 +236,9 @@ "kind": "function", "sourceSection": "luajit", "signature": "ctype = ffi.typeof(ct)", - "documentationMarkdown": "Creates a ctype object for the given `ct`.\n\nThis function is especially useful to parse a cdecl only once and then use the resulting ctype object as a constructor.", + "documentationMarkdown": "Creates a ctype object for the given `ct`.\n\nThis function is especially useful to parse a cdecl only once and then use the resulting ctype object as a [constructor](https://luajit.org/ext_ffi_api.html#ffi_new).", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#ffi_typeof", "licenseStatus": "allowed" }, { @@ -245,10 +246,10 @@ "name": "ipairs", "kind": "function", "sourceSection": "luajit", - "signature": "iter, obj, start = pairs(cdata) iter, obj, start = ipairs(cdata)", + "signature": "iter, obj, start = pairs(cdata)\niter, obj, start = ipairs(cdata)", "documentationMarkdown": "Calls the `__pairs` or `__ipairs` metamethod of the corresponding ctype.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#pairs", "licenseStatus": "allowed" }, { @@ -257,9 +258,9 @@ "kind": "module", "sourceSection": "luajit", "signature": "jit.*", - "documentationMarkdown": "The functions in this module control the behavior of the JIT compiler engine.", + "documentationMarkdown": "The functions in this module [control the behavior of the JIT compiler engine](https://luajit.org/ext_jit.html).", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#jit", "licenseStatus": "allowed" }, { @@ -270,7 +271,7 @@ "signature": "jit.arch", "documentationMarkdown": "Contains the target architecture name: \"x86\", \"x64\", \"arm\", \"arm64\", \"arm64be\", \"ppc\", \"mips\", \"mipsel\", \"mips64\", \"mips64el\", \"mips64r6\", \"mips64r6el\".", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_arch", "licenseStatus": "allowed" }, { @@ -281,7 +282,7 @@ "signature": "jit.flush()", "documentationMarkdown": "Flushes the whole cache of compiled code.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_flush", "licenseStatus": "allowed" }, { @@ -289,10 +290,10 @@ "name": "jit.off", "kind": "function", "sourceSection": "luajit", - "signature": "jit.on() jit.off()", + "signature": "jit.on()\njit.off()", "documentationMarkdown": "Turns the whole JIT compiler on (default) or off.\n\nThese functions are typically used with the command line options `-j on` or `-j off`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_onoff", "licenseStatus": "allowed" }, { @@ -300,10 +301,10 @@ "name": "jit.on", "kind": "function", "sourceSection": "luajit", - "signature": "jit.on() jit.off()", + "signature": "jit.on()\njit.off()", "documentationMarkdown": "Turns the whole JIT compiler on (default) or off.\n\nThese functions are typically used with the command line options `-j on` or `-j off`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_onoff", "licenseStatus": "allowed" }, { @@ -314,7 +315,7 @@ "signature": "jit.os", "documentationMarkdown": "Contains the target OS name: \"Windows\", \"Linux\", \"OSX\", \"BSD\", \"POSIX\" or \"Other\".", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_os", "licenseStatus": "allowed" }, { @@ -325,7 +326,7 @@ "signature": "status, ... = jit.status()", "documentationMarkdown": "Returns the current status of the JIT compiler. The first result is either `true` or `false` if the JIT compiler is turned on or off. The remaining results are strings for CPU-specific features and enabled optimizations.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_status", "licenseStatus": "allowed" }, { @@ -336,7 +337,7 @@ "signature": "jit.version", "documentationMarkdown": "Contains the LuaJIT version string.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_version", "licenseStatus": "allowed" }, { @@ -345,9 +346,9 @@ "kind": "variable", "sourceSection": "luajit", "signature": "jit.version_num", - "documentationMarkdown": "Contains the version number of the LuaJIT core. Version xx.yy.zz is represented by the decimal number xxyyzz.\n\n**DEPRECATED after the switch to rolling releases. zz is frozen at 99.**", + "documentationMarkdown": "Contains the version number of the LuaJIT core. Version xx.yy.zz is represented by the decimal number xxyyzz.
    **DEPRECATED after the switch to rolling releases. zz is frozen at 99.**", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_jit.html", + "upstreamUrl": "https://luajit.org/ext_jit.html#jit_version_num", "licenseStatus": "allowed" }, { @@ -355,10 +356,10 @@ "name": "pairs", "kind": "function", "sourceSection": "luajit", - "signature": "iter, obj, start = pairs(cdata) iter, obj, start = ipairs(cdata)", + "signature": "iter, obj, start = pairs(cdata)\niter, obj, start = ipairs(cdata)", "documentationMarkdown": "Calls the `__pairs` or `__ipairs` metamethod of the corresponding ctype.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/ext_ffi_api.html", + "upstreamUrl": "https://luajit.org/ext_ffi_api.html#pairs", "licenseStatus": "allowed" }, { @@ -369,7 +370,7 @@ "signature": "table.clear(tab)", "documentationMarkdown": "An extra library function `table.clear()` can be made available via `require(\"table.clear\")`. This clears all keys and values from a table, but preserves the allocated array/hash sizes. This is useful when a table, which is linked from multiple places, needs to be cleared and/or when recycling a table for use by the same context. This avoids managing backlinks, saves an allocation and the overhead of incremental array/hash part growth.\n\nPlease note, this function is meant for very specific situations. In most cases it's better to replace the (usually single) link with a new table and let the GC do its work.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#table_clear", "licenseStatus": "allowed" }, { @@ -380,7 +381,7 @@ "signature": "table.new(narray, nhash)", "documentationMarkdown": "An extra library function `table.new()` can be made available via `require(\"table.new\")`. This creates a pre-sized table, just like the C API equivalent `lua_createtable()`. This is useful for big tables if the final table size is known and automatic table resizing is too expensive.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#table_new", "licenseStatus": "allowed" }, { @@ -391,7 +392,7 @@ "signature": "tonumber()", "documentationMarkdown": "All string-to-number conversions consistently convert integer and floating-point inputs in decimal, hexadecimal and binary on all platforms. `strtod()` is *not* used anymore, which avoids numerous problems with poor C library implementations. The builtin conversion function provides full precision according to the IEEE-754 standard, it works independently of the current locale and it supports hex floating-point numbers (e.g. `0x1.5p-3`).", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#tonumber", "licenseStatus": "allowed" }, { @@ -402,7 +403,7 @@ "signature": "tostring()", "documentationMarkdown": "All number-to-string conversions consistently convert non-finite numbers to the same strings on all platforms. NaN results in `\"nan\"`, positive infinity results in `\"inf\"` and negative infinity results in `\"-inf\"`.", "documentationState": "documented", - "upstreamUrl": "https://luajit.org/extensions.html", + "upstreamUrl": "https://luajit.org/extensions.html#tostring", "licenseStatus": "allowed" } ] diff --git a/scripts/policy.cjs b/scripts/policy.cjs index c9c3835..b14a51c 100644 --- a/scripts/policy.cjs +++ b/scripts/policy.cjs @@ -167,6 +167,19 @@ function validateWorkflows(workflows) { } assert.equal(codeqlPins.size, 1, 'All CodeQL actions must use one revision'); } +// Local composite actions run inside the jobs that call them, so their steps are held to the same +// immutable-pin rule as workflow steps. Without this a composite could reintroduce a mutable +// third-party reference that the workflow check above never sees. +function validateCompositeActions(actions) { + for (const [file, action] of actions) { + assert.equal(action.runs?.using, 'composite', `${file}: only composite local actions are used`); + for (const step of action.runs.steps ?? []) { + if (step.uses && !step.uses.startsWith('./')) { + assert.match(step.uses, /^[^@]+@[a-f0-9]{40}$/u, `${file}: immutable action required`); + } + } + } +} function main() { const pkg = json('package.json'); validateVersions( @@ -183,6 +196,13 @@ function main() { .map((f) => [f, readYaml(`.github/workflows/${f}`)]); validateWorkflows(workflows); validateVerificationGraph(workflows); + validateCompositeActions( + fs + .readdirSync('.github/actions', { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => `.github/actions/${entry.name}/action.yml`) + .map((file) => [file, readYaml(file)]), + ); for (const file of [ 'SECURITY.md', 'docs/architecture/THREAT_MODEL.md', @@ -282,5 +302,6 @@ module.exports = { validateVersions, validateWorkflows, validateVerificationGraph, + validateCompositeActions, }; if (require.main === module) main(); diff --git a/scripts/policy.test.cjs b/scripts/policy.test.cjs index eb0170d..65ae6dc 100644 --- a/scripts/policy.test.cjs +++ b/scripts/policy.test.cjs @@ -7,6 +7,7 @@ const { validateVersions, validateWorkflows, validateVerificationGraph, + validateCompositeActions, } = require('./policy.cjs'); const { validateRelease, parseDryRun, validateChangelog } = require('./release-policy.cjs'); @@ -46,6 +47,19 @@ test('CodeQL pins and privileged checkout boundaries are enforced', () => { unsafe.jobs.test.steps.push({ uses: `actions/checkout@${'a'.repeat(40)}` }); assert.throws(() => validateWorkflows([['test', unsafe]])); }); +test('composite actions are held to the immutable pin rule', () => { + const action = { + runs: { + using: 'composite', + steps: [{ uses: `actions/checkout@${'a'.repeat(40)}` }, { run: 'true', shell: 'bash' }], + }, + }; + validateCompositeActions([['action.yml', action]]); + const mutable = structuredClone(action); + mutable.runs.steps.push({ uses: 'actions/checkout@v7' }); + assert.throws(() => validateCompositeActions([['action.yml', mutable]]), /immutable action/u); + assert.throws(() => validateCompositeActions([['action.yml', { runs: { using: 'node24' } }]])); +}); test('version validation catches stale workspace, lockfile, changelog, and editor baseline', () => { const read = (p) => JSON.parse(fs.readFileSync(p, 'utf8')); const pkg = read('package.json'), diff --git a/scripts/regenerate.cjs b/scripts/regenerate.cjs index 2dc5f62..641c7a1 100644 --- a/scripts/regenerate.cjs +++ b/scripts/regenerate.cjs @@ -1,21 +1,20 @@ +// Regenerates every shipped API section from pinned upstream inputs so CI can require the committed +// data to be byte-for-byte reproducible. The inputs themselves are materialised beforehand by the +// .github/actions/upstream-docs action, which exports IE_LUA_EEEX_DOCS_ROOT, IE_LUA_LUAJIT_DOCS_ROOT +// and IE_LUA_LUA52_MANUAL; nothing here reaches the network. const fs = require('node:fs'); const { execFileSync } = require('node:child_process'); const index = JSON.parse(fs.readFileSync('resources/api/api-index.json', 'utf8')); const currentCommit = index.sources.find((s) => s.id === 'ee-game-structures-x64').commit; const commit = process.env.IE_LUA_EEEX_COMMIT ?? currentCommit; -// Local game metadata stays separate from upstream documentation sources. -const utilityPath = 'resources/api/sections/ee-utility-functions.json'; -const utility = JSON.parse(fs.readFileSync(utilityPath, 'utf8')); -utility.source.licenseStatus = 'unknown'; -for (const symbol of utility.symbols) symbol.licenseStatus = 'unknown'; -fs.writeFileSync(utilityPath, JSON.stringify(utility, null, 2) + '\n'); execFileSync(process.execPath, ['dist/tools/ingest-docs.js'], { stdio: 'inherit', env: { ...process.env, IE_LUA_FETCH_EEEX: '1', IE_LUA_EEEX_COMMIT: commit, - IE_LUA_PRESERVE_OTHER_SOURCES: '1', + // Reusing the committed timestamp for an unchanged revision keeps a verification run from + // producing a diff; a new upstream revision is a real data change and gets a new timestamp. IE_LUA_GENERATED_AT: commit === currentCommit ? index.generatedAt : new Date().toISOString(), }, }); diff --git a/tests/editor/features.cjs b/tests/editor/features.cjs index 822176a..a0ef03c 100644 --- a/tests/editor/features.cjs +++ b/tests/editor/features.cjs @@ -2,6 +2,7 @@ const vscode = require('vscode'); const assert = require('node:assert/strict'); const fs = require('node:fs'); const path = require('node:path'); +const fidelity = require('../hover-fidelity.json'); // The pinned upstream revision belongs to the shipped API data, not to this test. Reading it back // from the installed extension keeps definition assertions exact while letting a data refresh move // the revision without editing expectations here. @@ -43,6 +44,10 @@ const at = (doc, word, last = false) => doc.positionAt(last ? doc.getText().lastIndexOf(word) : doc.getText().indexOf(word)); const execute = (name, ...args) => vscode.commands.executeCommand(`vscode.${name}`, ...args); const label = (item) => (typeof item.label === 'string' ? item.label : item.label.label); +// VS Code advertises offset parameter labels, so the server answers with [start, end) ranges into +// the signature label; this reads back the text a user sees highlighted. +const parameterText = (signature, parameter) => + typeof parameter.label === 'string' ? parameter.label : signature.label.slice(...parameter.label); const markdown = (hovers) => hovers.flatMap((h) => h.contents.map((c) => (typeof c === 'string' ? c : c.value))).join('\n'); async function completion(doc, position, expected) { @@ -248,16 +253,17 @@ scenario('game-api', async ({ extension }) => { const doc = await document('Infinity_DisplayString(\nC:AddGold(\n'); const completions = await completion(doc, new vscode.Position(0, 0), 'Infinity_DisplayString'); const item = completions.items.find((i) => label(i) === 'Infinity_DisplayString'); - assert.equal(item.detail, 'Infinity_DisplayString(arg1)'); + // Upstream publishes the vararg as "...", which is shown instead of an invented name. + assert.equal(item.detail, 'Infinity_DisplayString(...)'); assert.equal(item.insertText ?? label(item), 'Infinity_DisplayString'); const help = await hover(doc, 'Infinity_DisplayString'); for (const fragment of ['Displays to the screen', '**Notes**', '```lua', '20000000 + 1']) assert.ok(help.includes(fragment)); - await signature(doc, new vscode.Position(0, 23), 'Infinity_DisplayString(arg1)'); + await signature(doc, new vscode.Position(0, 23), 'Infinity_DisplayString(...)'); const members = await completion(doc, new vscode.Position(1, 2), 'AddGold'); assert.equal(members.items.find((i) => label(i) === 'AddGold').detail, 'C:AddGold(Gold)'); const call = await signature(doc, new vscode.Position(1, 10), 'C:AddGold(Gold)'); - assert.equal(call.signatures[0].parameters[0].label, 'Gold'); + assert.equal(parameterText(call.signatures[0], call.signatures[0].parameters[0]), 'Gold'); const method = new vscode.Position(1, 4); const source = upstream(extension, 'ee-game-lua-functions') + @@ -273,7 +279,7 @@ scenario('eeex-api', async () => { const help = await signature(doc, new vscode.Position(2, 16), 'object:isSprite(allowDead)'); assert.equal(help.activeParameter, 0); assert.deepEqual( - help.signatures[0].parameters.map((p) => p.label), + help.signatures[0].parameters.map((p) => parameterText(help.signatures[0], p)), ['allowDead'], ); assert.ok(help.signatures[0].documentation.value.includes('false')); @@ -291,19 +297,30 @@ scenario('eeex-api', async () => { }); scenario('structures', async ({ extension }) => { const doc = await document( - '---@type CGameSprite\nlocal sprite\nsprite.m_derivedStats.baseclass_0\nCGameObject\n', + '---@type CGameSprite\nlocal sprite\nsprite.m_derivedStats.m_nMaxHitPoints\nCGameObject\nsprite.baseclass_0\n', ); - await completion(doc, new vscode.Position(2, 7), 'm_derivedStats'); - const help = await hover(doc, 'sprite.m_derivedStats.baseclass_0'); - for (const fragment of ['CDerivedStatsTemplate', '0x0', '752']) + // CGameSprite extends CGameAIBase, which extends CGameObject; baseclass_ rows record that + // inheritance and are not members, so inherited members complete directly and the rows do not. + const members = await completion(doc, new vscode.Position(2, 7), 'm_derivedStats'); + assert.ok(members.items.some((i) => label(i) === 'm_objectType')); + assert.equal( + members.items.some((i) => /^baseclass_\d+$/u.test(label(i))), + false, + ); + const help = await hover(doc, 'sprite.m_derivedStats.m_nMaxHitPoints'); + for (const fragment of ['CDerivedStatsTemplate.m_nMaxHitPoints', '**Offset:**']) assert.ok(help.includes(fragment)); assert.ok((await hover(doc, 'CGameObject')).includes('m_objectType')); + assert.equal( + (await execute('executeHoverProvider', doc.uri, new vscode.Position(4, 10))).length, + 0, + ); const field = new vscode.Position(2, 27); // Compared as written, not through Uri.parse().toString(), which would percent-encode the // parentheses that the upstream path and the rendered hover link both keep literal. const source = upstream(extension, 'ee-game-structures-x64') + - 'EE%20Game%20Structures%20(x64)/CD/index.rst#L131'; + 'EE%20Game%20Structures%20(x64)/CD/index.rst#L233'; assert.ok((await hoverAt(doc, field)).includes(source), 'hover renders the pinned source'); await replace(doc, '---@param sprite CGameSprite\nlocal function inspect(sprite)\n sprite.\nend'); await completion(doc, new vscode.Position(2, 8), 'm_active'); @@ -600,4 +617,30 @@ scenario('packaged-grammar', async ({ extension }) => { registry.dispose(); } }); +scenario('hover-fidelity', async ({ extension }) => { + // The same byte-exact expectations as the stdio suite, observed through the installed extension: + // what VS Code receives must be the pinned upstream text, with HTML rendering enabled for the + // tags upstream uses and command links still disabled. + const eeex = upstream(extension, 'ee-game-structures-x64').match(/blob\/([0-9a-f]{40})\//u)?.[1]; + assert.ok(eeex, 'Installed API data must pin EEex-Docs'); + for (const entry of fidelity.cases) { + const doc = await document(entry.text); + const position = new vscode.Position(entry.position.line, entry.position.character); + const hovers = await eventually( + () => execute('executeHoverProvider', doc.uri, position), + (r) => r?.length, + `${entry.id} hover`, + ); + const contents = hovers.flatMap((h) => h.contents); + assert.equal(contents.length, 1, `${entry.id}: exactly one hover section`); + const [content] = contents; + assert.equal( + content.value, + entry.expected.join('\n').replaceAll('{eeex}', eeex), + `${entry.id}: the hover must match the pinned upstream text exactly`, + ); + assert.equal(content.supportHtml, true, `${entry.id}: documentation HTML must render`); + assert.notEqual(content.isTrusted, true, `${entry.id}: documentation must not run commands`); + } +}); module.exports = { cases, eventually }; diff --git a/tests/feature-inventory.json b/tests/feature-inventory.json index ba53d34..7d92c9e 100644 --- a/tests/feature-inventory.json +++ b/tests/feature-inventory.json @@ -93,7 +93,8 @@ "chained hover", "layout types, offsets and sizes", "structure narrative", - "field definitions" + "field definitions", + "base-type inheritance" ], "commands": [], "settings": [] @@ -181,6 +182,18 @@ "features": ["packaged TextMate grammars"], "commands": [], "settings": [] + }, + { + "id": "hover-fidelity", + "groups": ["function-api", "structure-api", "source-provenance"], + "features": [ + "exact hover prose", + "verbatim signatures", + "rendered documentation HTML", + "resolved upstream links" + ], + "commands": [], + "settings": [] } ] } diff --git a/tests/features.test.cjs b/tests/features.test.cjs index 5b49029..6cea4d8 100644 --- a/tests/features.test.cjs +++ b/tests/features.test.cjs @@ -6,6 +6,10 @@ const path = require('node:path'); const { pathToFileURL } = require('node:url'); const { connect } = require('./lsp-client.cjs'); const inventory = require('./feature-inventory.json'); +const fidelity = require('./hover-fidelity.json'); +// The compiled shared package is what the bundled server renders hovers with, so the all-symbol +// audit below checks the same Markdown an editor receives. +const shared = require(path.resolve('dist/shared/index.js')); // This suite is a coverage gate rather than a second regression suite: it proves that each // language service the README names individually still answers with a real result over the stdio @@ -32,6 +36,73 @@ async function open(client, name, text, languageId = 'ie-lua') { return { uri: document.uri }; } +// The pinned EEex-Docs revision belongs to the shipped data, so expectations name it '{eeex}' and a +// data refresh that only moves the revision does not have to rewrite them. +function expectedHover(entry) { + const manifest = JSON.parse(fs.readFileSync('resources/api/api-index.json', 'utf8')); + const eeex = manifest.sources.find((source) => source.id === 'ee-game-structures-x64')?.commit; + assert.match(eeex ?? '', /^[0-9a-f]{40}$/u, 'The shipped manifest must pin EEex-Docs'); + return entry.expected.join('\n').replaceAll('{eeex}', eeex); +} + +// Tags VS Code renders in hovers once the client enables supportHtml; anything else is stripped. +const renderedTags = new Set(['br', 'pre', 'sup', 'u']); + +// Markdown that editors would render differently from the published source. Code blocks and code +// spans show their text literally, so only the surrounding prose is inspected. +function hoverProblems(symbol, markdown) { + const problems = []; + if (markdown.split('\n').filter((line) => line.startsWith('```')).length % 2 !== 0) { + problems.push('unbalanced code fence'); + } + const prose = markdown.replace(/^```[^\n]*\n[\s\S]*?\n```$/gmu, '').replace(/`[^`\n]*`/gu, ''); + if (/``|:[A-Za-z][\w-]*:`|^\.\. [A-Za-z_]/mu.test(prose)) problems.push('RST markup in prose'); + if (prose.includes('](#')) problems.push('in-page link that leads nowhere in a hover'); + for (const [, url] of prose.matchAll(/\]\(([^)\s]*)/gu)) { + if (!/^https?:\/\//u.test(url)) problems.push(`relative link ${url}`); + } + for (const [, tag] of prose.matchAll(/<\/?([A-Za-z][A-Za-z0-9-]*)(?:\s[^<>]*)?\/?>/gu)) { + if (!renderedTags.has(tag.toLowerCase())) problems.push(`HTML <${tag}> would be stripped`); + } + // "<" is how the converters write a literal "<" in prose ("the range [0, <max id in .IDS>]"), + // so Markdown shows the bracket instead of reading a tag; any other entity is a decoding gap. + if (/&(?!lt;)(?:[A-Za-z]+|#\d+|#x[0-9A-Fa-f]+);/u.test(prose)) { + problems.push('undecoded HTML entity'); + } + if (/^---\n\n---$/mu.test(markdown)) problems.push('consecutive horizontal rules'); + const source = `\n\n---\n\nSource: [${symbol.upstreamUrl}](${symbol.upstreamUrl})`; + if (!markdown.endsWith(source) || markdown.split('\nSource: [').length !== 2) { + problems.push('source link is not the single final line'); + } + return problems; +} + +// Every shipped symbol an editor can hover, which excludes the baseclass_ rows that record +// structure inheritance rather than readable members. +function auditShippedHovers() { + const manifest = JSON.parse(fs.readFileSync('resources/api/api-index.json', 'utf8')); + const problems = []; + let count = 0; + for (const section of manifest.sections) { + for (const { file } of section.files) { + const shard = JSON.parse(fs.readFileSync(path.join('resources/api', file), 'utf8')); + for (const symbol of shard.symbols) { + if (shared.isBaseClassField(symbol)) continue; + count += 1; + for (const problem of hoverProblems(symbol, shared.makeDocumentation(symbol))) { + problems.push(`${symbol.id}: ${problem}`); + } + } + } + } + assert.deepEqual( + problems.slice(0, 40), + [], + `${problems.length} shipped hovers would not render as their source reads`, + ); + return count; +} + function save() { fs.mkdirSync('reports', { recursive: true }); fs.writeFileSync('reports/features-stdio.json', JSON.stringify(report, null, 2) + '\n'); @@ -104,7 +175,28 @@ test('stdio server answers every declared language service', { timeout: 120000 } position: position(1, 11), }); assert.match(hover.contents.value, /hello/u); - return { markdownLength: hover.contents.value.length }; + + // API hovers must reproduce the pinned upstream documentation exactly: wording, typography, + // code, tables, admonitions and links, for every source section and formatting construct. + const exact = []; + for (const entry of fidelity.cases) { + const document = await open(client, `ie-features-hover-${entry.id}.lua`, entry.text); + const result = await client.request('textDocument/hover', { + textDocument: document, + position: entry.position, + }); + assert.deepEqual( + result?.contents, + { kind: 'markdown', value: expectedHover(entry) }, + `${entry.id}: the hover must match the pinned upstream text exactly`, + ); + exact.push(entry.id); + } + return { + markdownLength: hover.contents.value.length, + exactHovers: exact, + auditedHovers: auditShippedHovers(), + }; }); await feature(t, 'signature help', async () => { diff --git a/tests/hover-fidelity.json b/tests/hover-fidelity.json new file mode 100644 index 0000000..ce6c250 --- /dev/null +++ b/tests/hover-fidelity.json @@ -0,0 +1,597 @@ +{ + "$comment": "Exact hover Markdown for representative API symbols. Each expectation is written from the pinned upstream source named in 'upstream', not copied from generator output. '{eeex}' is replaced with the EEex-Docs commit pinned in the shipped manifest. Both the stdio feature suite and the installed-extension suite compare every hover byte for byte.", + "cases": [ + { + "id": "game-index-vararg", + "symbol": "ee-game-lua-functions:Infinity_DisplayString", + "upstream": "EEex-Docs source/EE Game Lua Functions/Infinity/index.rst lines 800-851", + "constructs": [ + "verbatim vararg signature", + "literal blocks", + "bullet lists", + "inline literals", + "trailing entry separator" + ], + "text": "Infinity_DisplayString(1)\n", + "position": { "line": 0, "character": 3 }, + "expected": [ + "### `Infinity_DisplayString`", + "", + "```lua", + "Infinity_DisplayString(...)", + "```", + "", + "Displays to the screen the passed content as a string", + "", + "**Parameters**", + "", + "- *...* - special, see notes", + "", + "**Return Value**", + "", + "None", + "", + "**Notes**", + "", + "Similar to printf function, this function can accept a variable amount of parameters. Each parameter passed is evaluated, converted to a string if necessary and concatenated to form the final string to display on the screen.", + "", + "Parameters that are:", + "", + "- Integers - converted to a string.", + "- Variables - evaluated and the value of the variable is taken and converted to a string. ", + "- Functions - evaluated and the result used in other nested functions and/or evaluated to a string.", + "", + "Paramters supports simple math and other lua functions.", + "", + "You can inline concatenate strings and variables by using `..` between the string and variable and/or the next parameter, for example the `class` variable is concatenated to the string:", + "", + "```lua", + "Infinity_DisplayString(\"WARNING: unrecognized class argument: \" .. class)", + "```", + "", + "**Examples**", + "", + "Display to screen using inline concatenate using 2 parameters, both using a string and a variable to evaluate:", + "", + "```lua", + "Infinity_DisplayString(\"config: \"..config..\", state: \"..state)", + "```", + "", + "Display to screen the result of simple math: (result is displayed as `20000001`):", + "", + "```lua", + "Infinity_DisplayString(20000000 + 1)", + "```", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L809](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L809)" + ] + }, + { + "id": "game-index-unknown-parameter", + "symbol": "ee-game-lua-functions:Infinity_ClickItem", + "upstream": "EEex-Docs source/EE Game Lua Functions/Infinity/index.rst lines 590-618", + "constructs": ["unidentified ??? parameter", "empty upstream sections"], + "text": "Infinity_ClickItem()\n", + "position": { "line": 0, "character": 3 }, + "expected": [ + "### `Infinity_ClickItem`", + "", + "```lua", + "Infinity_ClickItem(???)", + "```", + "", + "**Parameters**", + "", + "???", + "", + "**Return Value**", + "", + "???", + "", + "**Notes**", + "", + "**Example**", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L599](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L599)" + ] + }, + { + "id": "game-page-links", + "symbol": "ee-game-lua-functions:C:AddGold", + "upstream": "EEex-Docs source/EE Game Lua Functions/C/C_AddGold.rst", + "constructs": ["typed parameter", "emphasis", "resolved :ref: links"], + "text": "C:AddGold(\"1000\")\n", + "position": { "line": 0, "character": 4 }, + "expected": [ + "### `C:AddGold`", + "", + "```lua", + "C:AddGold(Gold)", + "```", + "", + "Adds gold to the party", + "", + "**Parameters**", + "", + "- `string` *Gold* - string containing the numeric amount of gold to add to party", + "", + "**Example**", + "", + "```lua", + "C:AddGold(\"1000\")", + "```", + "", + "**See Also**", + "", + "[C:AddSpell](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/C/C_AddSpell.rst#L1), [C:CreateItem](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/C/C_CreateItem.rst#L1)", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/C/C_AddGold.rst#L11](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/C/C_AddGold.rst#L11)" + ] + }, + { + "id": "game-page-note-table-code", + "symbol": "ee-game-lua-functions:createCharScreen:SetAbilityHelpInfo", + "upstream": "EEex-Docs source/EE Game Lua Functions/createCharScreen/createCharScreen_SetAbilityHelpInfo.rst", + "constructs": [ + "note with inline argument", + "grid table", + "multi-line literal blocks with relative indentation" + ], + "text": "createCharScreen:SetAbilityHelpInfo(2)\n", + "position": { "line": 0, "character": 20 }, + "expected": [ + "### `createCharScreen:SetAbilityHelpInfo`", + "", + "```lua", + "createCharScreen:SetAbilityHelpInfo(stat)", + "```", + "", + "Set tokens for ability score information", + "", + "**Parameters**", + "", + "- `integer` *stat* - value representing the ability score to set token information for", + "", + "**Returns**", + "", + "None", + "", + "**Notes**", + "", + "Sets ability score tokens `` and `` for the panel that displays the specifics of each ability score, recommended scores and minimum required scores for specific classes.", + "", + "> **Note**", + "> The full text and description for the ability score help information is fetched outside of this function. By using the [Infinity_FetchString](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/Infinity/index.rst#L921) function in `UI.MENU` to fetch a string reference (StrRef) and combining with the ability score tokens fetched by [createCharScreen:SetAbilityHelpInfo](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_SetAbilityHelpInfo.rst#L1), this full text is then output into the help panel.", + "", + "The *stat* parameter can be one of the following values, which equate to the ability score to set information for:", + "", + "| **Stat** | **Ability** |", + "| --- | --- |", + "| 1 | Strength |", + "| 2 | Dexterity |", + "| 3 | Constitution |", + "| 4 | Intelligence |", + "| 5 | Wisdom |", + "| 6 | Charisma |", + "", + "**Examples**", + "", + "Set ability score help info for Dexterity:", + "", + "```lua", + "createCharScreen:SetAbilityHelpInfo(2)", + "DexterityAbilityInfo = Infinity_FetchString(9584)", + "```", + "", + "Using a lua function and an array to dynamically set text for ability score information in `UI.MENU`:", + "", + "```lua", + "`", + "chargen.ability = {", + " {name = 'STRENGTH_LABEL', desc = 9582},", + " {name = 'DEXTERITY_LABEL', desc = 9584},", + " {name = 'CONSTITUTION_LABEL', desc = 9583},", + " {name = 'INTELLIGENCE_LABEL', desc = 9585},", + " {name = 'WISDOM_LABEL', desc = 9586},", + " {name = 'CHARISMA_LABEL', desc = 9587},", + "}", + "", + "function abilityOrGeneralHelp()", + " ability = chargen.ability[currentChargenAbility]", + " if ability and ability.desc ~= -1 then", + " createCharScreen:SetAbilityHelpInfo(currentChargenAbility)", + " return Infinity_FetchString(ability.desc)", + " else", + " return Infinity_FetchString(17247)", + " end", + "end", + "`", + "", + "--[[", + " This is a comment. Part of the code is excluded for example purposes", + " Later on the function is used to fetch the ability score description", + " The ability score description is stored as a ResRef in the array above", + " The text of the UI control is set via the lua abilityOrGeneralHelp", + "--]]", + "", + " text", + " {", + " area 582 196 404 400", + " text lua \"abilityOrGeneralHelp()\"", + " text style \"normal\"", + " scrollbar 'GUISCRC'", + " }", + "```", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_SetAbilityHelpInfo.rst#L11](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Lua%20Functions/createCharScreen/createCharScreen_SetAbilityHelpInfo.rst#L11)" + ] + }, + { + "id": "eeex-tables-note-break", + "symbol": "eeex-functions:EEex_Options_Option:set", + "upstream": "EEex-Docs source/EEex Functions/Options/index.rst lines 217-248", + "constructs": ["summary and note admonitions", "grid tables", "raw-html line break"], + "text": "EEex_Options_Option:set(1)\n", + "position": { "line": 0, "character": 21 }, + "expected": [ + "### `EEex_Options_Option:set`", + "", + "```lua", + "EEex_Options_Option:set(newValue)", + "```", + "", + "> **Summary**", + "> Sets the value of the option.", + "", + "> **Note**", + "> Some options delay applying changes made to their value; these changes will only be visible at a later time, such as after a restart.", + "", + "**Parameters:**", + "", + "| **Name** | **Type** | **Default Value** | **Description** |", + "| --- | --- | --- | --- |", + "| newValue | `` | | The value to set the option to.
    If `nil`, sets the option to its default value. |", + "", + "**Return Values:**", + "", + "| **Type** | **Description** |", + "| --- | --- |", + "| `` | Returns the value the option was set to after constraints were applied to `newValue`. |", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Options/index.rst#L217](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Options/index.rst#L217)" + ] + }, + { + "id": "eeex-warning", + "symbol": "eeex-functions:EEex_Area_CreateVisualEffect", + "upstream": "EEex-Docs source/EEex Functions/Area/index.rst lines 102-108", + "constructs": ["warning admonition"], + "text": "EEex_Area_CreateVisualEffect()\n", + "position": { "line": 0, "character": 5 }, + "expected": [ + "### `EEex_Area_CreateVisualEffect`", + "", + "```lua", + "EEex_Area_CreateVisualEffect()", + "```", + "", + "> **Warning**", + "> This function is currently undocumented.", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Area/index.rst#L102](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Area/index.rst#L102)" + ] + }, + { + "id": "eeex-titled-ref", + "symbol": "eeex-functions:EEex_Options_Option.new", + "upstream": "EEex-Docs source/EEex Functions/Options/index.rst lines 129-170", + "constructs": ["titled :ref: link", "default value", "mid-entry rule and section heading"], + "text": "EEex_Options_Option.new({})\n", + "position": { "line": 0, "character": 21 }, + "expected": [ + "### `EEex_Options_Option.new`", + "", + "```lua", + "EEex_Options_Option.new(o)", + "```", + "", + "> **Summary**", + "> Creates a new `EEex_Options_Option` instance.", + "", + "**Parameters:**", + "", + "| **Name** | **Type** | **Default Value** | **Description** |", + "| --- | --- | --- | --- |", + "| o | table | `{}` | The object to become the `EEex_Options_Option` instance.
    See [The Option Table](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Options/index.rst#L157) for more details. |", + "", + "**Return Values:**", + "", + "| **Type** | **Description** |", + "| --- | --- |", + "| EEex_Options_Option | See summary. |", + "", + "---", + "", + "#### **The Option Table**", + "", + "| Key | Value Type | Description |", + "| --- | --- | --- |", + "| accessor | EEex_Options_Accessor | This field is currently undocumented. |", + "| default | `` | This field is currently undocumented. |", + "| requiresRestart | boolean | This field is currently undocumented. |", + "| storage | EEex_Options_Private_Storage | This field is currently undocumented. |", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Options/index.rst#L129](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EEex%20Functions/Options/index.rst#L129)" + ] + }, + { + "id": "structure-narrative", + "symbol": "ee-game-structures-x64:CGameObject", + "upstream": "EEex-Docs source/EE Game Structures (x64)/CG/index.rst lines 8026-8111", + "constructs": ["layout facts", "link into an uningested section", "narrative table"], + "text": "CGameObject\n", + "position": { "line": 0, "character": 3 }, + "expected": [ + "### `CGameObject`", + "", + "```lua", + "struct CGameObject (96 bytes)", + "```", + "", + "**Size:** 96 bytes ", + "**Fields:** 15", + "", + "Used by the [CGameObject Class](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Classes%20(x86)/CGameObject/index.rst#L1)", + "", + "**Notes**", + "", + "The *m_objectType* field can contain one of the following values:", + "", + "| **Object Type** | **Object Type Description** |", + "| --- | --- |", + "| 0x00 | TYPE_NONE |", + "| 0x01 | TYPE_AIBASE |", + "| 0x10 | TYPE_SOUND |", + "| 0x11 | TYPE_CONTAINER |", + "| 0x20 | TYPE_SPAWNING |", + "| 0x21 | TYPE_DOOR |", + "| 0x30 | TYPE_STATIC |", + "| 0x31 | TYPE_SPRITE |", + "| 0x40 | TYPE_OBJECT_MARKER |", + "| 0x41 | TYPE_TRIGGER |", + "| 0x51 | TYPE_TILED_OBJECT |", + "| 0x60 | TYPE_TEMPORAL |", + "| 0x61 | TYPE_AREA_AI |", + "| 0x70 | TYPE_FIREBALL |", + "| 0x71 | TYPE_GAME_AI |", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8026](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8026)" + ] + }, + { + "id": "structure-inherited-field", + "symbol": "ee-game-structures-x64:CGameObject.m_objectType", + "upstream": "EEex-Docs source/EE Game Structures (x64)/CG/index.rst line 8038", + "constructs": [ + "field reached through CGameSprite -> CGameAIBase -> CGameObject", + "layout-only documentation" + ], + "text": "---@type CGameSprite\nlocal sprite\nsprite.m_objectType\n", + "position": { "line": 2, "character": 10 }, + "expected": [ + "### `CGameObject.m_objectType`", + "", + "```lua", + "m_objectType: unsigned __int8", + "```", + "", + "**Type:** `unsigned __int8` ", + "**Offset:** `0x8` ", + "**Size:** 1 bytes", + "", + "Undocumented in official source.", + "", + "---", + "", + "Source: [https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8038](https://github.com/Bubb13/EEex-Docs/blob/{eeex}/source/EE%20Game%20Structures%20(x64)/CG/index.rst#L8038)" + ] + }, + { + "id": "lua52-entities", + "symbol": "lua52:pcall", + "upstream": "Lua 5.2.4 doc/manual.html #pdf-pcall", + "constructs": ["middle-dot vararg", "no-break space", "emphasis", "bold"], + "text": "pcall(print)\n", + "position": { "line": 0, "character": 2 }, + "expected": [ + "### `pcall`", + "", + "```lua", + "pcall (f [, arg1, ···])", + "```", + "", + "Calls function `f` with the given arguments in *protected mode*. This means that any error inside\u00a0`f` is not propagated; instead, `pcall` catches the error and returns a status code. Its first result is the status code (a boolean), which is true if the call succeeds without errors. In such case, `pcall` also returns all results from the call, after this first result. In case of any error, `pcall` returns **false** plus the error message.", + "", + "---", + "", + "Source: [https://www.lua.org/manual/5.2/manual.html#pdf-pcall](https://www.lua.org/manual/5.2/manual.html#pdf-pcall)" + ] + }, + { + "id": "lua52-links", + "symbol": "lua52:print", + "upstream": "Lua 5.2.4 doc/manual.html #pdf-print", + "constructs": ["manual cross-references as absolute links"], + "text": "print('x')\n", + "position": { "line": 0, "character": 2 }, + "expected": [ + "### `print`", + "", + "```lua", + "print (···)", + "```", + "", + "Receives any number of arguments and prints their values to `stdout`, using the [`tostring`](https://www.lua.org/manual/5.2/manual.html#pdf-tostring) function to convert each argument to a string. `print` is not intended for formatted output, but only as a quick way to show a value, for instance for debugging. For complete control over the output, use [`string.format`](https://www.lua.org/manual/5.2/manual.html#pdf-string.format) and [`io.write`](https://www.lua.org/manual/5.2/manual.html#pdf-io.write).", + "", + "---", + "", + "Source: [https://www.lua.org/manual/5.2/manual.html#pdf-print](https://www.lua.org/manual/5.2/manual.html#pdf-print)" + ] + }, + { + "id": "lua52-superscript", + "symbol": "lua52:math.frexp", + "upstream": "Lua 5.2.4 doc/manual.html #pdf-math.frexp", + "constructs": ["superscript inside emphasis"], + "text": "math.frexp(8)\n", + "position": { "line": 0, "character": 7 }, + "expected": [ + "### `math.frexp`", + "", + "```lua", + "math.frexp (x)", + "```", + "", + "Returns `m` and `e` such that *x = m2e*, `e` is an integer and the absolute value of `m` is in the range *[0.5, 1)* (or zero when `x` is zero).", + "", + "---", + "", + "Source: [https://www.lua.org/manual/5.2/manual.html#pdf-math.frexp](https://www.lua.org/manual/5.2/manual.html#pdf-math.frexp)" + ] + }, + { + "id": "lua52-keyword", + "symbol": "lua52:keyword:and", + "upstream": "Lua 5.2.4 doc/manual.html section 3.1", + "constructs": ["published introduction with emphasis", "preformatted block"], + "text": "local x = a and b\n", + "position": { "line": 0, "character": 13 }, + "expected": [ + "### `and`", + "", + "```lua", + "and", + "```", + "", + "The following *keywords* are reserved and cannot be used as names:", + "", + "```lua", + "and break do else elseif end", + "false for function goto if in", + "local nil not or repeat return", + "then true until while", + "```", + "", + "---", + "", + "Source: [https://www.lua.org/manual/5.2/manual.html#3.1](https://www.lua.org/manual/5.2/manual.html#3.1)" + ] + }, + { + "id": "lua52-module", + "symbol": "lua52:string", + "upstream": "Lua 5.2.4 doc/manual.html section 6.4", + "constructs": ["module introduction", "no-break spaces"], + "text": "local s = string\n", + "position": { "line": 0, "character": 12 }, + "expected": [ + "### `string`", + "", + "```lua", + "string", + "```", + "", + "This library provides generic functions for string manipulation, such as finding and extracting substrings, and pattern matching. When indexing a string in Lua, the first character is at position\u00a01 (not at\u00a00, as in C). Indices are allowed to be negative and are interpreted as indexing backwards, from the end of the string. Thus, the last character is at position -1, and so on.", + "", + "---", + "", + "Source: [https://www.lua.org/manual/5.2/manual.html#6.4](https://www.lua.org/manual/5.2/manual.html#6.4)" + ] + }, + { + "id": "luajit-alternatives", + "symbol": "luajit:ffi.new", + "upstream": "LuaJIT doc/ext_ffi_api.html #ffi_new", + "constructs": [ + "alternative call forms on separate lines", + "relative link resolved against the page", + "styled paragraph" + ], + "text": "local p = ffi.new('int')\n", + "position": { "line": 0, "character": 14 }, + "expected": [ + "### `ffi.new`", + "", + "```lua", + "cdata = ffi.new(ct [,nelem] [,init...])", + "cdata = ctype([nelem,] [init...])", + "```", + "", + "Creates a cdata object for the given `ct`. VLA/VLS types require the `nelem` argument. The second syntax uses a ctype as a constructor and is otherwise fully equivalent.", + "", + "The cdata object is initialized according to the [rules for initializers](https://luajit.org/ext_ffi_semantics.html#init), using the optional `init` arguments. Excess initializers cause an error.", + "", + "Performance notice: if you want to create many objects of one kind, parse the cdecl only once and get its ctype with `ffi.typeof()`. Then use the ctype as a constructor repeatedly.", + "", + "Please note, that an anonymous `struct` declaration implicitly creates a new and distinguished ctype every time you use it for `ffi.new()`. This is probably **not** what you want, especially if you create more than one cdata object. Different anonymous `structs` are not considered assignment-compatible by the C\u00a0standard, even though they may have the same fields! Also, they are considered different types by the JIT-compiler, which may cause an excessive number of traces. It's strongly suggested to either declare a named `struct` or `typedef` with `ffi.cdef()` or to create a single ctype object for an anonymous `struct` with `ffi.typeof()`.", + "", + "---", + "", + "Source: [https://luajit.org/ext_ffi_api.html#ffi_new](https://luajit.org/ext_ffi_api.html#ffi_new)" + ] + }, + { + "id": "luajit-table", + "symbol": "luajit:ffi.abi", + "upstream": "LuaJIT doc/ext_ffi_api.html #ffi_abi", + "constructs": ["HTML table"], + "text": "ffi.abi('64bit')\n", + "position": { "line": 0, "character": 5 }, + "expected": [ + "### `ffi.abi`", + "", + "```lua", + "status = ffi.abi(param)", + "```", + "", + "Returns `true` if `param` (a Lua string) applies for the target ABI (Application Binary Interface). Returns `false` otherwise. The following parameters are currently defined:", + "", + "| Parameter | Description |", + "| --- | --- |", + "| 32bit | 32 bit architecture |", + "| 64bit | 64 bit architecture |", + "| le | Little-endian architecture |", + "| be | Big-endian architecture |", + "| fpu | Target has a hardware FPU |", + "| softfp | softfp calling conventions |", + "| hardfp | hardfp calling conventions |", + "| eabi | EABI variant of the standard ABI |", + "| win | Windows variant of the standard ABI |", + "| pauth | Pointer authentication ABI |", + "| uwp | Universal Windows Platform |", + "| gc64 | 64 bit GC references |", + "| dualnum | Dual-number mode |", + "", + "---", + "", + "Source: [https://luajit.org/ext_ffi_api.html#ffi_abi](https://luajit.org/ext_ffi_api.html#ffi_abi)" + ] + } + ] +} diff --git a/tests/lsp-client.cjs b/tests/lsp-client.cjs index 8ef5689..f2e35f3 100644 --- a/tests/lsp-client.cjs +++ b/tests/lsp-client.cjs @@ -140,7 +140,9 @@ async function connect(options = {}) { const initialized = await request('initialize', { processId: process.pid, rootUri: null, - capabilities: { workspace: { configuration: true } }, + // Callers add client capabilities (for example signature-help label offsets) to exercise the + // server paths that only a capable editor reaches; configuration support is always declared. + capabilities: { workspace: { configuration: true }, ...options.capabilities }, initializationOptions: options.initializationOptions, }).catch((error) => { child.kill(); diff --git a/tests/lsp.test.cjs b/tests/lsp.test.cjs index b1b473e..1cad5a4 100644 --- a/tests/lsp.test.cjs +++ b/tests/lsp.test.cjs @@ -136,6 +136,67 @@ test( }, ); +test( + 'published signatures, offset parameter labels, and inherited structure members', + { timeout: 60000 }, + async (t) => { + const client = await connect({ + quiet: true, + capabilities: { + textDocument: { + signatureHelp: { + signatureInformation: { parameterInformation: { labelOffsetSupport: true } }, + }, + }, + }, + }); + t.after(() => client.close()); + const doc = await open( + client, + 'ie-inheritance.lua', + 'Infinity_LuaConsoleInput(\n---@type CGameSprite\nlocal sprite\nsprite.m_objectType\nsprite.baseclass_0\nsprite.\n', + ); + + // Upstream publishes "(???,???)" verbatim; offsets keep the two identical names distinct. + const help = await client.request('textDocument/signatureHelp', { + textDocument: doc, + position: position(0, 25), + }); + assert.equal(help.signatures[0].label, 'Infinity_LuaConsoleInput(???,???)'); + assert.deepEqual( + help.signatures[0].parameters.map((parameter) => parameter.label), + [ + [25, 28], + [29, 32], + ], + ); + + // CGameSprite extends CGameAIBase, which extends CGameObject: inherited members resolve on the + // derived usertype, while the baseclass_ rows that record the inheritance are not members. + const inherited = await client.request('textDocument/hover', { + textDocument: doc, + position: position(3, 10), + }); + assert.match(inherited.contents.value, /^### `CGameObject\.m_objectType`/u); + assert.equal( + await client.request('textDocument/hover', { textDocument: doc, position: position(4, 10) }), + null, + ); + const labels = ( + await client.request('textDocument/completion', { + textDocument: doc, + position: position(5, 7), + }) + ).map((item) => item.label); + assert.ok(labels.includes('m_objectType'), 'CGameObject members complete on a CGameSprite'); + assert.ok(labels.includes('m_active'), 'direct members still complete'); + assert.equal( + labels.some((label) => /^baseclass_\d+$/u.test(label)), + false, + ); + }, +); + test( 'diagnostic modes, configuration updates, and document close', { timeout: 60000 },