diff --git a/src/nss/area_init.nss b/src/nss/area_init.nss index 12da4e5c..925d467b 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 00000000..4b7db2ba --- /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 e700d744..3893d433 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 e9906376..2cda8300 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 41084016..00000000 --- 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"); -}