From 4926ca643f865c66858f751ab6ca8da45682e0b2 Mon Sep 17 00:00:00 2001 From: b5635 Date: Fri, 22 Sep 2023 19:32:57 -0700 Subject: [PATCH] door unlock xp script --- src/nss/area_init.nss | 2 +- src/nss/door_unlock.nss | 18 ++++++++++++++++++ src/nss/inc_xp.nss | 10 +++++++++- src/nss/treas_unlock.nss | 2 ++ src/nss/unlock.nss | 6 ------ 5 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 src/nss/door_unlock.nss delete mode 100644 src/nss/unlock.nss diff --git a/src/nss/area_init.nss b/src/nss/area_init.nss index 12da4e5ce..925d467b4 100644 --- a/src/nss/area_init.nss +++ b/src/nss/area_init.nss @@ -399,7 +399,7 @@ void main() //if (bInstance == 1) //{ // every area is instanced now! - SetEventScript(oObject, EVENT_SCRIPT_DOOR_ON_UNLOCK, "unlock"); + SetEventScript(oObject, EVENT_SCRIPT_DOOR_ON_UNLOCK, "door_unlock"); SetEventScript(oObject, EVENT_SCRIPT_DOOR_ON_MELEE_ATTACKED, "bash_lock"); nDoors = nDoors + 1; diff --git a/src/nss/door_unlock.nss b/src/nss/door_unlock.nss new file mode 100644 index 000000000..4b7db2ba5 --- /dev/null +++ b/src/nss/door_unlock.nss @@ -0,0 +1,18 @@ +#include "inc_xp" + +void main() +{ + object oUnlocker = GetLastUnlocked(); + + if (GetObjectType(oUnlocker) == OBJECT_TYPE_CREATURE) PlaySound("gui_picklockopen"); + + // check if unlocked by a possessed pixie + if (!GetIsPC(oUnlocker)) oUnlocker = GetMaster(oUnlocker); + + // do nothing if not a PC still + if (!GetIsPC(oUnlocker)) return; + + GiveUnlockXP(oUnlocker, GetLockUnlockDC(OBJECT_SELF)); + IncrementPlayerStatistic(oUnlocker, "locks_unlocked"); +} + diff --git a/src/nss/inc_xp.nss b/src/nss/inc_xp.nss index e700d744e..3893d433a 100644 --- a/src/nss/inc_xp.nss +++ b/src/nss/inc_xp.nss @@ -532,7 +532,7 @@ void UpdateXPBarUI(object oPC) void GiveDialogueSkillXP(object oPC, int nDC, int nSkill) { - float fXP = 2.0 + IntToFloat((nDC - 10) / 2); + float fXP = IntToFloat(nDC) / 2.5; if (fXP > 16.0) fXP = 16.0; if (fXP < 3.0) fXP = 3.0; @@ -548,5 +548,13 @@ void GiveDialogueSkillXP(object oPC, int nDC, int nSkill) GiveXPToPC(oPC, fXP, FALSE, sSkill); } +void GiveUnlockXP(object oPC, int nDC) +{ + float fXP = IntToFloat(nDC) / 3.0; + +// cap + if (fXP > 14.0) fXP = 14.0; + GiveXPToPC(oPC, fXP, FALSE, "Unlocking"); +} //void main(){} diff --git a/src/nss/treas_unlock.nss b/src/nss/treas_unlock.nss index e9906376b..2cda83008 100644 --- a/src/nss/treas_unlock.nss +++ b/src/nss/treas_unlock.nss @@ -1,5 +1,6 @@ // this script is called when a treasure container is unlocked #include "inc_general" +#include "inc_xp" void main() { @@ -18,5 +19,6 @@ void main() // do nothing if not a PC still if (!GetIsPC(oUnlocker)) return; + GiveUnlockXP(oUnlocker, GetLockUnlockDC(OBJECT_SELF)); IncrementPlayerStatistic(oUnlocker, "locks_unlocked"); } diff --git a/src/nss/unlock.nss b/src/nss/unlock.nss deleted file mode 100644 index 410840167..000000000 --- a/src/nss/unlock.nss +++ /dev/null @@ -1,6 +0,0 @@ -void main() -{ - object oUnlocker = GetLastUnlocked(); - - if (GetObjectType(oUnlocker) == OBJECT_TYPE_CREATURE) PlaySound("gui_picklockopen"); -}