-
-
Save aerosoul94/3a2da3cdbef11f4031f19b2a6feaeb5c to your computer and use it in GitHub Desktop.
import struct | |
import sys | |
import re | |
import os | |
# | |
## StringId Generation | |
# | |
def create_table(poly): | |
init=0 | |
l=[0]*256 | |
for i in range(256): | |
t=init^(i<<24) | |
for j in range(8): | |
mask=1<<31 | |
if(mask&t!=0): | |
t=(t<<1)^poly | |
else: | |
t=(t<<1) | |
l[i]=t&0xffffffff | |
return l | |
crc32_table = create_table(0x04c11db7) | |
def crc32(s, init=0): | |
crc = init | |
if s: | |
for c in s: | |
crc = (crc32_table[ ((crc>>24) ^ ord(c)) & 0xff ] \ | |
^ (crc << 8)) & 0xffffffff | |
return crc | |
def fnv1a_64(s): | |
fnv = 0xcbf29ce484222325 | |
for c in s: | |
fnv = ((ord(c) ^ fnv) * 0x100000001b3) \ | |
& 0xffffffffffffffff | |
return fnv | |
def StringId(s): | |
return crc32(s) | |
vector_id = StringId('vector') # 0x012f77fe | |
string_id = StringId('string') # 0x0b3952e7 | |
float_id = StringId('float') # 0x0f182ec3 | |
angle_id = StringId('angle') # 0x13812cd6 | |
state_id = StringId('state') # 0x2e6743e3 | |
direction_id = StringId('direction') # 0x7194cbe7 | |
color_id = StringId('color') # 0x71e73c6c | |
boolean_id = StringId('boolean') # 0x8b4e76ff | |
vec4_id = StringId('vec4') # 0x93bd2e95 | |
script_lambda_id = StringId('script-lambda') # 0x9ed499e1 | |
function_id = StringId('function') # 0xab3eb31f | |
int32_id = StringId('int32') # 0xc7cb2752 | |
# | |
## DC File Structures | |
# | |
def read_u32(fp): | |
return int.from_bytes(fp.read(4), byteorder='little') | |
def read_i32(fp): | |
return int.from_bytes(fp.read(4), byteorder='little', signed=True) | |
def read_float(fp): | |
return struct.unpack('f', fp.read(4))[0] | |
class DcDescriptor: | |
def __init__(self, fp): | |
self.start = read_u32(fp) | |
read_u32(fp) | |
self.end = read_u32(fp) | |
read_u32(fp) | |
class DcDefinition: | |
def __init__(self, fp): | |
self.nameId = read_u32(fp) | |
self.typeId = read_u32(fp) | |
self.offset = read_u32(fp) | |
self.unk = read_u32(fp) | |
class DcHeader: | |
def __init__(self, fp): | |
self.magic = fp.read(4) | |
self.unk1 = read_u32(fp) | |
self.reloc = read_u32(fp) | |
self.unk2 = read_u32(fp) | |
self.unk3 = read_u32(fp) | |
self.defCount = read_u32(fp) | |
self.defTableOff = read_u32(fp) | |
self.unk4 = read_u32(fp) | |
# | |
## DC Instruction Decoder | |
# | |
inst_map = { | |
0: "return", | |
1: "intAdd", # (+ a b) | |
2: "intSub", # (- a b) | |
3: "intMul", # (* a b) | |
4: "intDiv", # (/ a b) | |
5: "floatAdd", # (+ a b) | |
6: "floatSub", # (- a b) | |
7: "floatMul", # (* a b) | |
8: "floatDiv", # (/ a b) | |
9: "loadStaticInt", | |
0xA: "loadStaticFloat", | |
0xB: "loadStaticPointer", | |
0xC: "loadImm", | |
0xD: "loadInt", | |
0xE: "loadFloat", | |
0xF: "loadPointer", | |
0x10: "storeInt", | |
0x11: "storeFloat", | |
0x12: "storePointer", | |
0x13: "lookupInt", | |
0x14: "lookupFloat", | |
0x15: "lookupPointer", | |
0x16: "moveInt", | |
0x17: "moveFloat", | |
0x18: "movePointer", | |
0x19: "castInteger", | |
0x1A: "castFloat", | |
0x1B: "call", # Call script function | |
0x1C: "callFf", # Call native function | |
0x1D: "cmpEqual", # (= a b) | |
0x1E: "cmpGt", # (> a b) | |
0x1F: "cmpGtEqual", # (>= a b) | |
0x20: "cmpLt", # (< a b) | |
0x21: "cmpLtEqual", # (<= a b) | |
0x22: "cmpFloatEqual", # (= a b) | |
0x23: "cmpFloatGt", # (> a b) | |
0x24: "cmpFloatGtEqual", # (>= a b) | |
0x25: "cmpFloatLt", # (< a b) | |
0x26: "cmpFloatLtEqual", # (<= a b) | |
0x27: "intMod", # (mod a) | |
0x28: "floatMod", # (mod a) | |
0x29: "intAbs", # (abs a) | |
0x2A: "floatAbs", # (abs a) | |
0x2D: "branch", | |
0x2E: "branchIf", # (if a) | |
0x2F: "branchIfNot", # (if (not a)) | |
0x30: "opLogNot", # (not a) | |
0x31: "opBitAnd", # (logand a b) | |
0x32: "opBitNot", # (lognot a b) | |
0x33: "opBitOr", # (logior a b) | |
0x34: "opBitXor", # (logxor a b) | |
0x35: "opBitNor", # (lognor a) | |
0x36: "opLogAnd", # (and a b) | |
0x37: "opLogOr", # (or a b) | |
0x38: "intNeg", | |
0x39: "floatNeg", | |
0x3A: "loadParmCnt", | |
0x3B: "intAddImm", | |
0x3C: "intSubImm", | |
0x3D: "intMulImm", | |
0x3E: "intDivImm", | |
0x3F: "loadStaticI32Imm", | |
0x40: "loadStaticFloatImm", | |
0x41: "loadStaticPointerImm", | |
0x42: "intAsh", | |
0x43: "move", | |
0x44: "loadStaticU32Imm", | |
0x45: "loadStaticI8Imm", | |
0x46: "loadStaticU8Imm", | |
0x47: "loadStaticI16Imm", | |
0x48: "loadStaticU16Imm", | |
0x49: "loadStaticI64Imm", | |
0x4A: "loadStaticU64Imm" | |
} | |
sid_list = {} | |
native_table = {} # definitions from native functions | |
import_table = {} # definitions from imports | |
local_table = {} # defintiions from this binary | |
def get_pointer_ref(hashid): | |
fmt = "=>{}:{}" | |
nat = native_table.get(hashid) | |
if nat: | |
return fmt.format("NATIVE", nat) | |
imp = import_table.get(hashid) | |
if imp: | |
return fmt.format("IMPORT", imp) | |
loc = local_table.get(hashid) | |
if loc: | |
return fmt.format("LOCAL", loc) | |
return "" | |
def print_opLogNot(fp, name, inst, code, data): | |
s = "{} r{}, r{}".format(name, inst[1], inst[2]) | |
cmt = "r{} = -(r{} == 0)".format(inst[1], inst[2]) | |
return (s, cmt) | |
def print_opBitAnd(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} & r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_opBitNot(fp, name, inst, code, data): | |
s = "{} r{}, r{}".format(name, inst[1], inst[2]) | |
cmt = "r{} = ~r{}".format(inst[1], inst[2]) | |
return (s, cmt) | |
def print_opBitOr(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} | r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_opBitXor(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} ^ r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_opBitNor(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = ~(r{} | r{})".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_return(fp, name, inst, code, data): | |
s = "{} r{}, r{}".format(name, inst[1], inst[2]) | |
return (s, None) | |
def print_cmpFloatGtEqual(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} >= r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_cmpEqual(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} == r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_cmpGt(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} > r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_cmpLt(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} < r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_cmpFloatGt(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} > r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_cmpFloatLt(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} < r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_branch(fp, name, inst, code, data): | |
off = inst[1] | inst[3] << 8 | |
s = "{} 0x{:08X}".format(name, code + off * 0x4) | |
cmt = "goto 0x{:08X}".format(code + off * 0x4) | |
return (s, cmt) | |
def print_branchIf(fp, name, inst, code, data): | |
off = inst[1] | inst[3] << 8 | |
s = "{} r{}, 0x{:08X}".format(name, inst[2], code + off * 0x4) | |
cmt = "if (r{}) goto 0x{:08X}".format(inst[2], code + off * 0x4) | |
return (s, cmt) | |
def print_branchIfNot(fp, name, inst, code, data): | |
off = inst[1] | inst[3] << 8 | |
s = "{} r{}, 0x{:08X}".format(name, inst[2], code + off * 0x4) | |
cmt = "if (!r{}) goto 0x{:08X}".format(inst[2], code + off * 0x4) | |
return (s, cmt) | |
def print_intAdd(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} + r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_intSub(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} - r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_intMul(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} * r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_intDiv(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} / r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_floatAdd(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} + r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_floatSub(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} - r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_floatDiv(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} / r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_floatMul(fp, name, inst, code, data): | |
s = "{} r{}, r{}, r{}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} * r{}".format(inst[1], inst[2], inst[3]) | |
return (s, cmt) | |
def print_lookupPointer(fp, name, inst, code, data): | |
s = "{} r{}, data[{}]".format(name, inst[1], inst[2]) | |
fp.seek(data + (inst[2] * 8)) | |
hashid = read_u32(fp) | |
cmt = "r{} = StringId(0x{:08x})".format(inst[1], hashid) | |
value = get_pointer_ref(hashid) | |
if value: | |
cmt += value | |
return (s, cmt) | |
def print_loadStaticU32Imm(fp, name, inst, code, data): | |
s = "{} r{}, data[{}]".format(name, inst[1], inst[2]) | |
fp.seek(data + (inst[2] * 8)) | |
value = read_u32(fp) | |
cmt = "r{} = {} (0x{:08x})".format(inst[1], value, value) | |
return (s, cmt) | |
def print_loadStaticI32Imm(fp, name, inst, code, data): | |
s = "{} r{}, data[{}]".format(name, inst[1], inst[2]) | |
fp.seek(data + (inst[2] * 8)) | |
svalue = read_i32(fp) | |
fp.seek(data + (inst[2] * 8)) | |
value = read_u32(fp) | |
cmt = "r{} = {} (0x{:8x})".format(inst[1], svalue, value) | |
return (s, cmt) | |
def print_loadStaticFloatImm(fp, name, inst, code, data): | |
s = "{} r{}, data[{}]".format(name, inst[1], inst[2]) | |
fp.seek(data + (inst[2] * 8)) | |
value = read_float(fp) | |
cmt = "r{} = {}f".format(inst[1], value) | |
return (s, cmt) | |
def print_loadStaticPointerImm(fp, name, inst, code, data): | |
s = "{} r{}, data[{}]".format(name, inst[1], inst[2]) | |
fp.seek(data + (inst[2] * 8)) | |
value = read_u32(fp) | |
fp.seek(value) | |
d = bytearray() | |
c = fp.read(1) | |
while c != b'\0': | |
d += c | |
c = fp.read(1) | |
p = d.decode('ascii').replace("\n", "\\n") | |
cmt = "r{} = 0x{:08x} (\"{}\")".format(inst[1], value, p) | |
return (s, cmt) | |
def print_loadImm(fp, name, inst, code, data): | |
s = "{} r{}, 0x{:04x}".format(name, inst[1], (inst[2] | inst[3] << 8)) | |
cmt = "r{} = {}".format(inst[1], inst[3] << 8 | inst[2]) | |
return (s, cmt) | |
def print_intAddImm(fp, name, inst, code, data): | |
s = "{} r{}, r{}, 0x{:02x}".format(name, inst[1], inst[2], inst[3]) | |
cmt = "r{} = r{} + {}".format(inst[1], inst[2], inst[3]) | |
return (s,cmt) | |
def print_floatAbs(fp, name, inst, code, data): | |
s = "{} r{}, r{}".format(name, inst[1], inst[2]) | |
cmt = "r{} = Abs(r{})".format(inst[1], inst[2]) | |
return (s, cmt) | |
def print_move(fp, name, inst, code, data): | |
s = ("{} r{}, r{}").format(name, inst[1], inst[2]) | |
cmt = "r{} = r{}".format(inst[1], inst[2]) | |
return (s, cmt) | |
def print_call(fp, name, inst, code, data): | |
s = "{} r{}, r{}, {}".format(name, inst[1], inst[2], inst[3]) | |
return (s, None) | |
def print_callFf(fp, name, inst, code, data): | |
s = "{} r{}, r{}, {}".format(name, inst[1], inst[2], inst[3]) | |
return (s, None) | |
class DcDisassembler: | |
def __init__(self, fp): | |
self.fp = fp | |
self.dcHeader = None | |
self.defTable = [] | |
self._read_header() | |
self._read_fntable() | |
def _read_header(self): | |
self.dcHeader = DcHeader(fp) | |
def _read_fntable(self): | |
for i in range(self.dcHeader.defCount): | |
definition = DcDefinition(self.fp) | |
self.defTable.append(definition) | |
self.defTable.sort(key=lambda d: d.offset) | |
def disassemble(self): | |
for definition in self.defTable: | |
# only disassemble lambdas or functions | |
if definition.typeId in (script_lambda_id, function_id): | |
funcName = local_table.get(definition.nameId) | |
self.fp.seek(definition.offset) | |
descriptor = DcDescriptor(self.fp) | |
if not funcName: | |
funcName = "func_{:X}".format(descriptor.start) | |
print("0x{:08X}:".format(descriptor.start)) | |
print("0x{:08X}: {} # 0x{:08x}".format(descriptor.start, funcName.ljust(51), | |
definition.nameId)) | |
self._disassemble_lambda(descriptor, funcName) | |
def _disassemble_lambda(self, descriptor, funcName): | |
# print("0x{:08X}:".format(descriptor.start)) | |
# if funcName: | |
# print("0x{:08X}: {}".format(descriptor.start, funcName)) | |
# else: | |
# print("0x{:08X}: func_{:x}".format(descriptor.start, descriptor.start)) | |
for instOff in range(descriptor.start, descriptor.end, 4): | |
self.fp.seek(instOff) | |
inst = self.fp.read(4) | |
self._print_inst(instOff, inst, descriptor.start, descriptor.end) | |
#if inst[0] == 0: | |
# break | |
def _print_inst(self, offset, inst, code, data): | |
# Print offset and bytes | |
print("0x{:08X}: ".format(offset) + | |
("{:02X} " * 4).format(inst[0], inst[1], inst[2], inst[3]), end="") | |
name = inst_map.get(inst[0]) | |
if not name: | |
print() | |
return | |
printer = globals().get("print_" + name) | |
if not printer: | |
print(name + " r{}, r{}, r{}".format(inst[1], inst[2], inst[3])) | |
return | |
l = printer(self.fp, name, inst, code, data) | |
print(l[0].ljust(40), end="") | |
if l[1]: | |
print("# {}".format(l[1])) | |
else: | |
print() | |
def load_dci(fp): | |
text = fp.read() | |
exports = re.search(r"\(export ([a-zA-Z0-9+-=\?!>\*]*\s?)*", text) | |
if exports: | |
for exp in exports[0].split()[1:]: | |
local_table[StringId(exp)] = exp | |
# TODO: imports name .bin files | |
# imports = re.search(r"\(import ([a-zA-Z0-9+-=\?!>\*]*\s?)*", text) | |
# if imports: | |
# for imp in imports[0].split()[1:]: | |
# import_table[StringId(imp)] = imp | |
def load_sid(fp): | |
lineno = 1 | |
for line in fp.readlines(): | |
entry = line.split() | |
if len(entry) != 2: | |
print("ERROR: Invalid entry at line {}: format is <hashid> <string>" | |
.format(lineno)) | |
continue | |
if len(entry[0]) != 8: | |
print("ERROR: Invalid hash id at line {}: must be 8 characters" | |
.format(lineno)) | |
continue | |
hashid = 0 | |
try: | |
hashid = int(entry[0], 16) | |
except: | |
print("ERROR: Invalid hash id at line {}: not a valid hex value" | |
.format(lineno)) | |
continue | |
native_table[hashid] = entry[1] | |
lineno += 1 | |
if __name__ == "__main__": | |
if len(sys.argv) != 2: | |
print(f"Usage: {sys.argv[0]} <script file>") | |
sys.exit() | |
exports = None | |
dci = sys.argv[1].split(".")[0] + ".dci" | |
if os.path.exists(dci): | |
with open(dci, 'r') as fp: | |
load_dci(fp) | |
if os.path.exists("sids.txt"): | |
with open("sids.txt", 'r') as fp: | |
load_sid(fp) | |
with open(sys.argv[1], 'rb') as fp: | |
disassembler = DcDisassembler(fp) | |
disassembler.disassemble() |
95f6b8dd wait-say | |
be1ac62d say-with-context | |
779e6e9e wait-say-with-context | |
159dcdd2 say-pre-roll | |
140d107b pre-roll-vox-event | |
dafe91d1 pre-roll-vox-line-key | |
2279d61e stop-speaking | |
2fd9036a is-vox-busy? | |
71580f30 is-speaking? | |
a2c6b659 suppress-idle-speech | |
60683ccb shut-up | |
f5dbfaa7 voice-disable | |
32be7c35 voice-enable | |
b243c2c9 request-dialog | |
47f17218 dialog-acquire-exclusive-lock | |
eb0ad246 vox-played? | |
a3a22407 vox-completed? | |
6f5e13ba run-dialog-performance-test | |
9f684fa6 entity-set-level! | |
872523ee event::get-attack-info | |
488d3bb8 event-attack-type? | |
6edb6894 event-attack-weapon? | |
566fcba4 event-attack-source? | |
f56f37c9 event-object-damage | |
672ae8aa net-send-event | |
8679c923 broadcast-event-to-npcs | |
17f2da1c facebook-permitted? | |
7716bd68 force-infected-update-splashers | |
92a2fbdc player-disable-meat-shield-struggle | |
4038b641 player-force-meat-shield-struggle | |
7bf62ec6 player-force-flinch | |
3e107981 force-gun-side-left | |
205ae352 force-gun-side-right | |
ee42f3eb set-gas-can-is-full | |
7d89a82c e3-hack-force-camera-side-left | |
8d788dba camera-dont-collide-aim-cam-versus-npcs | |
ecaeed71 camera-get-animated-index | |
20e1da5d camera-set-default-follow | |
8ce62576 camera-force-strafe-look-at | |
97f64dc0 camera-set-slow-controls | |
dcb3081b camera-local-space | |
7d1ac5eb camera-shake-in-zoom-camera | |
291173d8 camera-store-locator | |
d40d2524 camera-restore-locator | |
49d850aa disable-flashlight-layer | |
e0a2bcab camera-force-is-crouched | |
96b50a91 camera-enable-relative-rotation | |
7c6f8323 camera-enable-cross-dissolve | |
b71ca7a3 camera-enable | |
8e04d518 camera-enable-no-focus | |
d76c8b64 camera-dont-reset-on-player-spawn | |
02e9965f camera-abandon | |
29c9e722 camera-disable | |
b5e93ed4 camera-fade-out | |
c31d3021 camera-moved-backwards? | |
d754ef39 camera-disable-all | |
ede188dd camera-abandon-all | |
d57d36e9 camera-aim-override-point | |
3c3d70d3 camera-aim-override-direction | |
0603b595 camera-cancel-aim-override | |
faa7265b allow-camera-cut-compensate | |
a4ac1c2f camera-animation-enable | |
d820968b camera-animation-disable | |
653edcdf force-aiming-camera-ultra-tight | |
0c474223 force-no-shift-camera-zoom-mode | |
5e104076 override-move-rotate-targets | |
92df02e8 player-hide-arrow | |
8dac1f65 kill-dropped-weapons-in-sphere | |
913bc948 translate-y-loop | |
4a6f015a object-on-object? | |
e990b4bd get-object-health | |
317f22c6 get-object-health-pct | |
cf2e79ae set-object-health | |
4cb84841 get-player-down-health | |
37ddf093 grab-rope | |
7107d57e drop-rope | |
4d209d87 detach-rope | |
a49f8426 rope-disable-character-collision | |
a4a7b2e6 rope-enable-character-collision | |
9b509cf9 give-sullivan-flashlight | |
94008bce kill-player-flashlight | |
ead294bd kill-sullivan-flashlight | |
59a3da2c sullivan-flashlight-to-hand | |
11799cd1 sullivan-flashlight-to-waist | |
c37fecc0 attach-flashlight | |
f94e2f06 turn-flashlight-on | |
b0eff27a flashlight-drain-battery | |
81465454 flashlight-reset | |
b1e5fa22 is-flashlight-on? | |
46eabe53 kill-flashlight | |
6a1ea60a get-aim-at-point | |
444c41f1 fire-bullet-without-shooter | |
a69370fd disable-weapon-anim-override-for-one-frame | |
c7fd990c fire-weapon | |
f472f811 fire-weapon-at-target | |
9062b153 emit-bullet-from-spawner | |
05dd6f46 simple-npc-fire-weapon | |
dde27074 set-object-faction | |
e18a9826 get-object-faction | |
42365f84 battle-select-best-spawner-from-group | |
077190db are-melee-prompts-enabled? | |
4895dc59 select-best-schema-spawner | |
1c445345 get-entity-region-process-id | |
8cdd98d5 make-active-character-more-wet | |
b207447a kill-all-projectiles | |
d8ad7497 set-scope-sway-multiplier | |
75729b42 kill-3d-text | |
c3b829bd player-set-good-position | |
6c742763 set-harvesting-enabled | |
cca41f6d harvesting-enabled? | |
2c101629 reset-harvesting-priority | |
39ace3d6 set-harvesting-priority | |
445ed996 get-harvesting-priority | |
cc24252e clear-harvested-bodies | |
e1ded080 start-subtitle-sequence | |
97dce0a2 stop-subtitle-sequence | |
c67bfed2 display-subtitle-text | |
389912a4 clear-subtitle-text | |
503b595e slow-mo-effect | |
6f26c192 stop-sound | |
49b63da6 play-sound | |
385747b6 play-sound-attached | |
3670e863 play-sound-at-joint | |
b1969208 play-sound-at-position | |
c5115628 play-sound-at-bound-frame | |
6d6f58a8 pre-roll-sound | |
00c11b61 use-audio-rain-level | |
3d69b8f7 fma-reset-part-modules | |
5b61666f fma-request-part-module | |
fab05d37 set-render-settings | |
b9eaa98a set-render-variant | |
f12fa0e3 set-render-settings-defaults | |
d862f50c deactivate-blur | |
dcfa292b restore-blur | |
32839068 letterbox-on | |
624bf689 letterbox-off | |
dea49a81 fade-to-black | |
5daf1ddd fade-to-white | |
77e20a49 fade-to-black-pers | |
57505a6e set-black-fade | |
6f684f90 set-white-fade | |
ef5d19f1 fade-audio | |
bda58a56 set-light-fov | |
6b4e7abd spawn-explosion | |
68f64e3c spawn-explosion-npc-only | |
95d6e606 spawn-proximity-mine | |
70b2732a disable-proximity-mines | |
c639ad71 add-dynamic-light | |
92509d49 add-dynamic-light-joint | |
2f5dc938 update-dynamic-light | |
a1d959c1 set-dynamic-light-color | |
28dc0ae4 remove-dynamic-light | |
81269944 attach-light-to-object | |
fbde9a13 set-light-process-intensity | |
ffdf4c6d get-light-process-intensity | |
fac98301 set-light-process-color | |
873bb941 get-light-process-color | |
6d97808c set-object-probe-tree-weight | |
9ac8d61f lean-and-set-ladder-tap | |
0be8135d set-ladder-wall-detection-probe-length | |
76a60252 set-ladder-probe-lean-delay | |
3687b7c1 set-ladder-fake-tap-registered | |
858e0ede set-no-projection-flag | |
7df5b4e3 allow-leg-ik-by-others | |
f3f258be disallow-leg-ik-by-others | |
f1a86ef0 set-ice-cave-stupid-gears-hack | |
5c9a1633 dont-collide-against-allies | |
ca5cf51d has-treasure? | |
9ba847c4 give-treasure | |
248fe6c9 remove-treasure | |
f43e2e57 give-ellie-comics | |
a373f28e give-joel-all-treasures | |
5dc46fdc give-ellie-default-treasures | |
3a88d93b remove-ellie-treasure | |
cd8422b1 give-profile-treasure | |
bc4b4f06 get-joypad | |
f00b13ed hide-hud-but-not-super-soaker | |
44a7360e hide-hud | |
ced6d946 hide-hud-show-buttons-fanfare | |
8b588b25 set-ragdoll-flow | |
896fb068 set-e3-loading-screen | |
47f1fb04 hud-set-timer | |
14887b7e hud-set-counter | |
188de675 hud-hide-weapon | |
bbb9b6e1 hud-hide-reticle | |
0804ee71 play-movie | |
0cd096e7 start-movie-audio | |
d55e5522 reset-actors | |
408bc467 set-player-current-dir-by-spawner | |
3a741cad make-noise | |
6d35f28d sync-audio-meta-data | |
17ae9a8b cache-sound-bank | |
617f9354 cache-sound-stream | |
a2ef05f1 cache-speech-stream-key | |
db22d0d6 cache-music-playlist | |
7a44fc2a sync-vox-meta-data | |
af922c78 sync-vox-igc-meta-data | |
41bf1caf sync-vox-mp-meta-data | |
1e87de60 is-on-screen | |
2f4147d8 play-music-stinger | |
0243b3bd get-current-music-playlist | |
0ef2b272 prefetch-music-stinger | |
b3994643 suppress-music | |
b4ee8f1d set-mixer-override | |
ad1c1740 set-global-sound-register | |
7ba7b379 get-global-sound-register | |
f04325f1 get-and-set-global-sound-register | |
99c0abab inc-global-sound-register | |
675f1960 set-global-sound-variable | |
b1e4bd59 get-global-sound-variable | |
358b2ad3 unlock-tutorial-message | |
6b645139 show-tutorial-message | |
343e1d6c hide-tutorial-message | |
9844df76 show-post-death-tutorial-message | |
0550a9bc calc-new-phase-from-speed-tree | |
dfcfb620 calc-start-phase | |
9ab7f010 calc-start-phase-max-frames | |
353ac3ee calc-start-phase-range | |
d34cab53 calc-start-phase-max-frames-tree | |
7f0bdc94 get-num-frames-in-anim | |
3213826f is-gore-allowed? | |
a4b464c9 is-difficulty-very-easy | |
00ec83d6 e3-fake-pause | |
7608633e is-e3-judges-mode? | |
a54ecab0 is-e3-stage-mode? | |
4ad547ba is-fallon-mode? | |
cba7d8c9 is-outskirts-demo? | |
74c06ece is-focus-test? | |
dbd3d0d8 is-test-task? | |
2a990f91 is-demo-part-2? | |
bff578ab is-t2? | |
dcf596c6 get-difficulty | |
a86d881d get-dda | |
daf9fed2 get-trap-door-index | |
7a0db769 override-fire-flash | |
4b07b550 count-ammo-pickups-within-region | |
87bb73eb player-disable-wall-touch | |
4a5e469f player-check-for-got-hit | |
a028680c spawn-attachable | |
60389c5e attach | |
dd6fcd47 detach | |
df85ea60 tutorial-hints-on? | |
50c97b57 does-auto-save-exist? | |
472480c9 set-focusable-ignore | |
bf697b95 set-focusable-grappled | |
a8024193 kill-all-breakables | |
50dc2915 kill-all-dropped-weapons | |
ee80843f add-lensflare | |
f1c0879d spawn-entity-facing-away-from-player | |
8fc62cca wait-spawn-entity-facing-away-from-player | |
b8df7eba spawn-low-health-entity | |
49265290 is-wearing-backpack? | |
58b2d6fd look-at | |
ea4f3c96 look-at-object | |
583d42f2 clear-look-at | |
514a52bc spawn-distraction-audio-event | |
36f45a80 draw-splash-screen | |
e988c89c get-weapon-process-id | |
e8722347 is-line-in-smoke | |
4add2f89 clear-annotate | |
f2766c26 annotate-object | |
780b9376 annotate-var | |
ed3e299c annotate-region | |
6dc692ac start-playback-on-material-texture | |
d4674d47 stop-playback-on-material-texture | |
f5559987 get-player-buff-level | |
3e91df67 give-player-buff-level | |
12d5de02 get-buff-amount | |
eaf4515e get-buff-symbol-value | |
1ffe603f set-hud-button-location | |
0832be4e set-recieves-light-from-player-flashlight | |
32d3de41 set-cast-shadows-in-player-flashlight | |
717e8c4e make-listen-mode-noise-at-position | |
f250ede9 player-playing-injured-partials? | |
25ecff5f openable-is-locked? | |
60fdbf43 openable-is-open? | |
936d0bfd show-low-health-tutorial | |
939be4b1 disable-low-health-tutorial | |
4cde3e05 is-listen-mode-enabled? | |
ae985ca7 hud-scope-reticle-display | |
7b4ebcc1 heard-ellie-joke-section | |
19c6fa58 is-spdlc? | |
a0954e78 is-current-language-english? | |
b247928f force-bloom-radius | |
841cb3bf phantom-shooter-enable | |
cf0f9556 phantom-shooter-set-target-process | |
9b840cd0 phantom-shooter-set-facing-bound-frame | |
786e672b phantom-shooter-enable-target-tracking | |
91ed86fe phantom-shooter-shoot-and-kill-target | |
d45b663d simple-npc-clear-requests | |
11d5b137 simple-npc-get-loco-state | |
82ee0196 simple-npc-force-loco-state | |
531b2883 simple-npc-request-idle | |
1eb4517c simple-npc-request-spline-move | |
4ee8a81a simple-npc-request-spline-flock | |
ee1cb040 simple-npc-request-spline-flock-with-mover | |
8f02b6dd simple-npc-request-flock-to-goal | |
f97433af simple-npc-is-female? | |
143c2925 simple-npc-reached-goal? | |
7e88e127 simple-npc-request-chase | |
e49e20c3 simple-npc-get-chase-target | |
1191adda simple-npc-set-anim-overlay | |
b1be8da2 simple-npc-set-anim-params | |
3e4a8890 simple-npc-set-nav-group | |
d65f7f82 simple-npc-enable-adjust-to-nav-mesh | |
4d8c01cb simple-npc-set-movement-speed-scale | |
fc073392 simple-npc-set-turn-rate-scale | |
0bbacf8a simple-npc-find-nearest-victim | |
580ae21e simple-npc-find-neighbors | |
8062508d simple-npc-die | |
34964ffa restore-npc | |
b886e873 restore-npc-from-limbo | |
89fc7b69 c-spawn-npc-limbo | |
80cd27ad c-spawn-npc* | |
d0b21510 remove-defunct-npcs | |
695133c3 npc-allow-camera-clip-during-igc | |
1a6601a0 npc-mark-as-defunct | |
75039236 npc-set-default-to-search | |
2bbee040 npc-my-battle-manager-id | |
5284d231 debug-caption | |
9ae36e55 npc-send-to-limbo | |
b15f78eb npc-is-initial-spawn | |
90c43236 npc-get-limbo-restore-state | |
6d7e2b5f npc-set-combat-params | |
ef527bc0 npc-smart-look-around | |
c4823c39 point-at | |
65838dd8 point-at-object | |
4b163339 clear-point-at | |
238a99a6 npc-die | |
56eefcb1 npc-disable-ragdoll | |
24b4acf3 all-enemy-npcs-die | |
69bec34b npcs-get-player-position | |
ba80ef41 npc-set-combat-behavior | |
923e28ac npc-set-targeting-params | |
9d4025fb npc-set-outer-cover-frustum-angle | |
59e2a568 npc-set-inner-cover-frustum-angle | |
9f80d21a npc-set-friend-in-line-of-fire-radius | |
0df8a402 npc-use-closest-cover | |
cd422d55 wait-npc-use-closest-cover | |
91e2b256 npc-use-closest-perch | |
51583b01 wait-npc-use-closest-perch | |
017ff878 npc-cover-throw-grenade-anim | |
6cf8461b npc-use-cinematic-action-pack | |
5c518d05 wait-npc-use-cinematic-action-pack | |
0c66e9b0 npc-enable-grenade-friend-check | |
e4fc48c3 npc-killed? | |
e3c542be npc-spawned? | |
e5325bd4 npc-alive? | |
c9f4d633 npc-infected-threat? | |
28189ca9 npc-lobotomised? | |
392492ef npc-enable-skill | |
3a7b18ba npc-disable-skill | |
4ed55c14 npc-using-skill? | |
4830ee74 npc-stop-script | |
2608ede1 npc-using-motion-type? | |
63b30199 npc-add-traversal-skill | |
56f22e2c npc-remove-traversal-skill | |
31351ecc npc-infected-set-patrol-route | |
314cfbb7 npc-set-patrol-search | |
e72b7b1b wait-npc-patrol | |
42138eea net-npc-patrol | |
d8260e82 wait-npc-patrol-search | |
b4c05414 npc-patrol-search? | |
24af2568 wait-npc-scavenge | |
28c975e0 npc-set-emotion | |
2290eecd npc-set-ignore | |
76704022 npc-set-allow-adjust-head-to-nav-map | |
4991d3d8 npc-set-find-nav-mesh-y-threshold | |
8be2feee npc-enable-character-collider | |
27b616c3 npc-disable-character-collider | |
3011cfdb remove-nav-mesh-crouch-constraint | |
32cfdf75 npc-force-strafe | |
833d78fb npc-disallow-strafe | |
f6cb805b npc-enable-block-first-tap-delay | |
36caddc8 npc-set-zone-region | |
3f7de282 npc-set-zone-marker | |
f05480c1 npc-lock-to-zone | |
9a180dd8 npc-clear-zone | |
8e4b5e8c npc-set-zone-center-and-radius | |
eaa06d24 get-npc-search-target-point | |
ba99fef0 get-search-dead-body-point | |
2ccec08c get-gesture-name-from-speaker-direction-and-weapon-type | |
13619da1 npc-get-time-since-saw-entity | |
a41bbcb9 npc-get-random-point-in-zone | |
1554b39d npc-reject-request-to-investigate | |
2092946e npc-reject-request-to-return-from-investigate | |
f4ccad4f npc-is-missing? | |
dd5841d5 npc-check-for-missing-friends | |
4875b09d npc-target-in-zone? | |
eb265e4d npc-in-combat? | |
84be6cf9 npc-combat-behavior-time | |
fec8d941 npc-set-movement-speed-scale | |
4ab54ecc npc-set-zone-update-method | |
2816acd3 npc-set-zone-center-object | |
91717c44 npc-grab-object | |
2e1d3291 npc-drop-object | |
c4cac9a0 npc-destroy-held-object | |
4d008bbc npc-set-perfect-aim | |
ea79b72c npc-set-to-player-faction | |
95ca7e04 npc-make-others-aware-of | |
2fc044de npc-enable-shooting | |
6157e60a npc-set-shot-damage-multiplier | |
6333da76 throw-grenade | |
73f7057a npc-throw-grenade-at-player | |
c753b054 npc-set-vehicle | |
2361de65 npc-set-turret | |
c4f8a990 npc-set-gunner | |
32866002 npc-set-defend-point | |
8a80b796 npc-clear-defend-point | |
25f05b04 npc-set-com-group-id | |
fd05e64c npc-get-time-since-in-investigate | |
e130a8b3 npc-is-aware-of? | |
504c24f0 npc-make-aware-of | |
a386a090 npc-combat-investigate | |
ed8a3df5 npc-make-aware-of-at | |
1e857d89 npc-forget-target | |
78fdc8d9 npc-start-search | |
1049852a npc-search | |
c6331a18 npc-search-zone | |
c95a1af6 enable-npc-search-update-dialog | |
55345489 npc-can-see? | |
0a5fa063 npc-can-see-target? | |
2361a73d npc-has-confirmed-status? | |
6054bcdd npc-set-demeanor | |
00e100a5 npc-get-demeanor | |
f8dab430 npc-in-limbo? | |
a13664b3 npc-teleport-to | |
488df8df npc-move-to-dynamic-speed | |
44c8d2a5 wait-npc-move-to-dynamic-speed | |
34758859 npc-move-to-dynamic-speed-plane | |
1c7f836d wait-npc-move-to-dynamic-speed-plane | |
0424a55a npc-move-to-dynamic-speed-goal | |
79ddd6ca wait-npc-move-to-dynamic-speed-goal | |
7cb0bb43 npc-move-to | |
d85e63ff set-global-fight-params | |
21d05d67 wait-npc | |
9240b713 wait-npc-move-to | |
6543fd73 npc-move-to-in-search | |
a5f97424 wait-npc-move-to-in-search | |
2d382cfe npc-move-to-player | |
64188c96 wait-npc-move-to-player | |
cadc6d12 npc-give-player | |
65dc8951 wait-npc-give-player | |
b89b4c90 npc-move-to-spawner | |
8e74a4e8 wait-npc-move-to-spawner | |
3f692bed npc-move-to-spawner-in-search | |
0fc0e0f3 wait-npc-move-to-spawner-in-search | |
8c4fc0df npc-move-to-entry | |
77a41349 wait-npc-move-to-entry | |
4db7826b npc-stand-and-shoot | |
8791ff87 npc-move-through-tap | |
a6cda7a5 wait-npc-move-through-tap | |
6f3cb12d npc-teleport-to-ap | |
2b949798 npc-stop | |
e3b772a8 npc-fire-weapon | |
ee5c93b6 npc-reload-weapon | |
c6ebc1fb npc-aim-at-point | |
0f6f6948 wait-npc-aim-at-point | |
12f1eb31 npc-aim-at-object | |
e91a38a7 wait-npc-aim-at-object | |
f7d000b4 wait-npc-surprise | |
fefbd6c7 npc-surprise | |
37332723 npc-stop-aiming | |
d96c9f58 npc-lower-weapon | |
c46f6c24 npc-set-hearing-multiplier | |
8952502b npc-set-distraction-hearing-multiplier | |
aea6af12 npc-sniper-set-watch-area | |
f8b9878c npc-sniper-disable-watch-area | |
c73764df npc-is-nav-map-position-blocked? | |
e8c6c993 npc-group-alive-count | |
61512ae0 npc-group-spawned-count | |
034b1021 npc-group-dead-count | |
97e6e340 npc-group-find-first-alive | |
90362d38 npc-prefer-target | |
2f9f4c95 npc-nonprefer-target | |
c2633ebc npc-swap-with-ragdoll | |
91c47d81 npc-set-corpse-timeout | |
41bd32d4 kill-all-ragdolls-in-region | |
37a3154f npc-disable-ragdoll-corpses | |
e0149cb2 set-searchmap-diffusion-speed | |
94a52ba0 npc-drop-weapon | |
c52e64f4 npc-take-weapon | |
df5a7a07 npc-give-weapon | |
19f5239a npc-drive-vehicle-to-point | |
a70867aa npc-drive-return-to-patrol-timeout | |
de762e56 npc-make-listen-mode-noise | |
925d4b61 npc-make-loud-listen-mode-noise | |
395f20d1 npc-set-show-listen-mode-ally-icon | |
d331a5b5 npc-set-weapon-visible | |
2f7c45eb npc-has-firearm? | |
1ad92809 npc-has-grenades? | |
572d826c set-health-parameters | |
1272e557 npc-change-vision-settings | |
4e3f7482 npc-attach-to-battle-manager | |
196db2d3 npc-update-move-dest | |
8715973e npc-set-accuracy-multiplier | |
56a2902b npc-in-melee-with-player? | |
9754326d npc-entered-action-pack? | |
d815d9a6 spawn-dynamic-contextual-look-hint | |
1409f930 npc-allow-weapon-drop | |
31968965 npc-set-allow-lose-target-out-of-zone | |
46944d98 npc-turn-to | |
a86441c8 wait-npc-turn-to | |
83adc6c2 wait-for-npc-not-busy | |
b2af6c17 npc-has-entities? | |
504d8b8c npc-is-on-nav-mesh? | |
7add53d9 npc-is-player-in-front? | |
01630394 npc-play-facial-anim | |
1a69b5ad npc-alive-count | |
1a933d69 npc-max-count | |
bf0f9313 npc-limbo-count | |
e8c76e33 npc-throw | |
1f219b1b wait-npc-throw | |
33709653 npc-max-limbo-count | |
4d44ba7d npc-clear-limbo-records | |
9d7634c6 npc-clear-limbo-records-for-npc | |
0b765dc4 npc-is-in-scripted-anim? | |
50b1376b npc-fired-recently? | |
1e3d6840 npc-playing-scripted-animation? | |
bb1575df npc-set-remap | |
c08bea01 enable-melee-target | |
ace81e0f npc-shoot-and-kill-target | |
a706995d npc-enable-player-shoving | |
c2e837b5 npc-get-look-id | |
14f1565d npc-get-melee-type | |
631ae1c2 npc-get-motion-type | |
278e7061 npc-weapon-down | |
37e00e77 npc-weapon-up | |
33633de2 npc-holster-weapon | |
7a439d8a wait-npc-holster-weapon | |
3b698f25 npc-kill | |
7ca8796e npc-audio-gameplay-event | |
5bd74a1b npc-set-cover-params | |
942f9b8f npc-set-surprise-params | |
5ba0372a npc-set-infected-params | |
56daf1d5 infected-allow-sleep | |
2871dfd1 infected-is-asleep? | |
d5b03231 infected-is-distracted? | |
a3601bcb infected-is-sniffing? | |
091cc3d6 throw-infected-pustule | |
546c162c infected-get-time-since-armor-pustule-burst | |
91cd60d5 infected-make-distraction | |
d5b98649 npc-do-behavior | |
7ab9620a wait-npc-do-behavior | |
58f57f9b npc-stop-behavior | |
55215a29 behavior-infected-canvass-params | |
454ac695 behavior-turn-to-face-params | |
14dd249a behavior-shoot-stationary-params | |
d80e064b behavior-cover-shoot-params | |
a85669fd behavior-cover-params | |
04c05ae3 behavior-move-to-params | |
01fdf736 behavior-shoot-moving-params | |
1598d905 npc-set-script-mode | |
8c6c653f get-npc-archetype-id | |
b5a1dda5 get-npc-archetype | |
c18fbdc9 npc-set-melee-skill-settings | |
86579ad5 wait-npc-enter-zone | |
7a5ba1e3 npc-clear-request-movement | |
3229bbf9 npc-request-hold | |
d9fcc3dc npc-set-combat-follow-group | |
addb00ed npc-clear-combat-follow-group | |
f731c7f6 npc-request-explore | |
c1de2f8e wait-npc-request-explore | |
3ef77f9d npc-request-follow | |
5993092c npc-allow-follow-flee | |
cf06bfbc npc-buddy-combat-loose | |
5edd69ed npc-request-lead | |
9759c15e wait-npc-request-lead | |
4dd51af8 npc-request-buddy-cover-post | |
5fa020d3 wait-npc-request-buddy-cover-post | |
5f224a88 npc-request-buddy-open-post | |
9977336f wait-npc-request-buddy-open-post | |
97e70681 npc-request-dont-attack | |
aab59aad npc-request-always-attack | |
7d44d995 npc-request-tommy-attack | |
7b2238d3 npc-request-default-attack | |
bbbcd98c npc-fire-once-at-position | |
6d572015 npc-holding-pick-up-item? | |
74957908 npc-buddy-allow-warn | |
29d9283c npc-buddy-allow-gifting-combat | |
f50e73c3 npc-buddy-allow-gifting-explore | |
f9dfad68 npc-disable-flat-vision-cone | |
eaf7df14 npc-buddy-allow-gifting-follow | |
adf134a9 npc-buddy-enable-corpse-inspect | |
bbc8d433 npc-buddy-allow-end-combat-warn | |
82b7da6c npc-buddy-end-combat-warn-allowed? | |
e6c6c853 npc-buddy-allow-ambient-vox | |
1259c92e npc-allow-combat-remarks | |
3283ce05 npc-faction-allow-combat-remarks | |
088721b3 npc-set-buddy-remarks-mode | |
f99fd1c1 npc-buddy-allow-item-remarks | |
9ff048ae is-any-buddy-speaking? | |
cf9a32b2 npc-nearest-ally | |
b39d79e7 npc-override-hit-reaction-dir | |
b40ac967 npc-in-cover? | |
1ffa51df npc-set-throwable-target | |
ffd61356 npc-dead-and-not-charred? | |
c0a474fd npc-charred? | |
961b3e8e npc-on-screen-and-visible? | |
ae47380d npc-on-screen? | |
7119a63c npc-e3-demo-shotgun-finale | |
518079ad npc-get-on-screen-time | |
f36a92b1 npc-set-hud-warning | |
015c8973 npc-limb-is-dismembered? | |
af8d0aff npc-can-dismember-limb? | |
dbc785a5 npc-dismember-limb | |
e570936e npc-can-damage-limb? | |
4858c2a2 npc-damage-limb | |
f53521be npc-is-decapitated? | |
0f0d4f61 npc-get-state-desc | |
c3e878ff npc-can-see-flashlight? | |
783c564c npc-flashlight-controller-is-stable--internal | |
df4ad9d7 npc-is-flashlight-drawn? | |
b5ab2bb4 npc-set-requested-motion-type | |
6fe19e6f npc-set-arrival-motion-type | |
c4f880f5 dark-npcs-see-flashlight | |
ed79cd20 force-disable-all-ai-weapon-ik | |
4e58d7e3 npc-set-arrival-distance | |
d3393302 npc-get-arrival-distance | |
2e78a235 npc-set-force-player-push | |
88737c67 npc-set-player-evade | |
28b531c7 npc-set-player-collide-gesture | |
9ef3a065 npc-navigation-in-progress? | |
3c2cd983 npc-get-entered-ap-type | |
4dc13b2f npc-in-frenzy? | |
21527769 npc-set-primary-weapon | |
73438c3d npc-reset-primary-weapon | |
084ebb58 wait-npc-turret-aim-point | |
013a11fe npc-get-prop | |
9c4e92fc npc-get-time-since-targetted | |
0aab2d08 npc-is-in-cover? | |
63e74530 npc-enable-hit-reactions | |
a818ada9 npc-change-prop-parent | |
173362eb npc-spawn-prop | |
63bfd6df npc-hide-from-listen-mode-for-one-frame | |
c5713bf4 is-npc? | |
62500a8e npc-test-dialog | |
c11b7956 npc-log | |
bdb5798b wait-gesture | |
be964e38 gesture-to-point | |
9f2d0a3e get-currently-playing-gesture | |
8157ed96 allow-idle-gestures? | |
1f69bbc1 disallow-idle-gestures | |
184ef728 camera-set-strafe-run | |
3d5a351c camera-set-strafe-sprint | |
c722ae4d camera-set-strafe-crouch | |
b84fe955 camera-set-strafe-jump | |
40c0e094 camera-set-flashlight | |
7c2f7800 camera-set-push-pull-override | |
99cb63c9 camera-set-flashlight-crouch | |
e5fc496c camera-set-strafe-melee | |
58c76e45 set-e3-hack-crouch-camera-settings | |
a9b8d56c photo-mode-clip-to-ceiling | |
e937ebe4 net-can-earn-money? | |
7708f645 net-coop-host-script-id | |
bfe7ba4e net-coop-team-failed? | |
601d65ab net-current-net-task | |
720a7247 net-current-net-subtask | |
9921bb55 net-current-net-map-id | |
529e3f1e net-current-round | |
cfcfe09a net-spawn-entity | |
c371f4a6 net-spawn-entity-at | |
ef97df8a net-kill-entity | |
eb633936 net-all-players-dead? | |
51e8cebf get-team-color | |
2eaa0a3d set-interrogation-winning-team | |
3d85f092 set-revive-settings | |
1f8c0a58 net-draw-objective-icon | |
b48148b6 net-draw-popup | |
05752cfc net-player-coop-id | |
2335480a net-npc-confirm-coop-players-contact | |
85afd403 net-get-player-by-net-id | |
37c58ef3 net-is-player-local? | |
4e0a4ba1 net-get-joypad-from-player | |
a32306d0 net-get-net-id-from-joypad | |
1f9f64e3 net-get-net-player-from-joypad | |
3335df3d net-get-net-id-from-player | |
6664a2bf net-get-team | |
50c854ee net-get-npc-fight-bound-frame | |
1da4f418 net-apply-npc-fight-damage | |
21c7b6a1 net-character-killed? | |
91976cca net-get-carry-object | |
a4200079 net-get-held-object-spawner | |
b88990b0 net-set-booster | |
18319b3a net-get-booster-level | |
36ac1a31 net-get-buff-amount-float | |
fe7f13ae net-get-buff-amount-int32 | |
8f971ab5 net-get-grapple-time | |
b6365edd net-update-fight-ref | |
46f27e55 net-active-player-count | |
16903a3f net-go | |
27888b29 client-net-go | |
9e47860f net-set-fail-reason | |
e463f09c net-all-players-spawned? | |
053948dc net-all-players-out-of-idle? | |
0d00e5f8 net-set-float | |
c5d3ec67 net-set-int32 | |
8a9ede38 net-set-boolean | |
d5e2614f net-set-symbol | |
ab284eaa net-get-npc | |
09995daa net-set-counter | |
e043c749 net-set-timer | |
d759b3a2 net-set-waves | |
4114aa2c net-set-interrogations | |
a524d95a net-set-lockbox-percent | |
c79ed6be net-set-message | |
dcce1165 net-signal-start | |
49bb70a4 net-igcs-enabled? | |
46e0f6a9 net-is-matchmaking? | |
ca6127b4 net-joined-late? | |
85d179ae is-multi? | |
d670a567 net-get-game-type | |
f9dd8a4f net-reparent-players | |
7b316107 net-start-countdown | |
24f74e8a net-split-screen? | |
5983248d net-joypad-valid? | |
511a0e63 net-get-screen-index | |
ca6c02b2 net-player-blocking? | |
ea074f56 net-get-secured-team | |
d385ac70 net-fade-to-black | |
06d4f65a net-fade-from-black | |
2790c9cf get-net-owner | |
25966a62 net-increment-stat | |
0a4f15ed net-increment-stat-local | |
1a650fb4 net-increment-player-score | |
41b5137b net-increment-team-score | |
f52dff00 net-get-score | |
086c135c net-get-stat | |
a3dbbf91 net-get-rounds-won | |
5c2254c4 net-player-exposed? | |
772e6289 net-set-player-spawner | |
65bb7f97 net-get-last-living-team | |
9b1b35cd net-get-team-count | |
1c04700c net-get-team-respawn-pool | |
d7297a0a net-kill-all-mines | |
4ba6a73b net-add-radar-icon | |
8f9a4a09 net-radar-and-objective | |
57e5a6e9 net-add-respawn-weight-point | |
e0fe121d net-clear-respawn-weight-point | |
d64c0047 net-clear-respawn-weight-points | |
c71b0adf net-set-min-respawn-wait-time | |
927d3ccd net-set-wipe-respawn | |
0af05693 stat-value? | |
356d1db1 increment-stat | |
51d790ed flag-stat | |
d6aeac89 reset-stat | |
0e7a9ff4 log-finish-game | |
7a7db2cd log-finish-dlc | |
fe05bcfd set-stat-bit | |
504571e6 wait-holster-player-weapon | |
90fff8b1 holster-player-weapon | |
c6728174 player-in-combat? | |
34220ce8 set-tension-mode | |
780538ce get-tension-mode | |
22e90916 override-aim-fov | |
6ec37668 reset-aim-fov | |
34e20686 player-has-snuck-away? | |
2722ade3 fall-to-death | |
b555b6e3 disable-fall-to-death | |
fad44485 player-in-region? | |
e885c4d4 player-in-state? | |
53838e80 player-is-aiming? | |
97b2fd28 player-in-cover? | |
5d2d16c9 disable-edge-grab | |
792ac0c2 player-force-edge-fall | |
e99560ae is-move-mode-relaxed? | |
7f4eefa5 set-move-mode | |
16ea1a1d set-walk-type | |
ede11587 set-run-type | |
0a136990 set-walk-relaxed-type | |
60d89fba set-run-relaxed-type | |
9b10511f set-sprint-relaxed-type | |
f99d6f23 set-walk-uneasy-type | |
96634eae set-run-uneasy-type | |
abe9d50c set-sprint-tense-type | |
0d672701 set-super-sprint-tense-type | |
e1758d92 set-crouch-walk-type | |
49a4d1f5 set-crouch-sprint-type | |
3b28e552 set-run-tense-type | |
e7638ca3 set-walk-tense-type | |
d09848fe player-disable-melee-swarmed | |
e8e13e7d force-distance-stop | |
da533edc allow-back-jump-anywhere | |
835b6fe2 set-reverse-jump-enable | |
2f1bd5dd get-player-platform | |
3a646fb5 player-force-jump-at | |
ab7b43b9 player-climbing-up? | |
11acabb5 player-facing-position? | |
024b9be2 set-player-invincible | |
5cbb48a8 no-hit-reactions-when-invincible | |
01603e59 player-invincible? | |
ab1b6459 set-player-infinite-ammo | |
bfcb2d41 set-player-draw-weapon-in-combat-tension | |
2fae80c5 kill-player | |
95bbaead kill-player-no-anim-by-id | |
c63eaefa kill-player-no-anim | |
f1811405 player-go-ragdoll | |
0f13fdaa player-force-aiming | |
0fdcb8c4 player-force-aiming-time | |
4cb98983 player-force-scope-zoom | |
e96cd997 force-uboat-collision | |
c6e56494 player-run-speed | |
402facab disable-dyno-jump-fail-looks | |
86550364 enable-dyno-jump-fail-looks | |
4ed6b3a5 disable-force-ledge-drop | |
47a854a4 set-cover-push-back-dist | |
4cbbc128 swim-enable | |
2c5c5a4a swim-disable | |
a8507ebc dive-enable | |
114e9eef dive-disable | |
5542401b swim-allow-stand-on-bottom | |
315fb50b swim-disallow-stand-on-bottom | |
fa72a080 force-player-swim | |
e6826441 player-swimming? | |
b6be78bd player-diving? | |
34a450aa player-water-over-head? | |
3e2b636c player-swim-carry | |
9e5786ed player-swim-flow | |
a6061718 get-player-breath-level | |
dbf42d58 set-player-breath-level | |
621b4892 set-player-breath-settings-id | |
1f0e45cc player-set-max-swim-depth | |
e148f705 set-player-scripted-crouch-mode | |
d7ea5232 is-player-crouched? | |
b1da0d91 set-swim-drag-multiplier | |
6409bea0 create-belt-attachment | |
212f3614 weapon-set-reset | |
c67f2bb8 player-pushing-object? | |
928ac7fc player-climb-up | |
4a0022e9 player-hanging-near-spawner? | |
73ca3fa4 player-get-closest-edge-bound-frame | |
788f222d player-disable-jump-from-edge | |
c4eaaa65 player-force-shorter-jumps | |
8f89203b player-disable-flat-jump | |
b955b8b7 player-force-hard-land | |
cc5b827b player-disable-cover | |
7ee5039e player-disable-ledge-grab | |
eb1480fe disable-vault-to-edge | |
81b0dd6e player-disable-controls | |
bb2c639d player-disable-controls-explicit | |
d7f9eb4f player-disable-no-target-jumps | |
f4f2c4ad player-enable-orient-to-edge-mode | |
68103719 player-enable-orient-to-edge-vent-mode | |
7d2995c3 player-disable-auto-stand-up | |
3cf1c20b player-enable-move-tracker | |
cb550f6b player-initiate-melee | |
f86db330 disable-player-cover-exit | |
21e74b93 player-set-teaching-combo-mode | |
3220edd8 player-force-combo-medium-tutorial | |
b01c8169 player-force-combo-light-tutorial | |
73d95253 get-melee-teach-dest | |
0fc620ea player-force-fight-finisher | |
87fba57c player-force-num-punches | |
88a2d5c2 player-set-prone-mode | |
06f6d605 player-push-forward-speed | |
26129579 player-enable-gear-climb | |
6694c1ba player-force-near-dyno-jumps | |
6bdc75a8 player-no-edge-fall | |
4a5a1790 choose-stumble-anim | |
699fb2ef choose-stumble-anim-with-space | |
548b9030 player-has-weapon-and-ammo? | |
03b61318 player-has-weapon-and-no-ammo? | |
10738a1a player-get-selected-weapon | |
f2db441a player-has-weapon? | |
c9048f75 player-has-weapon-in-inventory? | |
7ad75ba8 player-has-slot? | |
05c060ac player-get-weapon-in-slot | |
b5857b16 player-base-get-weapon-in-slot | |
3876a6ef player-force-self-fade | |
9936b3c3 player-disable-auto-reload | |
8ecf67f4 force-player-no-crouch | |
3d37a8aa give-player-weapon | |
d45a41b4 give-player-weapon-inhands | |
3d4cf83a give-player-weapon-upgrade | |
1b0c4705 make-free-slot-for-player-weapon | |
2f025ad9 get-player-weapon-upgrade | |
8c21c6a5 get-player-weapon-upgrade-by-name | |
1f821947 get-weapon-upgrade-cost | |
40eda01e player-clear-inventory | |
b4d5be79 give-player-ammo | |
3efcd59e get-player-total-ammo | |
20e8481f get-player-max-ammo | |
677ac6c5 get-player-weapon-clip-size | |
379be9fd remove-player-weapon | |
a60ee080 player-aim-at-attach-point | |
5bb8329c player-remove-weapons | |
80bafe8c set-player-max-fall-height | |
844e9fd7 force-collision-for-aim-focus | |
c9b3d52a player-force-dyno-jump-up | |
ac8a12d2 player-disable-jump-away-from-edge | |
9c5069bd player-auto-aim | |
c08b6878 get-grapple-ap-ref | |
42dbebfe player-take-melee-damage | |
e8338a3e player-take-crossbow-damage | |
892e5d97 set-player-health | |
19800ed3 get-player-speed | |
671ccc4e get-player-velocity | |
174c4f7e set-target-spawner-angle | |
60c027ef disable-look-around-dof | |
b6b6e273 disable-low-cover-exit-around | |
e8426144 player-disable-cover-switch | |
45f8cf7b player-force-enable-quick-turn | |
dba15993 player-set-cover-dir | |
c33838c5 player-set-cover-enter-spawner | |
73f9441f player-set-camera-space-spawner | |
5120aff2 tilt-adjust | |
184280d1 player-force-stealth | |
c64a74ba disable-stealth-sound | |
ef77b6e7 player-disable-blindfire-targeting | |
0f17b9c6 player-enable-ladder-placement | |
055b1af4 player-no-drop-ladder | |
b1d6a745 player-no-vertical-drop-ladder | |
07bf773e player-pickup-ladder-from-middle-only | |
c979815d player-allow-pickup-ladder-in-combat-or-stealth-tension | |
934c967b player-allow-pickup-ladder-at-bottom-only | |
a589718b player-force-allow-place-plank-across-gap | |
12fd00cd set-plank-place-across-gap-find-navmesh-height-threshold | |
95a7059a player-able-to-lean? | |
f59ea115 player-force-carry-ladder-plank | |
15aef90b player-force-no-stealth | |
6f570c9d player-disable-cover-exit-over | |
258df119 force-high-ledge-drop | |
1dc1d601 player-unparent | |
931eb73c disable-follow-camera-collision | |
e4549025 get-player-carried-object | |
d7539738 force-hair-anim | |
f69eb865 player-in-npc-way? | |
ce9461c8 set-player-on-collapsing-building | |
d76a667d force-death-camera | |
ec27d02a set-player-jump-spawner | |
c3366842 player-force-hanging | |
79ecfbdc player-disable-edge-180 | |
4330e22d player-disable-jump | |
ebfe460d player-no-reload | |
c2f6486d player-disable-dyno-drop-to-foreground | |
029bd1fc player-foreground-edge-search | |
dd9574eb player-in-friendly-village | |
38040704 player-disable-melee | |
f1b16e3a set-player-no-igc-kill-grenade | |
fb0eadbd player-fire-weapon-at-reticle | |
c0988264 draw-reticle | |
169759b5 player-set-min-fall-dist | |
f712ec10 force-vault-to-edge | |
04e41ebc set-player-climb-spawner | |
15b08523 player-hide-weapons | |
c92630f2 player-hide-long-weapons | |
6c6eab6e player-use-large-npc-edge-collision | |
3385fa01 player-on-narrow-edge | |
6456f574 player-prefer-dyno-jumps | |
c584239b maintain-tension-mode | |
3dc64b27 player-hide-this-frame | |
75fddb26 player-disable-from-edge-jumps | |
8e83955a player-disable-brutal-melee | |
c5df59ce player-set-dyno-jump-aim-angle | |
2a0b2311 player-train-wreck-dyno-jump-hack | |
ca1772c6 player-edge-character-relative-controls | |
6c5c0a69 player-allow-push-off-ledge-stealth-kill | |
9b47d004 player-set-corner-climb-dist-scale | |
325747fc player-set-custom-inv-pages | |
97bdab58 player-disallow-long-gun | |
033de9f7 player-instant-draw-weapon | |
95766a55 player-instant-draw-consumable | |
44f3ec5d player-draw-weapon | |
bf9c3613 player-disallow-consumables | |
b1a01483 player-disallow-weapon-slots | |
9a2f441d player-draw-weapon-by-id | |
8984035e player-instant-draw-weapon-by-id | |
492de666 demo-reset-defaults | |
75f6aa32 get-player-edge-object | |
1d74f02e get-player-edge-object-joint | |
be172fcd player-aim-time | |
b0ee5f5b player-time-since-cover | |
94bae94b player-time-combat-tension | |
bde99ae7 player-teach-combo-triangle? | |
518ed169 player-teach-combo-square? | |
bc643731 player-clip-percent-full | |
8bccef26 player-weapon-num-bullets | |
3b502bdb player-move-to | |
061ad4d4 wait-player-move-to | |
0174dd00 player-turn-to | |
3c3e220f wait-player-turn-to | |
164533b5 player-move-to-npc-and-lean | |
681d5ac5 player-move-to-and-lean | |
93b37637 player-move-to-and-cross-gap | |
9c0ef731 force-set-lean-ladder-ap | |
85fbb388 force-set-lean-ladder-ap-direction | |
b485d8aa player-enable-brawl-mode | |
722e43a8 player-enable-brawl-strafe | |
3ff825f1 enable-melee-spline | |
b0a56cad player-force-brawl-look-at-target | |
02ff785f player-very-long-tail-func | |
2bbee476 player-get-align-speed-from-anim | |
fd4fa39d player-get-translated-anim-name | |
6717e5fa set-player-base-look-gesture | |
47df8d3a reset-player-base-look-gesture | |
260ef9b8 set-player-random-lookats-enable | |
4e047c1d set-player-force-look-in-camera-direction | |
a4217db3 hack-anim-phase-func | |
6db8b72c player-set-cover-super-tense | |
6bc33111 player-match-speed-phase | |
30f51cb7 interact-icon-shown? | |
c741827d player-can-push? | |
cd4ec05d set-player-inventory-count-by-name | |
20733070 get-player-inventory-count-by-name | |
3e72fb94 player-use-inventory-item | |
01bcc517 player-shiv-durability | |
d6c7b8e0 player-learn-recipe | |
0a356f73 player-show-recipe-notification | |
7a4394ea player-knows-recipe | |
da3ba3bc player-enter-workbench | |
dc9c3ecd player-exit-workbench | |
2d8641b2 player-update-weapon-upgrade-page | |
4aefb2ae player-collectibles-page-only | |
b9c6b597 player-can-climb-jump? | |
2861682e set-player-in-blizzard | |
25ec4f8a set-player-hunting | |
b4b73f39 player-set-wade-current | |
7cf5c5cd player-constrain-to-spline-corridor | |
9138f4a8 player-check-for-interactables-during-igc | |
63280c29 player-disable-face-flashlight | |
1effe8b2 player-get-current-move-mode | |
c4ba1ddf player-is-in-idle? | |
0ded828b set-player-new-look | |
303cd9b2 player-allow-run-away-vox | |
4a78255a player-set-collision-radius | |
9c5fe987 player-disable-slope-speed-scale | |
61612d07 player-set-generator-minigame-enabled | |
1790579b player-set-generator-minigame-progress | |
66fffd01 is-generator-good-timing | |
4f452a5f get-push-object-ap | |
a3d1ff12 get-push-object-ap-no-binding | |
43d0e45d get-adjusted-to-ground-ap | |
718df3d0 push-object-start-lerp-to-position | |
7c9b7fd6 push-object-stop-lerp-to-position | |
55b05c2b player-limb-is-dismembered? | |
8767cd71 player-can-dismember-limb? | |
9c785930 player-dismember-limb | |
2a1612db player-can-be-executed? | |
1d337e0c player-set-animated-backpack | |
ddcd85b2 player-clear-animated-backpack | |
fac21d92 player-force-carry-child-walk | |
647d7fe6 fade-out-screen-damage-fx | |
57f94c8d player-disable-friendly-fire | |
f0c3d8cd set-player-listen-mode-settings-override | |
879e5ea9 set-player-ik-mode-override | |
c073104c player-set-anim-phase-on-top-2-instances-of-base-layer | |
1452cfd3 show-key | |
8302d2f8 player-has-health-kit | |
1c032f17 is-player-vaulting? | |
a7e3bdc5 grenade-director-disable | |
7052dae7 grenade-director-is-enabled? | |
6769fb9e grenade-director-change-settings | |
37a29101 stick-angle-in-range? | |
8019f96a stick-player-angle-in-range? | |
df439d53 character-on-screen? | |
3b065755 distance-closing? | |
f60f08f9 against-low-cover-dir? | |
ef509be9 against-wall-dir? | |
d36fbc06 collision-between-attacker-and-target? | |
376f57b9 get-wall-impact-angle | |
72cd1847 get-wall-impact-distance | |
e32ea710 get-wall-object-dir | |
545b7610 wall-within-anim-range? | |
8a8d8d9d off-ledge? | |
2dab9d0c attacker-blocking-defender? | |
39220405 on-slope-up? | |
bf4cb33d on-slope-down? | |
8d2f1494 characters-in-melee? | |
366ce5ee npc-unaware-of-character? | |
07be3bdf get-character-health | |
8208751e improv-pick-up-nearby? | |
5d253753 target-near-edge-locator? | |
0d67ee1e player-in-stealth? | |
e99190fa player-is-running? | |
78047738 set-player-anim-rate-multiplier | |
02bb9f9a not-on-slope? | |
ca8c8a9a player-in-run? | |
c34b8173 shot-for-steel-fist? | |
5415d916 clear-successive-punches | |
90df38f4 get-successive-punches | |
a409b7ae get-num-counters-performed | |
cbe0c282 increment-num-counters-performed | |
3ab72b0e invalidate-melee-command-queue | |
d9b170c0 get-current-num-punches-for-stun | |
a1407d31 get-num-punches-needed-for-stun | |
1a17d5cd clear-num-punches-for-stun | |
51c4c1c1 get-weapon-anim-type | |
2408dcdc get-weapon-id | |
32e2f581 weapon-has-crafting-mods? | |
c9537272 weapon-remove-crafting-mods | |
fa88834d get-melee-weapon-initial-health | |
73e441ee get-melee-weapon-health | |
c6feb04b get-melee-weapon-initial-upgrade-health | |
b022b54a get-melee-weapon-upgrade-health | |
14bfe62b decrement-melee-weapon-health | |
647ba4ee holding-pistol? | |
b467666f holding-longgun? | |
40877036 holding-no-weapon? | |
2548dcd6 character-attacking-character? | |
38427dcd get-npc-melee-chance | |
ae5c5161 david-is-blocking? | |
94c702aa player-take-npc-weapon | |
dd95602c get-player-weapon-locator | |
998e2428 break-weapon | |
ea018c90 shiv-will-break? | |
baf04c65 set-weapon-broken | |
3a2897d0 kill-weapon | |
2f78f75c start-slomo-weapon-shimmer | |
2c0c5bed stop-weapon-shimmer | |
9d178673 t1-swap-head | |
9424b4f2 spawn-attached-grenade | |
ef765b46 configured-to-throw-grenades? | |
69f4dc19 npc-auto-fire | |
7ef1ab3f get-num-punches-before-block | |
b0ce3af9 get-num-punches-landed | |
5f9f41f9 increment-num-blocks | |
e14247f0 start-melee-action | |
d279ffaa set-melee-dir-spawner | |
46d44279 set-melee-end-dir-spawner | |
4f696bc4 set-melee-override-ap-spawner | |
c51547b3 set-melee-override-end-ap-spawner | |
314d70bc should-npc-sync-player? | |
7fc7ad64 get-melee-mirror-from-character | |
e55f007d back-attack-check | |
d5c67cd9 increment-melee-move-frequency-count | |
110b37f0 set-ragdoll-phys-sound-cooldown | |
de3b0a8a set-phys-sound-cooldown-for-weapons | |
46ecb517 abort-melee-action | |
7ec5d67c npc-drop-weapons | |
5a1ad08f player-delay-air-punch | |
2afe047c npc-abort-melee-action | |
fdc1c575 character-blocking? | |
be905740 get-melee-history | |
982e9a53 set-melee-history | |
fbbd0a83 npc-request-melee-help | |
47873dc4 do-melee-event | |
ee64c28f is-playing-hit-reaction? | |
56f35b72 time-since-hit-reaction | |
0e8c00c6 get-current-melee-action-name | |
12f50430 set-attack-done | |
b4149553 set-melee-behavior-type | |
26715c19 get-melee-status | |
a0752a9d physicalize-ragdoll | |
6c256e5e is-ambushing? | |
22f6532f target-in-anim-range? | |
740dc928 get-target-dist-from-locator | |
f6a3f3be get-locator-from-attack | |
23a89451 target-in-cover-move-range? | |
5961541f in-melee-forced? | |
4fb88618 force-in-melee | |
0c22da87 net-offer-melee-assist | |
b0c332b5 net-cancel-melee-assist | |
f59997dc net-melee-start-block | |
32a5519b net-melee-stop-block | |
6bebf378 melee-finisher? | |
c90c597c melee-breaker? | |
4e7defad net-enemy-player-nearby? | |
7223cf90 melee-observer-dialog | |
16ba8d4e embed-weapon-in-target | |
68b70e38 is-player-being-attacked? | |
76ddbfcb get-melee-wall-pat | |
0ef1ccbd did-melee-move-hit? | |
9350f883 knockback-enemies | |
95d3f318 is-frenzy-timer-blocked? | |
2ae06af0 is-in-force-search? | |
a4c58c69 set-melee-camera-light | |
35aa12d7 player-crouched-under-object? | |
ee4230eb can-player-play-full-body-reaction? | |
77cfb0fa player-holding-npc? | |
c3842f92 character-on-slope? | |
c08fd94a get-scaled-melee-damage | |
f4fb5bd4 clear-cached-melee-surprise | |
04dc0b6f is-local-player? | |
820dae22 hud-set-soak-levels | |
415bd8af hud-set-soak-versus-score | |
34274f69 rail-set-spline-distance | |
4c72695b rail-set-speed-mps | |
7d2fa4c6 rail-enable-ground-hug | |
4a0864d1 rail-use-fixed-apref-in-igc | |
2fb7edfa set-player-ride-horse | |
f55da13c spawn-horse | |
9a89321f put-npc-on-horse | |
fefd7ad1 npc-mount-horse | |
12d79863 force-npc-to-back-of-horse | |
6da98710 horse-move-to--internal | |
f975311a horse-move-along-spline--internal | |
5896f5bf horse-set-spline-enabled | |
a56a58e4 horse-reset-splines | |
fe8e56e4 horse-resume-player-control | |
0f50a7b7 horse-get-speed | |
211ead37 horse-set-move-settings | |
897908a7 horse-request-move-settings | |
d23d731f prevent-player-jumping-from-horse | |
ee468a77 horse-player-aim-target | |
8e47ee09 player-dismount-horse | |
c9f8329c npc-dismount-horse | |
2b287722 npc-mounted-on-horse? | |
3a698c3a horse-force-slow-walk | |
c1c0e3ce auto-turret-fire-at-bound-frame | |
5cae0d49 auto-turret-cease-fire | |
7cef973c auto-turret-find-best-target | |
0ca0d447 cutscene-get-active-sequence | |
00c21895 cutscene-get-active | |
d3da31cf cutscene-get-active-index | |
eaf5e41b cutscene-get-active-frame | |
b1437bdf cutscene-get-active-maya-frame | |
0a2d208d cutscene-skip-active-sequence | |
d51da967 cutscene-controller-get-sequence | |
4f1d3c1d cutscene-controller-get-num-frames | |
c337cfb9 cutscene-controller-get-current-frame | |
63871917 cutscene-controller-get-overall-phase | |
771536b3 cutscene-controller-playing? | |
1502a90e cutscene-controller-get-current-cutscene | |
ba64c5ef cutscene-controller-get-current-cutscene-frame | |
3515f8ab cutscene-controller-get-current-cutscene-maya-frame | |
1ae176fe cutscene-controller-set-camera-timing | |
aaa5cc1a fact-exists-in-dict? | |
4165e5eb fact-lookup-symbol | |
4091298a fact-lookup-float | |
8b1c14d9 fact-lookup-int | |
b74dae0d fact-lookup-bool | |
68765c45 fact-set-from-dict | |
f8761596 fact-set | |
4bd8f3e4 fact-remove | |
e76029f2 fact-increment-by | |
70255fae fact-get-dictionary | |
9914e3cc fact-exists? | |
d089e724 fact-symbol | |
08124b15 fact-float | |
102bfc51 fact-int | |
8ef3d6f2 fact-bool | |
24b13777 interactable-enable | |
ac072e65 interactable-disable | |
cd943ffb interactable-set-unavailable | |
16ff7090 interactable-scripted-unavailable? | |
23b32ca8 interactable-enabled? | |
9d763fa8 interactable-set-trigger-only | |
215dbb7b interactable-trigger-only? | |
b2aedda0 interactable-selected? | |
df372d5a interactable-set-partner-enabled | |
977eb8a5 interactable-partner-enabled? | |
93a0b598 override-interact-def | |
ad0a780c interactable-set-override-interaction-lambda | |
718cdf3d interactable-set-interact-radius | |
67a8a308 request-interact | |
393b69d3 interact-with | |
0e615574 end-foreach-in-group | |
33570b73 group-at | |
107c1eb1 group-at-uint64 | |
4d338dee group-count | |
ea491c13 group-spawned-count | |
25807462 group-is-member-symbol? | |
67fca76e group-is-member-uint64? | |
218a1311 group-add | |
40bc7e26 group-add-uint64 | |
4afe2fe9 group-insert | |
aebe06bf group-insert-uint64 | |
5ce83d2a group-remove | |
0505a7b5 group-remove-uint64 | |
b7fe0fb9 group-remove-at | |
3e6ca32f group-reset | |
97cf876a group-clear | |
dabe5652 group-create | |
756a0c01 group-clone | |
151f4083 group-destroy | |
8419476b array-set-dimensions | |
3781ca76 array-width | |
b15a54f5 array-height | |
f0b3c28e array-depth | |
195e521e array-get-3d | |
c3bfadc9 array-set-3d | |
3b37b0bd modify-eff | |
74d352f2 eff-tag-int32 | |
bc005b6d eff-tag-float | |
6ca36486 eff-tag-symbol | |
2bc52079 character-sleep-ragdoll | |
333c879e character-is-dead? | |
452fc972 character-is-down? | |
3c757360 get-prop-id | |
5a1263f6 spawn-prop | |
74cb6920 destroy-prop | |
b510b5d1 get-vulnerability | |
6e90c558 character-play-additive-hit-reaction | |
61002bd1 character-abort-additive-hit-reaction | |
4d284eee spline-distance-spawner | |
817aeae5 spline-distance-locator | |
b44c7cac spline-locator-at-distance | |
0985239f follow-spline | |
26344b84 set-spline-follow-speed | |
7d6c9090 set-spline-follow-acceleration | |
490dc812 set-spline-follow-distance | |
152c787e get-object-spline | |
f515bd98 transfer-to-spline | |
03fb7b87 spline-transfer-pending? | |
98b7bbfc wait-spline-distance | |
da169d5e get-spline-distance | |
0d6704b5 get-pending-spline-distance | |
11596754 get-spline-length | |
8a736ed4 get-spline-index-count | |
da910655 set-spline-transfer-blend-distance | |
4d5d72d0 get-spline-point | |
017a46f6 set-spline-point | |
196129d0 set-spline-type | |
9a1813a0 get-closest-spline-index | |
258ef637 cloth-set-wind-scale | |
7a009f85 floor | |
0f0e3844 ceiling | |
d885c954 get-quaternion-pitch | |
9186c61b quat->euler | |
6cf4fccd override-fov | |
397558cb signal-camera-cut | |
1b3ccb57 is-on-screen? | |
b812f3f4 is-object-on-screen? | |
938db2cb allow-camera-cut-from-zoom | |
40170a0b is-centered-on-screen? | |
ba364a1c camera-locator | |
73f202b7 is-camera-animated? | |
9cd341ce take-screenshot | |
1930264d force-fixed-rotate-around-y | |
be56006c avoid-water-plane-dist | |
f632561e force-render-settings-underwater | |
ca3d1340 render-settings-is-underwater? | |
6a172a7f debug-set-camera-position | |
ec663650 camera-override-near-clip | |
98e102b7 camera-look-at-locator | |
14d59146 camera-look-at-object | |
b005ac46 camera-look-at-dir | |
4e20390e camera-look-at-dir-vec | |
d4fbeef3 disable-camera-look-at | |
69a75f01 joypad-command-clear | |
a1196ec0 joypad-command-active? | |
5e9fd287 show-button | |
aa776d34 joypad-disable-commands | |
ae4a973a joypad-disable-all-commands-except | |
6e34d772 joypad-disable-commands-timed | |
58c9938a joypad-any-button-pressed? | |
aadca853 joypad-any-button-held? | |
2911b7fb joypad-stick-pressed-towards? | |
f283d16a joypad-stick-pressed-towards-screen-space? | |
0c7e0bb7 get-joypad-stick-intensity | |
a6fd6077 get-joypad-stick-x | |
a23c7dc0 get-joypad-stick-y | |
e8fdb30a get-joypad-analog-l2 | |
9732d4ed get-joypad-analog-r2 | |
151b5d2e disable-debug-fly | |
9337ee86 get-joypad-accel | |
119913b1 get-joypad-touch-count | |
cae09f99 get-joypad-touch-id | |
ec47acc8 get-joypad-touch-x | |
e886b17f get-joypad-touch-y | |
c8227f33 get-joypad-angular-x | |
cce36284 get-joypad-angular-y | |
c1a0445d get-joypad-angular-z | |
093b2618 get-joypad-orientation | |
5870722f set-joypad-light-bar | |
1465dfc1 set-joypad-rumble | |
cf11421c get-joypad-roll-angle | |
be26fb26 get-joypad-pitch-angle | |
a20cb8d2 levels-fully-spawned-ignore-player? | |
4553458f levels-fully-spawned? | |
df781fbf kill-entity | |
7b197528 kill-all-attachables | |
89fbd3d6 entity-exists? | |
24b6345c entity-name | |
ac55d7e2 get-art-group | |
7498af01 get-object-skeleton | |
845be77a get-object-id | |
7616ab81 select-object | |
789bdaef get-object-spawner | |
d9e04427 get-spawner | |
63f70acf spawner-exists? | |
98e8a3cb get-spawner-level | |
7542d393 get-spawner-type | |
cb024b7d audio-clear-gas-mask-flag | |
965df4dc audio-set-gas-mask-flag | |
280e9a46 object-contains-mesh? | |
a93d2926 object-spawned? | |
3f50eb13 rename-object | |
874dd706 get-object-state | |
f6f9c2e4 get-self-id | |
d68784b3 levels-info->string | |
55d2738c is-level-loaded? | |
31e7a1a1 is-level-fully-spawned? | |
510e917e entity-info->string | |
117e0f3d state-script->string | |
a61c65d6 state-script-list | |
6f780105 module-list | |
f43db80a spawn-entity | |
7417fcd6 spawn-entity-at | |
fd166e79 wait-spawn-entity | |
db171895 wait-spawn-entity-at | |
0f378692 spawn-entity-type | |
0b9b4812 entity-auto-spawn-once | |
326ef848 swap-entity | |
4e0d08ca set-visible | |
83a68745 set-mesh-visible | |
c6071df8 sticky-spawner | |
f8717a0a unsticky-spawner | |
bb709fb2 disable-background-edges-in-region | |
f9940142 enable-background-edges-in-region | |
e8688b10 disable-foreground-edges-in-region | |
aa8c15e0 enable-foreground-edges-in-region | |
95d357e2 disable-background-covers-in-region | |
4c49ecfb enable-background-covers-in-region | |
f813783c disable-foreground-covers-in-region | |
c42b2256 reset-animation-stream-phase | |
2189c325 enable-foreground-covers-in-region | |
2dc4cae1 get-locator-position | |
9ab6561b get-locator-rotation | |
b0a52e00 set-locator-position | |
07d7b2fa set-locator-rotation | |
49d090e5 get-spawner-position | |
500a967e get-locator-distance | |
814a84a3 dist-sq-between-points | |
0728e198 get-locator-distance-xz | |
13b0907f set-joint-locator-override | |
585677f0 disable-joint-override | |
78145607 is-3d? | |
c23cf394 set-sound-register | |
fe541bc6 get-sound-register | |
072af1ac get-spawner-locator | |
8efc5558 set-spawner-locator | |
a1864167 set-spawner-locator-keep-parent | |
fb22a3d5 get-spawner-locator-default-rotation | |
f2186986 get-spawner-locator-radial | |
d857f64e get-spawner-locator-projected | |
8801d9d3 rotate-locator-angle | |
eaad830a rotate-locator-axis-angle | |
8ec4f77a rotate-vector | |
206d1c96 rotate-quat-toward | |
7887cea5 get-angle-between-quats | |
e36d7f8e rotate-locator-lookat | |
e754b383 get-spawner-parent | |
98de37b5 get-region-parent | |
6526a549 get-parent | |
8f2e5a3e get-object-spawn-locator | |
b4c97ee4 get-object-locator | |
94bcc970 get-object-lookat | |
88a196b6 set-object-locator | |
2c0c7d2e set-object-locator-keep-parent | |
29c5ece5 get-object-locator-default-rotation | |
1a227342 get-object-position | |
39f8c8b8 get-object-offset-position | |
28fab5ff get-object-offset-locator | |
021fff0f offset-locator | |
8f74aff2 get-object-locator-radial | |
9368e65a get-object-linear-velocity | |
affef308 get-object-angular-velocity | |
52a78877 has-joint? | |
c1d00e89 get-joint-string | |
8f43e660 has-attach-point? | |
f6a75aad get-joint-locator | |
4902715b get-joint-position | |
2a1856e5 get-ap-ref-locator | |
71b9ed01 get-ap-ref-from-align | |
e1c28f87 get-align-from-ap-ref | |
9927f0d1 get-origin-locator | |
7922fc22 get-align-locator | |
2fd346d0 get-joint-angle-diff-from-bindpose | |
934d1b84 get-joint-locator-with-root-body | |
78881769 get-ap-ref-effect-locator | |
d61bd25c get-ap-ref-locator-radial | |
2711e149 reverse-locator | |
7ba8ed16 block-nav-poly-under-object | |
7e5ad594 unblock-nav-poly-under-object | |
451fd95b enable-nav-blocker-object | |
c12d0539 disable-nav-blocker-object | |
88e795a7 disable-platform-control-on-object | |
af31357e platform-control-force-register-taps | |
fbebbcda regenerate-cover-action-packs-from-object | |
4bbc253b remove-cover-action-packs-from-object | |
30a7a25c get-action-pack-locator | |
138abef3 enable-action-pack | |
5c28e86b action-pack-enabled? | |
000dce87 set-nav-mesh-enable-by-name | |
6bae002d set-nav-mesh-enable-by-level | |
bf41ed10 find-closest-point-on-nav-mesh | |
78543a1c object-in-region? | |
bcdfe462 locator-in-region? | |
5eb2d05e set-shimmer-intensity | |
41123f07 object-highlight | |
82592950 set-root-joint-rigid-body-locator | |
6d9bdc2d force-push-object-move-to | |
a371ae69 force-set-push-object-velocity | |
b2f7fadf object-start-slide | |
d7f20dff object-stop-slide | |
530f1940 push-object-set-no-push-fwd | |
de80570e push-object-set-no-pull-bkwd | |
1b482c4e push-object-set-no-rotation | |
14348538 push-object-set-game-driven | |
f19bb146 enable-push-object-dynamic-tap-registration | |
54d8a0da disable-push-object-dynamic-tap-registration | |
7d4c72e6 push-object-apply-force | |
aa0b5bbd get-push-object-linear-delta | |
4d6ca86b get-push-object-rotation-delta-deg | |
12de973c make-player-pass-through | |
1747029e arcsin | |
92c728eb arccos | |
98040659 arctan | |
daa3d9d8 arctan2 | |
0b09fe20 vector-magnitude | |
8974e9b2 vector-normalize | |
7be6159c vector-add | |
bd13939f vector-sub | |
c9eeccf6 vector-dot | |
04410473 vector-cross | |
602b9c2f cross-product | |
c8c368f1 get-local-x | |
cc027546 get-local-y | |
c141539f get-local-z | |
eca5ad20 transform-vector-local-to-world | |
ee9dd544 transform-vector-world-to-local | |
4973e564 transform-point-local-to-world | |
4b4b9d00 transform-point-world-to-local | |
6b1b588e offset-position | |
88020631 perlin-noise | |
c4dbc0b7 blend-position | |
73a95c4d blend-rotation | |
21255f07 blend-locator | |
5205e230 freeze-binding-when-non-physical | |
388bc9a1 current-time | |
8e5b8efc elapsed-time | |
319f4e3c units-per-frame | |
0eec468d units-per-second | |
e12e0fe8 spawn-effect | |
77cf5d09 part-module-loaded? | |
48b86630 spawn-particles-at-attach | |
b507ccd3 spawn-particles-at-joint | |
6ce94d7e spawn-particles-at-bound-frame | |
389ce791 kill-particles | |
273be96d set-effect-bound-frame | |
d745cb63 set-effect-color-vec | |
c3dd5417 set-effect-alpha | |
a6586ac5 set-effect-time-scale | |
68ab48e7 set-effect-camera-attached | |
2dffa64b set-effect-float | |
77067270 set-effect-vector | |
e178ea44 kill-all-particles | |
0ab7afb8 kill-part-spawner | |
21b38b7d set-part-spawner-color-vec | |
cf4d5dbc set-part-spawner-alpha | |
c326c47e set-part-spawner-time-scale | |
669e9caf set-part-spawner-camera-attached | |
216fafe0 set-part-spawner-float | |
d2034214 set-part-spawner-vector | |
35140815 start-rumble | |
943ce1c7 do-rumble-ptr | |
e59ba17d stop-script-rumbles | |
cf53af61 stop-rumble | |
b58b5007 set-water-clipmap-off | |
b584c7e4 set-water-clipmap-parameters | |
bcae8643 set-water-clipmap-direction-distances | |
e345d028 set-water-flow-direction | |
2f7d805d enable-water-portal-culling | |
4391b58f add-water-portal | |
74b52515 remove-water-portal | |
34152755 enable-water-exclusion-boxes | |
6337b11a add-water-exclusion-box | |
3ba2a5dd remove-water-exclusion-box | |
9c647935 start-water-anim | |
bba50bcf start-water-anim-with-spawner | |
fdc7da91 wait-water-anim-with-spawner | |
0324fae0 stop-water-anim-water-id | |
7e6a76e0 stop-water-anim-channel-id | |
ca20325e reset-water-animated-grid | |
687ec0b6 stop-water-anim-water | |
bb3ae8ac set-water-joint-grid-active-state | |
e17ee22f set-water-relative-time | |
9603a4cf set-water-waves-amplitude | |
52b7f82a set-water-waves-velocity | |
8fcbb113 use-rain-intensity-values | |
dd75c117 use-wind-intensity-values | |
18ecdcb8 use-rain-abstract-intensity-value | |
d6262a11 reset-rain-abstract-intensity | |
e1f6d07f get-wind-direction | |
1343bc33 get-wind-speed | |
d89aaacd set-water-offset | |
6fd90652 get-water-time | |
f1915289 set-water-waves-velocity-timed | |
64f8f02c clear-water-waves-velocity | |
568af7f8 set-water-grid-influence | |
94bd9eeb get-water-offset | |
f0a972d0 set-water-state | |
68e64032 get-water-state | |
b010691c set-deformation-of-water-unit | |
91155cd8 use-reflections | |
8f0342eb use-reflection-plane | |
050a1ac0 use-reflection-plane-with-bbox | |
85089aa1 use-reflection-plane-with-corners | |
93797c7f set-reflection-plane-info | |
172b8004 force-reflections | |
b71a0088 set-rain-state | |
85d0299e set-rain-ripples-state | |
0c6ff463 add-ripple | |
fdcbf9bc add-line-ripple | |
d20ed7b6 set-ripples-center-and-scale | |
355267c2 set-ripples-values | |
6d2b84ba set-time-to-dry-period | |
591ffcd9 set-character-wet-mask-value | |
bd0c58b9 set-character-wet-mask-state | |
664cfb37 set-character-wet-mask | |
cbaa0c97 set-max-character-wetness | |
5b488d87 make-character-more-wet | |
6864c8be set-dry-iterations | |
5f574b3e is-water-pat? | |
8589a890 use-material-from-water-unit | |
8b49f386 set-parameter-id-for-water-unit | |
f3d72777 override-settings-for-water-unit | |
e39fc2c7 set-state-character-accumulates-snow-from-ground | |
d04aa372 set-state-character-accumulates-snow-from-sky | |
57a832d0 set-state-character-accumulates-from-water | |
9851ce13 set-ground-prints-type | |
7fa59498 ground-prints-enable | |
eb78a103 ground-prints-disable | |
8bc6f669 spawn-snow-disturb | |
5c817dc0 set-shader-material-param | |
48059f73 set-single-shader-instance-param | |
34301f63 set-shader-instance-param | |
0bd2c458 set-shader-instance-uv-offset | |
9b557600 set-shader-instance-blend-offset | |
5e946b71 set-shader-instance-ao-brightness | |
0c16b8cf set-shader-instance-diffuse-color | |
30647a2b set-shader-instance-anim-period | |
f1878b7e set-shader-instance-anim-phase | |
bddabc93 set-shader-instance-anim-amplitude | |
381ec3ee set-shader-instance-anim-offset | |
34eb23a1 set-shader-instance-spec-brightness | |
5c8a2f5b set-shader-instance-env-strength | |
69b43346 set-shader-instance-incandescence-strength | |
56cc5c18 set-shader-instance-fg-vertex-lighting-blend | |
e80b702d change-object-material | |
8379fc95 reset-object-materials | |
bd63a7ba debug-draw-line | |
981b0b33 debug-draw-line-2d | |
f8bdb17b debug-draw-box-2d | |
227f2974 debug-draw-cross | |
a983319f debug-draw-triangle | |
e847689b debug-draw-locator | |
52fef8bf debug-draw-circle | |
a6714d8a debug-draw-sphere | |
eb7947db debug-draw-string | |
692b69a6 debug-draw-string-2d | |
f23d0af4 debug-draw-ngon | |
6e065e7b world-space-to-screen-space | |
ce4c2aba debug-draw-clear-all | |
6699f752 debug-break | |
7195c4ef debug-pause | |
29babfaf box-int | |
02934287 box-float | |
7e0aa3f2 box-symbol | |
e94bb56d box-bool | |
da9b716e print-call-stack | |
ad23db71 print-vector3 | |
8a32d4a6 print-vector | |
cf323efa print-point | |
855606ad string<-float | |
272d183b print-float | |
6e61504e print-integer | |
4fb6c279 print-symbol | |
bb0304d1 display | |
706758be string-length | |
286b7348 format | |
99d8b976 invalid-string-id | |
7190db13 debug-string<-string-id | |
5759fea4 string-id<-string | |
b50f1de8 string-id-concat-string | |
ce57d8e3 string-id-concat-int32 | |
0f01618c cypher-get-text | |
56ad3c61 alloc-color | |
cd4b9c1b alloc-vector | |
c04d080f alloc-point | |
58a2a5fd alloc-quat | |
c3b2cde2 alloc-bound-frame | |
feaa4603 alloc-vector3 | |
18af3a3c facing-point? | |
69531083 facing-point-xz? | |
614a6e07 pow-float | |
00dd2c2e random-float | |
c4a0e51b random-integer | |
675191da uint64-upper-half | |
96880c26 disc? | |
39db8774 is-japan? | |
1a93e508 is-final-build? | |
351159e8 is-locked-at-30fps? | |
5fde366f platform-windows? | |
6decfef6 replay-active? | |
4ba2a752 get-delta-time | |
9cef4d21 from-ups-no-dt | |
75b75352 int32-array-count | |
81a53f16 int32-array-at | |
ac5ef5f0 auto-save-in-progress | |
fb808bda hash-lookup | |
df7ba06a lookup-symbol | |
c66a1ce6 add-import-module | |
e0e51daf add-load-module | |
094728af is-fma | |
849f84e0 parent | |
71977aec unparent | |
710cc0d8 enable-player-parenting | |
d4050c6e task-subnode-complete | |
1a0506fc task-subnode-active? | |
f64d9779 task-subnode-get-active-continue | |
7f9b338d task-subnode-set-active-continue | |
c1a6d2bc task-subnode-play | |
94739403 task-subnode-disable | |
8ce160db task-node-active? | |
32ea7b74 task-find | |
6a1c05ec task-get-current | |
04685cae task-want-load-levels-fully-spawned? | |
cf3d3c5b task-attempt-count | |
dd801564 task-fail! | |
cb0d7bed task-fail-if-active! | |
9b53a1b0 task-elapsed-time | |
b8831cf4 game-task-graph-login | |
8f6736ec get-process-user-id | |
57e9f6e5 get-parent-process-user-id | |
249163a2 force-exposure-value | |
1f802079 get-current-frame-count | |
6a8ab94f xz-plane-dist | |
9135f438 mark-actor-textures-for-load | |
12fab260 mark-level-textures-for-load | |
e22f8c96 force-stall-for-level-load | |
345ab96a force-stall-for-actor-load | |
64c4a163 wrap-string | |
b1cb53ae line-count? | |
b1f17bd7 despawn-message | |
7aa34ac4 enable-message | |
cb0ed5fb disable-message | |
238a1dd3 hide-message | |
e40ca42a unhide-message | |
b34bba3a display-message | |
4d93a099 hide-hint | |
1b6bb746 set-collision-layer | |
d654443c set-body-locator | |
0e1fb399 get-body-lin-velocity | |
5b51bdd0 get-body-ang-velocity | |
dfa83a5d set-body-velocity | |
8edc6fe4 set-body-max-velocity | |
ea80e4f1 get-body-point-velocity | |
1a528ea4 get-body-linear-damping | |
57a73d54 get-body-angular-damping | |
629b4495 set-body-damping | |
1d7ec1bb get-body-friction | |
3bc00ca8 set-body-friction | |
8e12db0d apply-point-impulse | |
e693ab67 apply-explosion-impulse | |
092e408d set-body-buoyancy-multiplier | |
f00d650c disable-gadgetry | |
e46dcac5 enable-gadgetry | |
063b8566 set-phys-fx-water-plane | |
35ac8038 force-update-bg-collision | |
df1c840f enable-power-ragdoll | |
00d619b3 disable-power-ragdoll | |
59ad94db kick-spherecast | |
f9e808e6 wait-raycast | |
8e48ae94 wait-raycast-t | |
92d47137 wait-raycast-hit-nothing? | |
7d4d9b17 wait-raycast-hit-water? | |
08fd1ca7 wait-raycast-get-object | |
ab56fb43 wait-raycast-get-object-joint | |
6b3e41c8 debug-draw-raycast | |
6cd3aabf from-ups | |
40274c92 lerp-scale | |
269bdb61 make-curve | |
f1993cfa calc-ankle-match-phase | |
d286bc85 start-for-streaming-anim | |
43724165 get-state-align-speed-from-tree | |
6e75babe calc-new-phase-from-speed | |
29ba2151 minmax | |
0fc66967 min-int32 | |
3af8b8e4 angle-diff | |
933344d6 wait-animate | |
0b5ff3f9 facial-animate | |
4a89c6df get-rotated-ap-ref | |
d8afab28 get-best-entry-phase | |
9fa1b336 get-animation-entry | |
6d7dd92d update-ap-ref | |
54d3f01b has-anim? | |
d9cb0c6d stop-animating | |
d5deb2dd set-animate-blend | |
f3607fce get-animate-blend | |
af4a581f set-animation-speed | |
8c87ce3f set-animation-phase | |
48582245 set-animation-layer-fade | |
269cfceb get-animation-speed | |
05516acb get-animation-phase | |
f946d2c9 get-animation-frame | |
46677b38 get-animation-duration | |
1d9c28fc player-lerp-anim-update-rate | |
0e2c9b7c player-get-anim-update-rate | |
b081d867 player-anim-streaming-phase | |
6c2b44f0 get-object-anim-state | |
234ca4cb get-object-anim | |
7a372132 object-anim-playing? | |
0937e3f7 simple-gesture | |
f24ab925 set-overlay-set | |
cc4574cc calculate-pose-error | |
2cf92d82 calculate-anim-error | |
b0f53e4c config-reset | |
36d703b7 event-arg-symbol | |
c69511c1 event-arg-float | |
0e46185e event-arg-int32 | |
c10280c9 event-arg-uint64 | |
77162698 event-arg-boolean | |
5ee829e2 event-arg-bound-frame | |
f3531568 event-arg-vector | |
2e8a3700 event-arg-point | |
f9453071 event-arg-string | |
b1a02fd5 event-return-symbol | |
338c1b7b event-return-float | |
fb5f12e4 event-return-int32 | |
cbce016c event-return-uint32 | |
7771f473 event-return-boolean | |
ea2054f4 event-sender? | |
ac660e5d event-sender-is-type? | |
030b1ea2 event-sender | |
54cb0a8d send-simple-event | |
b3189857 send-event | |
d3ba122e broadcast-event | |
6acb9193 event-query-boolean | |
9125b606 event-query-symbol | |
fe2d2dc2 print-event | |
7feef039 event-level? | |
617579d2 event-my-level? | |
39555e62 scaleform-stop-movie-internal | |
ad0f5a62 scaleform-set-viewport | |
c3a8de99 scaleform-set-viewport-pct | |
d24fd6ef scaleform-invoke | |
fd92480f scaleform-get-boolean | |
b4e4b233 scaleform-set-boolean | |
b4b48a24 scaleform-get-int32 | |
69b01eb8 scaleform-set-int32 | |
7c6783bb scaleform-get-float | |
a1631727 scaleform-set-float | |
632b3193 set-table-shader-material-param-by-index | |
14083967 reload-demand-loaded | |
73bcb654 dc:scan-particle-directories | |
56fb3996 reload-particle-module | |
8d2f0b34 import-value | |
c2795697 render-settings-reset | |
36086af7 spawn-script-multiple | |
a23075fc terminate | |
14bbfc58 force-state-change | |
9896d682 end-script | |
1359246d get-script-state | |
d399a4d6 has-state-script? | |
d510e933 tag-specified? | |
0b1b1b8a tag-symbol | |
c489284c tag-string | |
4bf01cbf tag-float | |
83231520 tag-int32 | |
5ef1f0db tag-boolean | |
ce9f0d55 tag-vector | |
a3ef3a7e tag-point | |
25124088 get-symbol | |
01d011b2 set-symbol | |
1cb8c51f get-float | |
c1bc5183 set-float | |
d46bcc80 get-int32 | |
096f581c set-int32 | |
59d06147 get-int64 | |
84d4f5db set-int64 | |
f307e431 get-boolean | |
ba711e0d set-boolean | |
e0965657 get-vector | |
c454076d set-vector | |
f4a7e3de get-point | |
29a37742 set-point | |
02c1526b get-quat | |
c55f9b3f set-quat | |
2877b0d7 get-bound-frame | |
b0388235 set-bound-frame | |
04a3a6d3 wait-for-event | |
0c9c6d8f wait-int32 | |
9c2425a8 wait-boolean | |
899ee046 get-state-time | |
55b2ca6c get-current-time | |
9ec3248d get-current-timeframe | |
64b0f52e signal | |
1dda2ca5 signal-remote | |
bb99c26a signal-raised? | |
fc37cd06 forget-signal | |
6e22f8d5 wait-frames | |
d1e7c609 wait-until | |
19d1ce7d wait-until-frame | |
bc239abe wait-until-net-time | |
ca1359a3 wait-for | |
b7eceedc wait-one-frame | |
ccf7e165 offer-contextual-entity | |
8bbc4b1e offer-contextual-process | |
ce547c11 remove-contextual-entity | |
d3cb9ef4 force-contextual-entity | |
04cc1f0b frame-range | |
235cfa87 say | |
0afbbb02 xspawn-npc-at | |
c5b8f0e6 get-event | |
09400335 add-flame | |
dc4a7348 hint-set-contextual-highlight-object | |
c519583d wait-facebook-post-photo-booth | |
2607c5f4 set-clock-multiplier | |
83bd53c3 spawn-3d-text | |
c5492089 annotate | |
eb1b5707 is-phantom-shooter? | |
da0291b0 simple-npc-no-bucket | |
970c3e2c c-spawn-npc | |
60390542 npc-get-zone-center | |
aadf2adc gesture | |
c1b5a9bf camera-set-melee | |
4da74e0b camera-set-strafe-idle | |
0dcef3cd get-carry-object-type | |
bf77427c photo-mode-use-fixed-vis-pos | |
649ba550 net-is-host? | |
05098fb2 post-locator-stat | |
1f34e67c get-player-id | |
c77239e4 grenade-director-enable | |
8e937b02 set-player-carry-sarah-fast-mode | |
42a4173a facing-angle-in-range? | |
46a1ed53 get-execution-catagory-value | |
6c6572c2 player-teach-combo | |
6007afbc hud-set-howl-level | |
fd031d9e horse-set-spline-camera-assist | |
9847f5e9 rail-get-spline | |
b730664d set-player-horse | |
650da61e auto-turret-fire-at-target | |
502c31cc cutscene-get-active-controller | |
9ec349ea new-fact-dictionary | |
43d7ca93 interactable-highlight | |
113118a9 begin-foreach-in-group | |
f07951f0 new-eff | |
512b01e6 character-set-invincibility | |
c61b9c4e spline-activate | |
11ee43d8 cloth-set-world-scale | |
2d21023c round | |
fb4232a0 sin | |
7ec218d5 cos | |
74013667 tan | |
5047b2c8 update-task-menu | |
b69d2cef spawn-message | |
4052e46e kill-message | |
ce976169 spawn-splasher-effect | |
497049fd set-physics-gravity | |
262e9ff2 kick-raycast | |
64ea5b90 plot-internal | |
0b26368f angle-mod | |
84591781 animate | |
40a1081b config-load-user | |
4fe2b871 spawn-os-process | |
62628fcf event-arg-count | |
3ac0ebcd scaleform-start-movie-internal | |
df146ca7 set-table-shader-material-values-param | |
568eab14 wait | |
849a7d83 spawn-script | |
c2c05f3a go |
Which version of the game it supports? Or maybe there is an issue with low big endians.
In my case script-user-funcs.bin has next header
0000000 4344 3030 0000 0100 0000 a0a3 0000 0000
0000010 0000 0100 0000 ce00 6300 2ffd d49e e199
0000020 0000 c409 1203 8712 d49e e199 0000 400a
0000030 3f03 ae67 d49e e199 0000 8c0a 6407 26be
The defCount 0000 ce00 in decimal 3456106496
Got files from other disk, the same file script-user-funcs.bin has this header
0000000 4344 3030 0000 0100 0100 9808 0000 0000
0000010 0000 0100 0000 5101 0000 1c00 2300 6dc9
0000020 d49e e199 0000 ec0f 6300 2ffd d49e e199
0000030 0000 a411 9301 ad99 d49e e199 0000 2012
The defCount 0000 5101 is large value again
Looks line the file has MSB before LSB
I made it work with Last Of Us PS3. Thanks
Which version of the game it supports? Or maybe there is an issue with low big endians. In my case script-user-funcs.bin has next header
0000000 4344 3030 0000 0100 0000 a0a3 0000 0000 0000010 0000 0100 0000 ce00 6300 2ffd d49e e199 0000020 0000 c409 1203 8712 d49e e199 0000 400a 0000030 3f03 ae67 d49e e199 0000 8c0a 6407 26be
The defCount 0000 ce00 in decimal 3456106496
I believe this was for The Last of Us Remastered for PS4.
I made it work with Last Of Us PS3. Thanks
Nice! Was it only a difference in endianness?
Some other minor changes. I pushed my version to the branch of your gist
Also I deducted some opcodes. You can see it by diff merge
BTW loadStaticI32Imm in most cases load some StringID. My guess! That is why it does not have any valid human friendly value. This SIDs where builder by C compiler, but the published game does not have them.
0x000007F4: cloth-remove-external-collider # 0x42b90e92
0x000007F4: 43 00 18 00 move r0, r24 # r0 = r24
0x000007F8: 15 01 00 00 lookupPointer r1, data[0] # r1 = StringId(0xb3189857)=>NATIVE:send-event
0x000007FC: 3F 02 01 00 loadStaticI32Imm r2, data[1] # r2 = 1119424146 (0x42b90e92)=>LOCAL:cloth-remove-external-collider
BTW loadStaticI32Imm in most cases load some StringID. My guess! That is why it does not have any valid human friendly value. This SIDs where builder by C compiler, but the published game does not have them.
0x000007F4: cloth-remove-external-collider # 0x42b90e92 0x000007F4: 43 00 18 00 move r0, r24 # r0 = r24 0x000007F8: 15 01 00 00 lookupPointer r1, data[0] # r1 = StringId(0xb3189857)=>NATIVE:send-event 0x000007FC: 3F 02 01 00 loadStaticI32Imm r2, data[1] # r2 = 1119424146 (0x42b90e92)=>LOCAL:cloth-remove-external-collider
It looks like it's going to call the native function send-event and passing the current function (cloth-remove-external-collider) as it's first argument?
Some other minor changes. I pushed my version to the branch of your gist
Also I deducted some opcodes. You can see it by diff merge
Awesome! I will check it out. It would be nice to merge the two so that the script supports both ps3 and ps4. Those were my initial plans, as well as to support the Uncharted games (and then eventually a decompiler), but I haven't had time to finish it. So thanks!
BTW loadStaticI32Imm in most cases load some StringID. My guess! That is why it does not have any valid human friendly value. This SIDs where builder by C compiler, but the published game does not have them.
0x000007F4: cloth-remove-external-collider # 0x42b90e92 0x000007F4: 43 00 18 00 move r0, r24 # r0 = r24 0x000007F8: 15 01 00 00 lookupPointer r1, data[0] # r1 = StringId(0xb3189857)=>NATIVE:send-event 0x000007FC: 3F 02 01 00 loadStaticI32Imm r2, data[1] # r2 = 1119424146 (0x42b90e92)=>LOCAL:cloth-remove-external-collider
It looks like it's going to call the native function send-event and passing the current function (cloth-remove-external-collider) as it's first argument?
Yes it is. The point is 'loadStaticFloatImm' loads valid numbers, but 'loadStaticI32Imm' loads non valid numbers, and that is why
- Integers are not needed in game dev as minimum on the hi-level
- VM uses this opcode for loading StringID to register and pass it to function
Small values +-1 2 4 8 12,... they are helpful in game dev, but VM has opcodes for them
:)
Requirements
Usage
With both dc-disassembly.py and sids.txt in the same folder:
python dc-disassemble.py <script file>
Example:
python dc-disassemble.py script-user-funcs.bin
This will print out disassembly of all code in the script file. Use the redirection operator at the end of the command to write the disassembly to a file.
Example:
python dc-disassemble.py script-user-funcs.bin > script-user-funcs.txt
The script will also look for an existing .dci file that has the same file name. This file contains function names for the .bin file and will apply those labels to the disassembly.
The
sids.txt
contains the string id's for all native functions. The python script will load that file to label any references to native functions.