refactor: Simplify script routine registration

This commit is contained in:
Vsevolod Kremianskii 2020-12-14 22:36:01 +07:00
parent ee45ac0262
commit 851c0f88ea
4 changed files with 479 additions and 484 deletions

View file

@ -63,15 +63,6 @@ void Routines::add(const string &name, VariableType retType, const VariableTypes
_routines.emplace_back(name, retType, argTypes);
}
void Routines::add(
const string &name,
VariableType retType,
const VariableTypesList &argTypes,
const function<Variable(const VariablesList &, ExecutionContext &)> &fn) {
_routines.emplace_back(name, retType, argTypes, fn);
}
const Routine &Routines::get(int index) {
return _routines[index];
}

View file

@ -64,11 +64,15 @@ private:
void add(const std::string &name, script::VariableType retType, const VariableTypesList &argTypes);
template <class T>
void add(
const std::string &name,
script::VariableType retType,
const VariableTypesList &argTypes,
const std::function<script::Variable(const VariablesList &, script::ExecutionContext &ctx)> &fn);
const T &fn) {
_routines.emplace_back(name, retType, argTypes, std::bind(fn, this, _1, _2));
}
void addKotorRoutines();
void addTslRoutines();

View file

@ -39,20 +39,20 @@ namespace game {
#define Action VariableType::Action
void Routines::addKotorRoutines() {
add("Random", Int, { Int }, bind(&Routines::random, this, _1, _2));
add("PrintString", Void, { String }, bind(&Routines::printString, this, _1, _2));
add("PrintFloat", Void, { Float, Int, Int }, bind(&Routines::printFloat, this, _1, _2));
add("FloatToString", String, { Float, Int, Int }, bind(&Routines::floatToString, this, _1, _2));
add("PrintInteger", Void, { Int }, bind(&Routines::printInteger, this, _1, _2));
add("PrintObject", Void, { Object }, bind(&Routines::printObject, this, _1, _2));
add("AssignCommand", Void, { Object, Action }, bind(&Routines::assignCommand, this, _1, _2));
add("DelayCommand", Void, { Float, Action }, bind(&Routines::delayCommand, this, _1, _2));
add("ExecuteScript", Void, { String, Object, Int }, bind(&Routines::executeScript, this, _1, _2));
add("ClearAllActions", Void, { }, bind(&Routines::clearAllActions, this, _1, _2));
add("Random", Int, { Int }, &Routines::random);
add("PrintString", Void, { String }, &Routines::printString);
add("PrintFloat", Void, { Float, Int, Int }, &Routines::printFloat);
add("FloatToString", String, { Float, Int, Int }, &Routines::floatToString);
add("PrintInteger", Void, { Int }, &Routines::printInteger);
add("PrintObject", Void, { Object }, &Routines::printObject);
add("AssignCommand", Void, { Object, Action }, &Routines::assignCommand);
add("DelayCommand", Void, { Float, Action }, &Routines::delayCommand);
add("ExecuteScript", Void, { String, Object, Int }, &Routines::executeScript);
add("ClearAllActions", Void, { }, &Routines::clearAllActions);
add("SetFacing", Void, { Float });
add("SwitchPlayerCharacter", Int, { Int });
add("SetTime", Void, { Int, Int, Int, Int });
add("SetPartyLeader", Int, { Int }, bind(&Routines::setPartyLeader, this, _1, _2));
add("SetPartyLeader", Int, { Int }, &Routines::setPartyLeader);
add("SetAreaUnescapable", Void, { Int });
add("GetAreaUnescapable", Int, { });
add("GetTimeHour", Int, { });
@ -61,16 +61,16 @@ void Routines::addKotorRoutines() {
add("GetTimeMillisecond", Int, { });
add("ActionRandomWalk", Void, { });
add("ActionMoveToLocation", Void, { Location, Int });
add("ActionMoveToObject", Void, { Object, Int, Float }, bind(&Routines::actionMoveToObject, this, _1, _2));
add("ActionMoveToObject", Void, { Object, Int, Float }, &Routines::actionMoveToObject);
add("ActionMoveAwayFromObject", Void, { Object, Int, Float });
add("GetArea", Object, { Object }, bind(&Routines::getArea, this, _1, _2));
add("GetEnteringObject", Object, { }, bind(&Routines::getEnteringObject, this, _1, _2));
add("GetExitingObject", Object, { }, bind(&Routines::getExitingObject, this, _1, _2));
add("GetPosition", TVector, { Object }, bind(&Routines::getPosition, this, _1, _2));
add("GetFacing", Float, { Object }, bind(&Routines::getFacing, this, _1, _2));
add("GetArea", Object, { Object }, &Routines::getArea);
add("GetEnteringObject", Object, { }, &Routines::getEnteringObject);
add("GetExitingObject", Object, { }, &Routines::getExitingObject);
add("GetPosition", TVector, { Object }, &Routines::getPosition);
add("GetFacing", Float, { Object }, &Routines::getFacing);
add("GetItemPossessor", Object, { Object });
add("GetItemPossessedBy", Object, { Object, String });
add("CreateItemOnObject", Object, { String, Object, Int }, bind(&Routines::createItemOnObject, this, _1, _2));
add("CreateItemOnObject", Object, { String, Object, Int }, &Routines::createItemOnObject);
add("ActionEquipItem", Void, { Object, Int, Int });
add("ActionUnequipItem", Void, { Object, Int });
add("ActionPickUpItem", Void, { Object });
@ -80,17 +80,17 @@ void Routines::addKotorRoutines() {
add("GetNearestCreature", Object, { Int, Int, Object, Int, Int, Int, Int, Int });
add("ActionSpeakString", Void, { String, Int });
add("ActionPlayAnimation", Void, { Int, Float, Float });
add("GetDistanceToObject", Float, { Object }, bind(&Routines::getDistanceToObject, this, _1, _2));
add("GetIsObjectValid", Int, { Object }, bind(&Routines::getIsObjectValid, this, _1, _2));
add("ActionOpenDoor", Void, { Object }, bind(&Routines::actionOpenDoor, this, _1, _2));
add("ActionCloseDoor", Void, { Object }, bind(&Routines::actionCloseDoor, this, _1, _2));
add("GetDistanceToObject", Float, { Object }, &Routines::getDistanceToObject);
add("GetIsObjectValid", Int, { Object }, &Routines::getIsObjectValid);
add("ActionOpenDoor", Void, { Object }, &Routines::actionOpenDoor);
add("ActionCloseDoor", Void, { Object }, &Routines::actionCloseDoor);
add("SetCameraFacing", Void, { Float });
add("PlaySound", Void, { String });
add("GetSpellTargetObject", Object, { });
add("ActionCastSpellAtObject", Void, { Int, Object, Int, Int, Int, Int, Int });
add("GetCurrentHitPoints", Int, { Object }, bind(&Routines::getCurrentHitPoints, this, _1, _2));
add("GetMaxHitPoints", Int, { Object }, bind(&Routines::getMaxHitPoints, this, _1, _2));
add("EffectAssuredHit", Effect, { }, bind(&Routines::effectAssuredHit, this, _1, _2));
add("GetCurrentHitPoints", Int, { Object }, &Routines::getCurrentHitPoints);
add("GetMaxHitPoints", Int, { Object }, &Routines::getMaxHitPoints);
add("EffectAssuredHit", Effect, { }, &Routines::effectAssuredHit);
add("GetLastItemEquipped", Object, { });
add("GetSubScreenID", Int, { });
add("CancelCombat", Void, { Object });
@ -98,30 +98,30 @@ void Routines::addKotorRoutines() {
add("GetMaxForcePoints", Int, { Object });
add("PauseGame", Void, { Int });
add("SetPlayerRestrictMode", Void, { Int });
add("GetStringLength", Int, { String }, bind(&Routines::getStringLength, this, _1, _2));
add("GetStringUpperCase", String, { String }, bind(&Routines::getStringUpperCase, this, _1, _2));
add("GetStringLowerCase", String, { String }, bind(&Routines::getStringLowerCase, this, _1, _2));
add("GetStringRight", String, { String, Int }, bind(&Routines::getStringRight, this, _1, _2));
add("GetStringLeft", String, { String, Int }, bind(&Routines::getStringLeft, this, _1, _2));
add("InsertString", String, { String, String, Int }, bind(&Routines::insertString, this, _1, _2));
add("GetSubString", String, { String, Int, Int }, bind(&Routines::getSubString, this, _1, _2));
add("FindSubString", Int, { String, String }, bind(&Routines::findSubString, this, _1, _2));
add("fabs", Float, { Float }, bind(&Routines::fabs, this, _1, _2));
add("cos", Float, { Float }, bind(&Routines::cos, this, _1, _2));
add("sin", Float, { Float }, bind(&Routines::sin, this, _1, _2));
add("tan", Float, { Float }, bind(&Routines::tan, this, _1, _2));
add("acos", Float, { Float }, bind(&Routines::acos, this, _1, _2));
add("asin", Float, { Float }, bind(&Routines::asin, this, _1, _2));
add("atan", Float, { Float }, bind(&Routines::atan, this, _1, _2));
add("log", Float, { Float }, bind(&Routines::log, this, _1, _2));
add("pow", Float, { Float, Float }, bind(&Routines::pow, this, _1, _2));
add("sqrt", Float, { Float }, bind(&Routines::sqrt, this, _1, _2));
add("abs", Int, { Int }, bind(&Routines::abs, this, _1, _2));
add("EffectHeal", Effect, { Int }, bind(&Routines::effectHeal, this, _1, _2));
add("EffectDamage", Effect, { Int, Int, Int }, bind(&Routines::effectDamage, this, _1, _2));
add("EffectAbilityIncrease", Effect, { Int, Int }, bind(&Routines::effectAbilityIncrease, this, _1, _2));
add("EffectDamageResistance", Effect, { Int, Int, Int }, bind(&Routines::effectDamageResistance, this, _1, _2));
add("EffectResurrection", Effect, { }, bind(&Routines::effectResurrection, this, _1, _2));
add("GetStringLength", Int, { String }, &Routines::getStringLength);
add("GetStringUpperCase", String, { String }, &Routines::getStringUpperCase);
add("GetStringLowerCase", String, { String }, &Routines::getStringLowerCase);
add("GetStringRight", String, { String, Int }, &Routines::getStringRight);
add("GetStringLeft", String, { String, Int }, &Routines::getStringLeft);
add("InsertString", String, { String, String, Int }, &Routines::insertString);
add("GetSubString", String, { String, Int, Int }, &Routines::getSubString);
add("FindSubString", Int, { String, String }, &Routines::findSubString);
add("fabs", Float, { Float }, &Routines::fabs);
add("cos", Float, { Float }, &Routines::cos);
add("sin", Float, { Float }, &Routines::sin);
add("tan", Float, { Float }, &Routines::tan);
add("acos", Float, { Float }, &Routines::acos);
add("asin", Float, { Float }, &Routines::asin);
add("atan", Float, { Float }, &Routines::atan);
add("log", Float, { Float }, &Routines::log);
add("pow", Float, { Float, Float }, &Routines::pow);
add("sqrt", Float, { Float }, &Routines::sqrt);
add("abs", Int, { Int }, &Routines::abs);
add("EffectHeal", Effect, { Int }, &Routines::effectHeal);
add("EffectDamage", Effect, { Int, Int, Int }, &Routines::effectDamage);
add("EffectAbilityIncrease", Effect, { Int, Int }, &Routines::effectAbilityIncrease);
add("EffectDamageResistance", Effect, { Int, Int, Int }, &Routines::effectDamageResistance);
add("EffectResurrection", Effect, { }, &Routines::effectResurrection);
add("GetPlayerRestrictMode", Int, { Object });
add("GetCasterLevel", Int, { Object });
add("GetFirstEffect", Effect, { Object });
@ -131,19 +131,19 @@ void Routines::addKotorRoutines() {
add("GetEffectDurationType", Int, { Effect });
add("GetEffectSubType", Int, { Effect });
add("GetEffectCreator", Object, { Effect });
add("IntToString", String, { Int }, bind(&Routines::intToString, this, _1, _2));
add("IntToString", String, { Int }, &Routines::intToString);
add("GetFirstObjectInArea", Object, { Object, Int });
add("GetNextObjectInArea", Object, { Object, Int });
add("d2", Int, { Int }, bind(&Routines::d2, this, _1, _2));
add("d3", Int, { Int }, bind(&Routines::d3, this, _1, _2));
add("d4", Int, { Int }, bind(&Routines::d4, this, _1, _2));
add("d6", Int, { Int }, bind(&Routines::d6, this, _1, _2));
add("d8", Int, { Int }, bind(&Routines::d8, this, _1, _2));
add("d10", Int, { Int }, bind(&Routines::d10, this, _1, _2));
add("d12", Int, { Int }, bind(&Routines::d12, this, _1, _2));
add("d20", Int, { Int }, bind(&Routines::d20, this, _1, _2));
add("d100", Int, { Int }, bind(&Routines::d100, this, _1, _2));
add("VectorMagnitude", Float, { TVector }, bind(&Routines::vectorMagnitude, this, _1, _2));
add("d2", Int, { Int }, &Routines::d2);
add("d3", Int, { Int }, &Routines::d3);
add("d4", Int, { Int }, &Routines::d4);
add("d6", Int, { Int }, &Routines::d6);
add("d8", Int, { Int }, &Routines::d8);
add("d10", Int, { Int }, &Routines::d10);
add("d12", Int, { Int }, &Routines::d12);
add("d20", Int, { Int }, &Routines::d20);
add("d100", Int, { Int }, &Routines::d100);
add("VectorMagnitude", Float, { TVector }, &Routines::vectorMagnitude);
add("GetMetaMagicFeat", Int, { });
add("GetObjectType", Int, { Object });
add("GetRacialType", Int, { Object });
@ -154,72 +154,72 @@ void Routines::addKotorRoutines() {
add("MagicalEffect", Effect, { Effect });
add("SupernaturalEffect", Effect, { Effect });
add("ExtraordinaryEffect", Effect, { Effect });
add("EffectACIncrease", Effect, { Int, Int, Int }, bind(&Routines::effectACIncrease, this, _1, _2));
add("EffectACIncrease", Effect, { Int, Int, Int }, &Routines::effectACIncrease);
add("GetAC", Int, { Object, Int });
add("EffectSavingThrowIncrease", Effect, { Int, Int, Int }, bind(&Routines::effectSavingThrowIncrease, this, _1, _2));
add("EffectAttackIncrease", Effect, { Int, Int }, bind(&Routines::effectAttackIncrease, this, _1, _2));
add("EffectDamageReduction", Effect, { Int, Int, Int }, bind(&Routines::effectDamageReduction, this, _1, _2));
add("EffectDamageIncrease", Effect, { Int, Int }, bind(&Routines::effectDamageIncrease, this, _1, _2));
add("RoundsToSeconds", Float, { Int }, bind(&Routines::roundsToSeconds, this, _1, _2));
add("HoursToSeconds", Float, { Int }, bind(&Routines::hoursToSeconds, this, _1, _2));
add("TurnsToSeconds", Float, { Int }, bind(&Routines::turnsToSeconds, this, _1, _2));
add("EffectSavingThrowIncrease", Effect, { Int, Int, Int }, &Routines::effectSavingThrowIncrease);
add("EffectAttackIncrease", Effect, { Int, Int }, &Routines::effectAttackIncrease);
add("EffectDamageReduction", Effect, { Int, Int, Int }, &Routines::effectDamageReduction);
add("EffectDamageIncrease", Effect, { Int, Int }, &Routines::effectDamageIncrease);
add("RoundsToSeconds", Float, { Int }, &Routines::roundsToSeconds);
add("HoursToSeconds", Float, { Int }, &Routines::hoursToSeconds);
add("TurnsToSeconds", Float, { Int }, &Routines::turnsToSeconds);
add("SoundObjectSetFixedVariance", Void, { Object, Float });
add("GetGoodEvilValue", Int, { Object });
add("GetPartyMemberCount", Int, { }, bind(&Routines::getPartyMemberCount, this, _1, _2));
add("GetPartyMemberCount", Int, { }, &Routines::getPartyMemberCount);
add("GetAlignmentGoodEvil", Int, { Object });
add("GetFirstObjectInShape", Object, { Int, Float, Location, Int, Int, TVector });
add("GetNextObjectInShape", Object, { Int, Float, Location, Int, Int, TVector });
add("EffectEntangle", Effect, { }, bind(&Routines::effectEntangle, this, _1, _2));
add("SignalEvent", Void, { Object, Event }, bind(&Routines::signalEvent, this, _1, _2));
add("EventUserDefined", Event, { Int }, bind(&Routines::eventUserDefined, this, _1, _2));
add("EffectDeath", Effect, { Int, Int }, bind(&Routines::effectDeath, this, _1, _2));
add("EffectKnockdown", Effect, { }, bind(&Routines::effectKnockdown, this, _1, _2));
add("EffectEntangle", Effect, { }, &Routines::effectEntangle);
add("SignalEvent", Void, { Object, Event }, &Routines::signalEvent);
add("EventUserDefined", Event, { Int }, &Routines::eventUserDefined);
add("EffectDeath", Effect, { Int, Int }, &Routines::effectDeath);
add("EffectKnockdown", Effect, { }, &Routines::effectKnockdown);
add("ActionGiveItem", Void, { Object, Object });
add("ActionTakeItem", Void, { Object, Object });
add("VectorNormalize", TVector, { TVector }, bind(&Routines::vectorNormalize, this, _1, _2));
add("GetItemStackSize", Int, { Object }, bind(&Routines::getItemStackSize, this, _1, _2));
add("GetAbilityScore", Int, { Object, Int }, bind(&Routines::getAbilityScore, this, _1, _2));
add("GetIsDead", Int, { Object }, bind(&Routines::getIsDead, this, _1, _2));
add("PrintVector", Void, { TVector, Int }, bind(&Routines::printVector, this, _1, _2));
add("Vector", TVector, { Float, Float, Float }, bind(&Routines::vectorCreate, this, _1, _2));
add("VectorNormalize", TVector, { TVector }, &Routines::vectorNormalize);
add("GetItemStackSize", Int, { Object }, &Routines::getItemStackSize);
add("GetAbilityScore", Int, { Object, Int }, &Routines::getAbilityScore);
add("GetIsDead", Int, { Object }, &Routines::getIsDead);
add("PrintVector", Void, { TVector, Int }, &Routines::printVector);
add("Vector", TVector, { Float, Float, Float }, &Routines::vectorCreate);
add("SetFacingPoint", Void, { TVector });
add("AngleToVector", TVector, { Float });
add("VectorToAngle", Float, { TVector });
add("TouchAttackMelee", Int, { Object, Int });
add("TouchAttackRanged", Int, { Object, Int });
add("EffectParalyze", Effect, { }, bind(&Routines::effectParalyze, this, _1, _2));
add("EffectSpellImmunity", Effect, { Int }, bind(&Routines::effectSpellImmunity, this, _1, _2));
add("SetItemStackSize", Void, { Object, Int }, bind(&Routines::setItemStackSize, this, _1, _2));
add("GetDistanceBetween", Float, { Object, Object }, bind(&Routines::getDistanceBetween, this, _1, _2));
add("EffectParalyze", Effect, { }, &Routines::effectParalyze);
add("EffectSpellImmunity", Effect, { Int }, &Routines::effectSpellImmunity);
add("SetItemStackSize", Void, { Object, Int }, &Routines::setItemStackSize);
add("GetDistanceBetween", Float, { Object, Object }, &Routines::getDistanceBetween);
add("SetReturnStrref", Void, { Int, Int, Int });
add("EffectForceJump", Effect, { Object, Int }, bind(&Routines::effectForceJump, this, _1, _2));
add("EffectSleep", Effect, { }, bind(&Routines::effectSleep, this, _1, _2));
add("GetItemInSlot", Object, { Int, Object }, bind(&Routines::getItemInSlot, this, _1, _2));
add("EffectTemporaryForcePoints", Effect, { Int }, bind(&Routines::effectTemporaryForcePoints, this, _1, _2));
add("EffectConfused", Effect, { }, bind(&Routines::effectConfused, this, _1, _2));
add("EffectFrightened", Effect, { }, bind(&Routines::effectFrightened, this, _1, _2));
add("EffectChoke", Effect, { }, bind(&Routines::effectChoke, this, _1, _2));
add("SetGlobalString", Void, { String, String }, bind(&Routines::setGlobalString, this, _1, _2));
add("EffectStunned", Effect, { }, bind(&Routines::effectStunned, this, _1, _2));
add("EffectForceJump", Effect, { Object, Int }, &Routines::effectForceJump);
add("EffectSleep", Effect, { }, &Routines::effectSleep);
add("GetItemInSlot", Object, { Int, Object }, &Routines::getItemInSlot);
add("EffectTemporaryForcePoints", Effect, { Int }, &Routines::effectTemporaryForcePoints);
add("EffectConfused", Effect, { }, &Routines::effectConfused);
add("EffectFrightened", Effect, { }, &Routines::effectFrightened);
add("EffectChoke", Effect, { }, &Routines::effectChoke);
add("SetGlobalString", Void, { String, String }, &Routines::setGlobalString);
add("EffectStunned", Effect, { }, &Routines::effectStunned);
add("SetCommandable", Void, { Int, Object });
add("GetCommandable", Int, { Object });
add("EffectRegenerate", Effect, { Int, Float }, bind(&Routines::effectRegenerate, this, _1, _2));
add("EffectMovementSpeedIncrease", Effect, { Int }, bind(&Routines::effectMovementSpeedIncrease, this, _1, _2));
add("GetHitDice", Int, { Object }, bind(&Routines::getHitDice, this, _1, _2));
add("EffectRegenerate", Effect, { Int, Float }, &Routines::effectRegenerate);
add("EffectMovementSpeedIncrease", Effect, { Int }, &Routines::effectMovementSpeedIncrease);
add("GetHitDice", Int, { Object }, &Routines::getHitDice);
add("ActionForceFollowObject", Void, { Object, Float });
add("GetTag", String, { Object }, bind(&Routines::getTag, this, _1, _2));
add("GetTag", String, { Object }, &Routines::getTag);
add("ResistForce", Int, { Object, Object });
add("GetEffectType", Int, { Effect });
add("EffectAreaOfEffect", Effect, { Int, String, String, String }, bind(&Routines::effectAreaOfEffect, this, _1, _2));
add("GetFactionEqual", Int, { Object, Object }, bind(&Routines::getFactionEqual, this, _1, _2));
add("ChangeFaction", Void, { Object, Object }, bind(&Routines::changeFaction, this, _1, _2));
add("EffectAreaOfEffect", Effect, { Int, String, String, String }, &Routines::effectAreaOfEffect);
add("GetFactionEqual", Int, { Object, Object }, &Routines::getFactionEqual);
add("ChangeFaction", Void, { Object, Object }, &Routines::changeFaction);
add("GetIsListening", Int, { Object });
add("SetListening", Void, { Object, Int });
add("SetListenPattern", Void, { Object, String, Int });
add("TestStringAgainstPattern", Int, { String, String });
add("GetMatchedSubstring", String, { Int });
add("GetMatchedSubstringsCount", Int, { });
add("EffectVisualEffect", Effect, { Int, Int }, bind(&Routines::effectVisualEffect, this, _1, _2));
add("EffectVisualEffect", Effect, { Int, Int }, &Routines::effectVisualEffect);
add("GetFactionWeakestMember", Object, { Object, Int });
add("GetFactionStrongestMember", Object, { Object, Int });
add("GetFactionMostDamagedMember", Object, { Object, Int });
@ -233,65 +233,65 @@ void Routines::addKotorRoutines() {
add("GetFactionMostFrequentClass", Int, { Object });
add("GetFactionWorstAC", Object, { Object, Int });
add("GetFactionBestAC", Object, { Object, Int });
add("GetGlobalString", String, { String }, bind(&Routines::getGlobalString, this, _1, _2));
add("GetGlobalString", String, { String }, &Routines::getGlobalString);
add("GetListenPatternNumber", Int, { });
add("ActionJumpToObject", Void, { Object, Int }, bind(&Routines::actionJumpToObject, this, _1, _2));
add("GetWaypointByTag", Object, { String }, bind(&Routines::getWaypointByTag, this, _1, _2));
add("ActionJumpToObject", Void, { Object, Int }, &Routines::actionJumpToObject);
add("GetWaypointByTag", Object, { String }, &Routines::getWaypointByTag);
add("GetTransitionTarget", Object, { Object });
add("EffectLinkEffects", Effect, { Effect, Effect }, bind(&Routines::effectLinkEffects, this, _1, _2));
add("GetObjectByTag", Object, { String, Int }, bind(&Routines::getObjectByTag, this, _1, _2));
add("EffectLinkEffects", Effect, { Effect, Effect }, &Routines::effectLinkEffects);
add("GetObjectByTag", Object, { String, Int }, &Routines::getObjectByTag);
add("AdjustAlignment", Void, { Object, Int, Int });
add("ActionWait", Void, { Float });
add("SetAreaTransitionBMP", Void, { Int, String });
add("ActionStartConversation", Void, { Object, String, Int, Int, Int, String, String, String, String, String, String, Int }, bind(&Routines::actionStartConversation, this, _1, _2));
add("ActionPauseConversation", Void, { }), bind(&Routines::actionPauseConversation, this, _1, _2);
add("ActionResumeConversation", Void, { }, bind(&Routines::actionResumeConversation, this, _1, _2));
add("EffectBeam", Effect, { Int, Object, Int, Int }, bind(&Routines::effectBeam, this, _1, _2));
add("ActionStartConversation", Void, { Object, String, Int, Int, Int, String, String, String, String, String, String, Int }, &Routines::actionStartConversation);
add("ActionPauseConversation", Void, { }), &Routines::actionPauseConversation;
add("ActionResumeConversation", Void, { }, &Routines::actionResumeConversation);
add("EffectBeam", Effect, { Int, Object, Int, Int }, &Routines::effectBeam);
add("GetReputation", Int, { Object, Object });
add("AdjustReputation", Void, { Object, Object, Int });
add("GetModuleFileName", String, { });
add("GetGoingToBeAttackedBy", Object, { Object });
add("EffectForceResistanceIncrease", Effect, { Int }, bind(&Routines::effectForceResistanceIncrease, this, _1, _2));
add("GetLocation", Location, { Object }, bind(&Routines::getLocation, this, _1, _2));
add("ActionJumpToLocation", Void, { Location }, bind(&Routines::actionJumpToLocation, this, _1, _2));
add("Location", Location, { TVector, Float }, bind(&Routines::location, this, _1, _2));
add("EffectForceResistanceIncrease", Effect, { Int }, &Routines::effectForceResistanceIncrease);
add("GetLocation", Location, { Object }, &Routines::getLocation);
add("ActionJumpToLocation", Void, { Location }, &Routines::actionJumpToLocation);
add("Location", Location, { TVector, Float }, &Routines::location);
add("ApplyEffectAtLocation", Void, { Int, Effect, Location, Float });
add("GetIsPC", Int, { Object }, bind(&Routines::getIsPC, this, _1, _2));
add("FeetToMeters", Float, { Float }, bind(&Routines::feetToMeters, this, _1, _2));
add("YardsToMeters", Float, { Float }, bind(&Routines::yardsToMeters, this, _1, _2));
add("GetIsPC", Int, { Object }, &Routines::getIsPC);
add("FeetToMeters", Float, { Float }, &Routines::feetToMeters);
add("YardsToMeters", Float, { Float }, &Routines::yardsToMeters);
add("ApplyEffectToObject", Void, { Int, Effect, Object, Float });
add("SpeakString", Void, { String, Int });
add("GetSpellTargetLocation", Location, { });
add("GetPositionFromLocation", TVector, { Location }, bind(&Routines::getPositionFromLocation, this, _1, _2));
add("EffectBodyFuel", Effect, { }, bind(&Routines::effectBodyFuel, this, _1, _2));
add("GetFacingFromLocation", Float, { Location }, bind(&Routines::getFacingFromLocation, this, _1, _2));
add("GetPositionFromLocation", TVector, { Location }, &Routines::getPositionFromLocation);
add("EffectBodyFuel", Effect, { }, &Routines::effectBodyFuel);
add("GetFacingFromLocation", Float, { Location }, &Routines::getFacingFromLocation);
add("GetNearestCreatureToLocation", Object, { Int, Int, Location, Int, Int, Int, Int, Int });
add("GetNearestObject", Object, { Int, Object, Int });
add("GetNearestObjectToLocation", Object, { Int, Location, Int });
add("GetNearestObjectByTag", Object, { String, Object, Int });
add("IntToFloat", Float, { Int }, bind(&Routines::intToFloat, this, _1, _2));
add("FloatToInt", Int, { Float }, bind(&Routines::floatToInt, this, _1, _2));
add("StringToInt", Int, { String }, bind(&Routines::stringToInt, this, _1, _2));
add("StringToFloat", Float, { String }, bind(&Routines::stringToFloat, this, _1, _2));
add("IntToFloat", Float, { Int }, &Routines::intToFloat);
add("FloatToInt", Int, { Float }, &Routines::floatToInt);
add("StringToInt", Int, { String }, &Routines::stringToInt);
add("StringToFloat", Float, { String }, &Routines::stringToFloat);
add("ActionCastSpellAtLocation", Void, { Int, Location, Int, Int, Int, Int });
add("GetIsEnemy", Int, { Object, Object }, bind(&Routines::getIsEnemy, this, _1, _2));
add("GetIsFriend", Int, { Object, Object }, bind(&Routines::getIsFriend, this, _1, _2));
add("GetIsNeutral", Int, { Object, Object }, bind(&Routines::getIsNeutral, this, _1, _2));
add("GetPCSpeaker", Object, { }, bind(&Routines::getPCSpeaker, this, _1, _2));
add("GetStringByStrRef", String, { Int }, bind(&Routines::getStringByStrRef, this, _1, _2));
add("GetIsEnemy", Int, { Object, Object }, &Routines::getIsEnemy);
add("GetIsFriend", Int, { Object, Object }, &Routines::getIsFriend);
add("GetIsNeutral", Int, { Object, Object }, &Routines::getIsNeutral);
add("GetPCSpeaker", Object, { }, &Routines::getPCSpeaker);
add("GetStringByStrRef", String, { Int }, &Routines::getStringByStrRef);
add("ActionSpeakStringByStrRef", Void, { Int, Int });
add("DestroyObject", Void, { Object, Float, Int, Float }, bind(&Routines::destroyObject, this, _1, _2));
add("GetModule", Object, { }, bind(&Routines::getModule, this, _1, _2));
add("DestroyObject", Void, { Object, Float, Int, Float }, &Routines::destroyObject);
add("GetModule", Object, { }, &Routines::getModule);
add("CreateObject", Object, { Int, String, Location, Int });
add("EventSpellCastAt", Event, { Object, Int, Int });
add("GetLastSpellCaster", Object, { });
add("GetLastSpell", Int, { });
add("GetUserDefinedEventNumber", Int, { }, bind(&Routines::getUserDefinedEventNumber, this, _1, _2));
add("GetUserDefinedEventNumber", Int, { }, &Routines::getUserDefinedEventNumber);
add("GetSpellId", Int, { });
add("RandomName", String, { });
add("EffectPoison", Effect, { Int }, bind(&Routines::effectPoison, this, _1, _2));
add("GetLoadFromSaveGame", Int, { }, bind(&Routines::getLoadFromSaveGame, this, _1, _2));
add("EffectAssuredDeflection", Effect, { Int }, bind(&Routines::effectAssuredDeflection, this, _1, _2));
add("EffectPoison", Effect, { Int }, &Routines::effectPoison);
add("GetLoadFromSaveGame", Int, { }, &Routines::getLoadFromSaveGame);
add("EffectAssuredDeflection", Effect, { Int }, &Routines::effectAssuredDeflection);
add("GetName", String, { Object });
add("GetLastSpeaker", Object, { });
add("BeginConversation", Int, { String, Object });
@ -308,13 +308,13 @@ void Routines::addKotorRoutines() {
add("SetItemNonEquippable", Void, { Object, Int });
add("GetButtonMashCheck", Int, { });
add("SetButtonMashCheck", Void, { Int });
add("EffectForcePushTargeted", Effect, { Location, Int }, bind(&Routines::effectForcePushTargeted, this, _1, _2));
add("EffectHaste", Effect, { }, bind(&Routines::effectHaste, this, _1, _2));
add("EffectForcePushTargeted", Effect, { Location, Int }, &Routines::effectForcePushTargeted);
add("EffectHaste", Effect, { }, &Routines::effectHaste);
add("GiveItem", Void, { Object, Object });
add("ObjectToString", String, { Object });
add("EffectImmunity", Effect, { Int }, bind(&Routines::effectImmunity, this, _1, _2));
add("EffectImmunity", Effect, { Int }, &Routines::effectImmunity);
add("GetIsImmune", Int, { Object, Int, Object });
add("EffectDamageImmunityIncrease", Effect, { Int, Int }, bind(&Routines::effectDamageImmunityIncrease, this, _1, _2));
add("EffectDamageImmunityIncrease", Effect, { Int, Int }, &Routines::effectDamageImmunityIncrease);
add("GetEncounterActive", Int, { Object });
add("SetEncounterActive", Void, { Int, Object });
add("GetEncounterSpawnsMax", Int, { Object });
@ -325,7 +325,7 @@ void Routines::addKotorRoutines() {
add("GetModuleItemAcquiredFrom", Object, { });
add("SetCustomToken", Void, { Int, String });
add("GetHasFeat", Int, { Int, Object });
add("GetHasSkill", Int, { Int, Object }, bind(&Routines::getHasSkill, this, _1, _2));
add("GetHasSkill", Int, { Int, Object }, &Routines::getHasSkill);
add("ActionUseFeat", Void, { Int, Object });
add("ActionUseSkill", Void, { Int, Object, Int, Object });
add("GetObjectSeen", Int, { Object, Object });
@ -333,11 +333,11 @@ void Routines::addKotorRoutines() {
add("GetLastPlayerDied", Object, { });
add("GetModuleItemLost", Object, { });
add("GetModuleItemLostBy", Object, { });
add("ActionDoCommand", Void, { Action }, bind(&Routines::actionDoCommand, this, _1, _2));
add("ActionDoCommand", Void, { Action }, &Routines::actionDoCommand);
add("EventConversation", Event, { });
add("SetEncounterDifficulty", Void, { Int, Object });
add("GetEncounterDifficulty", Int, { Object });
add("GetDistanceBetweenLocations", Float, { Location, Location }, bind(&Routines::getDistanceBetweenLocations, this, _1, _2));
add("GetDistanceBetweenLocations", Float, { Location, Location }, &Routines::getDistanceBetweenLocations);
add("GetReflexAdjustedDamage", Int, { Int, Object, Int, Int, Object });
add("PlayAnimation", Void, { Int, Float, Float });
add("TalentSpell", Talent, { Int });
@ -352,19 +352,19 @@ void Routines::addKotorRoutines() {
add("ActionUseTalentAtLocation", Void, { Talent, Location });
add("GetGoldPieceValue", Int, { Object });
add("GetIsPlayableRacialType", Int, { Object });
add("JumpToLocation", Void, { Location }, bind(&Routines::jumpToLocation, this, _1, _2));
add("EffectTemporaryHitpoints", Effect, { Int }, bind(&Routines::effectTemporaryHitpoints, this, _1, _2));
add("GetSkillRank", Int, { Int, Object }, bind(&Routines::getSkillRank, this, _1, _2));
add("JumpToLocation", Void, { Location }, &Routines::jumpToLocation);
add("EffectTemporaryHitpoints", Effect, { Int }, &Routines::effectTemporaryHitpoints);
add("GetSkillRank", Int, { Int, Object }, &Routines::getSkillRank);
add("GetAttackTarget", Object, { Object });
add("GetLastAttackType", Int, { Object });
add("GetLastAttackMode", Int, { Object });
add("GetDistanceBetween2D", Float, { Object, Object }, bind(&Routines::getDistanceBetween2D, this, _1, _2));
add("GetIsInCombat", Int, { Object }, bind(&Routines::getIsInCombat, this, _1, _2));
add("GetDistanceBetween2D", Float, { Object, Object }, &Routines::getDistanceBetween2D);
add("GetIsInCombat", Int, { Object }, &Routines::getIsInCombat);
add("GetLastAssociateCommand", Int, { Object });
add("GiveGoldToCreature", Void, { Object, Int });
add("SetIsDestroyable", Void, { Int, Int, Int });
add("SetLocked", Void, { Object, Int }, bind(&Routines::setLocked, this, _1, _2));
add("GetLocked", Int, { Object }, bind(&Routines::getLocked, this, _1, _2));
add("SetLocked", Void, { Object, Int }, &Routines::setLocked);
add("GetLocked", Int, { Object }, &Routines::getLocked);
add("GetClickingObject", Object, { });
add("SetAssociateListenPatterns", Void, { Object });
add("GetLastWeaponUsed", Object, { Object });
@ -373,16 +373,16 @@ void Routines::addKotorRoutines() {
add("GetAbilityModifier", Int, { Int, Object });
add("GetIdentified", Int, { Object });
add("SetIdentified", Void, { Object, Int });
add("GetDistanceBetweenLocations2D", Float, { Location, Location }, bind(&Routines::getDistanceBetweenLocations2D, this, _1, _2));
add("GetDistanceToObject2D", Float, { Object }, bind(&Routines::getDistanceToObject2D, this, _1, _2));
add("GetDistanceBetweenLocations2D", Float, { Location, Location }, &Routines::getDistanceBetweenLocations2D);
add("GetDistanceToObject2D", Float, { Object }, &Routines::getDistanceToObject2D);
add("GetBlockingDoor", Object, { });
add("GetIsDoorActionPossible", Int, { Object, Int });
add("DoDoorAction", Void, { Object, Int });
add("GetFirstItemInInventory", Object, { Object }, bind(&Routines::getFirstItemInInventory, this, _1, _2));
add("GetNextItemInInventory", Object, { Object }, bind(&Routines::getNextItemInInventory, this, _1, _2));
add("GetClassByPosition", Int, { Int, Object }, bind(&Routines::getClassByPosition, this, _1, _2));
add("GetLevelByPosition", Int, { Int, Object }, bind(&Routines::getLevelByPosition, this, _1, _2));
add("GetLevelByClass", Int, { Int, Object }, bind(&Routines::getLevelByClass, this, _1, _2));
add("GetFirstItemInInventory", Object, { Object }, &Routines::getFirstItemInInventory);
add("GetNextItemInInventory", Object, { Object }, &Routines::getNextItemInInventory);
add("GetClassByPosition", Int, { Int, Object }, &Routines::getClassByPosition);
add("GetLevelByPosition", Int, { Int, Object }, &Routines::getLevelByPosition);
add("GetLevelByClass", Int, { Int, Object }, &Routines::getLevelByClass);
add("GetDamageDealtByType", Int, { Int });
add("GetTotalDamageDealt", Int, { });
add("GetLastDamager", Object, { });
@ -390,14 +390,14 @@ void Routines::addKotorRoutines() {
add("GetLastDisturbed", Object, { });
add("GetLastLocked", Object, { });
add("GetLastUnlocked", Object, { });
add("EffectSkillIncrease", Effect, { Int, Int }, bind(&Routines::effectSkillIncrease, this, _1, _2));
add("EffectSkillIncrease", Effect, { Int, Int }, &Routines::effectSkillIncrease);
add("GetInventoryDisturbType", Int, { });
add("GetInventoryDisturbItem", Object, { });
add("ShowUpgradeScreen", Void, { Object });
add("VersusAlignmentEffect", Effect, { Effect, Int, Int });
add("VersusRacialTypeEffect", Effect, { Effect, Int });
add("VersusTrapEffect", Effect, { Effect });
add("GetGender", Int, { Object }, bind(&Routines::getGender, this, _1, _2));
add("GetGender", Int, { Object }, &Routines::getGender);
add("GetIsTalentValid", Int, { Talent });
add("ActionMoveAwayFromLocation", Void, { Location, Int, Float });
add("GetAttemptedAttackTarget", Object, { });
@ -411,8 +411,8 @@ void Routines::addKotorRoutines() {
add("GetJournalEntry", Int, { String });
add("PlayRumblePattern", Int, { Int });
add("StopRumblePattern", Int, { Int });
add("EffectDamageForcePoints", Effect, { Int }, bind(&Routines::effectDamageForcePoints, this, _1, _2));
add("EffectHealForcePoints", Effect, { Int }, bind(&Routines::effectHealForcePoints, this, _1, _2));
add("EffectDamageForcePoints", Effect, { Int }, &Routines::effectDamageForcePoints);
add("EffectHealForcePoints", Effect, { Int }, &Routines::effectHealForcePoints);
add("SendMessageToPC", Void, { Object, String });
add("GetAttemptedSpellTarget", Object, { });
add("GetLastOpenedBy", Object, { });
@ -421,27 +421,27 @@ void Routines::addKotorRoutines() {
add("ActionSurrenderToEnemies", Void, { });
add("GetFirstFactionMember", Object, { Object, Int });
add("GetNextFactionMember", Object, { Object, Int });
add("ActionForceMoveToLocation", Void, { Location, Int, Float }, bind(&Routines::actionForceMoveToLocation, this, _1, _2));
add("ActionForceMoveToObject", Void, { Object, Int, Float, Float }, bind(&Routines::actionForceMoveToObject, this, _1, _2));
add("ActionForceMoveToLocation", Void, { Location, Int, Float }, &Routines::actionForceMoveToLocation);
add("ActionForceMoveToObject", Void, { Object, Int, Float, Float }, &Routines::actionForceMoveToObject);
add("GetJournalQuestExperience", Int, { String });
add("JumpToObject", Void, { Object, Int }, bind(&Routines::jumpToObject, this, _1, _2));
add("JumpToObject", Void, { Object, Int }, &Routines::jumpToObject);
add("SetMapPinEnabled", Void, { Object, Int });
add("EffectHitPointChangeWhenDying", Effect, { Float }, bind(&Routines::effectHitPointChangeWhenDying, this, _1, _2));
add("EffectHitPointChangeWhenDying", Effect, { Float }, &Routines::effectHitPointChangeWhenDying);
add("PopUpGUIPanel", Void, { Object, Int });
add("AddMultiClass", Void, { Int, Object });
add("GetIsLinkImmune", Int, { Object, Effect });
add("EffectDroidStun", Effect, { }, bind(&Routines::effectDroidStun, this, _1, _2));
add("EffectForcePushed", Effect, { }, bind(&Routines::effectForcePushed, this, _1, _2));
add("EffectDroidStun", Effect, { }, &Routines::effectDroidStun);
add("EffectForcePushed", Effect, { }, &Routines::effectForcePushed);
add("GiveXPToCreature", Void, { Object, Int });
add("SetXP", Void, { Object, Int });
add("GetXP", Int, { Object });
add("IntToHexString", String, { Int }, bind(&Routines::intToHexString, this, _1, _2));
add("IntToHexString", String, { Int }, &Routines::intToHexString);
add("GetBaseItemType", Int, { Object });
add("GetItemHasItemProperty", Int, { Object, Int });
add("ActionEquipMostDamagingMelee", Void, { Object, Int });
add("ActionEquipMostDamagingRanged", Void, { Object });
add("GetItemACValue", Int, { Object });
add("EffectForceResisted", Effect, { Object }, bind(&Routines::effectForceResisted, this, _1, _2));
add("EffectForceResisted", Effect, { Object }, &Routines::effectForceResisted);
add("ExploreAreaForPlayer", Void, { Object, Object });
add("ActionEquipMostEffectiveArmor", Void, { });
add("GetIsDay", Int, { });
@ -451,15 +451,15 @@ void Routines::addKotorRoutines() {
add("GetIsEncounterCreature", Int, { Object });
add("GetLastPlayerDying", Object, { });
add("GetStartingLocation", Location, { });
add("ChangeToStandardFaction", Void, { Object, Int }, bind(&Routines::changeToStandardFaction, this, _1, _2));
add("SoundObjectPlay", Void, { Object }, bind(&Routines::soundObjectPlay, this, _1, _2));
add("SoundObjectStop", Void, { Object }, bind(&Routines::soundObjectStop, this, _1, _2));
add("ChangeToStandardFaction", Void, { Object, Int }, &Routines::changeToStandardFaction);
add("SoundObjectPlay", Void, { Object }, &Routines::soundObjectPlay);
add("SoundObjectStop", Void, { Object }, &Routines::soundObjectStop);
add("SoundObjectSetVolume", Void, { Object, Int });
add("SoundObjectSetPosition", Void, { Object, TVector });
add("SpeakOneLinerConversation", Void, { String, Object });
add("GetGold", Int, { Object });
add("GetLastRespawnButtonPresser", Object, { });
add("EffectForceFizzle", Effect, { }, bind(&Routines::effectForceFizzle, this, _1, _2));
add("EffectForceFizzle", Effect, { }, &Routines::effectForceFizzle);
add("SetLightsaberPowered", Void, { Object, Int, Int, Int });
add("GetIsWeaponEffective", Int, { Object, Int });
add("GetLastSpellHarmful", Int, { });
@ -482,41 +482,41 @@ void Routines::addKotorRoutines() {
add("GetItemActivator", Object, { });
add("GetItemActivatedTargetLocation", Location, { });
add("GetItemActivatedTarget", Object, { });
add("GetIsOpen", Int, { Object }, bind(&Routines::getIsOpen, this, _1, _2));
add("GetIsOpen", Int, { Object }, &Routines::getIsOpen);
add("TakeGoldFromCreature", Void, { Int, Object, Int });
add("GetIsInConversation", Int, { Object });
add("EffectAbilityDecrease", Effect, { Int, Int }, bind(&Routines::effectAbilityDecrease, this, _1, _2));
add("EffectAttackDecrease", Effect, { Int, Int }, bind(&Routines::effectAttackDecrease, this, _1, _2));
add("EffectDamageDecrease", Effect, { Int, Int }, bind(&Routines::effectDamageDecrease, this, _1, _2));
add("EffectDamageImmunityDecrease", Effect, { Int, Int }, bind(&Routines::effectDamageImmunityDecrease, this, _1, _2));
add("EffectACDecrease", Effect, { Int, Int, Int }, bind(&Routines::effectACDecrease, this, _1, _2));
add("EffectMovementSpeedDecrease", Effect, { Int }, bind(&Routines::effectMovementSpeedDecrease, this, _1, _2));
add("EffectSavingThrowDecrease", Effect, { Int, Int, Int }, bind(&Routines::effectSavingThrowDecrease, this, _1, _2));
add("EffectSkillDecrease", Effect, { Int, Int }, bind(&Routines::effectSkillDecrease, this, _1, _2));
add("EffectForceResistanceDecrease", Effect, { Int }, bind(&Routines::effectForceResistanceDecrease, this, _1, _2));
add("EffectAbilityDecrease", Effect, { Int, Int }, &Routines::effectAbilityDecrease);
add("EffectAttackDecrease", Effect, { Int, Int }, &Routines::effectAttackDecrease);
add("EffectDamageDecrease", Effect, { Int, Int }, &Routines::effectDamageDecrease);
add("EffectDamageImmunityDecrease", Effect, { Int, Int }, &Routines::effectDamageImmunityDecrease);
add("EffectACDecrease", Effect, { Int, Int, Int }, &Routines::effectACDecrease);
add("EffectMovementSpeedDecrease", Effect, { Int }, &Routines::effectMovementSpeedDecrease);
add("EffectSavingThrowDecrease", Effect, { Int, Int, Int }, &Routines::effectSavingThrowDecrease);
add("EffectSkillDecrease", Effect, { Int, Int }, &Routines::effectSkillDecrease);
add("EffectForceResistanceDecrease", Effect, { Int }, &Routines::effectForceResistanceDecrease);
add("GetPlotFlag", Int, { Object });
add("SetPlotFlag", Void, { Object, Int });
add("EffectInvisibility", Effect, { Int }, bind(&Routines::effectInvisibility, this, _1, _2));
add("EffectConcealment", Effect, { Int }, bind(&Routines::effectConcealment, this, _1, _2));
add("EffectForceShield", Effect, { Int }, bind(&Routines::effectForceShield, this, _1, _2));
add("EffectDispelMagicAll", Effect, { Int }, bind(&Routines::effectDispelMagicAll, this, _1, _2));
add("EffectInvisibility", Effect, { Int }, &Routines::effectInvisibility);
add("EffectConcealment", Effect, { Int }, &Routines::effectConcealment);
add("EffectForceShield", Effect, { Int }, &Routines::effectForceShield);
add("EffectDispelMagicAll", Effect, { Int }, &Routines::effectDispelMagicAll);
add("SetDialogPlaceableCamera", Void, { Int });
add("GetSoloMode", Int, { });
add("EffectDisguise", Effect, { Int }, bind(&Routines::effectDisguise, this, _1, _2));
add("EffectDisguise", Effect, { Int }, &Routines::effectDisguise);
add("GetMaxStealthXP", Int, { });
add("EffectTrueSeeing", Effect, { }, bind(&Routines::effectTrueSeeing, this, _1, _2));
add("EffectSeeInvisible", Effect, { }, bind(&Routines::effectSeeInvisible, this, _1, _2));
add("EffectTimeStop", Effect, { }, bind(&Routines::effectTimeStop, this, _1, _2));
add("EffectTrueSeeing", Effect, { }, &Routines::effectTrueSeeing);
add("EffectSeeInvisible", Effect, { }, &Routines::effectSeeInvisible);
add("EffectTimeStop", Effect, { }, &Routines::effectTimeStop);
add("SetMaxStealthXP", Void, { Int });
add("EffectBlasterDeflectionIncrease", Effect, { Int }, bind(&Routines::effectBlasterDeflectionIncrease, this, _1, _2));
add("EffectBlasterDeflectionDecrease", Effect, { Int }, bind(&Routines::effectBlasterDeflectionDecrease, this, _1, _2));
add("EffectHorrified", Effect, { }, bind(&Routines::effectHorrified, this, _1, _2));
add("EffectSpellLevelAbsorption", Effect, { Int, Int, Int }, bind(&Routines::effectSpellLevelAbsorption, this, _1, _2));
add("EffectDispelMagicBest", Effect, { Int }, bind(&Routines::effectDispelMagicBest, this, _1, _2));
add("EffectBlasterDeflectionIncrease", Effect, { Int }, &Routines::effectBlasterDeflectionIncrease);
add("EffectBlasterDeflectionDecrease", Effect, { Int }, &Routines::effectBlasterDeflectionDecrease);
add("EffectHorrified", Effect, { }, &Routines::effectHorrified);
add("EffectSpellLevelAbsorption", Effect, { Int, Int, Int }, &Routines::effectSpellLevelAbsorption);
add("EffectDispelMagicBest", Effect, { Int }, &Routines::effectDispelMagicBest);
add("GetCurrentStealthXP", Int, { });
add("GetNumStackedItems", Int, { Object }, bind(&Routines::getItemStackSize, this, _1, _2));
add("GetNumStackedItems", Int, { Object }, &Routines::getItemStackSize);
add("SurrenderToEnemies", Void, { });
add("EffectMissChance", Effect, { Int }, bind(&Routines::effectMissChance, this, _1, _2));
add("EffectMissChance", Effect, { Int }, &Routines::effectMissChance);
add("SetCurrentStealthXP", Void, { Int });
add("GetCreatureSize", Int, { Object });
add("AwardStealthXP", Void, { Object });
@ -524,9 +524,9 @@ void Routines::addKotorRoutines() {
add("SetStealthXPEnabled", Void, { Int });
add("ActionUnlockObject", Void, { Object });
add("ActionLockObject", Void, { Object });
add("EffectModifyAttacks", Effect, { Int }, bind(&Routines::effectModifyAttacks, this, _1, _2));
add("EffectModifyAttacks", Effect, { Int }, &Routines::effectModifyAttacks);
add("GetLastTrapDetected", Object, { Object });
add("EffectDamageShield", Effect, { Int, Int, Int }, bind(&Routines::effectDamageShield, this, _1, _2));
add("EffectDamageShield", Effect, { Int, Int, Int }, &Routines::effectDamageShield);
add("GetNearestTrapToObject", Object, { Object, Int });
add("GetAttemptedMovementTarget", Object, { });
add("GetBlockingCreature", Object, { Object });
@ -548,7 +548,7 @@ void Routines::addKotorRoutines() {
add("SetLockHeadFollowInDialog", Void, { Object, Int });
add("CutsceneMove", Void, { Object, TVector, Int });
add("EnableVideoEffect", Void, { Int });
add("StartNewModule", Void, { String, String, String, String, String, String, String, String }, bind(&Routines::startNewModule, this, _1, _2));
add("StartNewModule", Void, { String, String, String, String, String, String, String, String }, &Routines::startNewModule);
add("DisableVideoEffect", Void, { });
add("GetWeaponRanged", Int, { Object });
add("DoSinglePlayerAutoSave", Void, { });
@ -589,8 +589,8 @@ void Routines::addKotorRoutines() {
add("GetPlaceableIllumination", Int, { Object });
add("GetIsPlaceableObjectActionPossible", Int, { Object, Int });
add("DoPlaceableObjectAction", Void, { Object, Int });
add("GetFirstPC", Object, { }, bind(&Routines::getFirstPC, this, _1, _2));
add("GetNextPC", Object, { }, bind(&Routines::getFirstPC, this, _1, _2));
add("GetFirstPC", Object, { }, &Routines::getFirstPC);
add("GetNextPC", Object, { }, &Routines::getFirstPC);
add("SetTrapDetectedBy", Int, { Object, Object });
add("GetIsTrapped", Int, { Object });
add("SetEffectIcon", Effect, { Effect, Int });
@ -608,7 +608,7 @@ void Routines::addKotorRoutines() {
add("SWMG_SetSpeedBlurEffect", Void, { Int, Float });
add("EndGame", Void, { Int });
add("GetRunScriptVar", Int, { }, bind(&Routines::getRunScriptVar, this, _1, _2));
add("GetRunScriptVar", Int, { }, &Routines::getRunScriptVar);
add("GetCreatureMovmentType", Int, { Object });
add("AmbientSoundSetDayVolume", Void, { Object, Int });
add("AmbientSoundSetNightVolume", Void, { Object, Int });
@ -617,14 +617,14 @@ void Routines::addKotorRoutines() {
add("GetStrRefSoundDuration", Float, { Int });
add("AddToParty", Void, { Object, Object });
add("RemoveFromParty", Void, { Object });
add("AddPartyMember", Int, { Int, Object }, bind(&Routines::addPartyMember, this, _1, _2));
add("RemovePartyMember", Int, { Int }, bind(&Routines::removePartyMember, this, _1, _2));
add("IsObjectPartyMember", Int, { Object }, bind(&Routines::isObjectPartyMember, this, _1, _2));
add("GetPartyMemberByIndex", Object, { Int }, bind(&Routines::getPartyMemberByIndex, this, _1, _2));
add("GetGlobalBoolean", Int, { String }, bind(&Routines::getGlobalBoolean, this, _1, _2));
add("SetGlobalBoolean", Void, { String, Int }, bind(&Routines::setGlobalBoolean, this, _1, _2));
add("GetGlobalNumber", Int, { String }, bind(&Routines::getGlobalNumber, this, _1, _2));
add("SetGlobalNumber", Void, { String, Int }, bind(&Routines::setGlobalNumber, this, _1, _2));
add("AddPartyMember", Int, { Int, Object }, &Routines::addPartyMember);
add("RemovePartyMember", Int, { Int }, &Routines::removePartyMember);
add("IsObjectPartyMember", Int, { Object }, &Routines::isObjectPartyMember);
add("GetPartyMemberByIndex", Object, { Int }, &Routines::getPartyMemberByIndex);
add("GetGlobalBoolean", Int, { String }, &Routines::getGlobalBoolean);
add("SetGlobalBoolean", Void, { String, Int }, &Routines::setGlobalBoolean);
add("GetGlobalNumber", Int, { String }, &Routines::getGlobalNumber);
add("SetGlobalNumber", Void, { String, Int }, &Routines::setGlobalNumber);
add("AurPostString", Void, { String, Int, Int, Float });
add("SWMG_GetLastEvent", String, { });
@ -720,14 +720,14 @@ void Routines::addKotorRoutines() {
add("DeleteJournalWorldAllEntries", Void, { });
add("DeleteJournalWorldEntry", Void, { Int });
add("DeleteJournalWorldEntryStrref", Void, { Int });
add("EffectForceDrain", Effect, { Int }, bind(&Routines::effectForceDrain, this, _1, _2));
add("EffectPsychicStatic", Effect, { }, bind(&Routines::effectPsychicStatic, this, _1, _2));
add("EffectForceDrain", Effect, { Int }, &Routines::effectForceDrain);
add("EffectPsychicStatic", Effect, { }, &Routines::effectPsychicStatic);
add("PlayVisualAreaEffect", Void, { Int, Location });
add("SetJournalQuestEntryPicture", Void, { String, Object, Int, Int, Int });
add("GetLocalBoolean", Int, { Object, Int }, bind(&Routines::getLocalBoolean, this, _1, _2));
add("SetLocalBoolean", Void, { Object, Int, Int }, bind(&Routines::setLocalBoolean, this, _1, _2));
add("GetLocalNumber", Int, { Object, Int }, bind(&Routines::getLocalNumber, this, _1, _2));
add("SetLocalNumber", Void, { Object, Int, Int }, bind(&Routines::setLocalNumber, this, _1, _2));
add("GetLocalBoolean", Int, { Object, Int }, &Routines::getLocalBoolean);
add("SetLocalBoolean", Void, { Object, Int, Int }, &Routines::setLocalBoolean);
add("GetLocalNumber", Int, { Object, Int }, &Routines::getLocalNumber);
add("SetLocalNumber", Void, { Object, Int, Int }, &Routines::setLocalNumber);
add("SWMG_GetSoundFrequency", Int, { Object, Int });
add("SWMG_SetSoundFrequency", Void, { Object, Int, Int });
@ -743,14 +743,14 @@ void Routines::addKotorRoutines() {
add("SetGlobalLocation", Void, { String, Location });
add("AddAvailableNPCByObject", Int, { Int, Object });
add("RemoveAvailableNPC", Int, { Int });
add("IsAvailableCreature", Int, { Int }, bind(&Routines::isAvailableCreature, this, _1, _2));
add("AddAvailableNPCByTemplate", Int, { Int, String }, bind(&Routines::addAvailableNPCByTemplate, this, _1, _2));
add("IsAvailableCreature", Int, { Int }, &Routines::isAvailableCreature);
add("AddAvailableNPCByTemplate", Int, { Int, String }, &Routines::addAvailableNPCByTemplate);
add("SpawnAvailableNPC", Object, { Int, Location });
add("IsNPCPartyMember", Int, { Int }, bind(&Routines::isNPCPartyMember, this, _1, _2));
add("IsNPCPartyMember", Int, { Int }, &Routines::isNPCPartyMember);
add("ActionBarkString", Void, { Int });
add("GetIsConversationActive", Int, { });
add("EffectLightsaberThrow", Effect, { Object, Object, Object, Int }, bind(&Routines::effectLightsaberThrow, this, _1, _2));
add("EffectWhirlWind", Effect, { }, bind(&Routines::effectWhirlWind, this, _1, _2));
add("EffectLightsaberThrow", Effect, { Object, Object, Object, Int }, &Routines::effectLightsaberThrow);
add("EffectWhirlWind", Effect, { }, &Routines::effectWhirlWind);
add("GetPartyAIStyle", Int, { });
add("GetNPCAIStyle", Int, { Object });
add("SetPartyAIStyle", Void, { Int });
@ -759,11 +759,11 @@ void Routines::addKotorRoutines() {
add("GetNPCSelectability", Int, { Int });
add("ClearAllEffects", Void, { });
add("GetLastConversation", String, { });
add("ShowPartySelectionGUI", Void, { String, Int, Int }, bind(&Routines::showPartySelectionGUI, this, _1, _2));
add("GetStandardFaction", Int, { Object }, bind(&Routines::getStandardFaction, this, _1, _2));
add("ShowPartySelectionGUI", Void, { String, Int, Int }, &Routines::showPartySelectionGUI);
add("GetStandardFaction", Int, { Object }, &Routines::getStandardFaction);
add("GivePlotXP", Void, { String, Int });
add("GetMinOneHP", Int, { Object }, bind(&Routines::getMinOneHP, this, _1, _2));
add("SetMinOneHP", Void, { Object, Int }, bind(&Routines::setMinOneHP, this, _1, _2));
add("GetMinOneHP", Int, { Object }, &Routines::getMinOneHP);
add("SetMinOneHP", Void, { Object, Int }, &Routines::setMinOneHP);
add("SWMG_GetPlayerTunnelInfinite", TVector, { });
add("SWMG_SetPlayerTunnelInfinite", Void, { TVector });
@ -782,7 +782,7 @@ void Routines::addKotorRoutines() {
add("ActionFollowLeader", Void, { });
add("SetForcePowerUnsuccessful", Void, { Int, Object });
add("GetIsDebilitated", Int, { Object });
add("PlayMovie", Void, { String }, bind(&Routines::playMovie, this, _1, _2));
add("PlayMovie", Void, { String }, &Routines::playMovie);
add("SaveNPCState", Void, { Int });
add("GetCategoryFromTalent", Int, { Talent });
add("SurrenderByFaction", Void, { Int, Int });
@ -803,14 +803,14 @@ void Routines::addKotorRoutines() {
add("GetIsPoisoned", Int, { Object });
add("GetSpellTarget", Object, { Object });
add("SetSoloMode", Void, { Int });
add("EffectCutSceneHorrified", Effect, { }, bind(&Routines::effectCutSceneHorrified, this, _1, _2));
add("EffectCutSceneParalyze", Effect, { }, bind(&Routines::effectCutSceneParalyze, this, _1, _2));
add("EffectCutSceneStunned", Effect, { }, bind(&Routines::effectCutSceneStunned, this, _1, _2));
add("EffectCutSceneHorrified", Effect, { }, &Routines::effectCutSceneHorrified);
add("EffectCutSceneParalyze", Effect, { }, &Routines::effectCutSceneParalyze);
add("EffectCutSceneStunned", Effect, { }, &Routines::effectCutSceneStunned);
add("CancelPostDialogCharacterSwitch", Void, { });
add("SetMaxHitPoints", Void, { Object, Int }, bind(&Routines::setMaxHitPoints, this, _1, _2));
add("SetMaxHitPoints", Void, { Object, Int }, &Routines::setMaxHitPoints);
add("NoClicksFor", Void, { Float });
add("HoldWorldFadeInForDialog", Void, { });
add("ShipBuild", Int, { }, bind(&Routines::shipBuild, this, _1, _2));
add("ShipBuild", Int, { }, &Routines::shipBuild);
add("SurrenderRetainBuffs", Void, { });
add("SuppressStatusSummaryEntry", Void, { Int });
add("GetCheatCode", Int, { Int });

View file

@ -39,20 +39,20 @@ namespace game {
#define Action VariableType::Action
void Routines::addTslRoutines() {
add("Random", Int, { Int }, bind(&Routines::random, this, _1, _2));
add("PrintString", Void, { String }, bind(&Routines::printString, this, _1, _2));
add("PrintFloat", Void, { Float, Int, Int }, bind(&Routines::printFloat, this, _1, _2));
add("FloatToString", String, { Float, Int, Int }, bind(&Routines::floatToString, this, _1, _2));
add("PrintInteger", Void, { Int }, bind(&Routines::printInteger, this, _1, _2));
add("PrintObject", Void, { Object }, bind(&Routines::printObject, this, _1, _2));
add("AssignCommand", Void, { Object, Action }, bind(&Routines::assignCommand, this, _1, _2));
add("DelayCommand", Void, { Float, Action }, bind(&Routines::delayCommand, this, _1, _2));
add("ExecuteScript", Void, { String, Object, Int }, bind(&Routines::executeScript, this, _1, _2));
add("ClearAllActions", Void, { }, bind(&Routines::clearAllActions, this, _1, _2));
add("Random", Int, { Int }, &Routines::random);
add("PrintString", Void, { String }, &Routines::printString);
add("PrintFloat", Void, { Float, Int, Int }, &Routines::printFloat);
add("FloatToString", String, { Float, Int, Int }, &Routines::floatToString);
add("PrintInteger", Void, { Int }, &Routines::printInteger);
add("PrintObject", Void, { Object }, &Routines::printObject);
add("AssignCommand", Void, { Object, Action }, &Routines::assignCommand);
add("DelayCommand", Void, { Float, Action }, &Routines::delayCommand);
add("ExecuteScript", Void, { String, Object, Int }, &Routines::executeScript);
add("ClearAllActions", Void, { }, &Routines::clearAllActions);
add("SetFacing", Void, { Float });
add("SwitchPlayerCharacter", Int, { Int });
add("SetTime", Void, { Int, Int, Int, Int });
add("SetPartyLeader", Int, { Int }, bind(&Routines::setPartyLeader, this, _1, _2));
add("SetPartyLeader", Int, { Int }, &Routines::setPartyLeader);
add("SetAreaUnescapable", Void, { Int });
add("GetAreaUnescapable", Int, { });
add("GetTimeHour", Int, { });
@ -61,16 +61,16 @@ void Routines::addTslRoutines() {
add("GetTimeMillisecond", Int, { });
add("ActionRandomWalk", Void, { });
add("ActionMoveToLocation", Void, { Location, Int });
add("ActionMoveToObject", Void, { Object, Int, Float }, bind(&Routines::actionMoveToObject, this, _1, _2));
add("ActionMoveToObject", Void, { Object, Int, Float }, &Routines::actionMoveToObject);
add("ActionMoveAwayFromObject", Void, { Object, Int, Float });
add("GetArea", Object, { Object }, bind(&Routines::getArea, this, _1, _2));
add("GetEnteringObject", Object, { }, bind(&Routines::getEnteringObject, this, _1, _2));
add("GetExitingObject", Object, { }, bind(&Routines::getExitingObject, this, _1, _2));
add("GetPosition", TVector, { Object }, bind(&Routines::getPosition, this, _1, _2));
add("GetFacing", Float, { Object }, bind(&Routines::getFacing, this, _1, _2));
add("GetArea", Object, { Object }, &Routines::getArea);
add("GetEnteringObject", Object, { }, &Routines::getEnteringObject);
add("GetExitingObject", Object, { }, &Routines::getExitingObject);
add("GetPosition", TVector, { Object }, &Routines::getPosition);
add("GetFacing", Float, { Object }, &Routines::getFacing);
add("GetItemPossessor", Object, { Object });
add("GetItemPossessedBy", Object, { Object, String });
add("CreateItemOnObject", Object, { String, Object, Int, Int }, bind(&Routines::createItemOnObject, this, _1, _2));
add("CreateItemOnObject", Object, { String, Object, Int, Int }, &Routines::createItemOnObject);
add("ActionEquipItem", Void, { Object, Int, Int });
add("ActionUnequipItem", Void, { Object, Int });
add("ActionPickUpItem", Void, { Object });
@ -80,17 +80,17 @@ void Routines::addTslRoutines() {
add("GetNearestCreature", Object, { Int, Int, Object, Int, Int, Int, Int, Int });
add("ActionSpeakString", Void, { String, Int });
add("ActionPlayAnimation", Void, { Int, Float, Float });
add("GetDistanceToObject", Float, { Object }, bind(&Routines::getDistanceToObject, this, _1, _2));
add("GetIsObjectValid", Int, { Object }, bind(&Routines::getIsObjectValid, this, _1, _2));
add("ActionOpenDoor", Void, { Object }, bind(&Routines::actionOpenDoor, this, _1, _2));
add("ActionCloseDoor", Void, { Object }, bind(&Routines::actionCloseDoor, this, _1, _2));
add("GetDistanceToObject", Float, { Object }, &Routines::getDistanceToObject);
add("GetIsObjectValid", Int, { Object }, &Routines::getIsObjectValid);
add("ActionOpenDoor", Void, { Object }, &Routines::actionOpenDoor);
add("ActionCloseDoor", Void, { Object }, &Routines::actionCloseDoor);
add("SetCameraFacing", Void, { Float });
add("PlaySound", Void, { String });
add("GetSpellTargetObject", Object, { });
add("ActionCastSpellAtObject", Void, { Int, Object, Int, Int, Int, Int, Int });
add("GetCurrentHitPoints", Int, { Object }, bind(&Routines::getCurrentHitPoints, this, _1, _2));
add("GetMaxHitPoints", Int, { Object }, bind(&Routines::getMaxHitPoints, this, _1, _2));
add("EffectAssuredHit", Effect, { }, bind(&Routines::effectAssuredHit, this, _1, _2));
add("GetCurrentHitPoints", Int, { Object }, &Routines::getCurrentHitPoints);
add("GetMaxHitPoints", Int, { Object }, &Routines::getMaxHitPoints);
add("EffectAssuredHit", Effect, { }, &Routines::effectAssuredHit);
add("GetLastItemEquipped", Object, { });
add("GetSubScreenID", Int, { });
add("CancelCombat", Void, { Object });
@ -98,30 +98,30 @@ void Routines::addTslRoutines() {
add("GetMaxForcePoints", Int, { Object });
add("PauseGame", Void, { Int });
add("SetPlayerRestrictMode", Void, { Int });
add("GetStringLength", Int, { String }, bind(&Routines::getStringLength, this, _1, _2));
add("GetStringUpperCase", String, { String }, bind(&Routines::getStringUpperCase, this, _1, _2));
add("GetStringLowerCase", String, { String }, bind(&Routines::getStringLowerCase, this, _1, _2));
add("GetStringRight", String, { String, Int }, bind(&Routines::getStringRight, this, _1, _2));
add("GetStringLeft", String, { String, Int }, bind(&Routines::getStringLeft, this, _1, _2));
add("InsertString", String, { String, String, Int }, bind(&Routines::insertString, this, _1, _2));
add("GetSubString", String, { String, Int, Int }, bind(&Routines::getSubString, this, _1, _2));
add("FindSubString", Int, { String, String }, bind(&Routines::findSubString, this, _1, _2));
add("fabs", Float, { Float }, bind(&Routines::fabs, this, _1, _2));
add("cos", Float, { Float }, bind(&Routines::cos, this, _1, _2));
add("sin", Float, { Float }, bind(&Routines::sin, this, _1, _2));
add("tan", Float, { Float }, bind(&Routines::tan, this, _1, _2));
add("acos", Float, { Float }, bind(&Routines::acos, this, _1, _2));
add("asin", Float, { Float }, bind(&Routines::asin, this, _1, _2));
add("atan", Float, { Float }, bind(&Routines::atan, this, _1, _2));
add("log", Float, { Float }, bind(&Routines::log, this, _1, _2));
add("pow", Float, { Float, Float }, bind(&Routines::pow, this, _1, _2));
add("sqrt", Float, { Float }, bind(&Routines::sqrt, this, _1, _2));
add("abs", Int, { Int }, bind(&Routines::abs, this, _1, _2));
add("EffectHeal", Effect, { Int }, bind(&Routines::effectHeal, this, _1, _2));
add("EffectDamage", Effect, { Int, Int, Int }, bind(&Routines::effectDamage, this, _1, _2));
add("EffectAbilityIncrease", Effect, { Int, Int }, bind(&Routines::effectAbilityIncrease, this, _1, _2));
add("EffectDamageResistance", Effect, { Int, Int, Int }, bind(&Routines::effectDamageResistance, this, _1, _2));
add("EffectResurrection", Effect, { Int }, bind(&Routines::effectResurrection, this, _1, _2));
add("GetStringLength", Int, { String }, &Routines::getStringLength);
add("GetStringUpperCase", String, { String }, &Routines::getStringUpperCase);
add("GetStringLowerCase", String, { String }, &Routines::getStringLowerCase);
add("GetStringRight", String, { String, Int }, &Routines::getStringRight);
add("GetStringLeft", String, { String, Int }, &Routines::getStringLeft);
add("InsertString", String, { String, String, Int }, &Routines::insertString);
add("GetSubString", String, { String, Int, Int }, &Routines::getSubString);
add("FindSubString", Int, { String, String }, &Routines::findSubString);
add("fabs", Float, { Float }, &Routines::fabs);
add("cos", Float, { Float }, &Routines::cos);
add("sin", Float, { Float }, &Routines::sin);
add("tan", Float, { Float }, &Routines::tan);
add("acos", Float, { Float }, &Routines::acos);
add("asin", Float, { Float }, &Routines::asin);
add("atan", Float, { Float }, &Routines::atan);
add("log", Float, { Float }, &Routines::log);
add("pow", Float, { Float, Float }, &Routines::pow);
add("sqrt", Float, { Float }, &Routines::sqrt);
add("abs", Int, { Int }, &Routines::abs);
add("EffectHeal", Effect, { Int }, &Routines::effectHeal);
add("EffectDamage", Effect, { Int, Int, Int }, &Routines::effectDamage);
add("EffectAbilityIncrease", Effect, { Int, Int }, &Routines::effectAbilityIncrease);
add("EffectDamageResistance", Effect, { Int, Int, Int }, &Routines::effectDamageResistance);
add("EffectResurrection", Effect, { Int }, &Routines::effectResurrection);
add("GetPlayerRestrictMode", Int, { Object });
add("GetCasterLevel", Int, { Object });
add("GetFirstEffect", Effect, { Object });
@ -131,19 +131,19 @@ void Routines::addTslRoutines() {
add("GetEffectDurationType", Int, { Effect });
add("GetEffectSubType", Int, { Effect });
add("GetEffectCreator", Object, { Effect });
add("IntToString", String, { Int }, bind(&Routines::intToString, this, _1, _2));
add("IntToString", String, { Int }, &Routines::intToString);
add("GetFirstObjectInArea", Object, { Object, Int });
add("GetNextObjectInArea", Object, { Object, Int });
add("d2", Int, { Int }, bind(&Routines::d2, this, _1, _2));
add("d3", Int, { Int }, bind(&Routines::d3, this, _1, _2));
add("d4", Int, { Int }, bind(&Routines::d4, this, _1, _2));
add("d6", Int, { Int }, bind(&Routines::d6, this, _1, _2));
add("d8", Int, { Int }, bind(&Routines::d8, this, _1, _2));
add("d10", Int, { Int }, bind(&Routines::d10, this, _1, _2));
add("d12", Int, { Int }, bind(&Routines::d12, this, _1, _2));
add("d20", Int, { Int }, bind(&Routines::d20, this, _1, _2));
add("d100", Int, { Int }, bind(&Routines::d100, this, _1, _2));
add("VectorMagnitude", Float, { TVector }, bind(&Routines::vectorMagnitude, this, _1, _2));
add("d2", Int, { Int }, &Routines::d2);
add("d3", Int, { Int }, &Routines::d3);
add("d4", Int, { Int }, &Routines::d4);
add("d6", Int, { Int }, &Routines::d6);
add("d8", Int, { Int }, &Routines::d8);
add("d10", Int, { Int }, &Routines::d10);
add("d12", Int, { Int }, &Routines::d12);
add("d20", Int, { Int }, &Routines::d20);
add("d100", Int, { Int }, &Routines::d100);
add("VectorMagnitude", Float, { TVector }, &Routines::vectorMagnitude);
add("GetMetaMagicFeat", Int, { });
add("GetObjectType", Int, { Object });
add("GetRacialType", Int, { Object });
@ -154,72 +154,72 @@ void Routines::addTslRoutines() {
add("MagicalEffect", Effect, { Effect });
add("SupernaturalEffect", Effect, { Effect });
add("ExtraordinaryEffect", Effect, { Effect });
add("EffectACIncrease", Effect, { Int, Int, Int }, bind(&Routines::effectACIncrease, this, _1, _2));
add("EffectACIncrease", Effect, { Int, Int, Int }, &Routines::effectACIncrease);
add("GetAC", Int, { Object, Int });
add("EffectSavingThrowIncrease", Effect, { Int, Int, Int }, bind(&Routines::effectSavingThrowIncrease, this, _1, _2));
add("EffectAttackIncrease", Effect, { Int, Int }, bind(&Routines::effectAttackIncrease, this, _1, _2));
add("EffectDamageReduction", Effect, { Int, Int, Int }, bind(&Routines::effectDamageReduction, this, _1, _2));
add("EffectDamageIncrease", Effect, { Int, Int }, bind(&Routines::effectDamageIncrease, this, _1, _2));
add("RoundsToSeconds", Float, { Int }, bind(&Routines::roundsToSeconds, this, _1, _2));
add("HoursToSeconds", Float, { Int }, bind(&Routines::hoursToSeconds, this, _1, _2));
add("TurnsToSeconds", Float, { Int }, bind(&Routines::turnsToSeconds, this, _1, _2));
add("EffectSavingThrowIncrease", Effect, { Int, Int, Int }, &Routines::effectSavingThrowIncrease);
add("EffectAttackIncrease", Effect, { Int, Int }, &Routines::effectAttackIncrease);
add("EffectDamageReduction", Effect, { Int, Int, Int }, &Routines::effectDamageReduction);
add("EffectDamageIncrease", Effect, { Int, Int }, &Routines::effectDamageIncrease);
add("RoundsToSeconds", Float, { Int }, &Routines::roundsToSeconds);
add("HoursToSeconds", Float, { Int }, &Routines::hoursToSeconds);
add("TurnsToSeconds", Float, { Int }, &Routines::turnsToSeconds);
add("SoundObjectSetFixedVariance", Void, { Object, Float });
add("GetGoodEvilValue", Int, { Object });
add("GetPartyMemberCount", Int, { }, bind(&Routines::getPartyMemberCount, this, _1, _2));
add("GetPartyMemberCount", Int, { }, &Routines::getPartyMemberCount);
add("GetAlignmentGoodEvil", Int, { Object });
add("GetFirstObjectInShape", Object, { Int, Float, Location, Int, Int, TVector });
add("GetNextObjectInShape", Object, { Int, Float, Location, Int, Int, TVector });
add("EffectEntangle", Effect, { }, bind(&Routines::effectEntangle, this, _1, _2));
add("SignalEvent", Void, { Object, Event }, bind(&Routines::signalEvent, this, _1, _2));
add("EventUserDefined", Event, { Int }, bind(&Routines::eventUserDefined, this, _1, _2));
add("EffectDeath", Effect, { Int, Int, Int }, bind(&Routines::effectDeath, this, _1, _2));
add("EffectKnockdown", Effect, { }, bind(&Routines::effectKnockdown, this, _1, _2));
add("EffectEntangle", Effect, { }, &Routines::effectEntangle);
add("SignalEvent", Void, { Object, Event }, &Routines::signalEvent);
add("EventUserDefined", Event, { Int }, &Routines::eventUserDefined);
add("EffectDeath", Effect, { Int, Int, Int }, &Routines::effectDeath);
add("EffectKnockdown", Effect, { }, &Routines::effectKnockdown);
add("ActionGiveItem", Void, { Object, Object });
add("ActionTakeItem", Void, { Object, Object });
add("VectorNormalize", TVector, { TVector }, bind(&Routines::vectorNormalize, this, _1, _2));
add("GetItemStackSize", Int, { Object }, bind(&Routines::getItemStackSize, this, _1, _2));
add("GetAbilityScore", Int, { Object, Int }, bind(&Routines::getAbilityScore, this, _1, _2));
add("GetIsDead", Int, { Object }, bind(&Routines::getIsDead, this, _1, _2));
add("PrintVector", Void, { TVector, Int }, bind(&Routines::printVector, this, _1, _2));
add("Vector", TVector, { Float, Float, Float }, bind(&Routines::vectorCreate, this, _1, _2));
add("VectorNormalize", TVector, { TVector }, &Routines::vectorNormalize);
add("GetItemStackSize", Int, { Object }, &Routines::getItemStackSize);
add("GetAbilityScore", Int, { Object, Int }, &Routines::getAbilityScore);
add("GetIsDead", Int, { Object }, &Routines::getIsDead);
add("PrintVector", Void, { TVector, Int }, &Routines::printVector);
add("Vector", TVector, { Float, Float, Float }, &Routines::vectorCreate);
add("SetFacingPoint", Void, { TVector });
add("AngleToVector", TVector, { Float });
add("VectorToAngle", Float, { TVector });
add("TouchAttackMelee", Int, { Object, Int });
add("TouchAttackRanged", Int, { Object, Int });
add("EffectParalyze", Effect, { }, bind(&Routines::effectParalyze, this, _1, _2));
add("EffectSpellImmunity", Effect, { Int }, bind(&Routines::effectSpellImmunity, this, _1, _2));
add("SetItemStackSize", Void, { Object, Int }, bind(&Routines::setItemStackSize, this, _1, _2));
add("GetDistanceBetween", Float, { Object, Object }, bind(&Routines::getDistanceBetween, this, _1, _2));
add("EffectParalyze", Effect, { }, &Routines::effectParalyze);
add("EffectSpellImmunity", Effect, { Int }, &Routines::effectSpellImmunity);
add("SetItemStackSize", Void, { Object, Int }, &Routines::setItemStackSize);
add("GetDistanceBetween", Float, { Object, Object }, &Routines::getDistanceBetween);
add("SetReturnStrref", Void, { Int, Int, Int });
add("EffectForceJump", Effect, { Object, Int }, bind(&Routines::effectForceJump, this, _1, _2));
add("EffectSleep", Effect, { }, bind(&Routines::effectSleep, this, _1, _2));
add("GetItemInSlot", Object, { Int, Object }, bind(&Routines::getItemInSlot, this, _1, _2));
add("EffectTemporaryForcePoints", Effect, { Int }, bind(&Routines::effectTemporaryForcePoints, this, _1, _2));
add("EffectConfused", Effect, { }, bind(&Routines::effectConfused, this, _1, _2));
add("EffectFrightened", Effect, { }, bind(&Routines::effectFrightened, this, _1, _2));
add("EffectChoke", Effect, { }, bind(&Routines::effectChoke, this, _1, _2));
add("SetGlobalString", Void, { String, String }, bind(&Routines::setGlobalString, this, _1, _2));
add("EffectStunned", Effect, { }, bind(&Routines::effectStunned, this, _1, _2));
add("EffectForceJump", Effect, { Object, Int }, &Routines::effectForceJump);
add("EffectSleep", Effect, { }, &Routines::effectSleep);
add("GetItemInSlot", Object, { Int, Object }, &Routines::getItemInSlot);
add("EffectTemporaryForcePoints", Effect, { Int }, &Routines::effectTemporaryForcePoints);
add("EffectConfused", Effect, { }, &Routines::effectConfused);
add("EffectFrightened", Effect, { }, &Routines::effectFrightened);
add("EffectChoke", Effect, { }, &Routines::effectChoke);
add("SetGlobalString", Void, { String, String }, &Routines::setGlobalString);
add("EffectStunned", Effect, { }, &Routines::effectStunned);
add("SetCommandable", Void, { Int, Object });
add("GetCommandable", Int, { Object });
add("EffectRegenerate", Effect, { Int, Float }, bind(&Routines::effectRegenerate, this, _1, _2));
add("EffectMovementSpeedIncrease", Effect, { Int }, bind(&Routines::effectMovementSpeedIncrease, this, _1, _2));
add("GetHitDice", Int, { Object }, bind(&Routines::getHitDice, this, _1, _2));
add("EffectRegenerate", Effect, { Int, Float }, &Routines::effectRegenerate);
add("EffectMovementSpeedIncrease", Effect, { Int }, &Routines::effectMovementSpeedIncrease);
add("GetHitDice", Int, { Object }, &Routines::getHitDice);
add("ActionForceFollowObject", Void, { Object, Float });
add("GetTag", String, { Object }, bind(&Routines::getTag, this, _1, _2));
add("GetTag", String, { Object }, &Routines::getTag);
add("ResistForce", Int, { Object, Object });
add("GetEffectType", Int, { Effect });
add("EffectAreaOfEffect", Effect, { Int, String, String, String }, bind(&Routines::effectAreaOfEffect, this, _1, _2));
add("GetFactionEqual", Int, { Object, Object }, bind(&Routines::getFactionEqual, this, _1, _2));
add("ChangeFaction", Void, { Object, Object }, bind(&Routines::changeFaction, this, _1, _2));
add("EffectAreaOfEffect", Effect, { Int, String, String, String }, &Routines::effectAreaOfEffect);
add("GetFactionEqual", Int, { Object, Object }, &Routines::getFactionEqual);
add("ChangeFaction", Void, { Object, Object }, &Routines::changeFaction);
add("GetIsListening", Int, { Object });
add("SetListening", Void, { Object, Int });
add("SetListenPattern", Void, { Object, String, Int });
add("TestStringAgainstPattern", Int, { String, String });
add("GetMatchedSubstring", String, { Int });
add("GetMatchedSubstringsCount", Int, { });
add("EffectVisualEffect", Effect, { Int, Int }, bind(&Routines::effectVisualEffect, this, _1, _2));
add("EffectVisualEffect", Effect, { Int, Int }, &Routines::effectVisualEffect);
add("GetFactionWeakestMember", Object, { Object, Int });
add("GetFactionStrongestMember", Object, { Object, Int });
add("GetFactionMostDamagedMember", Object, { Object, Int });
@ -233,65 +233,65 @@ void Routines::addTslRoutines() {
add("GetFactionMostFrequentClass", Int, { Object });
add("GetFactionWorstAC", Object, { Object, Int });
add("GetFactionBestAC", Object, { Object, Int });
add("GetGlobalString", String, { String }, bind(&Routines::getGlobalString, this, _1, _2));
add("GetGlobalString", String, { String }, &Routines::getGlobalString);
add("GetListenPatternNumber", Int, { });
add("ActionJumpToObject", Void, { Object, Int }, bind(&Routines::actionJumpToObject, this, _1, _2));
add("GetWaypointByTag", Object, { String }, bind(&Routines::getWaypointByTag, this, _1, _2));
add("ActionJumpToObject", Void, { Object, Int }, &Routines::actionJumpToObject);
add("GetWaypointByTag", Object, { String }, &Routines::getWaypointByTag);
add("GetTransitionTarget", Object, { Object });
add("EffectLinkEffects", Effect, { Effect, Effect }, bind(&Routines::effectLinkEffects, this, _1, _2));
add("GetObjectByTag", Object, { String, Int }, bind(&Routines::getObjectByTag, this, _1, _2));
add("EffectLinkEffects", Effect, { Effect, Effect }, &Routines::effectLinkEffects);
add("GetObjectByTag", Object, { String, Int }, &Routines::getObjectByTag);
add("AdjustAlignment", Void, { Object, Int, Int, Int });
add("ActionWait", Void, { Float });
add("SetAreaTransitionBMP", Void, { Int, String });
add("ActionStartConversation", Void, { Object, String, Int, Int, Int, String, String, String, String, String, String, Int, Int, Int, Int }, bind(&Routines::actionStartConversation, this, _1, _2));
add("ActionPauseConversation", Void, { }, bind(&Routines::actionPauseConversation, this, _1, _2));
add("ActionResumeConversation", Void, { }, bind(&Routines::actionResumeConversation, this, _1, _2));
add("EffectBeam", Effect, { Int, Object, Int, Int }, bind(&Routines::effectBeam, this, _1, _2));
add("ActionStartConversation", Void, { Object, String, Int, Int, Int, String, String, String, String, String, String, Int, Int, Int, Int }, &Routines::actionStartConversation);
add("ActionPauseConversation", Void, { }, &Routines::actionPauseConversation);
add("ActionResumeConversation", Void, { }, &Routines::actionResumeConversation);
add("EffectBeam", Effect, { Int, Object, Int, Int }, &Routines::effectBeam);
add("GetReputation", Int, { Object, Object });
add("AdjustReputation", Void, { Object, Object, Int });
add("GetModuleFileName", String, { });
add("GetGoingToBeAttackedBy", Object, { Object });
add("EffectForceResistanceIncrease", Effect, { Int }, bind(&Routines::effectForceResistanceIncrease, this, _1, _2));
add("GetLocation", Location, { Object }, bind(&Routines::getLocation, this, _1, _2));
add("ActionJumpToLocation", Void, { Location }, bind(&Routines::actionJumpToLocation, this, _1, _2));
add("Location", Location, { TVector, Float }, bind(&Routines::location, this, _1, _2));
add("EffectForceResistanceIncrease", Effect, { Int }, &Routines::effectForceResistanceIncrease);
add("GetLocation", Location, { Object }, &Routines::getLocation);
add("ActionJumpToLocation", Void, { Location }, &Routines::actionJumpToLocation);
add("Location", Location, { TVector, Float }, &Routines::location);
add("ApplyEffectAtLocation", Void, { Int, Effect, Location, Float });
add("GetIsPC", Int, { Object }, bind(&Routines::getIsPC, this, _1, _2));
add("FeetToMeters", Float, { Float }, bind(&Routines::feetToMeters, this, _1, _2));
add("YardsToMeters", Float, { Float }, bind(&Routines::yardsToMeters, this, _1, _2));
add("GetIsPC", Int, { Object }, &Routines::getIsPC);
add("FeetToMeters", Float, { Float }, &Routines::feetToMeters);
add("YardsToMeters", Float, { Float }, &Routines::yardsToMeters);
add("ApplyEffectToObject", Void, { Int, Effect, Object, Float });
add("SpeakString", Void, { String, Int });
add("GetSpellTargetLocation", Location, { });
add("GetPositionFromLocation", TVector, { Location }, bind(&Routines::getPositionFromLocation, this, _1, _2));
add("EffectBodyFuel", Effect, { }, bind(&Routines::effectBodyFuel, this, _1, _2));
add("GetFacingFromLocation", Float, { Location }, bind(&Routines::getFacingFromLocation, this, _1, _2));
add("GetPositionFromLocation", TVector, { Location }, &Routines::getPositionFromLocation);
add("EffectBodyFuel", Effect, { }, &Routines::effectBodyFuel);
add("GetFacingFromLocation", Float, { Location }, &Routines::getFacingFromLocation);
add("GetNearestCreatureToLocation", Object, { Int, Int, Location, Int, Int, Int, Int, Int });
add("GetNearestObject", Object, { Int, Object, Int });
add("GetNearestObjectToLocation", Object, { Int, Location, Int });
add("GetNearestObjectByTag", Object, { String, Object, Int });
add("IntToFloat", Float, { Int }, bind(&Routines::intToFloat, this, _1, _2));
add("FloatToInt", Int, { Float }, bind(&Routines::floatToInt, this, _1, _2));
add("StringToInt", Int, { String }, bind(&Routines::stringToInt, this, _1, _2));
add("StringToFloat", Float, { String }, bind(&Routines::stringToFloat, this, _1, _2));
add("IntToFloat", Float, { Int }, &Routines::intToFloat);
add("FloatToInt", Int, { Float }, &Routines::floatToInt);
add("StringToInt", Int, { String }, &Routines::stringToInt);
add("StringToFloat", Float, { String }, &Routines::stringToFloat);
add("ActionCastSpellAtLocation", Void, { Int, Location, Int, Int, Int, Int });
add("GetIsEnemy", Int, { Object, Object }, bind(&Routines::getIsEnemy, this, _1, _2));
add("GetIsFriend", Int, { Object, Object }, bind(&Routines::getIsFriend, this, _1, _2));
add("GetIsNeutral", Int, { Object, Object }, bind(&Routines::getIsNeutral, this, _1, _2));
add("GetPCSpeaker", Object, { }, bind(&Routines::getPCSpeaker, this, _1, _2));
add("GetStringByStrRef", String, { Int }, bind(&Routines::getStringByStrRef, this, _1, _2));
add("GetIsEnemy", Int, { Object, Object }, &Routines::getIsEnemy);
add("GetIsFriend", Int, { Object, Object }, &Routines::getIsFriend);
add("GetIsNeutral", Int, { Object, Object }, &Routines::getIsNeutral);
add("GetPCSpeaker", Object, { }, &Routines::getPCSpeaker);
add("GetStringByStrRef", String, { Int }, &Routines::getStringByStrRef);
add("ActionSpeakStringByStrRef", Void, { Int, Int });
add("DestroyObject", Void, { Object, Float, Int, Float, Int }, bind(&Routines::destroyObject, this, _1, _2));
add("GetModule", Object, { }, bind(&Routines::getModule, this, _1, _2));
add("DestroyObject", Void, { Object, Float, Int, Float, Int }, &Routines::destroyObject);
add("GetModule", Object, { }, &Routines::getModule);
add("CreateObject", Object, { Int, String, Location, Int });
add("EventSpellCastAt", Event, { Object, Int, Int });
add("GetLastSpellCaster", Object, { });
add("GetLastSpell", Int, { });
add("GetUserDefinedEventNumber", Int, { }, bind(&Routines::getUserDefinedEventNumber, this, _1, _2));
add("GetUserDefinedEventNumber", Int, { }, &Routines::getUserDefinedEventNumber);
add("GetSpellId", Int, { });
add("RandomName", String, { });
add("EffectPoison", Effect, { Int }, bind(&Routines::effectPoison, this, _1, _2));
add("GetLoadFromSaveGame", Int, { }, bind(&Routines::getLoadFromSaveGame, this, _1, _2));
add("EffectAssuredDeflection", Effect, { Int }, bind(&Routines::effectAssuredDeflection, this, _1, _2));
add("EffectPoison", Effect, { Int }, &Routines::effectPoison);
add("GetLoadFromSaveGame", Int, { }, &Routines::getLoadFromSaveGame);
add("EffectAssuredDeflection", Effect, { Int }, &Routines::effectAssuredDeflection);
add("GetName", String, { Object });
add("GetLastSpeaker", Object, { });
add("BeginConversation", Int, { String, Object });
@ -308,13 +308,13 @@ void Routines::addTslRoutines() {
add("SetItemNonEquippable", Void, { Object, Int });
add("GetButtonMashCheck", Int, { });
add("SetButtonMashCheck", Void, { Int });
add("EffectForcePushTargeted", Effect, { Location, Int }, bind(&Routines::effectForcePushTargeted, this, _1, _2));
add("EffectHaste", Effect, { }, bind(&Routines::effectHaste, this, _1, _2));
add("EffectForcePushTargeted", Effect, { Location, Int }, &Routines::effectForcePushTargeted);
add("EffectHaste", Effect, { }, &Routines::effectHaste);
add("GiveItem", Void, { Object, Object });
add("ObjectToString", String, { Object });
add("EffectImmunity", Effect, { Int }, bind(&Routines::effectImmunity, this, _1, _2));
add("EffectImmunity", Effect, { Int }, &Routines::effectImmunity);
add("GetIsImmune", Int, { Object, Int, Object });
add("EffectDamageImmunityIncrease", Effect, { Int, Int }, bind(&Routines::effectDamageImmunityIncrease, this, _1, _2));
add("EffectDamageImmunityIncrease", Effect, { Int, Int }, &Routines::effectDamageImmunityIncrease);
add("GetEncounterActive", Int, { Object });
add("SetEncounterActive", Void, { Int, Object });
add("GetEncounterSpawnsMax", Int, { Object });
@ -325,7 +325,7 @@ void Routines::addTslRoutines() {
add("GetModuleItemAcquiredFrom", Object, { });
add("SetCustomToken", Void, { Int, String });
add("GetHasFeat", Int, { Int, Object });
add("GetHasSkill", Int, { Int, Object }, bind(&Routines::getHasSkill, this, _1, _2));
add("GetHasSkill", Int, { Int, Object }, &Routines::getHasSkill);
add("ActionUseFeat", Void, { Int, Object });
add("ActionUseSkill", Void, { Int, Object, Int, Object });
add("GetObjectSeen", Int, { Object, Object });
@ -333,11 +333,11 @@ void Routines::addTslRoutines() {
add("GetLastPlayerDied", Object, { });
add("GetModuleItemLost", Object, { });
add("GetModuleItemLostBy", Object, { });
add("ActionDoCommand", Void, { Action }, bind(&Routines::actionDoCommand, this, _1, _2));
add("ActionDoCommand", Void, { Action }, &Routines::actionDoCommand);
add("EventConversation", Event, { });
add("SetEncounterDifficulty", Void, { Int, Object });
add("GetEncounterDifficulty", Int, { Object });
add("GetDistanceBetweenLocations", Float, { Location, Location }, bind(&Routines::getDistanceBetweenLocations, this, _1, _2));
add("GetDistanceBetweenLocations", Float, { Location, Location }, &Routines::getDistanceBetweenLocations);
add("GetReflexAdjustedDamage", Int, { Int, Object, Int, Int, Object });
add("PlayAnimation", Void, { Int, Float, Float });
add("TalentSpell", Talent, { Int });
@ -352,19 +352,19 @@ void Routines::addTslRoutines() {
add("ActionUseTalentAtLocation", Void, { Talent, Location });
add("GetGoldPieceValue", Int, { Object });
add("GetIsPlayableRacialType", Int, { Object });
add("JumpToLocation", Void, { Location }, bind(&Routines::jumpToLocation, this, _1, _2));
add("EffectTemporaryHitpoints", Effect, { Int }, bind(&Routines::effectTemporaryHitpoints, this, _1, _2));
add("GetSkillRank", Int, { Int, Object }, bind(&Routines::getSkillRank, this, _1, _2));
add("JumpToLocation", Void, { Location }, &Routines::jumpToLocation);
add("EffectTemporaryHitpoints", Effect, { Int }, &Routines::effectTemporaryHitpoints);
add("GetSkillRank", Int, { Int, Object }, &Routines::getSkillRank);
add("GetAttackTarget", Object, { Object });
add("GetLastAttackType", Int, { Object });
add("GetLastAttackMode", Int, { Object });
add("GetDistanceBetween2D", Float, { Object, Object }, bind(&Routines::getDistanceBetween2D, this, _1, _2));
add("GetIsInCombat", Int, { Object, Int }, bind(&Routines::getIsInCombat, this, _1, _2));
add("GetDistanceBetween2D", Float, { Object, Object }, &Routines::getDistanceBetween2D);
add("GetIsInCombat", Int, { Object, Int }, &Routines::getIsInCombat);
add("GetLastAssociateCommand", Int, { Object });
add("GiveGoldToCreature", Void, { Object, Int });
add("SetIsDestroyable", Void, { Int, Int, Int });
add("SetLocked", Void, { Object, Int }, bind(&Routines::setLocked, this, _1, _2));
add("GetLocked", Int, { Object }, bind(&Routines::getLocked, this, _1, _2));
add("SetLocked", Void, { Object, Int }, &Routines::setLocked);
add("GetLocked", Int, { Object }, &Routines::getLocked);
add("GetClickingObject", Object, { });
add("SetAssociateListenPatterns", Void, { Object });
add("GetLastWeaponUsed", Object, { Object });
@ -373,16 +373,16 @@ void Routines::addTslRoutines() {
add("GetAbilityModifier", Int, { Int, Object });
add("GetIdentified", Int, { Object });
add("SetIdentified", Void, { Object, Int });
add("GetDistanceBetweenLocations2D", Float, { Location, Location }, bind(&Routines::getDistanceBetweenLocations2D, this, _1, _2));
add("GetDistanceToObject2D", Float, { Object }, bind(&Routines::getDistanceToObject2D, this, _1, _2));
add("GetDistanceBetweenLocations2D", Float, { Location, Location }, &Routines::getDistanceBetweenLocations2D);
add("GetDistanceToObject2D", Float, { Object }, &Routines::getDistanceToObject2D);
add("GetBlockingDoor", Object, { });
add("GetIsDoorActionPossible", Int, { Object, Int });
add("DoDoorAction", Void, { Object, Int });
add("GetFirstItemInInventory", Object, { Object }, bind(&Routines::getFirstItemInInventory, this, _1, _2));
add("GetNextItemInInventory", Object, { Object }, bind(&Routines::getNextItemInInventory, this, _1, _2));
add("GetClassByPosition", Int, { Int, Object }, bind(&Routines::getClassByPosition, this, _1, _2));
add("GetLevelByPosition", Int, { Int, Object }, bind(&Routines::getLevelByPosition, this, _1, _2));
add("GetLevelByClass", Int, { Int, Object }, bind(&Routines::getLevelByClass, this, _1, _2));
add("GetFirstItemInInventory", Object, { Object }, &Routines::getFirstItemInInventory);
add("GetNextItemInInventory", Object, { Object }, &Routines::getNextItemInInventory);
add("GetClassByPosition", Int, { Int, Object }, &Routines::getClassByPosition);
add("GetLevelByPosition", Int, { Int, Object }, &Routines::getLevelByPosition);
add("GetLevelByClass", Int, { Int, Object }, &Routines::getLevelByClass);
add("GetDamageDealtByType", Int, { Int });
add("GetTotalDamageDealt", Int, { });
add("GetLastDamager", Object, { });
@ -390,14 +390,14 @@ void Routines::addTslRoutines() {
add("GetLastDisturbed", Object, { });
add("GetLastLocked", Object, { });
add("GetLastUnlocked", Object, { });
add("EffectSkillIncrease", Effect, { Int, Int }, bind(&Routines::effectSkillIncrease, this, _1, _2));
add("EffectSkillIncrease", Effect, { Int, Int }, &Routines::effectSkillIncrease);
add("GetInventoryDisturbType", Int, { });
add("GetInventoryDisturbItem", Object, { });
add("ShowUpgradeScreen", Void, { Object, Object, Int, Int, String });
add("VersusAlignmentEffect", Effect, { Effect, Int, Int });
add("VersusRacialTypeEffect", Effect, { Effect, Int });
add("VersusTrapEffect", Effect, { Effect });
add("GetGender", Int, { Object }, bind(&Routines::getGender, this, _1, _2));
add("GetGender", Int, { Object }, &Routines::getGender);
add("GetIsTalentValid", Int, { Talent });
add("ActionMoveAwayFromLocation", Void, { Location, Int, Float });
add("GetAttemptedAttackTarget", Object, { });
@ -411,8 +411,8 @@ void Routines::addTslRoutines() {
add("GetJournalEntry", Int, { String });
add("PlayRumblePattern", Int, { Int });
add("StopRumblePattern", Int, { Int });
add("EffectDamageForcePoints", Effect, { Int }, bind(&Routines::effectDamageForcePoints, this, _1, _2));
add("EffectHealForcePoints", Effect, { Int }, bind(&Routines::effectHealForcePoints, this, _1, _2));
add("EffectDamageForcePoints", Effect, { Int }, &Routines::effectDamageForcePoints);
add("EffectHealForcePoints", Effect, { Int }, &Routines::effectHealForcePoints);
add("SendMessageToPC", Void, { Object, String });
add("GetAttemptedSpellTarget", Object, { });
add("GetLastOpenedBy", Object, { });
@ -421,27 +421,27 @@ void Routines::addTslRoutines() {
add("ActionSurrenderToEnemies", Void, { });
add("GetFirstFactionMember", Object, { Object, Int });
add("GetNextFactionMember", Object, { Object, Int });
add("ActionForceMoveToLocation", Void, { Location, Int, Float }, bind(&Routines::actionForceMoveToLocation, this, _1, _2));
add("ActionForceMoveToObject", Void, { Object, Int, Float, Float }, bind(&Routines::actionForceMoveToObject, this, _1, _2));
add("ActionForceMoveToLocation", Void, { Location, Int, Float }, &Routines::actionForceMoveToLocation);
add("ActionForceMoveToObject", Void, { Object, Int, Float, Float }, &Routines::actionForceMoveToObject);
add("GetJournalQuestExperience", Int, { String });
add("JumpToObject", Void, { Object, Int }, bind(&Routines::jumpToObject, this, _1, _2));
add("JumpToObject", Void, { Object, Int }, &Routines::jumpToObject);
add("SetMapPinEnabled", Void, { Object, Int });
add("EffectHitPointChangeWhenDying", Effect, { Float }, bind(&Routines::effectHitPointChangeWhenDying, this, _1, _2));
add("EffectHitPointChangeWhenDying", Effect, { Float }, &Routines::effectHitPointChangeWhenDying);
add("PopUpGUIPanel", Void, { Object, Int });
add("AddMultiClass", Void, { Int, Object });
add("GetIsLinkImmune", Int, { Object, Effect });
add("EffectDroidStun", Effect, { }, bind(&Routines::effectDroidStun, this, _1, _2));
add("EffectForcePushed", Effect, { }, bind(&Routines::effectForcePushed, this, _1, _2));
add("EffectDroidStun", Effect, { }, &Routines::effectDroidStun);
add("EffectForcePushed", Effect, { }, &Routines::effectForcePushed);
add("GiveXPToCreature", Void, { Object, Int });
add("SetXP", Void, { Object, Int });
add("GetXP", Int, { Object });
add("IntToHexString", String, { Int }, bind(&Routines::intToHexString, this, _1, _2));
add("IntToHexString", String, { Int }, &Routines::intToHexString);
add("GetBaseItemType", Int, { Object });
add("GetItemHasItemProperty", Int, { Object, Int });
add("ActionEquipMostDamagingMelee", Void, { Object, Int });
add("ActionEquipMostDamagingRanged", Void, { Object });
add("GetItemACValue", Int, { Object });
add("EffectForceResisted", Effect, { Object }, bind(&Routines::effectForceResisted, this, _1, _2));
add("EffectForceResisted", Effect, { Object }, &Routines::effectForceResisted);
add("ExploreAreaForPlayer", Void, { Object, Object });
add("ActionEquipMostEffectiveArmor", Void, { });
add("GetIsDay", Int, { });
@ -451,15 +451,15 @@ void Routines::addTslRoutines() {
add("GetIsEncounterCreature", Int, { Object });
add("GetLastPlayerDying", Object, { });
add("GetStartingLocation", Location, { });
add("ChangeToStandardFaction", Void, { Object, Int }, bind(&Routines::changeToStandardFaction, this, _1, _2));
add("SoundObjectPlay", Void, { Object }, bind(&Routines::soundObjectPlay, this, _1, _2));
add("SoundObjectStop", Void, { Object }, bind(&Routines::soundObjectStop, this, _1, _2));
add("ChangeToStandardFaction", Void, { Object, Int }, &Routines::changeToStandardFaction);
add("SoundObjectPlay", Void, { Object }, &Routines::soundObjectPlay);
add("SoundObjectStop", Void, { Object }, &Routines::soundObjectStop);
add("SoundObjectSetVolume", Void, { Object, Int });
add("SoundObjectSetPosition", Void, { Object, TVector });
add("SpeakOneLinerConversation", Void, { String, Object });
add("GetGold", Int, { Object });
add("GetLastRespawnButtonPresser", Object, { });
add("EffectForceFizzle", Effect, { }, bind(&Routines::effectForceFizzle, this, _1, _2));
add("EffectForceFizzle", Effect, { }, &Routines::effectForceFizzle);
add("SetLightsaberPowered", Void, { Object, Int, Int, Int });
add("GetIsWeaponEffective", Int, { Object, Int });
add("GetLastSpellHarmful", Int, { });
@ -482,41 +482,41 @@ void Routines::addTslRoutines() {
add("GetItemActivator", Object, { });
add("GetItemActivatedTargetLocation", Location, { });
add("GetItemActivatedTarget", Object, { });
add("GetIsOpen", Int, { Object }, bind(&Routines::getIsOpen, this, _1, _2));
add("GetIsOpen", Int, { Object }, &Routines::getIsOpen);
add("TakeGoldFromCreature", Void, { Int, Object, Int });
add("GetIsInConversation", Int, { Object });
add("EffectAbilityDecrease", Effect, { Int, Int }, bind(&Routines::effectAbilityDecrease, this, _1, _2));
add("EffectAttackDecrease", Effect, { Int, Int }, bind(&Routines::effectAttackDecrease, this, _1, _2));
add("EffectDamageDecrease", Effect, { Int, Int }, bind(&Routines::effectDamageDecrease, this, _1, _2));
add("EffectDamageImmunityDecrease", Effect, { Int, Int }, bind(&Routines::effectDamageImmunityDecrease, this, _1, _2));
add("EffectACDecrease", Effect, { Int, Int, Int }, bind(&Routines::effectACDecrease, this, _1, _2));
add("EffectMovementSpeedDecrease", Effect, { Int }, bind(&Routines::effectMovementSpeedDecrease, this, _1, _2));
add("EffectSavingThrowDecrease", Effect, { Int, Int, Int }, bind(&Routines::effectSavingThrowDecrease, this, _1, _2));
add("EffectSkillDecrease", Effect, { Int, Int }, bind(&Routines::effectSkillDecrease, this, _1, _2));
add("EffectForceResistanceDecrease", Effect, { Int }, bind(&Routines::effectForceResistanceDecrease, this, _1, _2));
add("EffectAbilityDecrease", Effect, { Int, Int }, &Routines::effectAbilityDecrease);
add("EffectAttackDecrease", Effect, { Int, Int }, &Routines::effectAttackDecrease);
add("EffectDamageDecrease", Effect, { Int, Int }, &Routines::effectDamageDecrease);
add("EffectDamageImmunityDecrease", Effect, { Int, Int }, &Routines::effectDamageImmunityDecrease);
add("EffectACDecrease", Effect, { Int, Int, Int }, &Routines::effectACDecrease);
add("EffectMovementSpeedDecrease", Effect, { Int }, &Routines::effectMovementSpeedDecrease);
add("EffectSavingThrowDecrease", Effect, { Int, Int, Int }, &Routines::effectSavingThrowDecrease);
add("EffectSkillDecrease", Effect, { Int, Int }, &Routines::effectSkillDecrease);
add("EffectForceResistanceDecrease", Effect, { Int }, &Routines::effectForceResistanceDecrease);
add("GetPlotFlag", Int, { Object });
add("SetPlotFlag", Void, { Object, Int });
add("EffectInvisibility", Effect, { Int }, bind(&Routines::effectInvisibility, this, _1, _2));
add("EffectConcealment", Effect, { Int }, bind(&Routines::effectConcealment, this, _1, _2));
add("EffectForceShield", Effect, { Int }, bind(&Routines::effectForceShield, this, _1, _2));
add("EffectDispelMagicAll", Effect, { Int }, bind(&Routines::effectDispelMagicAll, this, _1, _2));
add("EffectInvisibility", Effect, { Int }, &Routines::effectInvisibility);
add("EffectConcealment", Effect, { Int }, &Routines::effectConcealment);
add("EffectForceShield", Effect, { Int }, &Routines::effectForceShield);
add("EffectDispelMagicAll", Effect, { Int }, &Routines::effectDispelMagicAll);
add("SetDialogPlaceableCamera", Void, { Int });
add("GetSoloMode", Int, { });
add("EffectDisguise", Effect, { Int }, bind(&Routines::effectDisguise, this, _1, _2));
add("EffectDisguise", Effect, { Int }, &Routines::effectDisguise);
add("GetMaxStealthXP", Int, { });
add("EffectTrueSeeing", Effect, { }, bind(&Routines::effectTrueSeeing, this, _1, _2));
add("EffectSeeInvisible", Effect, { }, bind(&Routines::effectSeeInvisible, this, _1, _2));
add("EffectTimeStop", Effect, { }, bind(&Routines::effectTimeStop, this, _1, _2));
add("EffectTrueSeeing", Effect, { }, &Routines::effectTrueSeeing);
add("EffectSeeInvisible", Effect, { }, &Routines::effectSeeInvisible);
add("EffectTimeStop", Effect, { }, &Routines::effectTimeStop);
add("SetMaxStealthXP", Void, { Int });
add("EffectBlasterDeflectionIncrease", Effect, { Int }, bind(&Routines::effectBlasterDeflectionIncrease, this, _1, _2));
add("EffectBlasterDeflectionDecrease", Effect, { Int }, bind(&Routines::effectBlasterDeflectionDecrease, this, _1, _2));
add("EffectHorrified", Effect, { }, bind(&Routines::effectHorrified, this, _1, _2));
add("EffectSpellLevelAbsorption", Effect, { Int, Int, Int }, bind(&Routines::effectSpellLevelAbsorption, this, _1, _2));
add("EffectDispelMagicBest", Effect, { Int }, bind(&Routines::effectDispelMagicBest, this, _1, _2));
add("EffectBlasterDeflectionIncrease", Effect, { Int }, &Routines::effectBlasterDeflectionIncrease);
add("EffectBlasterDeflectionDecrease", Effect, { Int }, &Routines::effectBlasterDeflectionDecrease);
add("EffectHorrified", Effect, { }, &Routines::effectHorrified);
add("EffectSpellLevelAbsorption", Effect, { Int, Int, Int }, &Routines::effectSpellLevelAbsorption);
add("EffectDispelMagicBest", Effect, { Int }, &Routines::effectDispelMagicBest);
add("GetCurrentStealthXP", Int, { });
add("GetNumStackedItems", Int, { Object }, bind(&Routines::getItemStackSize, this, _1, _2));
add("GetNumStackedItems", Int, { Object }, &Routines::getItemStackSize);
add("SurrenderToEnemies", Void, { });
add("EffectMissChance", Effect, { Int }, bind(&Routines::effectMissChance, this, _1, _2));
add("EffectMissChance", Effect, { Int }, &Routines::effectMissChance);
add("SetCurrentStealthXP", Void, { Int });
add("GetCreatureSize", Int, { Object });
add("AwardStealthXP", Void, { Object });
@ -524,9 +524,9 @@ void Routines::addTslRoutines() {
add("SetStealthXPEnabled", Void, { Int });
add("ActionUnlockObject", Void, { Object });
add("ActionLockObject", Void, { Object });
add("EffectModifyAttacks", Effect, { Int }, bind(&Routines::effectModifyAttacks, this, _1, _2));
add("EffectModifyAttacks", Effect, { Int }, &Routines::effectModifyAttacks);
add("GetLastTrapDetected", Object, { Object });
add("EffectDamageShield", Effect, { Int, Int, Int }, bind(&Routines::effectDamageShield, this, _1, _2));
add("EffectDamageShield", Effect, { Int, Int, Int }, &Routines::effectDamageShield);
add("GetNearestTrapToObject", Object, { Object, Int });
add("GetAttemptedMovementTarget", Object, { });
add("GetBlockingCreature", Object, { Object });
@ -548,7 +548,7 @@ void Routines::addTslRoutines() {
add("SetLockHeadFollowInDialog", Void, { Object, Int });
add("CutsceneMove", Void, { Object, TVector, Int });
add("EnableVideoEffect", Void, { Int });
add("StartNewModule", Void, { String, String, String, String, String, String, String, String }, bind(&Routines::startNewModule, this, _1, _2));
add("StartNewModule", Void, { String, String, String, String, String, String, String, String }, &Routines::startNewModule);
add("DisableVideoEffect", Void, { });
add("GetWeaponRanged", Int, { Object });
add("DoSinglePlayerAutoSave", Void, { });
@ -587,8 +587,8 @@ void Routines::addTslRoutines() {
add("GetPlaceableIllumination", Int, { Object });
add("GetIsPlaceableObjectActionPossible", Int, { Object, Int });
add("DoPlaceableObjectAction", Void, { Object, Int });
add("GetFirstPC", Object, { }, bind(&Routines::getFirstPC, this, _1, _2));
add("GetNextPC", Object, { }, bind(&Routines::getFirstPC, this, _1, _2));
add("GetFirstPC", Object, { }, &Routines::getFirstPC);
add("GetNextPC", Object, { }, &Routines::getFirstPC);
add("SetTrapDetectedBy", Int, { Object, Object });
add("GetIsTrapped", Int, { Object });
add("SetEffectIcon", Effect, { Effect, Int });
@ -606,7 +606,7 @@ void Routines::addTslRoutines() {
add("SWMG_SetSpeedBlurEffect", Void, { Int, Float });
add("EndGame", Void, { Int });
add("GetRunScriptVar", Int, { }, bind(&Routines::getRunScriptVar, this, _1, _2));
add("GetRunScriptVar", Int, { }, &Routines::getRunScriptVar);
add("GetCreatureMovmentType", Int, { Object });
add("AmbientSoundSetDayVolume", Void, { Object, Int });
add("AmbientSoundSetNightVolume", Void, { Object, Int });
@ -615,14 +615,14 @@ void Routines::addTslRoutines() {
add("GetStrRefSoundDuration", Float, { Int });
add("AddToParty", Void, { Object, Object });
add("RemoveFromParty", Void, { Object });
add("AddPartyMember", Int, { Int, Object }, bind(&Routines::addPartyMember, this, _1, _2));
add("RemovePartyMember", Int, { Int }, bind(&Routines::removePartyMember, this, _1, _2));
add("IsObjectPartyMember", Int, { Object }, bind(&Routines::isObjectPartyMember, this, _1, _2));
add("GetPartyMemberByIndex", Object, { Int }, bind(&Routines::getPartyMemberByIndex, this, _1, _2));
add("GetGlobalBoolean", Int, { String }, bind(&Routines::getGlobalBoolean, this, _1, _2));
add("SetGlobalBoolean", Void, { String, Int }, bind(&Routines::setGlobalBoolean, this, _1, _2));
add("GetGlobalNumber", Int, { String }, bind(&Routines::getGlobalNumber, this, _1, _2));
add("SetGlobalNumber", Void, { String, Int }, bind(&Routines::setGlobalNumber, this, _1, _2));
add("AddPartyMember", Int, { Int, Object }, &Routines::addPartyMember);
add("RemovePartyMember", Int, { Int }, &Routines::removePartyMember);
add("IsObjectPartyMember", Int, { Object }, &Routines::isObjectPartyMember);
add("GetPartyMemberByIndex", Object, { Int }, &Routines::getPartyMemberByIndex);
add("GetGlobalBoolean", Int, { String }, &Routines::getGlobalBoolean);
add("SetGlobalBoolean", Void, { String, Int }, &Routines::setGlobalBoolean);
add("GetGlobalNumber", Int, { String }, &Routines::getGlobalNumber);
add("SetGlobalNumber", Void, { String, Int }, &Routines::setGlobalNumber);
add("AurPostString", Void, { String, Int, Int, Float });
add("SWMG_GetLastEvent", String, { });
@ -718,14 +718,14 @@ void Routines::addTslRoutines() {
add("DeleteJournalWorldAllEntries", Void, { });
add("DeleteJournalWorldEntry", Void, { Int });
add("DeleteJournalWorldEntryStrref", Void, { Int });
add("EffectForceDrain", Effect, { Int }, bind(&Routines::effectForceDrain, this, _1, _2));
add("EffectPsychicStatic", Effect, { }, bind(&Routines::effectPsychicStatic, this, _1, _2));
add("EffectForceDrain", Effect, { Int }, &Routines::effectForceDrain);
add("EffectPsychicStatic", Effect, { }, &Routines::effectPsychicStatic);
add("PlayVisualAreaEffect", Void, { Int, Location });
add("SetJournalQuestEntryPicture", Void, { String, Object, Int, Int, Int });
add("GetLocalBoolean", Int, { Object, Int }, bind(&Routines::getLocalBoolean, this, _1, _2));
add("SetLocalBoolean", Void, { Object, Int, Int }, bind(&Routines::setLocalBoolean, this, _1, _2));
add("GetLocalNumber", Int, { Object, Int }, bind(&Routines::getLocalNumber, this, _1, _2));
add("SetLocalNumber", Void, { Object, Int, Int }, bind(&Routines::setLocalNumber, this, _1, _2));
add("GetLocalBoolean", Int, { Object, Int }, &Routines::getLocalBoolean);
add("SetLocalBoolean", Void, { Object, Int, Int }, &Routines::setLocalBoolean);
add("GetLocalNumber", Int, { Object, Int }, &Routines::getLocalNumber);
add("SetLocalNumber", Void, { Object, Int, Int }, &Routines::setLocalNumber);
add("SWMG_GetSoundFrequency", Int, { Object, Int });
add("SWMG_SetSoundFrequency", Void, { Object, Int, Int });
@ -741,14 +741,14 @@ void Routines::addTslRoutines() {
add("SetGlobalLocation", Void, { String, Location });
add("AddAvailableNPCByObject", Int, { Int, Object });
add("RemoveAvailableNPC", Int, { Int });
add("IsAvailableCreature", Int, { Int }, bind(&Routines::isAvailableCreature, this, _1, _2));
add("AddAvailableNPCByTemplate", Int, { Int, String }, bind(&Routines::addAvailableNPCByTemplate, this, _1, _2));
add("IsAvailableCreature", Int, { Int }, &Routines::isAvailableCreature);
add("AddAvailableNPCByTemplate", Int, { Int, String }, &Routines::addAvailableNPCByTemplate);
add("SpawnAvailableNPC", Object, { Int, Location });
add("IsNPCPartyMember", Int, { Int }, bind(&Routines::isNPCPartyMember, this, _1, _2));
add("IsNPCPartyMember", Int, { Int }, &Routines::isNPCPartyMember);
add("ActionBarkString", Void, { Int });
add("GetIsConversationActive", Int, { });
add("EffectLightsaberThrow", Effect, { Object, Object, Object, Int }, bind(&Routines::effectLightsaberThrow, this, _1, _2));
add("EffectWhirlWind", Effect, { }, bind(&Routines::effectWhirlWind, this, _1, _2));
add("EffectLightsaberThrow", Effect, { Object, Object, Object, Int }, &Routines::effectLightsaberThrow);
add("EffectWhirlWind", Effect, { }, &Routines::effectWhirlWind);
add("GetPartyAIStyle", Int, { });
add("GetNPCAIStyle", Int, { Object });
add("SetPartyAIStyle", Void, { Int });
@ -757,11 +757,11 @@ void Routines::addTslRoutines() {
add("GetNPCSelectability", Int, { Int });
add("ClearAllEffects", Void, { });
add("GetLastConversation", String, { });
add("ShowPartySelectionGUI", Void, { String, Int, Int, Int }, bind(&Routines::showPartySelectionGUI, this, _1, _2));
add("GetStandardFaction", Int, { Object }, bind(&Routines::getStandardFaction, this, _1, _2));
add("ShowPartySelectionGUI", Void, { String, Int, Int, Int }, &Routines::showPartySelectionGUI);
add("GetStandardFaction", Int, { Object }, &Routines::getStandardFaction);
add("GivePlotXP", Void, { String, Int });
add("GetMinOneHP", Int, { Object }, bind(&Routines::getMinOneHP, this, _1, _2));
add("SetMinOneHP", Void, { Object, Int }, bind(&Routines::setMinOneHP, this, _1, _2));
add("GetMinOneHP", Int, { Object }, &Routines::getMinOneHP);
add("SetMinOneHP", Void, { Object, Int }, &Routines::setMinOneHP);
add("SWMG_GetPlayerTunnelInfinite", TVector, { });
add("SWMG_SetPlayerTunnelInfinite", Void, { TVector });
@ -801,14 +801,14 @@ void Routines::addTslRoutines() {
add("GetIsPoisoned", Int, { Object });
add("GetSpellTarget", Object, { Object });
add("SetSoloMode", Void, { Int });
add("EffectCutSceneHorrified", Effect, { }, bind(&Routines::effectCutSceneHorrified, this, _1, _2));
add("EffectCutSceneParalyze", Effect, { }, bind(&Routines::effectCutSceneParalyze, this, _1, _2));
add("EffectCutSceneStunned", Effect, { }, bind(&Routines::effectCutSceneStunned, this, _1, _2));
add("EffectCutSceneHorrified", Effect, { }, &Routines::effectCutSceneHorrified);
add("EffectCutSceneParalyze", Effect, { }, &Routines::effectCutSceneParalyze);
add("EffectCutSceneStunned", Effect, { }, &Routines::effectCutSceneStunned);
add("CancelPostDialogCharacterSwitch", Void, { });
add("SetMaxHitPoints", Void, { Object, Int }, bind(&Routines::setMaxHitPoints, this, _1, _2));
add("SetMaxHitPoints", Void, { Object, Int }, &Routines::setMaxHitPoints);
add("NoClicksFor", Void, { Float });
add("HoldWorldFadeInForDialog", Void, { });
add("ShipBuild", Int, { }, bind(&Routines::shipBuild, this, _1, _2));
add("ShipBuild", Int, { }, &Routines::shipBuild);
add("SurrenderRetainBuffs", Void, { });
add("SuppressStatusSummaryEntry", Void, { Int });
add("GetCheatCode", Int, { Int });
@ -817,18 +817,18 @@ void Routines::addTslRoutines() {
add("SetAvailableNPCId", Void, { Int, Object });
add("GetScriptParameter", Int, { Int });
add("SetFadeUntilScript", Void, { });
add("EffectForceBody", Effect, { Int }, bind(&Routines::effectForceBody, this, _1, _2));
add("EffectForceBody", Effect, { Int }, &Routines::effectForceBody);
add("GetItemComponent", Int, { });
add("GetItemComponentPieceValue", Int, { });
add("ShowChemicalUpgradeScreen", Void, { Object });
add("GetChemicals", Int, { });
add("GetChemicalPieceValue", Int, { });
add("GetSpellForcePointCost", Int, { });
add("EffectFury", Effect, { }, bind(&Routines::effectFury, this, _1, _2));
add("EffectBlind", Effect, { }, bind(&Routines::effectBlind, this, _1, _2));
add("EffectFPRegenModifier", Effect, { Int }, bind(&Routines::effectFPRegenModifier, this, _1, _2));
add("EffectVPRegenModifier", Effect, { Int }, bind(&Routines::effectVPRegenModifier, this, _1, _2));
add("EffectCrush", Effect, { }, bind(&Routines::effectCrush, this, _1, _2));
add("EffectFury", Effect, { }, &Routines::effectFury);
add("EffectBlind", Effect, { }, &Routines::effectBlind);
add("EffectFPRegenModifier", Effect, { Int }, &Routines::effectFPRegenModifier);
add("EffectVPRegenModifier", Effect, { Int }, &Routines::effectVPRegenModifier);
add("EffectCrush", Effect, { }, &Routines::effectCrush);
add("SWMG_GetSwoopUpgrade", Int, { Int });
@ -864,7 +864,7 @@ void Routines::addTslRoutines() {
add("QueueMovie", Void, { String, Int });
add("PlayMovieQueue", Void, { Int });
add("YavinHackDoorClose", Void, { Object });
add("EffectDroidConfused", Effect, { }, bind(&Routines::effectDroidConfused, this, _1, _2));
add("EffectDroidConfused", Effect, { }, &Routines::effectDroidConfused);
add("IsStealthed", Int, { Object });
add("IsMeditating", Int, { Object });
add("IsInTotalDefense", Int, { Object });
@ -878,7 +878,7 @@ void Routines::addTslRoutines() {
add("HasLineOfSight", Int, { TVector, TVector, Object, Object });
add("ShowDemoScreen", Int, { String, Int, Int, Int, Int });
add("ForceHeartbeat", Void, { Object });
add("EffectForceSight", Effect, { }, bind(&Routines::effectForceSight, this, _1, _2));
add("EffectForceSight", Effect, { }, &Routines::effectForceSight);
add("IsRunning", Int, { Object });
add("SWMG_PlayerApplyForce", Void, { TVector });
@ -905,11 +905,11 @@ void Routines::addTslRoutines() {
add("GetPartyLeader", Object, { });
add("RemoveNPCFromPartyToBase", Int, { Int });
add("CreatureFlourishWeapon", Void, { Object });
add("EffectMindTrick", Effect, { }, bind(&Routines::effectMindTrick, this, _1, _2));
add("EffectFactionModifier", Effect, { Int }, bind(&Routines::effectFactionModifier, this, _1, _2));
add("EffectMindTrick", Effect, { }, &Routines::effectMindTrick);
add("EffectFactionModifier", Effect, { Int }, &Routines::effectFactionModifier);
add("ChangeObjectAppearance", Void, { Object, Int });
add("GetIsXBox", Int, { });
add("EffectDroidScramble", Effect, { }, bind(&Routines::effectDroidScramble, this, _1, _2));
add("EffectDroidScramble", Effect, { }, &Routines::effectDroidScramble);
add("ActionSwitchWeapons", Void, { });
add("PlayOverlayAnimation", Void, { Object, Int });
add("UnlockAllSongs", Void, { });