From 7207aba58034458cd36b9b58e9d2c54edaacf262 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Wed, 14 Jan 2026 23:49:30 -0500 Subject: [PATCH] 2026/01/14 Late update Updated PEPS. Tweaked geomorph code to prevent broken transitions. East/west & north/south are now randomized & tacked separately. Dungeon will reset areas when empty & no more options are available. Fixed issue with spell effect NUI. Full compile. --- _module/are/valeford.are.json | 2 +- _module/are/valefordtemple.are.json | 2 +- _module/git/valeford.git.json | 10 +- _module/ifo/module.ifo.json | 30 +++ _module/ncs/0e_nui.ncs | Bin 535879 -> 535885 bytes _module/ncs/0e_onclientload.ncs | Bin 90053 -> 90059 bytes _module/ncs/door_click.ncs | Bin 1745 -> 2903 bytes _module/ncs/hif_modongui.ncs | Bin 0 -> 75 bytes _module/ncs/mod_gui.ncs | Bin 17023 -> 17168 bytes _module/ncs/ms_name_inc.ncs | Bin 23 -> 0 bytes _module/ncs/nw_c2_default1.ncs | Bin 195671 -> 195677 bytes _module/ncs/nw_c2_default9.ncs | Bin 0 -> 164509 bytes _module/ncs/nw_ch_ac1.ncs | Bin 241128 -> 241134 bytes _module/ncs/nw_o2_generalmed.ncs | Bin 143957 -> 149419 bytes _module/ncs/prc_pw_petrific.ncs | Bin 100 -> 116 bytes _module/ncs/prc_pwonspawn.ncs | Bin 37153 -> 37153 bytes _module/ncs/ss_treasure_spwn.ncs | Bin 7887 -> 7887 bytes _module/nss/0e_gui_events.nss | 2 +- _module/nss/0i_gui_events.nss | 2 + _module/nss/door_click.nss | 246 +++++++++++++-------- _module/nss/hif_modongui.nss | 5 + _module/nss/mod_gui.nss | 14 +- _module/nss/nw_c2_default9.nss | 327 ++++++++++++++++++++++++++++ _module/nss/prc_pwonspawn.nss | 7 +- _module/nss/ss_treasure_spwn.nss | 2 +- _module/utc/1_und_5b.utc.json | 2 +- 26 files changed, 540 insertions(+), 111 deletions(-) create mode 100644 _module/ncs/hif_modongui.ncs delete mode 100644 _module/ncs/ms_name_inc.ncs create mode 100644 _module/ncs/nw_c2_default9.ncs create mode 100644 _module/nss/hif_modongui.nss create mode 100644 _module/nss/nw_c2_default9.nss diff --git a/_module/are/valeford.are.json b/_module/are/valeford.are.json index 0e625d5b..519a1e7d 100644 --- a/_module/are/valeford.are.json +++ b/_module/are/valeford.are.json @@ -11173,7 +11173,7 @@ }, "Version": { "type": "dword", - "value": 89 + "value": 91 }, "Width": { "type": "int", diff --git a/_module/are/valefordtemple.are.json b/_module/are/valefordtemple.are.json index 70c54ff6..d0314011 100644 --- a/_module/are/valefordtemple.are.json +++ b/_module/are/valefordtemple.are.json @@ -1713,7 +1713,7 @@ }, "Version": { "type": "dword", - "value": 17 + "value": 19 }, "Width": { "type": "int", diff --git a/_module/git/valeford.git.json b/_module/git/valeford.git.json index 51dc3529..a24bd791 100644 --- a/_module/git/valeford.git.json +++ b/_module/git/valeford.git.json @@ -90136,7 +90136,7 @@ }, "XPosition": { "type": "float", - "value": 145.43106079101562 + "value": 145.7196044921875 }, "YOrientation": { "type": "float", @@ -90144,7 +90144,7 @@ }, "YPosition": { "type": "float", - "value": 108.6772689819336 + "value": 107.3787612915039 }, "ZPosition": { "type": "float", @@ -92058,7 +92058,7 @@ }, "XPosition": { "type": "float", - "value": 142.741943359375 + "value": 139.95135498046875 }, "YOrientation": { "type": "float", @@ -92066,11 +92066,11 @@ }, "YPosition": { "type": "float", - "value": 111.9538345336914 + "value": 111.28477478027344 }, "ZPosition": { "type": "float", - "value": 0.7951282262802124 + "value": 0.19976425170898438 } }, { diff --git a/_module/ifo/module.ifo.json b/_module/ifo/module.ifo.json index 50355418..a24c4474 100644 --- a/_module/ifo/module.ifo.json +++ b/_module/ifo/module.ifo.json @@ -1264,6 +1264,36 @@ "type": "int", "value": 0 } + }, + { + "__struct_id": 0, + "Name": { + "type": "cexostring", + "value": "PRC_WEREWOLF_HYBRID_USE_SHIFTER_SHAPECHANGE" + }, + "Type": { + "type": "dword", + "value": 1 + }, + "Value": { + "type": "int", + "value": 1 + } + }, + { + "__struct_id": 0, + "Name": { + "type": "cexostring", + "value": "PRC_WILDSHAPE_ALLOWS_ARMS_SLOT" + }, + "Type": { + "type": "dword", + "value": 1 + }, + "Value": { + "type": "int", + "value": 1 + } } ] } diff --git a/_module/ncs/0e_nui.ncs b/_module/ncs/0e_nui.ncs index efebaf4552ceaa3974ae3d0e5d3ba5a2a4a8c36d..ff7475f74a429d73eb8c768ada848babf7695b43 100644 GIT binary patch delta 6842 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 JFUWlR{{RO#d|&_o delta 6708 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 At^fc4 delta 484 zcmX@TpY`Z|R$f2nV1+P4Jp(5O#`vQXdCxOuZ@jynk$(d-Wn3m7ph22p4%tP*t2LBfo-lMVbOrmI>pZfCqV z{jL?GH18QXhX4Pyt3jkr=yXHXG>rc6&*raRg&T2B9O&FIM331a_c zG@X1gR&?@x2i?i~VcgT-+cUCGpJ>Y{%@__A*9+r;h+PJWiB8_IPjs@ad-nExJ4P8s z#tKw5o9uyV%qAzC5`&qg#Q15ukOSjE4#wS+=N(j-K2;DHXcLyPPEOF~oBY3zeY>J3 lqY4w_Uy$=Or{{Y!@-upGulHu0B@E<(oqV8jdSEGRxO)$|!@!|m!OpJ;REkdj3= z{t3jBM~|G02M!+8K*GU;2M!!KVA2>&ee=DUWp>$?Xbkzd-p7T@$77rv8%?}?O20vJCXoKZopL{{7M>Yd1HyIy^O{9beZ zKx`wC2?ts3nrZ=C0n9lHRtAjAYT<2?3O+HND=y@Ne7U?7RC7;*Qn?z;m6uETVFdZ9 za*;0_MNL9JJ`+t8dBS_1tIp1cERS;jVYjFOXi*4QmE`mKAr!)rm5N(RXVK3A^`{c; z8uM{M*!YT#FD2mTqWGGPFC^eENAU$4UrWII$cAKrS_R8dPEqZi@N-Lr+}I2dJ81Dk znaM_-I6fO1H^k8AI71pj9#geN?e9nE50=#POg7238{4e(Z*irwme=9xWNh<%m(n$T z#=v`z<>$K$xCw0OJ27k@cigh*aAFp$3{bIQ^bTdMt7vVv@w|h`zCMmaRG!eMJ`==P zjMGgGA^88%t)%TQR2IvN+&XZJV%X~;owuSfd6rnSsaG9}BL)=M@_Pa+i3x|ywqrfR z{uiUgG)ANM3)TtjZ5iTWMuNgGNreqXx1!(sz)gtBnQU!-$(ZMYC1zHr7Bfv14Ty3} z&Cg^J7js8wZi#Y+V~frX`{l&sTXSeAhl3OGHB1RcM8m(Ih)~FrsG3F37fvYpkBDQ5 zp0T#*xt37$#sWpin7Zf;X$FW3;&j|K)u9a9R#mELtzmrVl(Y#QpB1nnCdei>oyYld zSVNF)l?4M}!NMNrdyhp$KyCrP_Y@!Q`-5i@4!+YaUCO&wyT}tu$bW2UnfE}%F zq9Gk(93FTGQ+*)mXv`bduhfcH_0UB2Ujw7|g z6@VkDQYx)*HQ@M;j^j)y{8H+;3cJjz&*wk7PGl#p6QMrHlaH9ZHx2k>NZoPvC}Dsm@LCD$cU7qazsyXjBgmdJoX?c`7{S_>?^BreD3@t(dY0T|{~Z zw<=JiWm^cXwQB8hqnhn%pg&OdhRKi=#4kT}E(+_r)^qrJ3cI?oYc&3h zPz~Mc2+zzG7iOPb4WNpeVcrdqIEWQc~FXwa1m1-d$s8@)JI_k~{-+la2 S77j>6(HSWge@m>a1>!GE(Wj?pcqie z2_~?D4{!yn3=o^aYJkE(HO3G%Utns$Qa?cM;Q^TjaS&s}WCdmw#ygY4*=*}=WI+<5 zV1<9cW?W-bfLMD3%w=QJ5dbLx0*G2^7B&zE$yP2VG#y~?GXfoi1z3Jff4AO;I71AjqLa(sSXK~7?2YEgP=CM!^y2`8UhJ9B*ngod8LUtIhFnesd=d> z0f|M4xj=p0OkhLa0PSLB5GW{0j?XL2j87>oiZ9DdEoWt5;9#0uU@pCJ(pyIW6^bu2 delta 56 zcmbQx#`wR5k=M^TSRu?%&%lX+!Kr>CZ=&=E1{M}p2L6Jg1z3JeMi04)0gsQ>@~ diff --git a/_module/ncs/nw_c2_default1.ncs b/_module/ncs/nw_c2_default1.ncs index b6db1e8a9edc8db8cd8b518d29656d2082cf563a..82360ddfee04b33f65158b2a5b30981bd57147c0 100644 GIT binary patch delta 2465 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 delta 3363 zcmY*bdtADH>`0V}tb6@xUyYK6KeXr|QwfoQ2?rt%?UJrSr zecQ;M4b+aGOWkTL_`$ek3C2mIky90{dwy_g51cl9MmtNvT zNp8s1_ZrhAh3Pucm!2ck=(YajDvs1!0*HW9x;T(RfL&Y}M0MD$k2Il|fVZ?qQ+gM; zr587&c|fvm97=P6D|%%ZwIlfQp{M8p%DAEh{ecQy_B4446I~fj-oRR2(~`C++|~=) zP-EbtUKc?&ptUY-OL0Jo_Kc(sK(y}No>~Eoc=EG!1|M^R8~k-#2kH#x#NY<Ug>f}kCDIod$ScOuGURZ}B+@k3i7zG5b$Ig8 zar8cVbJ_^9=~?6H140^yrqC`=<#=~_mRLqh6}Qc#->}F$Joh(G?wKWT&N|)%XVXGjqa2TJXVVG7 z4X&6+Z{l4J%As%I&sTG(8nrrb1vLa$z9(U;gK%EWk^iAo?w2or`#s_A z%31lOF^%0jz>i-opu0#mC4}<(Ipo3C9ykb-cwrmP=sfI%F+bP77g}IyVE} ze!_5})SPJg6u6E>(rS}gcY2{Gi@wA3u2s|**lQ}?ow|&CqIDrY)uM2bS#pnc&BgCe zxZ2e$l%#dO@KH1b(LOohZ8P6XiqMvWa}~ z1;^G>Q{8D3MUv!h@@D!O$N04($&YPj$o%y6A{qfCai6Vp-EF2Lq3r4OhcPfcjN`Xa z5n6G=cJY5;G3~;SX64xQ#bSyg$*0Mal`pqDNM77!2OYw8#!d-#yGKP8}a^Q7qVZC|q^= zyQLY`Up6#iS37a>ZgS`T*T~(d`P0fDo|4_lDv^1ZCuX8KH;IC)k+jcU)eWoW(%xvv z{r*cAaGG15rYdP)4^Pv5pv=hZ<7;GHankN*%@&!ZlfI*45D>Dv?#=TQAx7ApzvaBB zK0-IErZvDFF1sL!n#1+qiv@Y#OL4E!{Vz(&BY=57tmAA(hiF(*`86 z-%paeclgdva%aQeoNrQNJ^hNr7H#>)RS8qgRf@JWTk#lr?f&gaZL#it3TyW4Q;6@j7sH>LeXnPOvA-GfU{1h>+!{z735 z@w}e$2PKirO>w6K__qhN7!jQHP}*2Go)n{+@~}tr7OwK)NAhQ=9$ZHmgzxpqdWjJ9 zzTedgK!)x>N~&ZUcT(yioY~K!G7!YeEGiyd`Hn>;BUX=eQUV5vy3DGq&bXl~+|*FO z;6M*`1V{LQmy}b5lC7iLTSs2Ezd#hDa7&p9CFWfS` zzOnJ_80Ds8ebiWm`@Akdh42}Fbx69Z&<6#vWeL@D168U!_UpSX6)S}5MQzlx=J@h? zgxVg0-6kU~j6|iEA2Z#k7so0Wiy)xaVwtJ74N@sqtkOQiRcn#~sK-d<1yt(Sl4ZnSC$tmMmM)B~xA zi-{@`6O3$a({GG5`Pz7VlA0KN_Mf?s)!-kw@Te-!-rTk4I8{J!<&DYWykO3spftvs zAd#=XOEFn}$tN*G_zI=ra|O;tWXFD?leWXPJP7Gu46F#rQ~%XD=QGI*FiH*B= zw)4~#tk&K+$_Bdc%mWiB&`9m-#I>p9VPqEl%ec|r#po7f<;l5f9L{jew-l`J=Bh^! z9K1bW4U^L7pQk!v9nZ;=(>gtSfg0|GDqX!+pc%9Y&;)fjPmTA}h2Q}PN`r3_VrH_9@cLpQ0mGR?+rQZfra;;hYT zj`IvhC>;acrbzM5*ITGL4=Ga7C^Xu44CB%w)sbtqsy-aCMIAr^U)m}OQ@2H37L*Zs ah?0RMvt>a9F`UU diff --git a/_module/ncs/nw_o2_generalmed.ncs b/_module/ncs/nw_o2_generalmed.ncs index 74c9f3efeda7073800f8cf86bc78f12128e53a15..a779149c1e91561f88f5ee141bc126cf09213ddf 100644 GIT binary patch delta 4544 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 E0d|hXAOHXW diff --git a/_module/ncs/prc_pw_petrific.ncs b/_module/ncs/prc_pw_petrific.ncs index 5610d0bbab4c6c1de0fbc994916b33b3ea1a0dfd..7e758d29610fc6aaec868fe8cd30fa1d7129ff92 100644 GIT binary patch delta 49 zcmYc((e`r=RtPiHGjL*HU?`CT5)2#)3`}e+Y#=5hrU}w)atuHaH&N7=(;moRWnf@u+E~770sw&d2V(#L delta 37 pcmZ3uh-u*>rU}v$)!jwyX3m_&%D}+R#KOh^1acsPV`KTM2>`@P2=o8| diff --git a/_module/ncs/ss_treasure_spwn.ncs b/_module/ncs/ss_treasure_spwn.ncs index 626b3ad28d5e158e662dcc2e52830b607e033f36..be200516fd2c8c562004dc95fa6b76e891cf1afc 100644 GIT binary patch delta 17 YcmX?ad){_~5i5&50|UcmGuD}s05qlq;{X5v delta 17 ZcmX?ad){_~5i5(`%$c(`o3YN61OP!W2Ce`A diff --git a/_module/nss/0e_gui_events.nss b/_module/nss/0e_gui_events.nss index 401c8254..e24e9c2b 100644 --- a/_module/nss/0e_gui_events.nss +++ b/_module/nss/0e_gui_events.nss @@ -16,7 +16,7 @@ void main() //object oEventObject = GetLastGuiEventObject(); switch(nEventType) { - case GUIEVENT_EFFECTICON_CLICK: + case GUIEVENT_EFFECTICON_CLICK: { if(ai_GetMagicMode(oPC, AI_MAGIC_EFFECT_ICON_REPORT)) { diff --git a/_module/nss/0i_gui_events.nss b/_module/nss/0i_gui_events.nss index bc90d25f..fde6e846 100644 --- a/_module/nss/0i_gui_events.nss +++ b/_module/nss/0i_gui_events.nss @@ -14,6 +14,8 @@ #include "0i_nui" void ai_SetupModuleGUIEvents() { + return; //:: Disabled + object oModule = GetModule(); string sModuleGUIEvents = GetEventScript(oModule, EVENT_SCRIPT_MODULE_ON_PLAYER_GUIEVENT); if(sModuleGUIEvents != "" || sModuleGUIEvents != "0e_gui_events") diff --git a/_module/nss/door_click.nss b/_module/nss/door_click.nss index 02e29fe6..c523a9f4 100644 --- a/_module/nss/door_click.nss +++ b/_module/nss/door_click.nss @@ -1,97 +1,151 @@ -void main() -{ - object oPC = GetEnteringObject(); - - if (GetIsPC(oPC) != TRUE) return; - -//:: Get own ID number - string sSelf = GetTag(OBJECT_SELF); - int iLength = GetStringLength(sSelf); - string sID; - int iChosen = 0; - - switch (iLength) - { - case 6: - sID = GetStringRight(sSelf,1); - break; - - case 7: - sID = GetStringRight(sSelf,2); - break; - - case 8: - sID = GetStringRight(sSelf,3); - break; - } - - //SendMessageToPC(oPC,"my area ID is "+sID); - - int iMatch = GetLocalInt(OBJECT_SELF,"match"); //:: Current door's match - string sEntryDir = GetStringLeft(GetTag(OBJECT_SELF),1); //:: Current door's direction - string sExitDir; - -//:: This inverts the directions - if (sEntryDir == "n") - sExitDir="s"; - - else if (sEntryDir == "s") - sExitDir="n"; - - else if (sEntryDir == "w") - sExitDir="e"; - - else if (sEntryDir == "e") - sExitDir="w"; - - //SendMessageToPC(oPC,"i should be on the "+sExitDir+" side of the map"); - -//:: Now determine if there is already a match - if (iMatch != 0) //:: Door already has a match, teleport PC - { - //SendMessageToPC(oPC,"door has a match"); - string sTag = "area4_"+IntToString(iMatch); - object oArea = GetObjectByTag(sTag); - object oTarget = GetObjectByTag("wp4_"+IntToString(iMatch)+sExitDir); - location lTarget = GetLocation(oTarget); - float fFace = GetFacing(oPC); - AssignCommand(oPC,ActionJumpToLocation(lTarget)); - AssignCommand(oPC,SetFacing(fFace)); - iChosen = 1; - return; - } - - int iRand = Random(41)+1; //:: Random # for area selection - string sTag = "area4_"+IntToString(iRand); - object oArea = GetObjectByTag(sTag); - int iUsed = GetLocalInt(oArea,"ispop"); - float fFace = GetFacing(oPC); - - - - while (iChosen == 0)//selecting new areas - { - iRand = Random(41)+1; - sTag = "area4_"+IntToString(iRand); - oArea = GetObjectByTag(sTag); - iUsed = GetLocalInt(oArea,"ispop"); - - if (iUsed == 0) - { - // SendMessageToPC(oPC,"unused area chosen"); - object oTarget = GetObjectByTag("wp4_"+IntToString(iRand)+sExitDir); - location lTarget = GetLocation(oTarget); - AssignCommand(oPC,ActionJumpToLocation(lTarget)); - AssignCommand(oPC,SetFacing(fFace)); - SetLocalInt(oArea,"ispop",1); - object oDoor = GetObjectByTag(sExitDir+"door"+IntToString(iRand)); - SetLocalInt(OBJECT_SELF,"match",iRand); - SetLocalInt(oDoor,"match",StringToInt(sID)); - iChosen = 1; - break; - } - - //choose new area and try again until successful or TMI error - } - +void main() +{ + //object oPC = GetEnteringObject(); + object oPC = GetClickingObject(); + if (GetIsPC(oPC) != TRUE) return; + + //:: Get own ID number + string sSelf = GetTag(OBJECT_SELF); + int iLength = GetStringLength(sSelf); + string sID; + int iChosen = 0; + + switch (iLength) + { + case 6: + sID = GetStringRight(sSelf,1); + break; + + case 7: + sID = GetStringRight(sSelf,2); + break; + + case 8: + sID = GetStringRight(sSelf,3); + break; + + default: + SendMessageToPC(oPC, "Valid door tag not found."); + sID = ""; // Initialize to empty string for unexpected lengths + break; + } + + //SendMessageToPC(oPC,"my area ID is "+sID); + + int iMatch = GetLocalInt(OBJECT_SELF,"match"); //:: Current door's match + string sEntryDir = GetStringLeft(GetTag(OBJECT_SELF),1); //:: Current door's direction + string sExitDir; + + //:: This inverts the directions + if (sEntryDir == "n") + sExitDir="s"; + + else if (sEntryDir == "s") + sExitDir="n"; + + else if (sEntryDir == "w") + sExitDir="e"; + + else if (sEntryDir == "e") + sExitDir="w"; + + //SendMessageToPC(oPC,"i should be on the "+sExitDir+" side of the map"); + + //:: Now determine if there is already a match + if (iMatch != 0) //:: Door already has a match, teleport PC + { + //SendMessageToPC(oPC,"door has a match"); + string sTag = "area4_"+IntToString(iMatch); + object oArea = GetObjectByTag(sTag); + object oTarget = GetObjectByTag("wp4_"+IntToString(iMatch)+sExitDir); + location lTarget = GetLocation(oTarget); + float fFace = GetFacing(oPC); + AssignCommand(oPC,ActionJumpToLocation(lTarget)); + AssignCommand(oPC,SetFacing(fFace)); + iChosen = 1; + return; + } + + int iRand = Random(41)+1; //:: Random # for area selection + string sTag = "area4_"+IntToString(iRand); + object oArea = GetObjectByTag(sTag); + int iUsed = GetLocalInt(oArea,"ispop_"+sExitDir); + float fFace = GetFacing(oPC); + + int iRetryCount = 0; + // Extract current area ID before the while loop + string sCurrentAreaTag = GetTag(GetArea(OBJECT_SELF)); + int iCurrentAreaID = StringToInt(GetStringRight(sCurrentAreaTag, GetStringLength(sCurrentAreaTag) - 6)); + + while (iChosen == 0)//selecting new areas + { + iRand = Random(41)+1; + + // Skip if this is the current area + if (iRand == iCurrentAreaID) continue; + + sTag = "area4_"+IntToString(iRand); + oArea = GetObjectByTag(sTag); + iUsed = GetLocalInt(oArea,"ispop_"+sExitDir); + + if (iUsed == 0) + { + // SendMessageToPC(oPC,"unused area chosen"); + object oTarget = GetObjectByTag("wp4_"+IntToString(iRand)+sExitDir); + location lTarget = GetLocation(oTarget); + AssignCommand(oPC,ActionJumpToLocation(lTarget)); + AssignCommand(oPC,SetFacing(fFace)); + SetLocalInt(oArea,"ispop_"+sExitDir,1); + object oDoor = GetObjectByTag(sExitDir+"door"+IntToString(iRand)); + SetLocalInt(OBJECT_SELF,"match",iRand); + SetLocalInt(oDoor,"match",StringToInt(sID)); + iChosen = 1; + break; + } + + // Fallback: reset empty areas if we've tried too many times + iRetryCount++; + if (iRetryCount > 50) + { + int iResetCount = 0; + // Check each area before resetting + int i; + for (i = 1; i <= 41; i++) { + object oCheckArea = GetObjectByTag("area4_"+IntToString(i)); + if (GetIsObjectValid(oCheckArea)) { + // Check if all four directions are used + int bNorthUsed = GetLocalInt(oCheckArea, "ispop_n"); + int bSouthUsed = GetLocalInt(oCheckArea, "ispop_s"); + int bEastUsed = GetLocalInt(oCheckArea, "ispop_e"); + int bWestUsed = GetLocalInt(oCheckArea, "ispop_w"); + + // Only reset if all directions are used AND no players present + if (bNorthUsed && bSouthUsed && bEastUsed && bWestUsed) { + // Check if area has players (using same logic as area_onexit.nss) + object oCheck = GetFirstObjectInArea(oCheckArea); + int bHasPlayers = FALSE; + while (oCheck != OBJECT_INVALID) { + if (GetIsPC(oCheck)) { + bHasPlayers = TRUE; + break; + } + oCheck = GetNextObjectInArea(oCheckArea); + } + + // Only reset if no players present + if (!bHasPlayers) { + // Reset all four direction flags + SetLocalInt(oCheckArea, "ispop_n", 0); + SetLocalInt(oCheckArea, "ispop_s", 0); + SetLocalInt(oCheckArea, "ispop_e", 0); + SetLocalInt(oCheckArea, "ispop_w", 0); + iResetCount++; + } + } + } + } + WriteTimestampedLogEntry("door_click: Reset " + IntToString(iResetCount) + " fully exhausted areas"); + iRetryCount = 0; + } + } } \ No newline at end of file diff --git a/_module/nss/hif_modongui.nss b/_module/nss/hif_modongui.nss new file mode 100644 index 00000000..86135636 --- /dev/null +++ b/_module/nss/hif_modongui.nss @@ -0,0 +1,5 @@ +void main() +{ + ExecuteScript("prc_onplayergui", OBJECT_SELF); + ExecuteScript("mod_gui", OBJECT_SELF); +} \ No newline at end of file diff --git a/_module/nss/mod_gui.nss b/_module/nss/mod_gui.nss index c9b0b481..9469f469 100644 --- a/_module/nss/mod_gui.nss +++ b/_module/nss/mod_gui.nss @@ -1,4 +1,6 @@ #include "inc_examine" +#include "nw_inc_nui" +#include "prc_nui_consts" void main() { @@ -6,9 +8,17 @@ void main() int nType = GetLastGuiEventType(); object oTarget = GetLastGuiEventObject(); int nValue = GetLastGuiEventInteger(); - - ExecuteScript("prc_onplayergui", oPlayer); + if (nType == GUIEVENT_EFFECTICON_CLICK) + { + int windowId = NuiFindWindow(oPlayer, DURATION_NUI_WINDOW_ID); + if (!windowId) + { + SetScriptParam(NUI_DURATION_MANUALLY_OPENED_PARAM, "1"); + ExecuteScript("prc_nui_dur_view", oPlayer); + } + } + if (nType == GUIEVENT_DISABLED_PANEL_ATTEMPT_OPEN) { if (nValue == GUI_PANEL_EXAMINE_CREATURE || nValue == GUI_PANEL_EXAMINE_ITEM || diff --git a/_module/nss/nw_c2_default9.nss b/_module/nss/nw_c2_default9.nss new file mode 100644 index 00000000..8b193704 --- /dev/null +++ b/_module/nss/nw_c2_default9.nss @@ -0,0 +1,327 @@ +//::////////////////////////////////////////////////// +//:: NW_C2_DEFAULT9 +/* + * Default OnSpawn handler with XP1 revisions. + * This corresponds to and produces the same results + * as the default OnSpawn handler in the OC. + * + * This can be used to customize creature behavior in three main ways: + * + * - Uncomment the existing lines of code to activate certain + * common desired behaviors from the moment when the creature + * spawns in. + * + * - Uncomment the user-defined event signals to cause the + * creature to fire events that you can then handle with + * a custom OnUserDefined event handler script. + * + * - Add new code _at the end_ to alter the initial + * behavior in a more customized way. + */ +//::////////////////////////////////////////////////// +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 12/11/2002 +//::////////////////////////////////////////////////// +//:: Updated 2003-08-20 Georg Zoeller: Added check for variables to active spawn in conditions without changing the spawnscript + + +#include "x0_i0_anims" +// #include "x0_i0_walkway" - in x0_i0_anims +#include "x0_i0_treasure" + +#include "x2_inc_switches" + +void main() +{ + // ***** Spawn-In Conditions ***** // + + // * REMOVE COMMENTS (// ) before the "Set..." functions to activate + // * them. Do NOT touch lines commented out with // *, those are + // * real comments for information. + + // * This causes the creature to say a one-line greeting in their + // * conversation file upon perceiving the player. Put [NW_D2_GenCheck] + // * in the "Text Seen When" field of the greeting in the conversation + // * file. Don't attach any player responses. + // * + // SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION); + + // * Same as above, but for hostile creatures to make them say + // * a line before attacking. + // * + // SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION); + + // * This NPC will attack when its allies call for help + // * + // SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET); + + // * If the NPC has the Hide skill they will go into stealth mode + // * while doing WalkWayPoints(). + // * + // SetSpawnInCondition(NW_FLAG_STEALTH); + + //-------------------------------------------------------------------------- + // Enable stealth mode by setting a variable on the creature + // Great for ambushes + // See x2_inc_switches for more information about this + //-------------------------------------------------------------------------- + if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_STEALTH) == TRUE) + { + SetSpawnInCondition(NW_FLAG_STEALTH); + } + // * Same, but for Search mode + // * + // SetSpawnInCondition(NW_FLAG_SEARCH); + + //-------------------------------------------------------------------------- + // Make creature enter search mode after spawning by setting a variable + // Great for guards, etc + // See x2_inc_switches for more information about this + //-------------------------------------------------------------------------- + if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_SEARCH) == TRUE) + { + SetSpawnInCondition(NW_FLAG_SEARCH); + } + // * This will set the NPC to give a warning to non-enemies + // * before attacking. + // * NN -- no clue what this really does yet + // * + // SetSpawnInCondition(NW_FLAG_SET_WARNINGS); + + // * Separate the NPC's waypoints into day & night. + // * See comment on WalkWayPoints() for use. + // * + // SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING); + + // * If this is set, the NPC will appear using the "EffectAppear" + // * animation instead of fading in, *IF* SetListeningPatterns() + // * is called below. + // * + //SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION); + + // * This will cause an NPC to use common animations it possesses, + // * and use social ones to any other nearby friendly NPCs. + // * + // SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS); + + //-------------------------------------------------------------------------- + // Enable immobile ambient animations by setting a variable + // See x2_inc_switches for more information about this + //-------------------------------------------------------------------------- + if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_AMBIENT_IMMOBILE) == TRUE) + { + SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS); + } + // * Same as above, except NPC will wander randomly around the + // * area. + // * + // SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS); + + + //-------------------------------------------------------------------------- + // Enable mobile ambient animations by setting a variable + // See x2_inc_switches for more information about this + //-------------------------------------------------------------------------- + if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_AMBIENT) == TRUE) + { + SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS); + } + // **** Animation Conditions **** // + // * These are extra conditions you can put on creatures with ambient + // * animations. + + // * Civilized creatures interact with placeables in + // * their area that have the tag "NW_INTERACTIVE" + // * and "talk" to each other. + // * + // * Humanoid races are civilized by default, so only + // * set this flag for monster races that you want to + // * behave the same way. + // SetAnimationCondition(NW_ANIM_FLAG_IS_CIVILIZED); + + // * If this flag is set, this creature will constantly + // * be acting. Otherwise, creatures will only start + // * performing their ambient animations when they + // * first perceive a player, and they will stop when + // * the player moves away. + // SetAnimationCondition(NW_ANIM_FLAG_CONSTANT); + + // * Civilized creatures with this flag set will + // * randomly use a few voicechats. It's a good + // * idea to avoid putting this on multiple + // * creatures using the same voiceset. + // SetAnimationCondition(NW_ANIM_FLAG_CHATTER); + + // * Creatures with _immobile_ ambient animations + // * can have this flag set to make them mobile in a + // * close range. They will never leave their immediate + // * area, but will move around in it, frequently + // * returning to their starting point. + // * + // * Note that creatures spawned inside interior areas + // * that contain a waypoint with one of the tags + // * "NW_HOME", "NW_TAVERN", "NW_SHOP" will automatically + // * have this condition set. + // SetAnimationCondition(NW_ANIM_FLAG_IS_MOBILE_CLOSE_RANGE); + + + // **** Special Combat Tactics *****// + // * These are special flags that can be set on creatures to + // * make them follow certain specialized combat tactics. + // * NOTE: ONLY ONE OF THESE SHOULD BE SET ON A SINGLE CREATURE. + + // * Ranged attacker + // * Will attempt to stay at ranged distance from their + // * target. + // SetCombatCondition(X0_COMBAT_FLAG_RANGED); + + // * Defensive attacker + // * Will use defensive combat feats and parry + // SetCombatCondition(X0_COMBAT_FLAG_DEFENSIVE); + + // * Ambusher + // * Will go stealthy/invisible and attack, then + // * run away and try to go stealthy again before + // * attacking anew. + // SetCombatCondition(X0_COMBAT_FLAG_AMBUSHER); + + // * Cowardly + // * Cowardly creatures will attempt to flee + // * attackers. + // SetCombatCondition(X0_COMBAT_FLAG_COWARDLY); + + + // **** Escape Commands ***** // + // * NOTE: ONLY ONE OF THE FOLLOWING SHOULD EVER BE SET AT ONE TIME. + // * NOTE2: Not clear that these actually work. -- NN + + // * Flee to a way point and return a short time later. + // * + // SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN); + + // * Flee to a way point and do not return. + // * + // SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE); + + // * Teleport to safety and do not return. + // * + // SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE); + + // * Teleport to safety and return a short time later. + // * + // SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN); + + + + // ***** CUSTOM USER DEFINED EVENTS ***** / + + + /* + If you uncomment any of these conditions, the creature will fire + a specific user-defined event number on each event. That will then + allow you to write custom code in the "OnUserDefinedEvent" handler + script to go on top of the default NPC behaviors for that event. + + Example: I want to add some custom behavior to my NPC when they + are damaged. I uncomment the "NW_FLAG_DAMAGED_EVENT", then create + a new user-defined script that has something like this in it: + + if (GetUserDefinedEventNumber() == 1006) { + // Custom code for my NPC to execute when it's damaged + } + + These user-defined events are in the range 1001-1007. + */ + + // * Fire User Defined Event 1001 in the OnHeartbeat + // * + // SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); + + // * Fire User Defined Event 1002 + // * + // SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); + + // * Fire User Defined Event 1005 + // * + // SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); + + // * Fire User Defined Event 1006 + // * + SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); + + // * Fire User Defined Event 1008 + // * + // SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); + + // * Fire User Defined Event 1003 + // * + // SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); + + // * Fire User Defined Event 1004 + // * + // SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); + + + + // ***** DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) ***** // + + // * Goes through and sets up which shouts the NPC will listen to. + // * + SetListeningPatterns(); + + // * Walk among a set of waypoints. + // * 1. Find waypoints with the tag "WP_" + NPC TAG + "_##" and walk + // * among them in order. + // * 2. If the tag of the Way Point is "POST_" + NPC TAG, stay there + // * and return to it after combat. + // + // * Optional Parameters: + // * void WalkWayPoints(int nRun = FALSE, float fPause = 1.0) + // + // * If "NW_FLAG_DAY_NIGHT_POSTING" is set above, you can also + // * create waypoints with the tags "WN_" + NPC Tag + "_##" + // * and those will be walked at night. (The standard waypoints + // * will be walked during the day.) + // * The night "posting" waypoint tag is simply "NIGHT_" + NPC tag. + WalkWayPoints(); + + //* Create a small amount of treasure on the creature + if ((GetLocalInt(GetModule(), "X2_L_NOTREASURE") == FALSE) && + (GetLocalInt(OBJECT_SELF, "X2_L_NOTREASURE") == FALSE) ) + { + CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, OBJECT_SELF); + } + + + // ***** ADD ANY SPECIAL ON-SPAWN CODE HERE ***** // + + // * If Incorporeal, apply changes + if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) == TRUE) + { + effect eConceal = EffectConcealment(50, MISS_CHANCE_TYPE_NORMAL); + eConceal = ExtraordinaryEffect(eConceal); + effect eGhost = EffectCutsceneGhost(); + eGhost = ExtraordinaryEffect(eGhost); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eConceal, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, OBJECT_SELF); + + } + + // * Give the create a random name. + // * If you create a script named x3_name_gen in your module, you can + // * set the value of the variable X3_S_RANDOM_NAME on OBJECT_SELF inside + // * the script to override the creature's default name. + if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_RANDOMIZE_NAME) == TRUE) + { + ExecuteScript("x3_name_gen",OBJECT_SELF); + string sName = GetLocalString(OBJECT_SELF,"X3_S_RANDOM_NAME"); + if ( sName == "" ) + { + sName = RandomName(); + } + SetName(OBJECT_SELF,sName); + } + + ExecuteScript("prc_pwonspawn", OBJECT_SELF); +} diff --git a/_module/nss/prc_pwonspawn.nss b/_module/nss/prc_pwonspawn.nss index f1cd5622..5718fb05 100644 --- a/_module/nss/prc_pwonspawn.nss +++ b/_module/nss/prc_pwonspawn.nss @@ -2,9 +2,10 @@ void main() { + ms_Nomenclature(OBJECT_SELF); + ExecuteScript("ss_treasure",OBJECT_SELF); - DelayCommand(0.3,ExecuteScript("ss_treas_auto_on",OBJECT_SELF)); - - ms_Nomenclature(OBJECT_SELF); + DelayCommand(0.5,ExecuteScript("ss_treas_auto_on",OBJECT_SELF)); + } \ No newline at end of file diff --git a/_module/nss/ss_treasure_spwn.nss b/_module/nss/ss_treasure_spwn.nss index 6835645a..46e73bbe 100644 --- a/_module/nss/ss_treasure_spwn.nss +++ b/_module/nss/ss_treasure_spwn.nss @@ -299,7 +299,7 @@ void main() ExecuteScript("ss_treasure",OBJECT_SELF); -DelayCommand(0.3,ExecuteScript("ss_treas_auto_on",OBJECT_SELF)); +DelayCommand(0.5,ExecuteScript("ss_treas_auto_on",OBJECT_SELF)); // ***** ADD ANY SPECIAL ON-SPAWN CODE HERE ***** // diff --git a/_module/utc/1_und_5b.utc.json b/_module/utc/1_und_5b.utc.json index 4bd43be2..87801ff7 100644 --- a/_module/utc/1_und_5b.utc.json +++ b/_module/utc/1_und_5b.utc.json @@ -669,7 +669,7 @@ "__struct_id": 0, "Name": { "type": "cexostring", - "value": "SET_NAMEs" + "value": "SET_NAME" }, "Type": { "type": "dword",