Skip to content

Commit

Permalink
NWN2: Implement lock and key scripting functions
Browse files Browse the repository at this point in the history
  • Loading branch information
rjshae authored and DrMcCoy committed Feb 18, 2019
1 parent 8730e7f commit 7ce06bd
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 12 deletions.
20 changes: 10 additions & 10 deletions src/engines/nwn2/script/function_tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -675,11 +675,11 @@ const Functions::FunctionPointer Functions::kFunctionPointers[] = {
{ 534, "GetTrapKeyTag" , 0 },
{ 535, "GetTrapDisarmDC" , 0 },
{ 536, "GetTrapDetectDC" , 0 },
{ 537, "GetLockKeyRequired" , 0 },
{ 538, "GetLockKeyTag" , 0 },
{ 539, "GetLockLockable" , 0 },
{ 540, "GetLockUnlockDC" , 0 },
{ 541, "GetLockLockDC" , 0 },
{ 537, "GetLockKeyRequired" , &Functions::getLockKeyRequired },
{ 538, "GetLockKeyTag" , &Functions::getLockKeyTag },
{ 539, "GetLockLockable" , &Functions::getLockLockable },
{ 540, "GetLockUnlockDC" , &Functions::getLockUnlockDC },
{ 541, "GetLockLockDC" , &Functions::getLockLockDC },
{ 542, "GetPCLevellingUp" , 0 },
{ 543, "GetHasFeatEffect" , 0 },
{ 544, "SetPlaceableIllumination" , 0 },
Expand Down Expand Up @@ -1091,11 +1091,11 @@ const Functions::FunctionPointer Functions::kFunctionPointers[] = {
{ 950, "SetWillSavingThrow" , 0 },
{ 951, "SetReflexSavingThrow" , 0 },
{ 952, "SetFortitudeSavingThrow" , 0 },
{ 953, "SetLockKeyRequired" , 0 },
{ 954, "SetLockKeyTag" , 0 },
{ 955, "SetLockLockDC" , 0 },
{ 956, "SetLockUnlockDC" , 0 },
{ 957, "SetLockLockable" , 0 },
{ 953, "SetLockKeyRequired" , &Functions::setLockKeyRequired },
{ 954, "SetLockKeyTag" , &Functions::setLockKeyTag },
{ 955, "SetLockLockDC" , &Functions::setLockLockDC },
{ 956, "SetLockUnlockDC" , &Functions::setLockUnlockDC },
{ 957, "SetLockLockable" , &Functions::setLockLockable },
{ 958, "SetHardness" , 0 },
{ 959, "GetHardness" , 0 },
{ 960, "GetModuleXPScale" , 0 },
Expand Down
15 changes: 13 additions & 2 deletions src/engines/nwn2/script/functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,19 @@ class Functions {
// '---

// .--- Situated objects, functions_situated.cpp
void getLocked(Aurora::NWScript::FunctionContext &ctx);
void setLocked(Aurora::NWScript::FunctionContext &ctx);
void getLocked (Aurora::NWScript::FunctionContext &ctx);
void getLockLockable (Aurora::NWScript::FunctionContext &ctx);
void getLockKeyRequired(Aurora::NWScript::FunctionContext &ctx);
void getLockKeyTag (Aurora::NWScript::FunctionContext &ctx);
void getLockLockDC (Aurora::NWScript::FunctionContext &ctx);
void getLockUnlockDC (Aurora::NWScript::FunctionContext &ctx);

void setLocked (Aurora::NWScript::FunctionContext &ctx);
void setLockLockable (Aurora::NWScript::FunctionContext &ctx);
void setLockKeyRequired(Aurora::NWScript::FunctionContext &ctx);
void setLockKeyTag (Aurora::NWScript::FunctionContext &ctx);
void setLockLockDC (Aurora::NWScript::FunctionContext &ctx);
void setLockUnlockDC (Aurora::NWScript::FunctionContext &ctx);

void getIsOpen(Aurora::NWScript::FunctionContext &ctx);

Expand Down
60 changes: 60 additions & 0 deletions src/engines/nwn2/script/functions_situated.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,72 @@ void Functions::getLocked(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = situated ? situated->isLocked() : 0;
}

void Functions::getLockLockable(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));

ctx.getReturn() = situated ? situated->isLockable() : 0;
}

void Functions::getLockKeyRequired(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));

ctx.getReturn() = situated ? situated->isKeyRequired() : 0;
}

void Functions::getLockKeyTag(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));

ctx.getReturn() = situated ? situated->getLockKeyTag() : Common::UString("");
}

void Functions::getLockLockDC(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));

ctx.getReturn() = situated ? situated->getLockLockDC() : 0;
}

void Functions::getLockUnlockDC(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));

ctx.getReturn() = situated ? situated->getLockUnlockDC() : 0;
}

void Functions::setLocked(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));
if (situated)
situated->setLocked(ctx.getParams()[1].getInt() != 0);
}

void Functions::setLockLockable(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));
if (situated)
situated->setLockable(ctx.getParams()[1].getInt() != 0);
}

void Functions::setLockKeyRequired(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));
if (situated)
situated->setKeyRequired(ctx.getParams()[1].getInt() != 0);
}

void Functions::setLockKeyTag(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));
if (situated)
situated->setLockKeyTag(ctx.getParams()[1].getString());
}

void Functions::setLockLockDC(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));
if (situated)
situated->setLockLockDC(ctx.getParams()[1].getInt());
}

void Functions::setLockUnlockDC(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));
if (situated)
situated->setLockUnlockDC(ctx.getParams()[1].getInt());
}

void Functions::getIsOpen(Aurora::NWScript::FunctionContext &ctx) {
Situated *situated = NWN2::ObjectContainer::toSituated(getParamObject(ctx, 0));

Expand Down

0 comments on commit 7ce06bd

Please sign in to comment.