diff --git a/_module/ifo/module.ifo.json b/_module/ifo/module.ifo.json index 2716f6ff..a09ff71e 100644 --- a/_module/ifo/module.ifo.json +++ b/_module/ifo/module.ifo.json @@ -2118,7 +2118,7 @@ }, "Mod_ID": { "type": "void", - "value": "ÿÿÿÿ\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000«\u0000\u0000\u0000" + "value": "ÿÿÿÿ\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0020\u0001\u0000\u0000" }, "Mod_IsSaveGame": { "type": "byte", diff --git a/_module/ncs/10aboat1.ncs b/_module/ncs/10aboat1.ncs index 79de2e34..aa35e60e 100644 Binary files a/_module/ncs/10aboat1.ncs and b/_module/ncs/10aboat1.ncs differ diff --git a/_module/ncs/10ariver1.ncs b/_module/ncs/10ariver1.ncs index 78e8c78b..c8be58a3 100644 Binary files a/_module/ncs/10ariver1.ncs and b/_module/ncs/10ariver1.ncs differ diff --git a/_module/ncs/10ariver2.ncs b/_module/ncs/10ariver2.ncs index 53f8da2c..840106aa 100644 Binary files a/_module/ncs/10ariver2.ncs and b/_module/ncs/10ariver2.ncs differ diff --git a/_module/ncs/10ariver3.ncs b/_module/ncs/10ariver3.ncs index b7721f59..76242cdc 100644 Binary files a/_module/ncs/10ariver3.ncs and b/_module/ncs/10ariver3.ncs differ diff --git a/_module/ncs/10ariver4.ncs b/_module/ncs/10ariver4.ncs index 5113f06b..b3ff4701 100644 Binary files a/_module/ncs/10ariver4.ncs and b/_module/ncs/10ariver4.ncs differ diff --git a/_module/ncs/10ariver5.ncs b/_module/ncs/10ariver5.ncs index 216fa3a8..a5237855 100644 Binary files a/_module/ncs/10ariver5.ncs and b/_module/ncs/10ariver5.ncs differ diff --git a/_module/ncs/10ariver6.ncs b/_module/ncs/10ariver6.ncs index d34d152c..393cfb84 100644 Binary files a/_module/ncs/10ariver6.ncs and b/_module/ncs/10ariver6.ncs differ diff --git a/_module/ncs/10asmlaked1.ncs b/_module/ncs/10asmlaked1.ncs index 7cff340d..d66c1773 100644 Binary files a/_module/ncs/10asmlaked1.ncs and b/_module/ncs/10asmlaked1.ncs differ diff --git a/_module/ncs/10asmlaked2.ncs b/_module/ncs/10asmlaked2.ncs index 9d046900..1fb21133 100644 Binary files a/_module/ncs/10asmlaked2.ncs and b/_module/ncs/10asmlaked2.ncs differ diff --git a/_module/ncs/11diving.ncs b/_module/ncs/11diving.ncs index ecab1310..9327d25a 100644 Binary files a/_module/ncs/11diving.ncs and b/_module/ncs/11diving.ncs differ diff --git a/_module/ncs/11river1.ncs b/_module/ncs/11river1.ncs index ef81c871..e751fae9 100644 Binary files a/_module/ncs/11river1.ncs and b/_module/ncs/11river1.ncs differ diff --git a/_module/ncs/11river2.ncs b/_module/ncs/11river2.ncs index 2831aac3..555c14e1 100644 Binary files a/_module/ncs/11river2.ncs and b/_module/ncs/11river2.ncs differ diff --git a/_module/ncs/11river3.ncs b/_module/ncs/11river3.ncs index efb82e8e..3df36a1e 100644 Binary files a/_module/ncs/11river3.ncs and b/_module/ncs/11river3.ncs differ diff --git a/_module/ncs/11river4.ncs b/_module/ncs/11river4.ncs index 4b667b58..5a12c92e 100644 Binary files a/_module/ncs/11river4.ncs and b/_module/ncs/11river4.ncs differ diff --git a/_module/ncs/12aboat2.ncs b/_module/ncs/12aboat2.ncs index 3f0d7cd6..64cf844c 100644 Binary files a/_module/ncs/12aboat2.ncs and b/_module/ncs/12aboat2.ncs differ diff --git a/_module/ncs/12ahermit1.ncs b/_module/ncs/12ahermit1.ncs index 2ba4d89a..d4cee795 100644 Binary files a/_module/ncs/12ahermit1.ncs and b/_module/ncs/12ahermit1.ncs differ diff --git a/_module/ncs/12ahermit2.ncs b/_module/ncs/12ahermit2.ncs index e4b26f4f..3fd9cd6d 100644 Binary files a/_module/ncs/12ahermit2.ncs and b/_module/ncs/12ahermit2.ncs differ diff --git a/_module/ncs/12totarpit.ncs b/_module/ncs/12totarpit.ncs index 02a24533..f334afcd 100644 Binary files a/_module/ncs/12totarpit.ncs and b/_module/ncs/12totarpit.ncs differ diff --git a/_module/ncs/1riverto9.ncs b/_module/ncs/1riverto9.ncs index 072485aa..9b6b6c23 100644 Binary files a/_module/ncs/1riverto9.ncs and b/_module/ncs/1riverto9.ncs differ diff --git a/_module/ncs/3aholedoor.ncs b/_module/ncs/3aholedoor.ncs index d7aeb7b5..fc89e467 100644 Binary files a/_module/ncs/3aholedoor.ncs and b/_module/ncs/3aholedoor.ncs differ diff --git a/_module/ncs/3holesdoor.ncs b/_module/ncs/3holesdoor.ncs index 23dc00fd..e5b3dc57 100644 Binary files a/_module/ncs/3holesdoor.ncs and b/_module/ncs/3holesdoor.ncs differ diff --git a/_module/ncs/3holesdoor2.ncs b/_module/ncs/3holesdoor2.ncs index 039bca69..922bc8a9 100644 Binary files a/_module/ncs/3holesdoor2.ncs and b/_module/ncs/3holesdoor2.ncs differ diff --git a/_module/ncs/3statued.ncs b/_module/ncs/3statued.ncs index e87187b4..a8587c77 100644 Binary files a/_module/ncs/3statued.ncs and b/_module/ncs/3statued.ncs differ diff --git a/_module/ncs/3statuesid1.ncs b/_module/ncs/3statuesid1.ncs index 7da7814a..c39d9b09 100644 Binary files a/_module/ncs/3statuesid1.ncs and b/_module/ncs/3statuesid1.ncs differ diff --git a/_module/ncs/3statuesid2.ncs b/_module/ncs/3statuesid2.ncs index d400bbac..aa18d976 100644 Binary files a/_module/ncs/3statuesid2.ncs and b/_module/ncs/3statuesid2.ncs differ diff --git a/_module/ncs/3statuesid3.ncs b/_module/ncs/3statuesid3.ncs index 8c5a68c2..ab816019 100644 Binary files a/_module/ncs/3statuesid3.ncs and b/_module/ncs/3statuesid3.ncs differ diff --git a/_module/ncs/3statuesidx.ncs b/_module/ncs/3statuesidx.ncs index af5c16ee..16cdbc0c 100644 Binary files a/_module/ncs/3statuesidx.ncs and b/_module/ncs/3statuesidx.ncs differ diff --git a/_module/ncs/4ariver1.ncs b/_module/ncs/4ariver1.ncs index 9afe05c7..1f6cb532 100644 Binary files a/_module/ncs/4ariver1.ncs and b/_module/ncs/4ariver1.ncs differ diff --git a/_module/ncs/5to14jump.ncs b/_module/ncs/5to14jump.ncs index d6f16c7e..636d2c3c 100644 Binary files a/_module/ncs/5to14jump.ncs and b/_module/ncs/5to14jump.ncs differ diff --git a/_module/ncs/69_hench_rangeye.ncs b/_module/ncs/69_hench_rangeye.ncs index 9939650b..e6a1f6f7 100644 Binary files a/_module/ncs/69_hench_rangeye.ncs and b/_module/ncs/69_hench_rangeye.ncs differ diff --git a/_module/ncs/69_hench_switchn.ncs b/_module/ncs/69_hench_switchn.ncs index 6ad5c38a..c7a5c8cf 100644 Binary files a/_module/ncs/69_hench_switchn.ncs and b/_module/ncs/69_hench_switchn.ncs differ diff --git a/_module/ncs/ra_ai_heartbeat.ncs b/_module/ncs/ra_ai_heartbeat.ncs index 23cb027c..f733b3d4 100644 Binary files a/_module/ncs/ra_ai_heartbeat.ncs and b/_module/ncs/ra_ai_heartbeat.ncs differ diff --git a/_module/ncs/ra_ai_ondamaged.ncs b/_module/ncs/ra_ai_ondamaged.ncs index 02961fd8..f2596e52 100644 Binary files a/_module/ncs/ra_ai_ondamaged.ncs and b/_module/ncs/ra_ai_ondamaged.ncs differ diff --git a/_module/ncs/ra_ai_userdef.ncs b/_module/ncs/ra_ai_userdef.ncs index c0be3ddf..038da65e 100644 Binary files a/_module/ncs/ra_ai_userdef.ncs and b/_module/ncs/ra_ai_userdef.ncs differ diff --git a/_module/nss/ra_ai_heartbeat.nss b/_module/nss/ra_ai_heartbeat.nss index ecf5519c..3d4e9acc 100644 --- a/_module/nss/ra_ai_heartbeat.nss +++ b/_module/nss/ra_ai_heartbeat.nss @@ -15,7 +15,34 @@ void main() { object oNPC = OBJECT_SELF; object oAttacker; + string sResRef = GetResRef(oNPC); + + effect eSleep = EffectSleep(); + +//:: Handles troll regen + if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA") + { + if(GetLocalInt(oNPC, "nSubDual") > 0) + { + SetLocalInt(oNPC, "nSubDual", GetLocalInt(oNPC, "nSubDual") - 5); + + if(GetLocalInt(oNPC, "nSubDual") < GetCurrentHitPoints(oNPC)) + { + RemoveEffect(oNPC, eSleep); + } + + if(GetLocalInt(oNPC, "nSubDual") > GetCurrentHitPoints(oNPC)) + { + SpeakString("I am still unconscious!"); + SetIsDestroyable(FALSE, TRUE, TRUE); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, OBJECT_SELF, 6.5f); + } + + SpeakString("My Subdual is now " + IntToString(GetLocalInt(oNPC, "nSubDual"))); + + } + } //:: Equips best armor if ((!GetIsInCombat(oNPC) && (GetItemInSlot(INVENTORY_SLOT_CHEST) == OBJECT_INVALID))) diff --git a/_module/nss/ra_ai_ondamaged.nss b/_module/nss/ra_ai_ondamaged.nss index c9188cb9..9a835fcd 100644 --- a/_module/nss/ra_ai_ondamaged.nss +++ b/_module/nss/ra_ai_ondamaged.nss @@ -13,6 +13,16 @@ void main() { + int nTotalDamage = GetTotalDamageDealt(); + int nFireDamage = 0; + int nAcidDamage = 0; + int nTotalHP = GetMaxHitPoints(OBJECT_SELF); + + string sResRef = GetResRef(OBJECT_SELF); + + effect eSleep = EffectSleep(); + effect eSlow = EffectSlow(); + //-------------------------------------------------------------------------- // GZ: 2003-10-16 // Make Plot Creatures Ignore Attacks @@ -22,6 +32,73 @@ void main() return; } +//:: Handles troll regen + if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA") + { + DelayCommand(0.0f, SpeakString("Max/Total HP: " + IntToString(nTotalHP))); + + if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) != -1) + { + nFireDamage = GetDamageDealtByType(DAMAGE_TYPE_FIRE); + //DelayCommand(0.0f, SpeakString("Fire Damage: " + IntToString(nFireDamage))); + } + + if(GetDamageDealtByType(DAMAGE_TYPE_ACID) != -1) + { + nAcidDamage = GetDamageDealtByType(DAMAGE_TYPE_ACID); + //DelayCommand(0.0f, SpeakString("Acid Damage: " + IntToString(nAcidDamage))); + } + + int nNoRegen = nFireDamage + nAcidDamage; + int nSubDmg = nTotalDamage - nNoRegen; + + //DelayCommand(0.0f, SpeakString("Real damage this attack: " + IntToString(nNoRegen))); + + SetLocalInt(OBJECT_SELF, "NoRegen", nNoRegen + GetLocalInt(OBJECT_SELF, "NoRegen")); + + nNoRegen = GetLocalInt(OBJECT_SELF, "NoRegen"); + + //DelayCommand(0.0f, SpeakString("Actual Damage Stored: " + IntToString(nNoRegen))); + + effect eHeal = EffectHeal(nSubDmg); + //DelayCommand(0.0f, SpeakString("Subdual damage healed: " + IntToString(nSubDmg))); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF, 0.0f); + + int nCurrentHP = GetCurrentHitPoints(OBJECT_SELF); + DelayCommand(0.0f, SpeakString("Current HP: " + IntToString(nCurrentHP))); + + if ((nTotalHP - nNoRegen) < nCurrentHP) + { + nCurrentHP = nTotalHP - nNoRegen; + //DelayCommand(0.0f, SpeakString("Setting HP to: " + IntToString(nCurrentHP))); + SetCurrentHitPoints(OBJECT_SELF, nCurrentHP); + } + + if(GetLocalInt(OBJECT_SELF, "nSubDual") <= GetCurrentHitPoints(OBJECT_SELF)) + { + SetLocalInt(OBJECT_SELF, "nSubDual", nSubDmg + GetLocalInt(OBJECT_SELF, "nSubDual")); + } + + int nSD = GetLocalInt(OBJECT_SELF, "nSubDual"); + + //DelayCommand(0.0f, SpeakString("SD: " + IntToString(nSD))); + //DelayCommand(0.0f, SpeakString("CH: " + IntToString(nCurrentHP))); + //DelayCommand(0.0f, SpeakString("NoRegen: " + IntToString(nNoRegen))); + + if(nSD > GetCurrentHitPoints(OBJECT_SELF)) + { + //SpeakString("I am unconscious!"); + SetIsDestroyable(FALSE, TRUE, TRUE); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, OBJECT_SELF, 6.0f); + } + else if(nSD == GetCurrentHitPoints(OBJECT_SELF)) + { + //SpeakString("I am staggered!"); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, OBJECT_SELF, 6.0f); + } + + } + //:: Execute the CODI AI NPC OnDamaged script ExecuteScript("no_ai_dam", OBJECT_SELF); diff --git a/_module/nss/ra_ai_userdef.nss b/_module/nss/ra_ai_userdef.nss index 0dfd57a6..22555416 100644 --- a/_module/nss/ra_ai_userdef.nss +++ b/_module/nss/ra_ai_userdef.nss @@ -24,6 +24,7 @@ void main() int nUser = GetUserDefinedEventNumber(); int nFireDamage = 0; int nAcidDamage = 0; + int nTotalHP = GetMaxHitPoints(OBJECT_SELF); string sResRef = GetResRef(OBJECT_SELF); @@ -32,7 +33,7 @@ void main() if(nUser == EVENT_HEARTBEAT ) //HEARTBEAT { - if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA") +/* if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA") { if(GetLocalInt(OBJECT_SELF, "nSubDual") > 0) { @@ -42,9 +43,10 @@ void main() { RemoveEffect(OBJECT_SELF, eSleep); } - //SpeakString("My Subdual is now " + IntToString(GetLocalInt(OBJECT_SELF, "nSubDual"))); + SpeakString("My Subdual is now " + IntToString(GetLocalInt(OBJECT_SELF, "nSubDual"))); + } - } + } */ } else if(nUser == EVENT_PERCEIVE) // PERCEIVE { @@ -64,23 +66,28 @@ void main() } else if(nUser == EVENT_DAMAGED) // DAMAGED { - if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA") +/* if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA") { int nTotalDamage = GetTotalDamageDealt(); - if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) > 0) + if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) >= 1) { nFireDamage = GetDamageDealtByType(DAMAGE_TYPE_FIRE); + SpeakString("Fire Damage: " + IntToString(nFireDamage)); } - if(GetDamageDealtByType(DAMAGE_TYPE_ACID) > 0) + if(GetDamageDealtByType(DAMAGE_TYPE_ACID) >= 1) { nAcidDamage = GetDamageDealtByType(DAMAGE_TYPE_ACID); + SpeakString("Acid Damage: " + IntToString(nAcidDamage)); } int nSubDmg = nTotalDamage - (nFireDamage + nAcidDamage); int nActDmg = nFireDamage + nAcidDamage; + SpeakString("Real damage this attack: " + IntToString(nActDmg)); + + SetLocalInt(OBJECT_SELF, "nActDmg", nActDmg + GetLocalInt(OBJECT_SELF, "nActDmg")); effect eHeal = EffectHeal(nSubDmg); @@ -93,23 +100,31 @@ void main() } int nSD = GetLocalInt(OBJECT_SELF, "nSubDual"); - int nCH = GetCurrentHitPoints(OBJECT_SELF); + int nCurrentHP = GetCurrentHitPoints(OBJECT_SELF); + + SpeakString("SD: " + IntToString(nSD)); + SpeakString("CH: " + IntToString(nCurrentHP)); + SpeakString("ActDmg: " + IntToString(nActDmg)); - /*SpeakString("SD: " + IntToString(nSD)); - SpeakString("CH: " + IntToString(nCH));*/ - - if(nSD > nCH) + if(nSD > nCurrentHP) { - //SpeakString("I am unconscious!"); + SpeakString("I am unconscious!"); SetIsDestroyable(FALSE, TRUE, TRUE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, OBJECT_SELF, 6.0f); } - else if(nSD == nCH) + else if(nSD == nCurrentHP) { - //SpeakString("I am staggered!"); + SpeakString("I am staggered!"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, OBJECT_SELF, 6.0f); } - } + + if ((nTotalHP - nActDmg) < nCurrentHP) + { + nCurrentHP = nTotalHP - nActDmg; + SpeakString("Setting HP to: " + IntToString(nCurrentHP)); + SetCurrentHitPoints(OBJECT_SELF, nCurrentHP); + } + } */ } else if(nUser == 1007) // DEATH - do not use for critical code, does not fire reliably all the time { diff --git a/_module/ra_tdog.mod b/_module/ra_tdog.mod index dee5cc40..6c16174b 100644 Binary files a/_module/ra_tdog.mod and b/_module/ra_tdog.mod differ