From 93df875f3531c08ce9d019508f982eaa89b707c6 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Tue, 5 Dec 2023 08:04:09 +0100 Subject: [PATCH] Removed Companions guild scripts --- _build/Used Skyrim scripts.txt | 5 - scripts/companionshousekeepingscript.pex | Bin 30076 -> 0 bytes scripts/companionsradiantquest.pex | Bin 2537 -> 0 bytes scripts/companionsstoryquest.pex | Bin 1312 -> 0 bytes scripts/cr04questscript.pex | Bin 1157 -> 0 bytes scripts/crimeguardsscript.pex | Bin 4625 -> 4084 bytes scripts/favordialoguescript.pex | Bin 6076 -> 5148 bytes scripts/playerwerewolfchangescript.pex | Bin 13291 -> 0 bytes scripts/werewolfchangeeffectscript.pex | Bin 1161 -> 731 bytes scripts/werewolftransformvisual.pex | Bin 2692 -> 2222 bytes .../scripts/companionshousekeepingscript.psc | 1231 ----------------- source/scripts/companionsradiantquest.psc | 82 -- source/scripts/companionsstoryquest.psc | 43 - source/scripts/cr04questscript.psc | 23 - source/scripts/crimeguardsscript.psc | 14 - source/scripts/favordialoguescript.psc | 25 +- source/scripts/playerwerewolfchangescript.psc | 478 ------- source/scripts/werewolfchangeeffectscript.psc | 33 - source/scripts/werewolftransformvisual.psc | 23 +- 19 files changed, 7 insertions(+), 1950 deletions(-) delete mode 100644 scripts/companionshousekeepingscript.pex delete mode 100644 scripts/companionsradiantquest.pex delete mode 100644 scripts/companionsstoryquest.pex delete mode 100644 scripts/cr04questscript.pex delete mode 100644 scripts/playerwerewolfchangescript.pex delete mode 100644 source/scripts/companionshousekeepingscript.psc delete mode 100644 source/scripts/companionsradiantquest.psc delete mode 100644 source/scripts/companionsstoryquest.psc delete mode 100644 source/scripts/cr04questscript.psc delete mode 100644 source/scripts/playerwerewolfchangescript.psc diff --git a/_build/Used Skyrim scripts.txt b/_build/Used Skyrim scripts.txt index d6d3d2de..cd38ac4e 100644 --- a/_build/Used Skyrim scripts.txt +++ b/_build/Used Skyrim scripts.txt @@ -12,10 +12,6 @@ boundboweffectscript.* briarheartingredientscript.* carryactorscript.* carryfurniturescript.* -companionshousekeepingscript.* -companionsradiantquest.* -companionsstoryquest.* -cr04questscript.* craftingactivatelinker.* crimeguardsscript.* critterspawn01.* @@ -137,7 +133,6 @@ playerbookshelfcontainerscript.* playerbookshelftriggerscript.* playerpotionrackclicktriggerscript.* playerpotionracktriggerscript.* -playerwerewolfchangescript.* pressureplate.* pressurereleaseplate.* reanimateashpile.* diff --git a/scripts/companionshousekeepingscript.pex b/scripts/companionshousekeepingscript.pex deleted file mode 100644 index 62fe46e0c50d4fcf8a7052ff1a3c39dcde3abe65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30076 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 X0Dhnkub@==pDqW6&6JKQyU6`EPL+{k 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 JkHbt>{||XV#xVc@ diff --git a/scripts/favordialoguescript.pex b/scripts/favordialoguescript.pex index 099afedf12d77b42a9825be344bbf4caa0a63ca9..3cd7b1b4045de983a9286150ad359dc7d5264a81 100644 GIT binary patch literal 5148 zcmai1cYhPf8GcrlTx46g0mcy6Tna}*I4o0jl*qV*+`$ROyj^sV0U9r2e&pFCn zNTFP)`9S$I`4agc`76)NY?DoX(ID^J<}J^>^RD>M%0K?ylY;?%g!`{~>|U_eJ%7%z znqH$LmTSJ#4v(~h8jAC_?REU1(=<^MF@0piaZUUk<8`^sjHIkqia4Awl? zc0$KK(TxMS*F#w%PW*w(vto1ZF1?wz;}#sx-|wPfS!Qi&jg_S)0L< z70~AXy5*zPXnLzwlcZy0(iDl4*VL62TTW2(R=*at5IgCuEktcim6$kU%~493 z%9wxZH6x!)rQO(K#}?n%zo-tz3_a5pEV$*k!VDz3@_++O#7JjLLp8N9>z;4cHCpDU zEe)`sNQ(Kb+Uu5E6UvR*vKp=vc5HD7gPCK(NSd%N19=G!hP!IU$ktQASe#yZvan{Y zK$uY`JZhCjn(z^G!SkuLOeZi`X=5nUnYy#P0}-0Mks7#~Z`H#v4V&hTnKZ-} zOyZ)q;c*BfasF}tVJO@8m{PY);)#ziEnf;f5HF_bMb&N^_B|iBI&!Yf{zT7rYsYt^c zyx5U$Iws07F%uKV(8J7P?s!a`Kz`QqnkdGVS4psJqe@HK*?I_5|u})bEN7{W2X^_9cN!o@+&6?Tjs$wy_zLot%==f?9d?lqAu9TyaX`- zN97rF0x+?G!@SAT|5=ol`B;`SVP1`dgWc!ni?HMK%`MNX7F~@%pO$XOGO>=R1mSXm zaQQfflD-zQyVxnIz>cr-$(T456G^X5AB_V{PbXA4`fc>jHT3frje(r}tt5$_n8*Wr za8#`_%9x4PF{JA_PT*u_ox&;QqX10ctXk)B9>0!O6|=aIS#y}fqT0|49KtY#t0f>%k5&Wea_~Tz5``ijW|j}Vq@Mv` z5*uoLgLG|T6W?+@;(D4{-$AY%9b(Ync76tazz~K>$X}&9P~um8Mq*+VV_Gs!=%g8T z#;RShWOqzV#;QFrF{M@c^WSmv-q>y*ex#l5kL?b`gc%b%@MDrH$v%wW6EZ)MoBFUH zKc%CeX=VyPPtA7nw30n0K4qB5!9E;HH3#sEl$pdY>Fu!gwhO-^b3`+H@mb33X2XqP zT5CqxcZu0J8*m4kkDoqv=JC{ZiO~)Aah~m{@{nhClD*iE)2QHciqFu`SxU~4mkn9v zS2p9Gl7Z7S-pfZ0bNsu8Az1?Q-ufDg*fY1O$LF8_}#bkMKjCPH=&HtyA|vrZbV?O5bT=- z`xg1z1o{rYcM0}A{0{f|JjgINH0U>S_&phB(hd3z83YOFD;o3_oiRbbsq`B3n+8@? zP8#$T1-jfZPK6F7L1#oplc3+CiUK|;yQNjPJ_fqZf>A7HYv8sDx;=+g=40TF(vBLq zOG~l@@van2Y~PS|$9(P?*vB9>nCX{gg`O6(UsRdw;42JvpDYWxFD=r3QMu4U_6sd!sacDU^-I(>J?xsgJX(20 z8|)9Z7DYYGe9gd@QKNx}=TJ}S*BL42@Rkc+$p6WI*|4-B*v%YY$i*5lELE#c+x4gX3?F`HDiX+!}Zl(mUhch9zC$A3_9 z9!fS}Fu19Jg24zK0}sax_@t!HCTzYWdZbQCG)fE=P{IMi2mej!v;rABn--aGw`Ji; zN7&{3vT>d_3bGp2c4b@aCv)E*N;K)X$W?`os5O1%H)=>5nnR z2H|TU$)3)bc>&L(tY7fxUsCdl{3ydb*I7T$;RiC?QhTnVB;)1<4}^#FLW9O}^HS-V zCujUiDkK}t_!rugJ6QS)9ZHTHMr1TOZeCGE0UwmT(yCV<8#g)&M)@1Fjc0Cri8J^0 znhMWqx0K(9*HQUzSpHj<|Bjvip5G6=4HHb|wT9ufdeyz&2E*%a7~W_Y-Xt)*&A{;1 zz?%#VZxjr22lJ11ba&hTeNVlM+{yRU2LtbT0w1I(ojdO%3psaa@qUZN$L0>R=^lyy E1x$1Jng9R* literal 6076 zcmb7H*Ieee2#^cR6*cy8Yi%|Nc*F3oP)bxcN*w zw$3`MelYDi6@R&|7K?#fi=L~6MYJ!~-AXA$@4~^8lXHucC+6Rn&gbz@JoJDSjJ9b` zMT?OWDRj>Hk#EFJM^zBkosvS|L=dPjO6R%Bz+F=4n)f2N>Xu|3RnA(4f!tL!=awUM z7k#hfMy~HU6|}ForIPZHJ62~LJYTMRMKOi8vmZhvrBPj z7%CKW{DW$J%@0cNtU3WY&YB6j3WceKk#ViuQuM1e$CJ>3!{uJ|uFkl*P*|)fRa{v- z>sBg<>Xk^l_bpfaC8xr0uCr88*jgw|&t+ZdYE4|Omz5_%m7t*Yx!H>EMA(s;69Cd2 zTMC8QiW5aDm{t{MecD+M_0nzGnk=KX3`(~IctNc>akCGlK^l~7e9o^JG`gy8SoD|9 zsA7a+>Yb{ROh=uNh$by$c^ab7JJV13VT??naA+|j_MNon;& zY1LtkdhOHLmNnL#6MfA9VIawt>@J2AP2+}Q;ycSQ{VG-_)$zBn6g#c*X$&QSv*OSj zw{NxuJ&k0?4t*#jnS_y9o-EC#Xwd>+(4V~5^ZuUF?)nd{jwdcD0?bB zowh!gpTQE!F<>PT+77dP zbkvSJ!Lo{wn<#SMu&GdpRJArbiuT1QknQL!6vXo+ue8KCmP+HP^g=4_McbtB^RA6U z?L#X!Af4_{r56)vYy|zqU}W52u3r0df>4R?*!62HHYZDPzY}o$nD6Q=b5HmY4ay@EH41n+zor zgeAtztJZGVvA#tWW!03>IUg?6Jx>tqX*_D^o%f1?sxptf#$=jspDzV;@=g!dwWZsf z^-x|GXxD@e`Kl|GCWrjgO|*6qWIDbS?9;|r%LEyKbnnlvzhKP|89AS+45aRBnFpCF5jCGF3R^}kMB*YW!KX) z{Y86t@?Y)P#E(%6E%JpcLTe(l0o$=xkNwz>7voVtHeSLH@p8j>1+VBBIbax5ddy%3 zv+_e;9xUo{9LI4Y9w(8FQ%J^XnDHiLyp4C@V5wmgAwzoU0G`Jg zJjQ8}o2s0!N5$wX1hH({Uh_Msch8ud^L^f{W z7H)HV%<*Z%_zW^y&}E@pmh-2(fFATxkpG7ap%49{1qLu^gdsd+gkd`BpUv39C--!# z5!zn8#QCcDP1omrm5_p`|^{2+7NjAuA`)~wlz=Q7K7ZfY9(VemzZym9NpC@o`VVq=_e z#1#zV1zPqR%MkWu0d|nvX|zX4@<)<2JIVAxykyo4km`?<>ip@zW90c3ylN&-&|f&v zf!EAR*|rHxGWisyN&nYK|1FrK<^bpOB>h3WLE^uG!<3KUD2~y0f$V?2&%zWJKg>r9 zj`Qz!3nwg`v@j#*vV|IbK6hF;MJ`yF?X~a(AN2c?h0_-1w0*0EA5*45rdA8yY^Q8o zxq{xaCe>S#N@shUiUTxJ!3T8*jOjoNe)1hvFv~lvHZIP}SycSg!mx#TT}3|y{>x!Y ztm!djI!QaMiy4h_DN`18(MDaea4_ycvBJZgGTLELwWc12Vvn-%IJCiIIjKgsxoSYDw>xMRd|cXDmFH?2kc) z$jvc;j+x`iv)bdBq>xe;EF7b@q9q*T;%WjJP+F$@SG|3Tnm22$$b@_)4|g-ux`%4x}n2q z3+J_+1x4IU3diN*e$O(!=3S=+u5wk}+YVY^P)ZVw=LY_ zl&Ibo)$sib8pE-kk1gzEl3(dC`c`Pu%3J&(Op}}NnfI@=?P%5BALYckd6!J;W&-Ut z%7$ZB*60~EkC|?h2VY(spK!`XJ`s1cEKdG%Uln&Gki0dTLzqo# q-r#%u&&X@|tN8N*$KMDa&n;E0MCb1o-il8#Sl{QgQ~Qqw?f(ET%h{;_ diff --git a/scripts/playerwerewolfchangescript.pex b/scripts/playerwerewolfchangescript.pex deleted file mode 100644 index 2229f406b183687ae713e9eb79524d4c2846db5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13291 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 F_WwS9JZ}I1 diff --git a/scripts/werewolfchangeeffectscript.pex b/scripts/werewolfchangeeffectscript.pex index 3fbfdcbe3f7f76c8d3e98400d52756b19af8f3c9..d651612661915e7c0c50638cdf5440b73a1c2eb7 100644 GIT binary patch delta 363 zcmYjLJ5Iwu6r8tq2rA&_i|b;>Q6a)YO-G8 zFjSySwgINKzy--ROQ8kq$Ywpfk=fl!1RZ!5bGS!nUE5@h+F|XZ+su6gBtue8Bqa_6 zhiq+JSI`sqk>Kbb3zu5!Xg29%fQVONh+}J`e8EuA=eH3z*_tVmMjzm0lWbn0p!WxI C=r8&J literal 1161 zcmZ`&*-{fh6g`~{0tt&Ovcxcm5cdL?2lHYX1d38|iGpv|Fu6%alkV8lf%3r*@QZx) zOZ*TYEN^#bEUnVq%H-Vr+&ecvPQHE5W+1?yXhA+i^@KE?t6qDz8_Evtwc8Y#W~AeR zxjjfC6i$b6ua%(u>dA5ApxJnH`1JA44sK!P|A}0C{D4f;goaQ&P)2!JelAD#O{fhD z-MG~viOERGR%~J=!yaZIMJ7I@XJIFfd@yRB4z&Vu?1Hw^f$36kKB68(jysm?^%uSH z6X}%N%ONG^-C3xS|7anK_4@AiwzEvt>&N?Vn*-|gd_-a)##1Ba{!t5APDk!YNy3Bu zp=7Q~GMCT<$$4y|E+wqRNuW;O^Bx1E98oSE#qF3UNZd}wC7t_~6q-iIvSW$aqQ^{i zLdiYZ^6p$hy*9?`b+49`Y)~hbUaS30K$972Y5P+U4Yel8q+Gkg>ri*dAkVv18in03 zF{Eu-L;b;a3U-idDAh~V`K}ikNU1lPM^n>@8VLF?1Zp zP{K3^jFcib{jE&0)iTOr78iV`z#Qh;xWK0DMS(>Del9rHWq~F3v%dU?l{wC1#b?{6 zSm7|_IN!Ad`&Uun*(%Jw%Fi_fSjS~-@Qj;`xA<$@&2ZJ4z*T{&Yd0;hCa}sXlUTE+ z(v-l4z+^?>nnRoH*|eT9=C+l`$bTvIZ~2nfM-zxV6P>s5f`_;vP~+g95~6y5S2W3J&+AWck2AWbQELQzOk3>e%tBnwi=TbE*uL5)44(ij$xeeGBE zsh`mg=~MTNB%3A+Gz)X)T=wj<=Scsa{`F5f1q*zH{QFN#or*wQ`OU`rz>#6Y4_YT) z*mjx=7hxU6J=gWyLD+7V(JvBv;mVU`9Af+`E>%hCr70zJVPB|YBZ0!;Te&U0mZLmh?p+G0Fw)^rYaEKY2ty~hM(*5mT_Mq1_oeIUY^RB#?YiLQcFk>yI}$S<;~2H=Q|fa3$&=L&+d<0@ zA{0lP7-lqX|H!Ee6Uqd%bfhYTTWR{fds6*iBBe+fVcN%|JD65hcTL5eIV(|4>E<~Y z_>3(kZ*LR#ZG=G2cJz}CKSyE^2b6M&^$-j7$q7tQr_Y8C=`!G%fA#J9mpN4z>{Z~tF|S_ z(U)a)?x=DgR6CF%H=?XLaMsR*L1G+tRUZ3Uei<8$ecPJg>ya~^Yy2~ zy-sLe(L<-zA-Ito{yjGTFF<(ZsrtFl3V2~Ty3DfjjUeHLsCx}hxUnP!DXt<-iu?>n zH?m8YeTOm;V;nBp;UWRQJ!(u(xz{&Q^H z#C7iv@R0P&{GFx%Gi?6}!?T2#j6-hhQ^R?!@zrKL|#VnqM97@uKi z+`@Mj7A!o`-V~iFEYi7T%4W@N^;wv+FdKo<8Y~*v=>)Tv`HLpsfLP2R`cn)23@n?# zGjk@L!xrW(m@Qa8ul?CLTT=o{R=QXjmYC8kQD-9N(Jv=z6>F@HA8XRWIx=0gQbw)k z)T)3DaNenqO=VtCC9T>P)qBbPE4(&De=w(Rn2sX>HY{wKEjzbqN1fBM$=ueFA}PO! z`rPi4PScr1R!h7^FTpBC;+MLF5^qHk@0beXWOF5EzcQE;7IrP{#aF`6D;s^a&XrRkKk20=5>zrdju6q^pIW2uUt< TrCIQEmj^f(>x|R;=7#q_ZePEC literal 2692 zcmaJ>>sAw27~MmzKmY-Of>=|v(poPhKuBU$NHCPDpa}$fU*qH?OigCu%mkK?&?oBO zK1m;>Kf1clIhjOUg?vlg-~BuLJ7@km{_F3^2n_IN%{g1Rb}T$`=C+%Mp6U2a*Xz`6 zzh|}|bbSl)w>`Vv@G((+UN7y|N=JJyb}||KiiHcZST(sTf?8k(0;9Wb;A%K=;5=(K zg(W>+fGY>iwqtk9z;>Nyr@{$vbFJva-EWB*^bs$&JW;;pyxTVzerm>&*Oy+ z+nMibZqMW7Q+h5>H2Iz!8pcguUG06dBV?aIbh?{}mRz?Ts(HkCm$~;uO$6%v@k7&V zi69IpAgL2Gs{@o7pe&Md8kHEvtqr{Eh|1SI&^Hj-<3kGra|5)ArLKBBXZkdH;`p|3r+RQUfFMJ1s#Z1W{lT(*v2sEaoWlSfG4H zkcX9Ok+k{W^q-6xzHt#qkc)AXk6D#u;?O-sCEgmu*B%T zlESs2GKb}%as}5}y&pD9N)|$8p4`lY$~1xGErK+@(5(&J#4Q?c(-c`S@TGw})YK*> z46M*k>sKFH$;d78I`|n&3}ex>?gIMnD$Z}Q&wX%e@SN1I)6FOv z>tW61MFYDAzGE8|&%nIy%0Qw#1M|`|&cYexQMB{)(;TBcx*ta zVE$uikM*PF>|o0G!&*_MsMHvfH}nzJ-w6gkF)+4l;JHFuG;AB#;?8%7Xn&zlj`p%- zjBRs-VbdrB%LX>Dhk<2Xo&8_3ZhtgGHP;?Qhr1k6yWHm{lQ_UDyykwY+*ytLlRG`+ zZjY$fag0fpe4~zZAgjp}at#LtUMrQORf#qKL{&~$m7Xz9UehH0Fk~b`V+=8a&O=&R s>_@feBbmZQAL>Q_q%xF|%*`{pu4;0pKO6X^|3c`hv%>kSo7Knt5AoO|=Kufz diff --git a/source/scripts/companionshousekeepingscript.psc b/source/scripts/companionshousekeepingscript.psc deleted file mode 100644 index ede8f197..00000000 --- a/source/scripts/companionshousekeepingscript.psc +++ /dev/null @@ -1,1231 +0,0 @@ -Scriptname CompanionsHousekeepingScript extends Quest Conditional - -Faction property CompanionsFaction auto - -MiscObject property GoldReward auto -int property GoldRewardMinorAmount auto -int property GoldRewardModerateAmount auto -int property GoldRewardMajorAmount auto - -; for introductory loop -bool property PlayerWalkedAwayDuringKVScene auto conditional -bool property PlayerWalkedAwayDuringSAScene auto conditional -bool property PlayerIgnoredVilkasOutside auto conditional -bool property PlayerMetKodlak auto conditional -bool property PlayerMetVilkas auto conditional -bool property PlayerMetEorlund auto conditional -bool property PlayerMetAela auto conditional -bool property PlayerMetSkjor auto conditional -bool property PlayerMetFarkas auto conditional -bool property FarkasLastSceneStarted auto conditional -bool property AelaShouldForceGreet auto conditional -bool property EorlundShouldForceGreet auto conditional -bool property FarkasSceneGo auto conditional -Quest property TrainingQuest auto -ReferenceAlias property VilkasSword auto -ReferenceAlias property VilkasQuestSword auto -bool property VilkasHasHisSwordBack auto conditional -bool Property PlayerMetCompanionsAtGiant auto conditional -bool Property PlayerHelpedCompanionsAtGiant auto conditional - -; got reward for full joining -bool Property GotWeaponReward auto conditional -bool Property EorlundToldAboutSkyforge auto conditional - -; the person following you (mostly for dialogue conditions) -ReferenceAlias Property CurrentFollower auto - -; so we can wrangle your followers -DialogueFollowerScript Property FollowerScript auto -GlobalVariable Property PlayerFollowerCount auto -DarkBrotherhood Property DBScript auto -Actor Property CiceroFollower auto -Actor Property DBInitiateFollower1 auto -Actor Property DBInitiateFollower2 auto - -; the circle (tm) + kodlak (collect all five) -ReferenceAlias property Skjor auto -ReferenceAlias property Aela auto -ReferenceAlias property Farkas auto -ReferenceAlias property Vilkas auto -ReferenceAlias property Kodlak auto - -; other jerks -ReferenceAlias Property Athis auto -ReferenceAlias Property Njada auto -ReferenceAlias Property Ria auto -ReferenceAlias Property Torvar auto - -; not technically a companion, but he's still cool -ReferenceAlias Property Eorlund auto - -; the faction for trainers to get put into when the player joins -Faction Property TrainerFaction auto - -; that guy (or gal) who follows you -ReferenceAlias property TrialObserver auto - -; the weapon that we'll give to Vilkas -Weapon property VilkasWeapon auto - -; setting up Eorlund to sell you Companions gear -LeveledItem Property CompanionsArmor auto -LeveledItem Property SkyforgeSteelWeapons auto -ObjectReference Property EorlundVendorChest auto -GlobalVariable Property GearChance auto - -; naughty naughty -bool property PlayerThievingAndNotPaying auto conditional -int property PlayerThievingThreshold auto conditional - -; to shut them up when there are more important things going on -ReferenceAlias Property GenericDialogueSuppressor1 auto -ReferenceAlias Property GenericDialogueSuppressor2 auto -ReferenceAlias Property GenericDialogueSuppressor3 auto -ReferenceAlias Property GenericDialogueSuppressor4 auto - -; track whether the player currently has werewolf ability -bool Property PlayerHasBeastBlood = false auto conditional -GlobalVariable Property PlayerIsWerewolf auto - ; gets set true when you join (so we can still debug the werewolf transform) - bool Property PlayerIsWerewolfVirgin = false auto conditional - -; so Skjor can let you in to the Underforge before you're a werewolf -bool Property TempUnderforgeAccess = false auto conditional - -Quest Property WerewolfChangeTrackingQuest auto -Spell Property WerewolfImmunity auto -Spell Property BeastForm auto -; FIX FOR 81462 -Spell Property HircinesRingPower auto -; END FIX FOR 81462 - -Race Property PlayerOriginalRace auto - -Race Property ArgonianRace auto -Race Property ArgonianRaceVampire auto -Race Property BretonRace auto -Race Property BretonRaceVampire auto -Race Property DarkElfRace auto -Race Property DarkElfRaceVampire auto -Race Property HighElfRace auto -Race Property HighElfRaceVampire auto -Race Property ImperialRace auto -Race Property ImperialRaceVampire auto -Race Property KhajiitRace auto -Race Property KhajiitRaceVampire auto -Race Property NordRace auto -Race Property NordRaceVampire auto -Race Property OrcRace auto -Race Property OrcRaceVampire auto -Race Property RedguardRace auto -Race Property RedguardRaceVampire auto -Race Property WoodElfRace auto -Race Property WoodElfRaceVampire auto - -Shout Property CurrentHowl auto -WordOfPower Property CurrentHowlWord1 auto -WordOfPower Property CurrentHowlWord2 auto -WordOfPower Property CurrentHowlWord3 auto - -;;; quest tracking from here down ;;; -int property RadiantQuestsDone auto conditional -int property RadiantQuestsDoneInCurrentSegment auto conditional -ReferenceAlias property RadiantQuestgiver auto -Faction Property CurrentFollowerFaction auto - -int Property C04MinLevel auto ; because there are Hagravens involved - -CompanionsRadiantQuest Property AelaCurrentQuest auto -CompanionsRadiantQuest Property VilkasCurrentQuest auto -CompanionsRadiantQuest Property FarkasCurrentQuest auto -CompanionsRadiantQuest Property SkjorCurrentQuest auto - -CompanionsRadiantQuest Property AelaNextQuest auto -CompanionsRadiantQuest Property VilkasNextQuest auto -CompanionsRadiantQuest Property FarkasNextQuest auto -CompanionsRadiantQuest Property SkjorNextQuest auto - -Keyword property AelaRadiantKeyword auto -Keyword property SkjorRadiantKeyword auto -Keyword property VilkasRadiantKeyword auto -Keyword property FarkasRadiantKeyword auto -Keyword property ReconRadiantKeyword auto - -bool property RadiantAelaBlock auto conditional -bool property RadiantSkjorBlock auto conditional -bool property RadiantFarkasBlock auto conditional -bool property RadiantVilkasBlock auto conditional - -Quest Property RadiantMiscObjQuest auto -bool property StoryQuestIsRunning auto conditional -bool property RadiantQuestAccepted auto conditional -bool property RadiantQuestFinished auto conditional -bool property IsCurrentSilverHandTarget auto conditional -int property LastRadiantQuestDoneIndex auto conditional - -bool property AelaInReconMode auto conditional -bool property DoneReconQuestForAela auto conditional -ObjectReference property QuestgiverStandMarker auto conditional - -int property RadiantQuestsUntilC01 auto -int property RadiantQuestsUntilC03 auto -int property RadiantQuestsUntilC04 auto - -CompanionsStoryQuest property C01 auto -CompanionsStoryQuest property C02 auto -CompanionsStoryQuest property C03 auto -CompanionsStoryQuest property C04 auto -CompanionsStoryQuest property C05 auto -CompanionsStoryQuest property C06 auto - -; CR12 persistent tracking -int Property TotemsFound auto conditional -bool Property AelaIsConfused auto conditional - -; CR13 persistent tracking -bool Property VilkasHasBeastBlood auto conditional -bool Property FarkasHasBeastBlood auto conditional - -;; Radiant Quests -; grunt work -CompanionsRadiantQuest property CR01 auto ; a beast loose in someone's house -CompanionsRadiantQuest property CR02 auto ; beasts in a den near town harassing people -CompanionsRadiantQuest property CR03 auto ; collect pelts -CompanionsRadiantQuest property CR04 auto ; intimidation missions -CompanionsRadiantQuest property CR05 auto ; clear a dungeon -CompanionsRadiantQuest property CR06 auto ; family heirloom -; "real" quests -CompanionsRadiantQuest property CR07 auto ; capture criminals -CompanionsRadiantQuest property CR08 auto ; rescue people -; silver hand quests with Aela -CompanionsRadiantQuest property CR09 auto ; assasinate lieutenants -CompanionsRadiantQuest property CR10 auto ; steal plans -CompanionsRadiantQuest property CR11 auto ; retrieve pieces of blade -CompanionsRadiantQuest property CR12 auto ; wipe out camps -; leader work -CompanionsRadiantQuest property CR13 auto ; curing vilkas/farkas -CompanionsRadiantQuest property CR14 auto ; let a newbie in - -CompanionsStoryQuest property CurrentStoryQuest auto - -int property FavoriteQuestgiver auto conditional - ; 0 --> None (default behavior defined in quest) - ; 1 --> Aela - ; 3 --> Vilkas - ; 2 --> Farkas - ; 4 --> Skjor -bool Property AelaIsObserver auto conditional -bool Property FarkasIsObserver auto conditional -int property AelaQuests auto -int property FarkasQuests auto -int property VilkasQuests auto -int property SkjorQuests auto - -;; location tracking for reservations -LocationAlias Property DustmansCairn auto -LocationAlias Property GallowsRock auto -LocationAlias Property YsgramorsTomb auto - - -; Quest Designer needs arrays badly. Quest Designer is about to die. -CompanionsRadiantQuest Function GetRadiantQuestFromIndex(int questIndex) - if (questIndex == 1) - return CR01 - elseif (questIndex == 2) - return CR02 - elseif (questIndex == 3) - return CR03 - elseif (questIndex == 4) - return CR04 - elseif (questIndex == 5) - return CR05 - elseif (questIndex == 6) - return CR06 - elseif (questIndex == 7) - return CR07 - elseif (questIndex == 8) - return CR08 - elseif (questIndex == 9) - return CR09 - elseif (questIndex == 10) - return CR10 - elseif (questIndex == 11) - return CR11 - elseif (questIndex == 12) - return CR12 - elseif (questIndex == 13) - return CR13 - elseif (questIndex == 14) - return CR14 - else - return None - endif -EndFunction - -int Function GetIndexFromRadiantQuest(Quest rQuest) - if (rQuest == CR01) - return 1 - elseif (rQuest == CR02) - return 2 - elseif (rQuest == CR03) - return 3 - elseif (rQuest == CR04) - return 4 - elseif (rQuest == CR05) - return 5 - elseif (rQuest == CR06) - return 6 - elseif (rQuest == CR07) - return 7 - elseif (rQuest == CR08) - return 8 - elseif (rQuest == CR09) - return 9 - elseif (rQuest == CR10) - return 10 - elseif (rQuest == CR11) - return 11 - elseif (rQuest == CR12) - return 12 - elseif (rQuest == CR13) - return 13 - elseif (rQuest == CR14) - return 14 - else - return 0 - endif -EndFunction - - -Function OnInit() - ; PlayerJoin() ; for debugging, usually commented out -EndFunction - -Function SetUpCompanions() -; Debug.Trace("C00: Waiting to set up Companions.") - Utility.Wait(60) ; giving other quests the chance to finish their reservations - ; (very conservative time buffer, but chargen takes a while, - ; so let's be safe) - -; Debug.Trace("C00: Setting up Companions...") - - RadiantQuestsDone = 0 - StoryQuestIsRunning = False - RadiantQuestAccepted = False - RadiantQuestFinished = False - - AelaCurrentQuest = None - VilkasCurrentQuest = None - FarkasCurrentQuest = None - SkjorCurrentQuest = None - - AelaNextQuest = None - VilkasNextQuest = None - FarkasNextQuest = None - SkjorNextQuest = None - - RadiantAelaBlock = False - RadiantFarkasBlock = False - RadiantSkjorBlock = False - RadiantVilkasBlock = False - - ; do this twice to queue up two quests - CycleRadiantQuests() - ; while (\ - ; (SkjorCurrentQuest == None || !SkjorCurrentQuest.GetStageDone(1)) \ - ; && (AelaCurrentQuest == None || !AelaCurrentQuest.GetStageDone(1)) \ - ; && (FarkasCurrentQuest == None || !FarkasCurrentQuest.GetStageDone(1)) \ - ; && (VilkasCurrentQuest == None || !VilkasCurrentQuest.GetStageDone(1)) \ - ; ) -; ; Debug.Trace("C00: Waiting on RQ cycle...") - ; Utility.Wait(0.1) - ; endwhile - CycleRadiantQuests() - - CurrentStoryQuest = None - -; Debug.Trace("C00: Setup done; setting stage 1.") - SetStage(1) -EndFunction - -Function PlayerJoin() -; Debug.Trace("C00: Player joined Companions.") - if (Game.GetPlayer().IsInFaction(CompanionsFaction)) - return - endif - - Game.GetPlayer().AddToFaction(CompanionsFaction) - - ; start misc pointer for radiant quests - RadiantMiscObjQuest.Start() - - ; allow trainers - Athis.GetActorReference().AddToFaction(TrainerFaction) - Aela.GetActorReference().AddToFaction(TrainerFaction) - Njada.GetActorReference().AddToFaction(TrainerFaction) - Vilkas.GetActorReference().AddToFaction(TrainerFaction) - Eorlund.GetActorReference().AddToFaction(TrainerFaction) - Farkas.GetActorReference().AddToFaction(TrainerFaction) - - ; set up the spell tracking so the first time you cast it doesn't count - PlayerIsWerewolfVirgin = true - - ; get player's race so we have it permanently for werewolf switch back - PlayerOriginalRace = Game.GetPlayer().GetRace() -; Debug.Trace("CSQ: Storing player's race as " + PlayerOriginalRace) - - if (PlayerOriginalRace == ArgonianRaceVampire) -; Debug.Trace("CSQ: Player was Argonian Vampire; storing as Argonian.") - PlayerOriginalRace = ArgonianRace - elseif (PlayerOriginalRace == BretonRaceVampire) -; Debug.Trace("CSQ: Player was Breton Vampire; storing as Breton.") - PlayerOriginalRace = BretonRace - elseif (PlayerOriginalRace == DarkElfRaceVampire) -; Debug.Trace("CSQ: Player was Dark Elf Vampire; storing as Dark Elf.") - PlayerOriginalRace = DarkElfRace - elseif (PlayerOriginalRace == HighElfRaceVampire) -; Debug.Trace("CSQ: Player was High Elf Vampire; storing as High Elf.") - PlayerOriginalRace = HighElfRace - elseif (PlayerOriginalRace == ImperialRaceVampire) -; Debug.Trace("CSQ: Player was Imperial Vampire; storing as Imperial.") - PlayerOriginalRace = ImperialRace - elseif (PlayerOriginalRace == KhajiitRaceVampire) -; Debug.Trace("CSQ: Player was Khajiit Vampire; storing as Khajiit.") - PlayerOriginalRace = KhajiitRace - elseif (PlayerOriginalRace == NordRaceVampire) -; Debug.Trace("CSQ: Player was Nord Vampire; storing as Nord.") - PlayerOriginalRace = NordRace - elseif (PlayerOriginalRace == OrcRaceVampire) -; Debug.Trace("CSQ: Player was Orc Vampire; storing as Orc.") - PlayerOriginalRace = OrcRace - elseif (PlayerOriginalRace == RedguardRaceVampire) -; Debug.Trace("CSQ: Player was Redguard Vampire; storing as Redguard.") - PlayerOriginalRace = RedguardRace - elseif (PlayerOriginalRace == WoodElfRaceVampire) -; Debug.Trace("CSQ: Player was Wood Elf Vampire; storing as Wood Elf.") - PlayerOriginalRace = WoodElfRace - endif - -; Debug.Trace("CSQ: Storing player's race as " + PlayerOriginalRace) - - ; achievements YAY - Game.AddAchievement(9) -EndFunction - -Function OpenSkyforge() - ; set up Eorlund to sell you stuff - GearChance.SetValueInt(0) - - ; add them right now in case you run up - EorlundVendorChest.AddItem(CompanionsArmor) - EorlundVendorChest.AddItem(SkyforgeSteelWeapons) -EndFunction - -; super specialized -Function GiveVilkasBackHisSword() - ObjectReference vs = VilkasSword.GetReference() - ; make sure it's been cleared as a quest item - VilkasQuestSword.Clear() - VilkasSword.Clear() - - Eorlund.GetReference().RemoveItem(vs) - - Vilkas.GetReference().AddItem(VilkasWeapon) - - VilkasHasHisSwordBack = True -EndFunction - -Function CycleRadiantQuests() -; Debug.Trace("CRQ: Cycling radiant quests...") - ; just in case some idjit (i.e. me) unblocked a dead questgiver - if (Aela.GetActorReference().IsDead()) - if (AelaCurrentQuest != None) - AelaCurrentQuest.Stop() - AelaCurrentQuest = None - endif - if (AelaNextQuest != None) - AelaNextQuest.Stop() - AelaNextQuest = None - endif - RadiantAelaBlock = True - endif - if (Farkas.GetActorReference().IsDead()) - if (FarkasCurrentQuest != None) - FarkasCurrentQuest.Stop() - FarkasCurrentQuest = None - endif - if (FarkasNextQuest != None) - FarkasNextQuest.Stop() - FarkasNextQuest = None - endif - RadiantFarkasBlock = True - endif - if (Vilkas.GetActorReference().IsDead()) - if (VilkasCurrentQuest != None) - VilkasCurrentQuest.Stop() - VilkasCurrentQuest = None - endif - if (VilkasNextQuest != None) - VilkasNextQuest.Stop() - VilkasNextQuest = None - endif - RadiantVilkasBlock = True - endif - if (Skjor.GetActorReference().IsDead()) - if (SkjorCurrentQuest != None) - SkjorCurrentQuest.Stop() - SkjorCurrentQuest = None - endif - if (SkjorNextQuest != None) - SkjorNextQuest.Stop() - SkjorNextQuest = None - endif - RadiantSkjorBlock = True - endif - - ; lord, so much duplicated code here... this grew "organically" and is now hideous. - ; do not look here for examples of good tidy code. - if (!RadiantAelaBlock) - if (AelaCurrentQuest && AelaNextQuest && !AelaCurrentQuest.IsAccepted) - ; current quest not accepted, and we have a good next choice lined up -- swap - AelaCurrentQuest.Stop() - AelaCurrentQuest = AelaNextQuest - AelaNextQuest = None - AelaCurrentQuest.IsActive = True - elseif (AelaCurrentQuest && AelaCurrentQuest.Premature) - ; no better option, but we're trying to cycle out a prematurely ended quest, - ; so make it happen - AelaCurrentQuest.Stop() - AelaCurrentQuest = AelaNextQuest - AelaNextQuest = None - if (AelaCurrentQuest != None) - AelaCurrentQuest.IsActive = True - else - ; hope for the best at the next pick - endif - elseif (!AelaCurrentQuest && AelaNextQuest) - ; no current quest for whatever effed up reason, but got something in the - ; chamber, so fire. - AelaCurrentQuest = AelaNextQuest - AelaNextQuest = None - AelaCurrentQuest.IsActive = True - elseif (AelaNextQuest && AelaNextQuest != AelaCurrentQuest) - ; I don't even know why this is here anymore, but it is. - AelaNextQuest.Stop() - AelaNextQuest = None - elseif (AelaCurrentQuest && AelaCurrentQuest.GetStage() >= 200) - ; in case something got stuck someplace, make sure this eventually - ; gets cycled out - AelaCurrentQuest.Stop() - if (AelaNextQuest != None) - AelaCurrentQuest = AelaNextQuest - AelaNextQuest = None - AelaCurrentQuest.IsActive = True - else - AelaCurrentQuest = None - endif - endif - PickRadiantQuest(Aela.GetActorReference()) - elseif (AelaCurrentQuest && AelaCurrentQuest.GetStage() >= 200) - ; even if there's a block, cycle out done quests - AelaCurrentQuest.Stop() - if (AelaNextQuest != None) - AelaCurrentQuest = AelaNextQuest - AelaNextQuest = None - else - AelaCurrentQuest = None - endif - endif - if (!RadiantFarkasBlock) - if (FarkasCurrentQuest && FarkasNextQuest && !FarkasCurrentQuest.IsAccepted) - ; current quest not accepted, and we have a good next choice lined up -- swap - FarkasCurrentQuest.Stop() - FarkasCurrentQuest = FarkasNextQuest - FarkasNextQuest = None - FarkasCurrentQuest.IsActive = True - elseif (FarkasCurrentQuest && FarkasCurrentQuest.Premature) - ; no better option, but we're trying to cycle out a prematurely ended quest, - ; so make it happen - FarkasCurrentQuest.Stop() - FarkasCurrentQuest = FarkasNextQuest - FarkasNextQuest = None - if (FarkasCurrentQuest != None) - FarkasCurrentQuest.IsActive = True - else - ; hope for the best at the next pick - endif - elseif (!FarkasCurrentQuest && FarkasNextQuest) - ; no current quest for whatever effed up reason, but got something in the - ; chamber, so fire. - FarkasCurrentQuest = FarkasNextQuest - FarkasNextQuest = None - FarkasCurrentQuest.IsActive = True - elseif (FarkasNextQuest && FarkasNextQuest != FarkasCurrentQuest) - ; I don't even know why this is here anymore, but it is. - FarkasNextQuest.Stop() - FarkasNextQuest = None - elseif (FarkasCurrentQuest && FarkasCurrentQuest.GetStage() >= 200) - ; in case something got stuck someplace, make sure this eventually - ; gets cycled out - FarkasCurrentQuest.Stop() - if (FarkasNextQuest != None) - FarkasCurrentQuest = FarkasNextQuest - FarkasNextQuest = None - FarkasCurrentQuest.IsActive = True - else - FarkasCurrentQuest = None - endif - endif - PickRadiantQuest(Farkas.GetActorReference()) - elseif (FarkasCurrentQuest && FarkasCurrentQuest.GetStage() >= 200) - ; even if there's a block, cycle out done quests - FarkasCurrentQuest.Stop() - if (FarkasNextQuest != None) - FarkasCurrentQuest = FarkasNextQuest - FarkasNextQuest = None - else - FarkasCurrentQuest = None - endif - endif - if (!RadiantVilkasBlock) - if (VilkasCurrentQuest && VilkasNextQuest && !VilkasCurrentQuest.IsAccepted) - ; current quest not accepted, and we have a good next choice lined up -- swap - VilkasCurrentQuest.Stop() - VilkasCurrentQuest = VilkasNextQuest - VilkasNextQuest = None - VilkasCurrentQuest.IsActive = True - elseif (VilkasCurrentQuest && VilkasCurrentQuest.Premature) - ; no better option, but we're trying to cycle out a prematurely ended quest, - ; so make it happen - VilkasCurrentQuest.Stop() - VilkasCurrentQuest = VilkasNextQuest - VilkasNextQuest = None - if (VilkasCurrentQuest != None) - VilkasCurrentQuest.IsActive = True - else - ; hope for the best at the next pick - endif - elseif (!VilkasCurrentQuest && VilkasNextQuest) - ; no current quest for whatever effed up reason, but got something in the - ; chamber, so fire. - VilkasCurrentQuest = VilkasNextQuest - VilkasNextQuest = None - VilkasCurrentQuest.IsActive = True - elseif (VilkasNextQuest && VilkasNextQuest != VilkasCurrentQuest) - ; I don't even know why this is here anymore, but it is. - VilkasNextQuest.Stop() - VilkasNextQuest = None - elseif (VilkasCurrentQuest && VilkasCurrentQuest.GetStage() >= 200) - ; in case something got stuck someplace, make sure this eventually - ; gets cycled out - VilkasCurrentQuest.Stop() - if (VilkasNextQuest != None) - VilkasCurrentQuest = VilkasNextQuest - VilkasNextQuest = None - VilkasCurrentQuest.IsActive = True - else - VilkasCurrentQuest = None - endif - endif - PickRadiantQuest(Vilkas.GetActorReference()) - elseif (VilkasCurrentQuest && VilkasCurrentQuest.GetStage() >= 200) - ; even if there's a block, cycle out done quests - VilkasCurrentQuest.Stop() - if (VilkasNextQuest != None) - VilkasCurrentQuest = VilkasNextQuest - VilkasNextQuest = None - else - VilkasCurrentQuest = None - endif - endif - if (!RadiantSkjorBlock) - if (SkjorCurrentQuest && SkjorNextQuest && !SkjorCurrentQuest.IsAccepted) - ; current quest not accepted, and we have a good next choice lined up -- swap - SkjorCurrentQuest.Stop() - SkjorCurrentQuest = SkjorNextQuest - SkjorNextQuest = None - SkjorCurrentQuest.IsActive = True - elseif (SkjorCurrentQuest && SkjorCurrentQuest.Premature) - ; no better option, but we're trying to cycle out a prematurely ended quest, - ; so make it happen - SkjorCurrentQuest.Stop() - SkjorCurrentQuest = SkjorNextQuest - SkjorNextQuest = None - if (SkjorCurrentQuest != None) - SkjorCurrentQuest.IsActive = True - else - ; hope for the best at the next pick - endif - elseif (!SkjorCurrentQuest && SkjorNextQuest) - ; no current quest for whatever effed up reason, but got something in the - ; chamber, so fire. - SkjorCurrentQuest = SkjorNextQuest - SkjorNextQuest = None - SkjorCurrentQuest.IsActive = True - elseif (SkjorNextQuest && SkjorNextQuest != SkjorCurrentQuest) - ; I don't even know why this is here anymore, but it is. - SkjorNextQuest.Stop() - SkjorNextQuest = None - elseif (SkjorCurrentQuest && SkjorCurrentQuest.GetStage() >= 200) - ; in case something got stuck someplace, make sure this eventually - ; gets cycled out - SkjorCurrentQuest.Stop() - if (SkjorNextQuest != None) - SkjorCurrentQuest = SkjorNextQuest - SkjorNextQuest = None - SkjorCurrentQuest.IsActive = True - else - SkjorCurrentQuest = None - endif - endif - PickRadiantQuest(Skjor.GetActorReference()) - elseif (SkjorCurrentQuest && SkjorCurrentQuest.GetStage() >= 200) - ; even if there's a block, cycle out done quests - SkjorCurrentQuest.Stop() - if (SkjorNextQuest != None) - SkjorCurrentQuest = SkjorNextQuest - SkjorNextQuest = None - else - SkjorCurrentQuest = None - endif - endif - - - ; 77298: Fixing situation where next quests were flagged premature - ; and not cleared out before player was able to get at them. - if (AelaNextQuest != None && AelaNextQuest.Premature == True) - AelaNextQuest.Stop() - AelaNextQuest = None - endif - if (FarkasNextQuest != None && FarkasNextQuest.Premature == True) - FarkasNextQuest.Stop() - FarkasNextQuest = None - endif - if (VilkasNextQuest != None && VilkasNextQuest.Premature == True) - VilkasNextQuest.Stop() - VilkasNextQuest = None - endif - if (SkjorNextQuest != None && SkjorNextQuest.Premature == True) - SkjorNextQuest.Stop() - SkjorNextQuest = None - endif - ; END 77298 -EndFunction - -Function PickRadiantQuest(Actor questgiver) -; Debug.Trace("CRQ: Trying to pick radiant quest for " + questgiver) - - if (questgiver.IsDead()) -; Debug.Trace("CRQ: Questgiver " + questgiver + " is dead; skipping radiant selection.") - return - endif - - if (questgiver == Aela.GetActorReference()) - Keyword ark = AelaRadiantKeyword - if ( AelaInReconMode ) - ark = ReconRadiantKeyword - endif - ark.SendStoryEvent() - elseif (questgiver == Skjor.GetActorReference()) - SkjorRadiantKeyword.SendStoryEvent() - elseif (questgiver == Vilkas.GetActorReference()) - VilkasRadiantKeyword.SendStoryEvent() - elseif (questgiver == Farkas.GetActorReference()) - FarkasRadiantKeyword.SendStoryEvent() - endif -EndFunction - -Function RegisterRadiantQuest(CompanionsRadiantQuest newRadiant) - Actor qg = newRadiant.Questgiver.GetActorReference() - if (qg == None || newRadiant.IsRegistered) - return ; we'll register when the story event comes through - endif - -; Debug.Trace("CRQ: Registering radiant quest -- " + newRadiant + " with questgiver -- " + qg) - - if (qg == Aela.GetActorReference()) - if (AelaCurrentQuest == None) - AelaCurrentQuest = newRadiant - AelaCurrentQuest.IsActive = True - elseif (!AelaCurrentQuest.IsActive) - AelaCurrentQuest.Stop() - AelaCurrentQuest = newRadiant - AelaCurrentQuest.IsActive = True - else - if (AelaNextQuest != None) - AelaNextQuest.Stop() - endif - AelaNextQuest = newRadiant - endif - elseif (qg == Skjor.GetActorReference()) - if (SkjorCurrentQuest == None) - SkjorCurrentQuest = newRadiant - SkjorCurrentQuest.IsActive = True - elseif (!SkjorCurrentQuest.IsActive) - SkjorCurrentQuest.Stop() - SkjorCurrentQuest = newRadiant - SkjorCurrentQuest.IsActive = True - else - if (SkjorNextQuest != None) - SkjorNextQuest.Stop() - endif - SkjorNextQuest = newRadiant - endif - elseif (qg == Vilkas.GetActorReference()) - if (VilkasCurrentQuest == None) - VilkasCurrentQuest = newRadiant - VilkasCurrentQuest.IsActive = True - elseif (!VilkasCurrentQuest.IsActive) - VilkasCurrentQuest.Stop() - VilkasCurrentQuest = newRadiant - VilkasCurrentQuest.IsActive = True - else - if (VilkasNextQuest != None) - VilkasNextQuest.Stop() - endif - VilkasNextQuest = newRadiant - endif - elseif (qg == Farkas.GetActorReference()) - if (FarkasCurrentQuest == None) - FarkasCurrentQuest = newRadiant - FarkasCurrentQuest.IsActive = True - elseif (!FarkasCurrentQuest.IsActive) - FarkasCurrentQuest.Stop() - FarkasCurrentQuest = newRadiant - FarkasCurrentQuest.IsActive = True - else - if (FarkasNextQuest != None) - FarkasNextQuest.Stop() - endif - FarkasNextQuest = newRadiant - endif - endif - - newRadiant.IsRegistered = true -EndFunction - -Function AcceptRadiantQuest(Actor questgiver, bool comesAlong) -; Debug.Trace("C00: Accepting radiant quest for " + questgiver + " -- comes along? " + comesAlong) - RadiantQuestAccepted = True - RadiantMiscObjQuest.SetObjectiveDisplayed(10, false) - - bool reg = true - - if (comesAlong) - reg = false - endif - if (questgiver == Aela.GetReference()) - if (AelaInReconMode && !DoneReconQuestForAela) - reg = false - endif - endif - if (questgiver.IsInFaction(CurrentFollowerFaction)) - reg = false - endif - - if (reg) -; Debug.Trace("C00: Registering " + questgiver + " as radiant questgiver.") - RadiantQuestgiver.ForceRefTo(questgiver) - endif - - ShutdownRadiantQuests(questgiver) -EndFunction - -Function ShutdownRadiantQuests(Actor exception = None) -; Debug.Trace("CRQ: Shutting down radiant quests, excepting " + exception) - if (exception != Aela.GetActorReference()) - RadiantAelaBlock = True - if (AelaCurrentQuest != None) - AelaCurrentQuest.IsActive = False - endif - endif - if (exception != Skjor.GetActorReference()) - RadiantSkjorBlock = True - if (SkjorCurrentQuest != None) - SkjorCurrentQuest.IsActive = False - endif - endif - if (exception != Vilkas.GetActorReference()) - RadiantVilkasBlock = True - if (VilkasCurrentQuest != None) - VilkasCurrentQuest.IsActive = False - endif - endif - if (exception != Farkas.GetActorReference()) - RadiantFarkasBlock = True - if (FarkasCurrentQuest != None) - FarkasCurrentQuest.IsActive = False - endif - endif - -; Debug.Trace("CRQ: Ensuring shutdown -- " + RadiantAelaBlock + " " + RadiantSkjorBlock + " " + RadiantVilkasBlock + " " + RadiantFarkasBlock) -EndFunction - -Function ShutdownRadiantQuestsFor(Actor busy) -; Debug.Trace("CRQ: Shutting down radiant quests for " + busy) - if (busy == Aela.GetActorReference()) - RadiantAelaBlock = True - if (AelaCurrentQuest != None) - AelaCurrentQuest.IsActive = False - endif - elseif (busy == Skjor.GetActorReference()) - RadiantSkjorBlock = True - if (SkjorCurrentQuest != None) - SkjorCurrentQuest.IsActive = False - endif - elseif (busy == Vilkas.GetActorReference()) - RadiantVilkasBlock = True - if (VilkasCurrentQuest != None) - VilkasCurrentQuest.IsActive = False - endif - elseif (busy == Farkas.GetActorReference()) - RadiantFarkasBlock = True - if (FarkasCurrentQuest != None) - FarkasCurrentQuest.IsActive = False - endif - endif - -; Debug.Trace("CRQ: Ensuring shutdown -- " + RadiantAelaBlock + " " + RadiantSkjorBlock + " " + RadiantVilkasBlock + " " + RadiantFarkasBlock) -EndFunction - -Function ReOpenAllRadiantQuests() -; Debug.Trace("CRQ: Reopening radiant quests.") - if (!Aela.GetActorReference().IsDead()) - RadiantAelaBlock = False - endif - if (!Skjor.GetActorReference().IsDead()) - RadiantSkjorBlock = False - endif - if (!Vilkas.GetActorReference().IsDead()) - RadiantVilkasBlock = False - endif - if (!Farkas.GetActorReference().IsDead()) - RadiantFarkasBlock = False - endif - - if (AelaCurrentQuest != None) - AelaCurrentQuest.IsActive = True - endif - if (SkjorCurrentQuest != None) - SkjorCurrentQuest.IsActive = True - endif - if (VilkasCurrentQuest != None) - VilkasCurrentQuest.IsActive = True - endif - if (FarkasCurrentQuest != None) - FarkasCurrentQuest.IsActive = True - endif -EndFunction - -bool __reconKicked = false - -; One off to kick Aela's recon radiant quests post C03 -Function KickOffReconQuests() - ; make sure this only gets called once - if (__reconKicked) - return - endif - -; Debug.Trace("CRQ: Starting recon quest sequence.") - - ; make sure some threaded interloper doesn't mess with us - RadiantAelaBlock = true - - ; clear out her existing radiant stuff - if (AelaCurrentQuest) - AelaCurrentQuest.Stop() - AelaCurrentQuest = None - endif - if (AelaNextQuest) - AelaNextQuest.Stop() - AelaNextQuest = None - endif - - AelaInReconMode = true - - bool keepTrying = true - while (keepTrying) -; Debug.Trace("CRQ: Trying to start specific recon quest...") - if (ReconRadiantKeyword.SendStoryEventAndWait()) - keepTrying = false - else -; Debug.Trace("CRQ: Failed to start recon quest; trying again.") - Utility.Wait(0.5) - endif - endwhile - - ReconRadiantKeyword.SendStoryEvent() - - RadiantAelaBlock = false -EndFunction - -int function CompleteRadiantQuest(CompanionsRadiantQuest rq) -; Debug.Trace("CRQ: Completing radiant quest: " + rq) - bool success = rq.Succeeded - - ; store the questgiver for checking later in this function - Actor qg = rq.Questgiver.GetActorReference() - - if (success) - ; increment questgiver count - if (qg == Aela.GetActorReference()) - AelaQuests += 1 - elseif (qg == Skjor.GetActorReference()) - SkjorQuests += 1 - elseif (qg == Vilkas.GetActorReference()) - VilkasQuests += 1 - elseif (qg == Farkas.GetActorReference()) - FarkasQuests += 1 - endif - - ; increment overall radiant quest count - RadiantQuestsDone += 1 - RadiantQuestsDoneInCurrentSegment += 1 - endif - - ; pay the player (even if not successful, there might be a midway reward) - Game.GetPlayer().AddItem(GoldReward, rq.RewardAmount) - - ; Mr. Book: SHUT IT DOWN! - ; rq.Stop() - rq.IsAccepted = False ; so it can get cleared with the cycle - ReOpenAllRadiantQuests() - - if (rq == CR13 || rq == CR14) - if (qg == Farkas.GetReference()) -; Debug.Trace("CRQ CR13|CR14: Blocking Farkas...") - ShutdownRadiantQuestsFor(Farkas.GetActorReference()) - else -; Debug.Trace("CRQ CR13|CR14: Blocking Vilkas...") - ShutdownRadiantQuestsFor(Vilkas.GetActorReference()) - endif - endif - - CycleRadiantQuests() - - ; update favorite questgiver - FavoriteQuestgiver = 0 - int fqgCount = 0 - if (AelaQuests > fqgCount) - FavoriteQuestgiver = 1 - fqgCount = AelaQuests - endif - if (FarkasQuests > fqgCount) - FavoriteQuestgiver = 2 - fqgCount = FarkasQuests - endif - if (VilkasQuests > fqgCount) - FavoriteQuestgiver = 3 - fqgCount = VilkasQuests - endif - if (SkjorQuests > fqgCount) - FavoriteQuestgiver = 4 - fqgCount = SkjorQuests - endif - - ; check to see if it's time to start the next story quest - bool startedStory = False - if (C01.GetStage() < 1) - ; count - if (RadiantQuestsDoneInCurrentSegment >= RadiantQuestsUntilC01) - StartStoryQuest(C01) - startedStory = True - endif - elseif (C03.GetStage() < 1) - ; count - if (RadiantQuestsDoneInCurrentSegment >= RadiantQuestsUntilC03) - StartStoryQuest(C03) - startedStory = True - endif - elseif (C04.GetStage() < 1) - ; count, also min level - if ( (RadiantQuestsDoneInCurrentSegment >= RadiantQuestsUntilC04) && (Game.GetPlayer().GetLevel() >= C04MinLevel) ) - StartStoryQuest(C04) - startedStory = True - endif - endif - - ; reset tracking - if (!startedStory) - RadiantMiscObjQuest.SetObjectiveDisplayed(10, true) - endif - RadiantQuestAccepted = False - RadiantQuestFinished = False - RadiantQuestgiver.Clear() - - ; reset tracking number - if (startedStory) - RadiantQuestsDoneInCurrentSegment = 0 - endif - - ; return total radiant quests done for Companions - return RadiantQuestsDone -endFunction - -Actor function GetFavoriteQuestgiver() - ; Shane wants arrays. - if (FavoriteQuestgiver == 1) - return Aela.GetActorReference() - elseif (FavoriteQuestgiver == 2) - return Farkas.GetActorReference() - elseif (FavoriteQuestgiver == 3) - return Vilkas.GetActorReference() - elseif (FavoriteQuestgiver == 4) - return Skjor.GetActorReference() - endif - - ; We haven't done any radiant quests -- this should only happen when - ; starting a story quest manually for testing purposes. Randomly pick - ; a favorite in that case. - - ; Lazily odded to only return Aela and Farkas - int randomQGIndex = Utility.RandomInt(1, 4) - if (randomQGIndex == 1) - AelaIsObserver = true - return Aela.GetActorReference() - elseif (randomQGIndex == 2) - FarkasIsObserver = true - return Farkas.GetActorReference() - elseif (randomQGIndex == 3) - AelaIsObserver = true - return Aela.GetActorReference() - elseif (randomQGIndex == 4) - FarkasIsObserver = true - return Farkas.GetActorReference() - endif - - ; We absolutely should never get to this point in the function; - ; it's a bug if we do. Still making sure we return *something* - ; just in case, and complaining to the log. -; Debug.Trace("CSQ: ERROR: Somehow got to the bottom of GetFavoriteQuestGiver function (C00).") - return Skjor.GetActorReference() -endFunction - -function StartStoryQuest(CompanionsStoryQuest storyToStart) - CurrentStoryQuest = storyToStart -; Debug.Trace("CSQ: Starting story quest: " + CurrentStoryQuest) - storyToStart.SetStage(1) - StoryQuestIsRunning = True - RadiantMiscObjQuest.SetObjectiveDisplayed(10, false) -endFunction - -function CompleteStoryQuest(CompanionsStoryQuest storyToEnd) -; Debug.Trace("CSQ: Ending " + storyToEnd) - - storyToEnd.Teardown() - storyToEnd.Stop() - while(storyToEnd.IsRunning()) -; Debug.Trace("CSQ: Waiting for quest to end: " + storyToEnd) - Utility.Wait(0.5) - endwhile - - CurrentStoryQuest = None - StoryQuestIsRunning = False - if ( (storyToEnd != C03) && (storyToEnd != C04) && (storyToEnd != C05) ) - RadiantMiscObjQuest.SetObjectiveDisplayed(10, true) - endif - if (storyToEnd == C02) - OpenSkyforge() - endif -endFunction - -Function AddHarbingerPerks() - Aela.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) - Farkas.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) - Vilkas.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) - Athis.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) - Ria.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) - Njada.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) - Torvar.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 2) -EndFunction - -Function CurePlayer() -; Debug.Trace("WEREWOLF: Curing the player of lycanthropy.") - - ; turn you back if you're currently a werewolf - if (WerewolfChangeTrackingQuest.IsRunning() && WerewolfChangeTrackingQuest.GetStage() < 100) - WerewolfChangeTrackingQuest.SetStage(100) - endif - - ; take away spell and immunity - Game.GetPlayer().RemoveSpell(BeastForm) - Game.GetPlayer().RemoveSpell(WerewolfImmunity) - - ; FIX FOR 81462 - Game.GetPlayer().RemoveSpell(HircinesRingPower) - ; END FIX FOR 81462 - - ; you can't get into the Underforge anymore, either - TempUnderforgeAccess = false - PlayerHasBeastBlood = false - - ; Let everyone know you are no longer a werewolf - Game.GetPlayer().SendLycanthropyStateChanged(false) -EndFunction - - -Function Shutup(Actor toBeShut) - if (GenericDialogueSuppressor1.GetReference() == None) - GenericDialogueSuppressor1.ForceRefTo(toBeShut) - elseif (GenericDialogueSuppressor2.GetReference() == None) - GenericDialogueSuppressor2.ForceRefTo(toBeShut) - elseif (GenericDialogueSuppressor3.GetReference() == None) - GenericDialogueSuppressor3.ForceRefTo(toBeShut) - elseif (GenericDialogueSuppressor4.GetReference() == None) - GenericDialogueSuppressor4.ForceRefTo(toBeShut) - else -; Debug.Trace("C00: Can't shut anyone else up.") - endif -EndFunction - -Function UnShutup(Actor toBeUnShut) - if (GenericDialogueSuppressor1.GetReference() == toBeUnShut) - GenericDialogueSuppressor1.Clear() - elseif (GenericDialogueSuppressor2.GetReference() == toBeUnShut) - GenericDialogueSuppressor2.Clear() - elseif (GenericDialogueSuppressor3.GetReference() == toBeUnShut) - GenericDialogueSuppressor3.Clear() - elseif (GenericDialogueSuppressor4.GetReference() == toBeUnShut) - GenericDialogueSuppressor4.Clear() - else -; Debug.Trace("C00: " + toBeUnShut + " was never shut up.") - endif -EndFunction - -Function SwapFollowers() -; Debug.Trace("CSQ: Swapping followers.") - ; called when a story quest is assigning you a follower (C01, C03, C05, and C06) - ; so that you don't end up with too big of an entourage. - if (PlayerFollowerCount.GetValue() > 0) - FollowerScript.DismissFollower(2) - - ; Because the Dark Brotherhood does its own jimminess instead of - ; using the normal follower system, we have to dismiss manually. - if (DBScript.CiceroFollower == 1) - CiceroFollower.SetPlayerTeammate(false) - DBScript.CiceroFollower = 0 - DBScript.CiceroState = 1 - CiceroFollower.EvaluatePackage() - endif - - if (DBScript.Initiate1Follower == 1) - DBInitiateFollower1.SetPlayerTeammate(false) - DBScript.Initiate1Follower = 0 - DBScript.Initiate1State = 1 - DBInitiateFollower1.EvaluatePackage() - endif - - if (DBScript.Initiate2Follower == 1) - DBInitiateFollower2.SetPlayerTeammate(false) - DBScript.Initiate2Follower = 0 - DBScript.Initiate2State = 1 - DBInitiateFollower2.EvaluatePackage() - endif - endif - PlayerFollowerCount.SetValue(1) -EndFunction - -Function CleanupFollowerState() - PlayerFollowerCount.SetValue(0) -EndFunction diff --git a/source/scripts/companionsradiantquest.psc b/source/scripts/companionsradiantquest.psc deleted file mode 100644 index c04613c6..00000000 --- a/source/scripts/companionsradiantquest.psc +++ /dev/null @@ -1,82 +0,0 @@ -Scriptname CompanionsRadiantQuest extends Quest Conditional - -Quest Property ParentQuest auto -ReferenceAlias Property Questgiver auto -ReferenceAlias Property MapMarker auto -bool Property IsRegistered = false auto -bool Property QuestgiverComesAlong = false auto conditional -bool Property IsActive = false auto conditional -bool Property IsAccepted = false auto conditional -bool Property WasRejected = false auto conditional -int Property RewardAmount = 100 auto -bool Property Succeeded = false auto -bool Property Premature = false auto - - -; called when quest is first setup, but before player has accepted it -Function Setup() - ; default properties are supposed to handle most of these, but just in case.... - ; IsRegistered = false - ; QuestgiverComesAlong = false - ; IsActive = false - ; IsAccepted = false - ; WasRejected = false - ; Succeeded = false - ; Premature = false - - int level = Game.GetPlayer().GetLevel() - if (level < 10) - RewardAmount = 100 - elseif (level < 20) - RewardAmount = 150 - elseif (level < 20) - RewardAmount = 200 - elseif (level < 20) - RewardAmount = 250 - else - RewardAmount = 300 - endif - - (ParentQuest as CompanionsHousekeepingScript).RegisterRadiantQuest(self) - SetStage(1) -EndFunction - -; called when player accepts quest -Function Accepted() -; Debug.Trace("CRQ: Accepting " + self + ".") - (ParentQuest as CompanionsHousekeepingScript).AcceptRadiantQuest(Questgiver.GetActorReference(), QuestgiverComesAlong) - if ( (MapMarker != None) && (MapMarker.GetReference() != None) ) - MapMarker.GetReference().AddToMap() - endif - IsAccepted = True - SetStage(10) -EndFunction - -; when player turns down the quest -Function Rejected() -; Debug.Trace("CRQ: Rejecting " + self + ".") - WasRejected = True -EndFunction - -; when player has finished quest, but not yet collected reward -Function Finished(bool _succeeded = true, bool _finished = true) -; Debug.Trace("CRQ: Finishing " + self + "; succeeded? " + _succeeded) - Succeeded = _succeeded - (ParentQuest as CompanionsHousekeepingScript).RadiantQuestFinished = _finished -EndFunction - -; when the quest is shutting down -Function Cleanup() - if (!Premature) - (ParentQuest as CompanionsHousekeepingScript).CompleteRadiantQuest(self) - endif -EndFunction - -; for when the player kills someone before they accepted the quest, etc -Function PrematureShutdown() -; Debug.Trace("CRQ: Shutting down " + self + "prematurely...") - IsAccepted = false - Premature = true - (ParentQuest as CompanionsHousekeepingScript).CycleRadiantQuests() - Cleanup() -EndFunction diff --git a/source/scripts/companionsstoryquest.psc b/source/scripts/companionsstoryquest.psc deleted file mode 100644 index e6b432d6..00000000 --- a/source/scripts/companionsstoryquest.psc +++ /dev/null @@ -1,43 +0,0 @@ -Scriptname CompanionsStoryQuest extends Quest - -Quest Property CentralQuest auto -CompanionsStoryQuest Property PreviousQuest auto -CompanionsStoryQuest Property NextQuest auto - -; called when we're testing the quest and want to create its preconditions -; note that stage 1 will be set at the end of it -Function Setup() -; Debug.Trace("CSQ: Calling setup for " + self) - - CompanionsHousekeepingScript chs = (CentralQuest as CompanionsHousekeepingScript) - - if (PreviousQuest != None) - if (PreviousQuest.IsRunning() == false) - if (PreviousQuest.GetStageDone(1) == false) - PreviousQuest.SetStage(0) - endif -; Debug.Trace("CSQ: Setting stage 200 on " + PreviousQuest) - PreviousQuest.SetStage(200) - endif - endif - - ; Game.GetPlayer().AddToFaction(chs.CompanionsFaction) - if (!CentralQuest.GetStageDone(150)) - if (!CentralQuest.GetStageDone(100)) - CentralQuest.SetStage(100) - endif - CentralQuest.SetStage(150) - CentralQuest.CompleteQuest() - endif - chs.StartStoryQuest(self) ; sets stage 1 -EndFunction - -; called at stage 1 to do any real setup -Function Init() -; Debug.Trace("CSQ: Calling init for " + self) -EndFunction - -; called with stage 200 to do any necessary teardown (de-essentializing people, etc.) -Function Teardown() -; Debug.Trace("CSQ: Calling teardown for " + self) -EndFunction diff --git a/source/scripts/cr04questscript.psc b/source/scripts/cr04questscript.psc deleted file mode 100644 index a8475fae..00000000 --- a/source/scripts/cr04questscript.psc +++ /dev/null @@ -1,23 +0,0 @@ -Scriptname CR04QuestScript extends CompanionsRadiantQuest Conditional - -ReferenceAlias Property Brute auto -ReferenceAlias Property BruteActivated auto -ReferenceAlias Property FavorDialogueOpponent_Remote auto ; on DialogueFavorGeneric - -Function Accepted() - FavorDialogueOpponent_Remote.ForceRefTo(Brute.GetRef()) - BruteActivated.ForceRefTo(Brute.GetRef()) - parent.Accepted() -EndFunction - -Function CheckIntimidate(Actor opponent) -; Debug.Trace("CRQ CR04: Opponent: " + opponent + "; Brute: " + BruteActivated.GetReference()) - if (BruteActivated.GetReference() == opponent) - SetStage(20) - endif -EndFunction - -Function Cleanup() - FavorDialogueOpponent_Remote.Clear() - parent.Cleanup() -EndFunction diff --git a/source/scripts/crimeguardsscript.psc b/source/scripts/crimeguardsscript.psc index e4fc3013..1e03790e 100644 --- a/source/scripts/crimeguardsscript.psc +++ b/source/scripts/crimeguardsscript.psc @@ -1,10 +1,5 @@ ScriptName CrimeGuardsScript extends Quest -ObjectReference Property CidhnaMineDoorA Auto -ObjectReference Property CidhnaMineDoorB Auto -ObjectReference Property CidhnaMineDoorLeverA Auto -ObjectReference Property CidhnaMineDoorLeverB Auto -Quest Property CidhnaMineJailEventScene Auto GlobalVariable Property GameDaysPassed Auto GlobalVariable Property pCrimeGuildDisc Auto FavorDialogueScript Property FavorScript Auto @@ -14,15 +9,6 @@ Faction Property pCrimeHaafingar Auto Faction Property pCrimeEastmarch Auto Faction Property pCrimeWhiterun Auto -Function SetupCidhnaMine() - - If CidhnaMineJailEventScene.GetStageDone(10) == 0 -; debug.Trace("Running the Cidhna Mine intro scene") - CidhnaMineJailEventScene.SetStage(10) - EndIf - -EndFunction - Function GuildDiscount(Actor pGuard) if pGuard.GetCrimeFaction() == pCrimeReach diff --git a/source/scripts/favordialoguescript.psc b/source/scripts/favordialoguescript.psc index 66bd99fd..f9c2b1e6 100644 --- a/source/scripts/favordialoguescript.psc +++ b/source/scripts/favordialoguescript.psc @@ -21,12 +21,6 @@ MiscObject Property Gold Auto Keyword Property BrawlKeyword Auto {used for brawl story event} -CompanionsRadiantQuest Property CR04 Auto -{One of the Companions quests cares about intimidating someone specific} - -ReferenceAlias Property MS10Stig Auto -{MS10 needs to be told after intimidating Stig} - float Property SkillUsePersuade Auto Conditional {skill uses for flatter (magnitude for AdvanceSkill)} @@ -110,20 +104,8 @@ Function Intimidate(Actor pTarget) ; intimidate actor pTarget.SetIntimidated() ; give player skill uses. don't if the Brawl quest is running, don't track intimidation stats for Brawl - If DGintimidateQuest.IsRunning() == False - AdvanceSkill("Speechcraft", SkillUseIntimidate) - Game.IncrementStat( "Intimidations" ) - if ( Game.QueryStat( "Persuasions" ) && Game.QueryStat( "Bribes" ) ) - Game.AddAchievement(28) - endif - EndIf + Game.IncrementStat( "Intimidations" ) - if ( CR04.IsRunning() && (10 == CR04.GetStage()) ) - (CR04 as CR04QuestScript).CheckIntimidate(pTarget) - endif - if (pTarget == MS10Stig.GetActorReference()) - (MS10Stig.GetOwningQuest() as MS10QuestScript).GetErDoneWithStig() - endif endFunction ; call this to initiate brawl quest through story manager @@ -145,8 +127,3 @@ Function GiveGift(Actor pTarget) trace("Give Gift: " + favorPointsEarned * SkillUseGiveGiftMult + " skill uses earned") AdvanceSkill("Speechcraft", favorPointsEarned * SkillUseGiveGiftMult) endFunction - - -Quest Property DGIntimidateQuest Auto - - diff --git a/source/scripts/playerwerewolfchangescript.psc b/source/scripts/playerwerewolfchangescript.psc deleted file mode 100644 index ebbbd9a2..00000000 --- a/source/scripts/playerwerewolfchangescript.psc +++ /dev/null @@ -1,478 +0,0 @@ -Scriptname PlayerWerewolfChangeScript extends Quest - -float Property StandardDurationSeconds auto -{How long (in real seconds) the transformation lasts} - -float Property DurationWarningTimeSeconds auto -{How long (in real seconds) before turning back we should warn the player} - -float Property FeedExtensionTimeSeconds auto -{How long (in real seconds) that feeding extends werewolf time} - -VisualEffect property FeedBloodVFX auto -{Visual Effect on Wolf for Feeding Blood} - -Race Property WerewolfBeastRace auto -ObjectReference Property LycanStash auto -Perk Property PlayerWerewolfFeed auto - -Faction Property PlayerWerewolfFaction auto -Faction Property WerewolfFaction auto - -Message Property PlayerWerewolfExpirationWarning auto -Message Property PlayerWerewolfFeedMessage auto -GlobalVariable Property GameDaysPassed auto -GlobalVariable Property TimeScale auto -GlobalVariable Property PlayerWerewolfShiftBackTime auto - -ImageSpaceModifier Property WerewolfWarn auto -ImageSpaceModifier Property WerewolfChange auto - -Race Property WerewolfRace auto -Sound Property NPCWerewolfTransformation auto -Sound Property WerewolfIMODSound auto -Idle Property WerewolfTransformBack auto -Idle Property SpecialFeeding auto - -Quest Property CompanionsTrackingQuest auto -Quest Property C03Rampage auto - -Shout Property CurrentHowl auto -WordOfPower Property CurrentHowlWord1 auto -WordOfPower Property CurrentHowlWord2 auto -WordOfPower Property CurrentHowlWord3 auto - -Spell Property PlayerWerewolfLvl10AndBelowAbility auto -Spell Property PlayerWerewolfLvl15AndBelowAbility auto -Spell Property PlayerWerewolfLvl20AndBelowAbility auto -Spell Property PlayerWerewolfLvl25AndBelowAbility auto -Spell Property PlayerWerewolfLvl30AndBelowAbility auto -Spell Property PlayerWerewolfLvl35AndBelowAbility auto -Spell Property PlayerWerewolfLvl40AndBelowAbility auto -Spell Property PlayerWerewolfLvl45AndBelowAbility auto -Spell Property PlayerWerewolfLvl50AndOverAbility auto - -Spell Property FeedBoost auto -Spell property BleedingFXSpell auto -{This Spell is for making the target of feeding bleed.} - -Armor Property WolfSkinFXArmor auto - -bool Property Untimed auto - -FormList Property CrimeFactions auto -FormList Property WerewolfDispelList auto - -float __durationWarningTime = -1.0 -float __feedExtensionTime = -1.0 -float __gorgeExtensionTime = -1.0 -bool __tryingToShiftBack = false -bool __shiftingBack = false -bool __shuttingDown = false -bool __trackingStarted = false - -float Function RealTimeSecondsToGameTimeDays(float realtime) - float scaledSeconds = realtime * TimeScale.Value - return scaledSeconds / (60 * 60 * 24) -EndFunction - -float Function GameTimeDaysToRealTimeSeconds(float gametime) - float gameSeconds = gametime * (60 * 60 * 24) - return (gameSeconds / TimeScale.Value) -EndFunction - -Function PrepShift() -; Debug.Trace("WEREWOLF: Prepping shift...") - Actor player = Game.GetPlayer() - - ; sets up the UI restrictions - Game.SetBeastForm(True) - Game.EnableFastTravel(False) - - ; set up perks/abilities - ; (don't need to do this anymore since it's on from gamestart) - ; Game.GetPlayer().AddPerk(PlayerWerewolfFeed) - - ; screen effect - WerewolfChange.Apply() - WerewolfIMODSound.Play(Game.GetPlayer()) - - ; get rid of your summons - int count = 0 - while (count < WerewolfDispelList.GetSize()) - Spell gone = WerewolfDispelList.GetAt(count) as Spell - if (gone != None) - Game.GetPlayer().DispelSpell(gone) - endif - count += 1 - endwhile - - - Game.DisablePlayerControls(abMovement = false, abFighting = false, abCamSwitch = true, abMenu = false, abActivate = false, abJournalTabs = false, aiDisablePOVType = 1) - Game.ForceThirdPerson() - Game.ShowFirstPersonGeometry(false) -EndFunction - -Function InitialShift() -; Debug.Trace("WEREWOLF: Player beginning transformation.") - - WerewolfWarn.Apply() - - if (Game.GetPlayer().IsDead()) -; Debug.Trace("WEREWOLF: Player is dead; bailing out.") - return - endif - - ; actual switch - Game.GetPlayer().SetRace(WerewolfBeastRace) -EndFunction - -Function StartTracking() - if (__trackingStarted) - return - endif - - __trackingStarted = true - -; Debug.Trace("WEREWOLF: Race swap done; starting tracking and effects.") - - ; take all the player's stuff (since he/she can't use it anyway) - ; Game.GetPlayer().RemoveAllItems(LycanStash) - Game.GetPlayer().UnequipAll() - Game.GetPlayer().EquipItem(WolfSkinFXArmor, False, True) - - ;Add Blood Effects - ;FeedBloodVFX.Play(Game.GetPlayer()) - - ; make everyone hate you - Game.GetPlayer().SetAttackActorOnSight(true) - - ; alert anyone nearby that they should now know the player is a werewolf - Game.SendWereWolfTransformation() - - Game.GetPlayer().AddToFaction(PlayerWerewolfFaction) - Game.GetPlayer().AddToFaction(WerewolfFaction) - int cfIndex = 0 - while (cfIndex < CrimeFactions.GetSize()) -; Debug.Trace("WEREWOLF: Setting enemy flag on " + CrimeFactions.GetAt(cfIndex)) - (CrimeFactions.GetAt(cfIndex) as Faction).SetPlayerEnemy() - cfIndex += 1 - endwhile - - ; but they also don't know that it's you - Game.SetPlayerReportCrime(false) - - ; recalc times - __durationWarningTime = RealTimeSecondsToGameTimeDays(DurationWarningTimeSeconds) - __feedExtensionTime = RealTimeSecondsToGameTimeDays(FeedExtensionTimeSeconds) - __gorgeExtensionTime = RealTimeSecondsToGameTimeDays(DLC1GorgingDurationSeconds) - - ; unequip magic - Spell left = Game.GetPlayer().GetEquippedSpell(0) - Spell right = Game.GetPlayer().GetEquippedSpell(1) - Spell power = Game.GetPlayer().GetEquippedSpell(2) - Shout voice = Game.GetPlayer().GetEquippedShout() - if (left != None) - Game.GetPlayer().UnequipSpell(left, 0) - endif - if (right != None) - Game.GetPlayer().UnequipSpell(right, 1) - endif - if (power != None) - ; some players are overly clever and sneak a power equip between casting - ; beast form and when we rejigger them there. this will teach them. -; Debug.Trace("WEREWOLF: " + power + " was equipped; removing.") - Game.GetPlayer().UnequipSpell(power, 2) - else -; Debug.Trace("WEREWOLF: No power equipped.") - endif - if (voice != None) - ; same deal here, but for shouts -; Debug.Trace("WEREWOLF: " + voice + " was equipped; removing.") - Game.GetPlayer().UnequipShout(voice) - else -; Debug.Trace("WEREWOLF: No shout equipped.") - endif - - ; but make up for it by giving you the sweet howl - CurrentHowlWord1 = (CompanionsTrackingQuest as CompanionsHousekeepingScript).CurrentHowlWord1 - CurrentHowlWord2 = (CompanionsTrackingQuest as CompanionsHousekeepingScript).CurrentHowlWord2 - CurrentHowlWord3 = (CompanionsTrackingQuest as CompanionsHousekeepingScript).CurrentHowlWord3 - CurrentHowl = (CompanionsTrackingQuest as CompanionsHousekeepingScript).CurrentHowl - - Game.UnlockWord(CurrentHowlWord1) - Game.UnlockWord(CurrentHowlWord2) - Game.UnlockWord(CurrentHowlWord3) - Game.GetPlayer().AddShout(CurrentHowl) - Game.GetPlayer().EquipShout(CurrentHowl) - - ; and some rad claws - int playerLevel = Game.GetPlayer().GetLevel() - if (playerLevel <= 10) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl10AndBelowAbility, false) - elseif (playerLevel <= 15) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl15AndBelowAbility, false) - elseif (playerLevel <= 20) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl20AndBelowAbility, false) - elseif (playerLevel <= 25) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl25AndBelowAbility, false) - elseif (playerLevel <= 30) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl30AndBelowAbility, false) - elseif (playerLevel <= 35) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl35AndBelowAbility, false) - elseif (playerLevel <= 40) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl40AndBelowAbility, false) - elseif (playerLevel <= 45) - Game.GetPlayer().AddSpell(PlayerWerewolfLvl45AndBelowAbility, false) - else - Game.GetPlayer().AddSpell(PlayerWerewolfLvl50AndOverAbility, false) - endif - - ; calculate when the player turns back into a pumpkin - float currentTime = GameDaysPassed.GetValue() - float regressTime = currentTime + RealTimeSecondsToGameTimeDays(StandardDurationSeconds) - PlayerWerewolfShiftBackTime.SetValue(regressTime) -; Debug.Trace("WEREWOLF: Current day -- " + currentTime) -; Debug.Trace("WEREWOLF: Player will turn back at day " + regressTime) - - ; increment stats - Game.IncrementStat("Werewolf Transformations") - - ; set us up to check when we turn back - RegisterForUpdate(5) - - SetStage(10) ; we're done with the transformation handling -EndFunction - - -Event OnUpdate() - if (Untimed) - return - endif -; Debug.Trace("WEREWOLF: NumWerewolfPerks = " + Game.QueryStat("NumWerewolfPerks")) - if Game.QueryStat("NumWerewolfPerks") >= DLC1WerewolfMaxPerks.Value -; debug.trace("WEREWOLF: achievement granted") - Game.AddAchievement(57) - endif - - float currentTime = GameDaysPassed.GetValue() - float regressTime = PlayerWerewolfShiftBackTime.GetValue() - - if ( (currentTime >= regressTime) && (!Game.GetPlayer().IsInKillMove()) && !__tryingToShiftBack ) - UnregisterForUpdate() - SetStage(100) ; time to go, buddy - return - endif - - if (currentTime >= regressTime - __durationWarningTime) - if (GetStage() == 10) - SetStage(20) ; almost there - return - endif - endif - -; Debug.Trace("WEREWOLF: Checking, still have " + GameTimeDaysToRealTimeSeconds(regressTime - currentTime) + " seconds to go.") -EndEvent - -Function SetUntimed(bool untimedValue) - Untimed = untimedValue - if (Untimed) - UnregisterForUpdate() - endif -EndFunction - -; called from stage 11 -Function Feed(Actor victim) -; Debug.Trace("WEREWOLF: start newShiftTime = " + GameTimeDaysToRealTimeSeconds(PlayerWerewolfShiftBackTime.GetValue()) + ", __feedExtensionTime = " + GameTimeDaysToRealTimeSeconds(__feedExtensionTime)) - float newShiftTime = PlayerWerewolfShiftBackTime.GetValue() + __feedExtensionTime / 2 - if victim.HasKeyword(ActorTypeNPC) - newShiftTime =newShiftTime + __feedExtensionTime / 2 -; Debug.Trace("WEREWOLF: victim is NPC") - endif -; Debug.Trace("WEREWOLF: default newShiftTime = " + GameTimeDaysToRealTimeSeconds(newShiftTime) + ", __feedExtensionTime = " + GameTimeDaysToRealTimeSeconds(__feedExtensionTime)) - if Game.GetPlayer().HasPerk(DLC1GorgingPerk) == 1 - newShiftTime = newShiftTime + __GorgeExtensionTime / 2 - if victim.HasKeyword(ActorTypeNPC) - newShiftTime = newShiftTime + __GorgeExtensionTime / 2 - endif - endif - Game.GetPlayer().PlayIdle(SpecialFeeding) - - ;This is for adding a spell that simulates bleeding - BleedingFXSpell.Cast(victim,victim) - - if (!C03Rampage.IsRunning()) - PlayerWerewolfShiftBackTime.SetValue(newShiftTime) - PlayerWerewolfFeedMessage.Show() - FeedBoost.Cast(Game.GetPlayer()) - ; victim.SetActorValue("Variable08", 100) -; Debug.Trace("WEREWOLF: Player feeding -- new regress day is " + newShiftTime) - endif - SetStage(10) -EndFunction - - -; called from stage 20 -Function WarnPlayer() -; Debug.Trace("WEREWOLF: Player about to transform back.") - WerewolfWarn.Apply() -EndFunction - - -; called from stage 100 -Function ShiftBack() - __tryingToShiftBack = true - - while (Game.GetPlayer().GetAnimationVariableBool("bIsSynced")) -; Debug.Trace("WEREWOLF: Waiting for synced animation to finish...") - Utility.Wait(0.1) - endwhile -; Debug.Trace("WEREWOLF: Sending transform event to turn player back to normal.") - - __shiftingBack = false - ; RegisterForAnimationEvent(Game.GetPlayer(), "TransformToHuman") - ; Game.GetPlayer().PlayIdle(WerewolfTransformBack) - ; Utility.Wait(10) - ActuallyShiftBackIfNecessary() -EndFunction - -Event OnAnimationEvent(ObjectReference akSource, string asEventName) - if (asEventName == "TransformToHuman") - ActuallyShiftBackIfNecessary() - endif -EndEvent - -Function ActuallyShiftBackIfNecessary() - if (__shiftingBack) - return - endif - - __shiftingBack = true - -; Debug.Trace("WEREWOLF: Player returning to normal.") - - Game.SetInCharGen(true, true, false) - - UnRegisterForAnimationEvent(Game.GetPlayer(), "TransformToHuman") - UnRegisterForUpdate() ; just in case - - if (Game.GetPlayer().IsDead()) -; Debug.Trace("WEREWOLF: Player is dead; bailing out.") - return - endif - - ;Remove Blood Effects - ;FeedBloodVFX.Stop(Game.GetPlayer()) - - ; imod - WerewolfChange.Apply() - WerewolfIMODSound.Play(Game.GetPlayer()) - - ; get rid of your summons if you have any - int count = 0 - while (count < WerewolfDispelList.GetSize()) - Spell gone = WerewolfDispelList.GetAt(count) as Spell - if (gone != None) -; Debug.Trace("WEREWOLF: Dispelling " + gone) - Game.GetPlayer().DispelSpell(gone) - endif - count += 1 - endwhile - - ; make sure the transition armor is gone. We RemoveItem here, because the SetRace stored all equipped items - ; at that time, and we equip this armor prior to setting the player to a beast race. When we switch back, - ; if this were still in the player's inventory it would be re-equipped. - Game.GetPlayer().RemoveItem(WolfSkinFXArmor, 1, True) - - ; clear out perks/abilities - ; (don't need to do this anymore since it's on from gamestart) - ; Game.GetPlayer().RemovePerk(PlayerWerewolfFeed) - - ; make sure your health is reasonable before turning you back - ; Game.GetPlayer().GetActorBase().SetInvulnerable(true) - Game.GetPlayer().SetGhost() - float currHealth = Game.GetPlayer().GetAV("health") - if (currHealth <= 101) -; Debug.Trace("WEREWOLF: Player's health is only " + currHealth + "; restoring.") - Game.GetPlayer().RestoreAV("health", 101 - currHealth) - endif - - ; change you back -; Debug.Trace("WEREWOLF: Setting race " + (CompanionsTrackingQuest as CompanionsHousekeepingScript).PlayerOriginalRace + " on " + Game.GetPlayer()) - Game.GetPlayer().SetRace((CompanionsTrackingQuest as CompanionsHousekeepingScript).PlayerOriginalRace) - ; release the player controls -; Debug.Trace("WEREWOLF: Restoring camera controls") - Game.EnablePlayerControls(abMovement = false, abFighting = false, abCamSwitch = true, abLooking = false, abSneaking = false, abMenu = false, abActivate = false, abJournalTabs = false, aiDisablePOVType = 1) - Game.ShowFirstPersonGeometry(true) - - ; no more howling for you - Game.GetPlayer().UnequipShout(CurrentHowl) - Game.GetPlayer().RemoveShout(CurrentHowl) - - ; or those claws - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl10AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl15AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl20AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl25AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl30AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl35AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl40AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl45AndBelowAbility) - Game.GetPlayer().RemoveSpell(PlayerWerewolfLvl50AndOverAbility) - - ; gimme back mah stuff - ; LycanStash.RemoveAllItems(Game.GetPlayer()) - - ; people don't hate you no more - Game.GetPlayer().SetAttackActorOnSight(false) - Game.GetPlayer().RemoveFromFaction(PlayerWerewolfFaction) - Game.GetPlayer().RemoveFromFaction(WerewolfFaction) - int cfIndex = 0 - while (cfIndex < CrimeFactions.GetSize()) -; Debug.Trace("WEREWOLF: Removing enemy flag from " + CrimeFactions.GetAt(cfIndex)) - (CrimeFactions.GetAt(cfIndex) as Faction).SetPlayerEnemy(false) - cfIndex += 1 - endwhile - - ; and you're now recognized - Game.SetPlayerReportCrime(true) - - ; alert anyone nearby that they should now know the player is a werewolf - Game.SendWereWolfTransformation() - - ; give the set race event a chance to come back, otherwise shut us down - Utility.Wait(5) - Shutdown() -EndFunction - -Function Shutdown() - if (__shuttingDown) - return - endif - - __shuttingDown = true - - Game.GetPlayer().GetActorBase().SetInvulnerable(false) - Game.GetPlayer().SetGhost(false) - - Game.SetBeastForm(False) - Game.EnableFastTravel(True) - - Game.SetInCharGen(false, false, false) - - Stop() -EndFunction - -Float Property DLC1GorgingDurationSeconds Auto - -Perk Property DLC1GorgingPerk Auto - -Perk Property DLC1SavageFeedingPerk Auto - -Keyword Property ActorTypeNPC Auto - -Perk Property DLC1AnimalVigor Auto - -GlobalVariable Property DLC1WerewolfTotalPerksEarned Auto - -GlobalVariable Property DLC1WerewolfMaxPerks Auto diff --git a/source/scripts/werewolfchangeeffectscript.psc b/source/scripts/werewolfchangeeffectscript.psc index feac8cfc..cae27eec 100644 --- a/source/scripts/werewolfchangeeffectscript.psc +++ b/source/scripts/werewolfchangeeffectscript.psc @@ -1,41 +1,8 @@ Scriptname WerewolfChangeEffectScript extends ActiveMagicEffect {Scripted effect for the werewolf change} - - -;======================================================================================; -; PROPERTIES / -;=============/ - -Quest Property PlayerWerewolfQuest auto -Quest Property C00 auto - Spell Property VFXSpell auto - -;======================================================================================; -; EVENTS / -;=============/ - Event OnEffectStart(Actor Target, Actor Caster) -; Debug.Trace("WEREWOLF: Casting transformation spell on " + Target) - - ; set up tracking - if (Target == Game.GetPlayer()) -; Debug.Trace("WEREWOLF: Target is player.") - ; if this is the first time, don't actually do anything (transform handled in rampage script) - if ( (C00 as CompanionsHousekeepingScript).PlayerIsWerewolfVirgin ) -; Debug.Trace("WEREWOLF: Player's first time; bailing out.") - (C00 as CompanionsHousekeepingScript).PlayerIsWerewolfVirgin = false - Game.SetBeastForm(False) - return - endif - -; Debug.Trace("WEREWOLF: Starting player tracking.") - - PlayerWerewolfQuest.Start() - endif - VFXSpell.Cast(Target) EndEvent - diff --git a/source/scripts/werewolftransformvisual.psc b/source/scripts/werewolftransformvisual.psc index 48f31fd2..2dd33aed 100644 --- a/source/scripts/werewolftransformvisual.psc +++ b/source/scripts/werewolftransformvisual.psc @@ -9,8 +9,6 @@ Sound Property NPCWerewolfTransformation auto Sound Property NPCWerewolfTransformationB2D auto Sound Property NPCWerewolfTransformationB3D auto -Quest Property PlayerWerewolfQuest auto - Event OnEffectStart(Actor Target, Actor Caster) ; Debug.Trace("WEREWOLF: Starting change anim...") @@ -43,21 +41,12 @@ Function TransformIfNecessary(Actor Target) Race currRace = Target.GetRace() if (currRace != WerewolfRace) ; Debug.Trace("WEREWOLF: VISUAL: Setting race " + WerewolfRace + " on " + Target) - if (Target != Game.GetPlayer()) -; Debug.Trace("WEREWOLF: VISUAL: Target is not player, doing the transition here.") - Target.SetRace(WerewolfRace) ;TEEN WOLF - - ; Remove the transformation effect armor if he/she has it on. - if (Target.GetItemCount(WolfSkinFXArmor) > 0) - (Target.Removeitem(WolfSkinFXArmor, 1, True, none)) - endif - else - CompanionsHousekeepingScript chs = (PlayerWerewolfQuest as PlayerWerewolfChangeScript).CompanionsTrackingQuest as CompanionsHousekeepingScript - if (chs.PlayerOriginalRace == None) - chs.PlayerOriginalRace = currRace - endif - PlayerWerewolfQuest.SetStage(1) - endif + Target.SetRace(WerewolfRace) ;TEEN WOLF + + ; Remove the transformation effect armor if he/she has it on. + if (Target.GetItemCount(WolfSkinFXArmor) > 0) + (Target.Removeitem(WolfSkinFXArmor, 1, True, none)) + endif endif EndFunction