From 18ce431b26cedf3b363c55de20e3501a2797e4a7 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Mon, 4 Dec 2023 15:08:17 +0100 Subject: [PATCH] Added missing base + SKSE script objects --- scripts/action.pex | Bin 0 -> 435 bytes scripts/activator.pex | Bin 0 -> 441 bytes scripts/activemagiceffect.pex | Bin 0 -> 7497 bytes scripts/actor.pex | Bin 0 -> 14869 bytes scripts/actorbase.pex | Bin 0 -> 2643 bytes scripts/actorvalueinfo.pex | Bin 0 -> 1791 bytes scripts/alias.pex | Bin 0 -> 3949 bytes scripts/ammo.pex | Bin 0 -> 549 bytes scripts/apparatus.pex | Bin 0 -> 522 bytes scripts/armor.pex | Bin 0 -> 4983 bytes scripts/armoraddon.pex | Bin 0 -> 1169 bytes scripts/art.pex | Bin 0 -> 500 bytes scripts/associationtype.pex | Bin 0 -> 453 bytes scripts/book.pex | Bin 0 -> 574 bytes scripts/camera.pex | Bin 0 -> 1171 bytes scripts/cell.pex | Bin 0 -> 1264 bytes scripts/class.pex | Bin 0 -> 433 bytes scripts/colorcomponent.pex | Bin 0 -> 1206 bytes scripts/colorform.pex | Bin 0 -> 1124 bytes scripts/combatstyle.pex | Bin 0 -> 3260 bytes scripts/constructibleobject.pex | Bin 0 -> 1047 bytes scripts/container.pex | Bin 0 -> 441 bytes scripts/debug.pex | Bin 0 -> 2675 bytes scripts/defaultobjectmanager.pex | Bin 0 -> 540 bytes scripts/door.pex | Bin 0 -> 431 bytes scripts/effectshader.pex | Bin 0 -> 569 bytes scripts/enchantment.pex | Bin 0 -> 1149 bytes scripts/encounterzone.pex | Bin 0 -> 449 bytes scripts/equipslot.pex | Bin 0 -> 515 bytes scripts/explosion.pex | Bin 0 -> 441 bytes scripts/faction.pex | Bin 0 -> 3819 bytes scripts/flora.pex | Bin 0 -> 651 bytes scripts/form.pex | Bin 0 -> 5057 bytes scripts/formlist.pex | Bin 0 -> 813 bytes scripts/formtype.pex | Bin 0 -> 7963 bytes scripts/furniture.pex | Bin 0 -> 446 bytes scripts/gamedata.pex | Bin 0 -> 1898 bytes scripts/globalvariable.pex | Bin 0 -> 1023 bytes scripts/hazard.pex | Bin 0 -> 435 bytes scripts/headpart.pex | Bin 0 -> 1274 bytes scripts/idle.pex | Bin 0 -> 431 bytes scripts/imagespacemodifier.pex | Bin 0 -> 714 bytes scripts/impactdataset.pex | Bin 0 -> 449 bytes scripts/ingredient.pex | Bin 0 -> 1369 bytes scripts/input.pex | Bin 0 -> 968 bytes scripts/key.pex | Bin 0 -> 435 bytes scripts/keyword.pex | Bin 0 -> 714 bytes scripts/leveledactor.pex | Bin 0 -> 805 bytes scripts/leveleditem.pex | Bin 0 -> 1022 bytes scripts/leveledspell.pex | Bin 0 -> 802 bytes scripts/light.pex | Bin 0 -> 483 bytes scripts/location.pex | Bin 0 -> 1744 bytes scripts/locationalias.pex | Bin 0 -> 594 bytes scripts/locationreftype.pex | Bin 0 -> 456 bytes scripts/magiceffect.pex | Bin 0 -> 2501 bytes scripts/math.pex | Bin 0 -> 1436 bytes scripts/message.pex | Bin 0 -> 743 bytes scripts/miscobject.pex | Bin 0 -> 443 bytes scripts/modevent.pex | Bin 0 -> 952 bytes scripts/musictype.pex | Bin 0 -> 506 bytes scripts/netimmerse.pex | Bin 0 -> 2929 bytes scripts/objectreference.pex | Bin 0 -> 16307 bytes scripts/outfit.pex | Bin 0 -> 505 bytes scripts/package.pex | Bin 0 -> 525 bytes scripts/perk.pex | Bin 0 -> 1431 bytes scripts/potion.pex | Bin 0 -> 1298 bytes scripts/projectile.pex | Bin 0 -> 443 bytes scripts/quest.pex | Bin 0 -> 5314 bytes scripts/race.pex | Bin 0 -> 6618 bytes scripts/referencealias.pex | Bin 0 -> 6206 bytes scripts/scene.pex | Bin 0 -> 693 bytes scripts/scroll.pex | Bin 0 -> 1387 bytes scripts/shaderparticlegeometry.pex | Bin 0 -> 561 bytes scripts/shout.pex | Bin 0 -> 766 bytes scripts/skse.pex | Bin 0 -> 845 bytes scripts/soulgem.pex | Bin 0 -> 506 bytes scripts/sound.pex | Bin 0 -> 723 bytes scripts/soundcategory.pex | Bin 0 -> 709 bytes scripts/sounddescriptor.pex | Bin 0 -> 900 bytes scripts/spawnertask.pex | Bin 0 -> 907 bytes scripts/spell.pex | Bin 0 -> 1673 bytes scripts/static.pex | Bin 0 -> 435 bytes scripts/stringutil.pex | Bin 0 -> 1100 bytes scripts/talkingactivator.pex | Bin 0 -> 460 bytes scripts/textureset.pex | Bin 0 -> 593 bytes scripts/topic.pex | Bin 0 -> 464 bytes scripts/topicinfo.pex | Bin 0 -> 490 bytes scripts/treeobject.pex | Bin 0 -> 650 bytes scripts/ui.pex | Bin 0 -> 2070 bytes scripts/uicallback.pex | Bin 0 -> 1139 bytes scripts/utility.pex | Bin 0 -> 2658 bytes scripts/visualeffect.pex | Bin 0 -> 585 bytes scripts/voicetype.pex | Bin 0 -> 441 bytes scripts/weapon.pex | Bin 0 -> 3259 bytes scripts/weather.pex | Bin 0 -> 1107 bytes scripts/wordofpower.pex | Bin 0 -> 445 bytes scripts/worldspace.pex | Bin 0 -> 443 bytes scripts/wornobject.pex | Bin 0 -> 1629 bytes source/scripts/action.psc | 1 + source/scripts/activator.psc | 1 + source/scripts/activemagiceffect.psc | 448 ++++++++++ source/scripts/actor.psc | 980 ++++++++++++++++++++++ source/scripts/actorbase.psc | 116 +++ source/scripts/actorvalueinfo.psc | 66 ++ source/scripts/alias.psc | 198 +++++ source/scripts/ammo.psc | 12 + source/scripts/apparatus.psc | 7 + source/scripts/armor.psc | 167 ++++ source/scripts/armoraddon.psc | 41 + source/scripts/art.psc | 4 + source/scripts/associationtype.psc | 1 + source/scripts/book.psc | 8 + source/scripts/camera.psc | 45 + source/scripts/cell.psc | 48 ++ source/scripts/class.psc | 1 + source/scripts/colorcomponent.psc | 19 + source/scripts/colorform.psc | 28 + source/scripts/combatstyle.psc | 71 ++ source/scripts/constructibleobject.psc | 26 + source/scripts/container.psc | 1 + source/scripts/debug.psc | 115 +++ source/scripts/defaultobjectmanager.psc | 355 ++++++++ source/scripts/door.psc | 1 + source/scripts/effectshader.psc | 7 + source/scripts/enchantment.psc | 41 + source/scripts/encounterzone.psc | 1 + source/scripts/equipslot.psc | 7 + source/scripts/explosion.psc | 1 + source/scripts/faction.psc | 131 +++ source/scripts/flora.psc | 9 + source/scripts/form.psc | 280 +++++++ source/scripts/formlist.psc | 31 + source/scripts/formtype.psc | 137 +++ source/scripts/furniture.psc | 1 + source/scripts/gamedata.psc | 35 + source/scripts/globalvariable.psc | 34 + source/scripts/hazard.psc | 1 + source/scripts/headpart.psc | 30 + source/scripts/idle.psc | 1 + source/scripts/imagespacemodifier.psc | 16 + source/scripts/impactdataset.psc | 1 + source/scripts/ingredient.psc | 56 ++ source/scripts/input.psc | 38 + source/scripts/key.psc | 1 + source/scripts/keyword.psc | 16 + source/scripts/leveledactor.psc | 17 + source/scripts/leveleditem.psc | 23 + source/scripts/leveledspell.psc | 17 + source/scripts/light.psc | 4 + source/scripts/location.psc | 52 ++ source/scripts/locationalias.psc | 10 + source/scripts/locationreftype.psc | 1 + source/scripts/magiceffect.psc | 104 +++ source/scripts/math.psc | 49 ++ source/scripts/message.psc | 13 + source/scripts/miscobject.psc | 1 + source/scripts/modevent.psc | 51 ++ source/scripts/musictype.psc | 7 + source/scripts/netimmerse.psc | 89 ++ source/scripts/objectreference.psc | 834 ++++++++++++++++++ source/scripts/outfit.psc | 7 + source/scripts/package.psc | 7 + source/scripts/perk.psc | 31 + source/scripts/potion.psc | 53 ++ source/scripts/projectile.psc | 1 + source/scripts/quest.psc | 268 ++++++ source/scripts/race.psc | 231 +++++ source/scripts/referencealias.psc | 414 +++++++++ source/scripts/scene.psc | 19 + source/scripts/scroll.psc | 54 ++ source/scripts/shaderparticlegeometry.psc | 7 + source/scripts/shout.psc | 10 + source/scripts/skse.psc | 20 + source/scripts/soulgem.psc | 6 + source/scripts/sound.psc | 19 + source/scripts/soundcategory.psc | 20 + source/scripts/sounddescriptor.psc | 13 + source/scripts/spawnertask.psc | 58 ++ source/scripts/spell.psc | 79 ++ source/scripts/static.psc | 1 + source/scripts/stringutil.psc | 45 + source/scripts/talkingactivator.psc | 1 + source/scripts/textureset.psc | 13 + source/scripts/topic.psc | 4 + source/scripts/topicinfo.psc | 5 + source/scripts/treeobject.psc | 7 + source/scripts/ui.psc | 119 +++ source/scripts/uicallback.psc | 46 + source/scripts/utility.psc | 83 ++ source/scripts/visualeffect.psc | 7 + source/scripts/voicetype.psc | 1 + source/scripts/weapon.psc | 122 +++ source/scripts/weather.psc | 61 ++ source/scripts/wordofpower.psc | 1 + source/scripts/worldspace.psc | 1 + source/scripts/wornobject.psc | 62 ++ 196 files changed, 6803 insertions(+) create mode 100644 scripts/action.pex create mode 100644 scripts/activator.pex create mode 100644 scripts/activemagiceffect.pex create mode 100644 scripts/actor.pex create mode 100644 scripts/actorbase.pex create mode 100644 scripts/actorvalueinfo.pex create mode 100644 scripts/alias.pex create mode 100644 scripts/ammo.pex create mode 100644 scripts/apparatus.pex create mode 100644 scripts/armor.pex create mode 100644 scripts/armoraddon.pex create mode 100644 scripts/art.pex create mode 100644 scripts/associationtype.pex create mode 100644 scripts/book.pex create mode 100644 scripts/camera.pex create mode 100644 scripts/cell.pex create mode 100644 scripts/class.pex create mode 100644 scripts/colorcomponent.pex create mode 100644 scripts/colorform.pex create mode 100644 scripts/combatstyle.pex create mode 100644 scripts/constructibleobject.pex create mode 100644 scripts/container.pex create mode 100644 scripts/debug.pex create mode 100644 scripts/defaultobjectmanager.pex create mode 100644 scripts/door.pex create mode 100644 scripts/effectshader.pex create mode 100644 scripts/enchantment.pex create mode 100644 scripts/encounterzone.pex create mode 100644 scripts/equipslot.pex create mode 100644 scripts/explosion.pex create mode 100644 scripts/faction.pex create mode 100644 scripts/flora.pex create mode 100644 scripts/form.pex create mode 100644 scripts/formlist.pex create mode 100644 scripts/formtype.pex create mode 100644 scripts/furniture.pex create mode 100644 scripts/gamedata.pex create mode 100644 scripts/globalvariable.pex create mode 100644 scripts/hazard.pex create mode 100644 scripts/headpart.pex create mode 100644 scripts/idle.pex create mode 100644 scripts/imagespacemodifier.pex create mode 100644 scripts/impactdataset.pex create mode 100644 scripts/ingredient.pex create mode 100644 scripts/input.pex create mode 100644 scripts/key.pex create mode 100644 scripts/keyword.pex create mode 100644 scripts/leveledactor.pex create mode 100644 scripts/leveleditem.pex create mode 100644 scripts/leveledspell.pex create mode 100644 scripts/light.pex create mode 100644 scripts/location.pex create mode 100644 scripts/locationalias.pex create mode 100644 scripts/locationreftype.pex create mode 100644 scripts/magiceffect.pex create mode 100644 scripts/math.pex create mode 100644 scripts/message.pex create mode 100644 scripts/miscobject.pex create mode 100644 scripts/modevent.pex create mode 100644 scripts/musictype.pex create mode 100644 scripts/netimmerse.pex create mode 100644 scripts/objectreference.pex create mode 100644 scripts/outfit.pex create mode 100644 scripts/package.pex create mode 100644 scripts/perk.pex create mode 100644 scripts/potion.pex create mode 100644 scripts/projectile.pex create mode 100644 scripts/quest.pex create mode 100644 scripts/race.pex create mode 100644 scripts/referencealias.pex create mode 100644 scripts/scene.pex create mode 100644 scripts/scroll.pex create mode 100644 scripts/shaderparticlegeometry.pex create mode 100644 scripts/shout.pex create mode 100644 scripts/skse.pex create mode 100644 scripts/soulgem.pex create mode 100644 scripts/sound.pex create mode 100644 scripts/soundcategory.pex create mode 100644 scripts/sounddescriptor.pex create mode 100644 scripts/spawnertask.pex create mode 100644 scripts/spell.pex create mode 100644 scripts/static.pex create mode 100644 scripts/stringutil.pex create mode 100644 scripts/talkingactivator.pex create mode 100644 scripts/textureset.pex create mode 100644 scripts/topic.pex create mode 100644 scripts/topicinfo.pex create mode 100644 scripts/treeobject.pex create mode 100644 scripts/ui.pex create mode 100644 scripts/uicallback.pex create mode 100644 scripts/utility.pex create mode 100644 scripts/visualeffect.pex create mode 100644 scripts/voicetype.pex create mode 100644 scripts/weapon.pex create mode 100644 scripts/weather.pex create mode 100644 scripts/wordofpower.pex create mode 100644 scripts/worldspace.pex create mode 100644 scripts/wornobject.pex create mode 100644 source/scripts/action.psc create mode 100644 source/scripts/activator.psc create mode 100644 source/scripts/activemagiceffect.psc create mode 100644 source/scripts/actor.psc create mode 100644 source/scripts/actorbase.psc create mode 100644 source/scripts/actorvalueinfo.psc create mode 100644 source/scripts/alias.psc create mode 100644 source/scripts/ammo.psc create mode 100644 source/scripts/apparatus.psc create mode 100644 source/scripts/armor.psc create mode 100644 source/scripts/armoraddon.psc create mode 100644 source/scripts/art.psc create mode 100644 source/scripts/associationtype.psc create mode 100644 source/scripts/book.psc create mode 100644 source/scripts/camera.psc create mode 100644 source/scripts/cell.psc create mode 100644 source/scripts/class.psc create mode 100644 source/scripts/colorcomponent.psc create mode 100644 source/scripts/colorform.psc create mode 100644 source/scripts/combatstyle.psc create mode 100644 source/scripts/constructibleobject.psc create mode 100644 source/scripts/container.psc create mode 100644 source/scripts/debug.psc create mode 100644 source/scripts/defaultobjectmanager.psc create mode 100644 source/scripts/door.psc create mode 100644 source/scripts/effectshader.psc create mode 100644 source/scripts/enchantment.psc create mode 100644 source/scripts/encounterzone.psc create mode 100644 source/scripts/equipslot.psc create mode 100644 source/scripts/explosion.psc create mode 100644 source/scripts/faction.psc create mode 100644 source/scripts/flora.psc create mode 100644 source/scripts/form.psc create mode 100644 source/scripts/formlist.psc create mode 100644 source/scripts/formtype.psc create mode 100644 source/scripts/furniture.psc create mode 100644 source/scripts/gamedata.psc create mode 100644 source/scripts/globalvariable.psc create mode 100644 source/scripts/hazard.psc create mode 100644 source/scripts/headpart.psc create mode 100644 source/scripts/idle.psc create mode 100644 source/scripts/imagespacemodifier.psc create mode 100644 source/scripts/impactdataset.psc create mode 100644 source/scripts/ingredient.psc create mode 100644 source/scripts/input.psc create mode 100644 source/scripts/key.psc create mode 100644 source/scripts/keyword.psc create mode 100644 source/scripts/leveledactor.psc create mode 100644 source/scripts/leveleditem.psc create mode 100644 source/scripts/leveledspell.psc create mode 100644 source/scripts/light.psc create mode 100644 source/scripts/location.psc create mode 100644 source/scripts/locationalias.psc create mode 100644 source/scripts/locationreftype.psc create mode 100644 source/scripts/magiceffect.psc create mode 100644 source/scripts/math.psc create mode 100644 source/scripts/message.psc create mode 100644 source/scripts/miscobject.psc create mode 100644 source/scripts/modevent.psc create mode 100644 source/scripts/musictype.psc create mode 100644 source/scripts/netimmerse.psc create mode 100644 source/scripts/objectreference.psc create mode 100644 source/scripts/outfit.psc create mode 100644 source/scripts/package.psc create mode 100644 source/scripts/perk.psc create mode 100644 source/scripts/potion.psc create mode 100644 source/scripts/projectile.psc create mode 100644 source/scripts/quest.psc create mode 100644 source/scripts/race.psc create mode 100644 source/scripts/referencealias.psc create mode 100644 source/scripts/scene.psc create mode 100644 source/scripts/scroll.psc create mode 100644 source/scripts/shaderparticlegeometry.psc create mode 100644 source/scripts/shout.psc create mode 100644 source/scripts/skse.psc create mode 100644 source/scripts/soulgem.psc create mode 100644 source/scripts/sound.psc create mode 100644 source/scripts/soundcategory.psc create mode 100644 source/scripts/sounddescriptor.psc create mode 100644 source/scripts/spawnertask.psc create mode 100644 source/scripts/spell.psc create mode 100644 source/scripts/static.psc create mode 100644 source/scripts/stringutil.psc create mode 100644 source/scripts/talkingactivator.psc create mode 100644 source/scripts/textureset.psc create mode 100644 source/scripts/topic.psc create mode 100644 source/scripts/topicinfo.psc create mode 100644 source/scripts/treeobject.psc create mode 100644 source/scripts/ui.psc create mode 100644 source/scripts/uicallback.psc create mode 100644 source/scripts/utility.psc create mode 100644 source/scripts/visualeffect.psc create mode 100644 source/scripts/voicetype.psc create mode 100644 source/scripts/weapon.psc create mode 100644 source/scripts/weather.psc create mode 100644 source/scripts/wordofpower.psc create mode 100644 source/scripts/worldspace.psc create mode 100644 source/scripts/wornobject.psc diff --git a/scripts/action.pex b/scripts/action.pex new file mode 100644 index 0000000000000000000000000000000000000000..3c991c3030fd514beae6f8d0abedd581628f0ea9 GIT binary patch literal 435 zcmY*VyH3L}6uoXj+N3Ry0U++iWsOUbL!l-hGJK?qwcJH3;)2Eu=5K{ zT-yxb;rN{UI@kVw{P;{dz<`c8UcEzcDV)^md}{?{i&kzL3&Z>Ayqe6ahnw50(Fl$p zi$&Dao1mMy+9BitXDcnVuZ03wqE6B^z51rQr3azeH6Vs{1%@Vq08RbB$ z3RhA^b@qP&gRV8o`y&^vF{o%MZx{Y$`ug<-9eOMa7)U}$DrKnnGMI&;nUsy&0qj0 z(E06?$@Um|$~hx+#+L0q?P*JeVPh#@L0p=mK!WDTx;KcY>Wy literal 0 HcmV?d00001 diff --git a/scripts/activemagiceffect.pex b/scripts/activemagiceffect.pex new file mode 100644 index 0000000000000000000000000000000000000000..7402dacd65f27ed2b73298ae61f665b03c4b0519 GIT binary patch literal 7497 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 Wg5&obZ2qUS`)V&}zoh)jD*O*eNfJ!} literal 0 HcmV?d00001 diff --git a/scripts/actor.pex b/scripts/actor.pex new file mode 100644 index 0000000000000000000000000000000000000000..705819fbb893f93c5c646c38c74bd7da3eca2804 GIT binary patch literal 14869 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 IP^s_#0PQm;i2wiq literal 0 HcmV?d00001 diff --git a/scripts/actorbase.pex b/scripts/actorbase.pex new file mode 100644 index 0000000000000000000000000000000000000000..f8b1ddbeb77a7793ad59e896649fdff71a6ce7bc GIT binary patch literal 2643 zcmZux*;X4z5UtUMgd{MwS&SEiH@xEPiOGsE0wp#O3qy9F(WpTa57WwYi{-EK3HgjX z<(&LLKEO|@>Y1WvbleZpy|=5Ys;jE!?fzf?v)4XI@eNn8tDrJ#oBnQ(h+au{l;Birx~bjuI4h+quqOV<-nLeLSX zP;IMqr9`NGH-L$@YKOQ(6fF%(ei2yG8dBFmhjZF{VO zYX+3wjuz)b9F`&dMQd&Zjzrb*ZR5git+qmiw| zA9baLg?}NVLElu+GU^erok%EwEyHW3D4pDN{b)@FGBPJEqm!M12!goTRiv1lQD7?Z zx+_lgFcRn#rV`I7iM;Pg-xKE6)H=&(SUPX~5XMk8U_4P;ZUp0rNSFfeilae5Q(5(7 z*z>h7Lma76-|zKA2!)o6j-X&>uh5h-fP5Rrv*=Uxp`fYeg)JEhD7$ZxAt)vPb+_9I zgcu~W7!O8qH9EqAJZ%j_kAgLH-_;Fu;%l!j6f$2mWcPO*-iDS)MMDjQ=O6f@*HGs9 zltXb6zn)S@M}Bw+m6a9BVUMmS!}YKiZx@sZ4q$9$C8jkQHpQVI#;n*1q^lw4DX6BW zx$1W9D{wrh*uoZ%-2mTFna2vsDv+8+77B_AUeHzxem`WK$y zcgcYqeXR)O859^48I%}|F(@;rFc@c0Wl&>KXE4EFlEDQAQw%OLxWwQxgJ}jc3}zY3 zF}T8Dp21ZH*BD%9aD%}Dg9d{|1~(bpVsM+m9R_z9EHSvp;68%~3?4Fg#NaW5Wd_t5 zTn@ZPe>r&Hfe(n{%Kr@?8sx+re;sV)7kh2rKB}#h3Jus`|2F4~Ha!P6p>4cRrp0fQe9QKBaSFvz;d1)ecX&No*Q}KTT$Bg! zoKuN?O<`oyGw#VP>njH@&<7Wp+MKbxnzr16E!akDT2JhT13Oq;T94l)-cO6)!%Jhi z1RW0Kz;5ER1g}^$MsNcICh0imktfpr_LBPLuwVP}A^LUZu}ko1wCDFQdgglb?+WlR z9pDEnCapVZ@kjW{h<9!I4TnW*MTOlsFYIkRk%>HKEgkq7Eos%$;xEb7F5y_87va}L byfPZOf*Y9tvvwfk+@?o`nRK+@;uQV|&cwd! literal 0 HcmV?d00001 diff --git a/scripts/actorvalueinfo.pex b/scripts/actorvalueinfo.pex new file mode 100644 index 0000000000000000000000000000000000000000..77ee87b54dc7cd24d4a9cb6945760cb9e202a44f GIT binary patch literal 1791 zcmZux=~C1{5boLR1uQHqH+U?F;)&qR`U@1Otpc<}@rPwuF`0!(c4jM?<#-BT#YgZ- ztnvkX0Dsv%lObVcwn)DI`s-tQCj9;Q^OutY2DrY={rCg5HBZTC-wnIGDOz%=6MN)? zmoRkEgIsxwt3Bl^4t-lvNdqU5yr^71+jZLRt~~vx+yZR?L+a)vPGPjapr^-HGI}$u??*S(5tGH51Y#f$<(~LZ8>) zIPLH#;KJi@UO&sN`M%DY;iyt-ZpvtzAM+3>Dn0t)7pUzaijho5$! zNWFgg45hA+CxZJ>cEj+UE3p5?&93mMow_=7RXyUW8;KYVUiZwl>ao6p*p0b>s~02U zlR$ZgoI--QF28=`o~kRUGsGS41+9SlNshAMC&`6wG-wO^ZUp^OYzW`b`Iv_-s7SHS z4+4>JVGt`Q(}=bSRg%8UaTP*3P5XWQh8g^B806@aBH&n%x1a#%E#i;d^wgk4Yz2SB zmNki>&w_pn1}q>YE(U`Z3|UaMVAz5Y3u+dOS}6L>k z46c$%#&@`;5i>SE8BT@vul)|bu0x%qfU__pX^3Pnhg5DFl??J|(fkO6Bu# z1C51LUPLRA&!c=H88Hf|B*|$F!A+Bc{wdyqMNL*NBdh4dK4^PpO{WBd+i*v-Ww?7$ zHJZ(JFDWpRhMHVcaNmYGI@bftvxI-NW>a-qD2L;DXoBgYFnEfVzLkTR0R6~5%dmJ<=i5$;Po{P9@El(J*Ya34YBibla2l1)dR(6y dwr9sWkySO4(1A3c*~wrp(br4VvU!rh{{wn2JBa`Q literal 0 HcmV?d00001 diff --git a/scripts/alias.pex b/scripts/alias.pex new file mode 100644 index 0000000000000000000000000000000000000000..b61bb0ebc54a9ad3ea2d5ecf6c487871d6307352 GIT binary patch literal 3949 zcmb7`X;vFY5XVabw6L!RY;4Q>zVCQtF~l)OHUgZ)PMk(+p)sQ#y`GVITp;Jk5pt5e zmjmPi`Q)nZDfi6aFPRU_um4q3U0q$>;=lKQ{oRv?9N_cm)Sv%CdBOKYc)b(WNrC|S zjDT2Ll~FAck%aPU5Cs;8QLOGOPwl?z$}oc24Y})uk<=@JUQk|JL|&j?evvAI;e=_e zT7#LyxP}3IiR!BG)b}lG0fwJG^vzbMK`D(T46&3<#Y(H9EjPWkgp&zxJ9WlkH0j_= z*@3x)vZ+OVPd2CmpYH(t)4(n$?+X%-9gZP*ufjV&h`tA;up`#D61I7sgUyj5L*!Fk4bX=&ve*YDX$6 zAn}qPgc2r_F@uI}yL6B@EYBW_9a};etVz}Q=6EC#bP0>Cg+0~jWhX7Tk8gc(Aaznq zp2{U1gkei~dP6oLok+?wi3LlzF13W(m5@wmp&sEj*69L)bV5lB?n82zOl93$4;nJ= zuyiUZ({NR##)E-c#1pD)E&B2PQs%5n7^nxT;Za7yheFG1G;o`G*8?S?Uzkic4>}Th zUg34uyBJ_wmBb!ZTxuAx7Xg+W(TT)e`mKRn+y1^?1`(9LU zp)Cra)W$xur_EmD{i12+`hx51Tk!)CL2*wWEMYz2(MngDwPHXKah%YG56l&aF>xp> zVMo@zriYW5X`!U#zO8C`exAye%@NBVnJ79f$si~MTmWIP-*I*4Wpvz zE+KQcGmJ2dGK?{dGfXf{GE6ZXVVGu^VVGq& z%5aQfj^Q}N35Jsl6^2s`ry0&LoMkx2aGv1;!$pQm43`#VS00vfuuMaI`u@N-k^O7m z3-AP9T08v@xB{!>3U{1n#?S{puvZ>l!H@77){Ny+)^p4Wd3XcsP(^Qg=GZ_pzr}d; zjI)@>WRr1Evcb6Fp9?Hdp6}w>FMdya=0yAP3l?bRjX0g#EK^&-;bD9U zo16l@AG*)1e9Z|t*oxykccS%r>;zZkM^3a}!&%`d3$&NXV)nvzI?)n)QX!L`{mzhs z_wbXMY08Oq<^d--ulr84Ub8G@)4Aykt_Y{FnNr0pvlo?|Q#r>XZO+ee|D9%$JX!2P z@fVv&4nCNj`iN4`GBpAsFsh=$*7So^oYp4n24 zI)n8*#sb9@SlgYrzVptIgL>R?w^*dO)NzftTaGw`je9REoXrYFC#1J~!WnF=6D-&v zWx58E2Uzr@ST8v4yz@iDhVJI&y%6T?Y4z#JCW5Z=< za7X)!6Z7W0v-cS`Bzt4XiFRpMo!~n10gIHu9%k?%Ugabk_}t%Mfx41U^;0MInyYdH SuQwmspyDti?7(5JXN0db&-d*B literal 0 HcmV?d00001 diff --git a/scripts/ammo.pex b/scripts/ammo.pex new file mode 100644 index 0000000000000000000000000000000000000000..63c00b2e14b74f9145392103b9c843deea74554c GIT binary patch literal 549 zcmY*VOHRWu5FMv!n*R7hC01s|jy>5?K`S;0sS+$vNT#h(;z72n-i9-91Wtm)0k{Aw z#z`u*v#{TLW50Qtzvr*-RsaIHUM@a=A-*X~x_Y;nS6~F8=ZxYhx|vHILU&4zY8c(y zF%=Gm+zhr%0y-L`#+Ds3Dw?DIt6yjc`3#Y5ql8x@GF5 zT`QL@(K1t3(yO~KDTPL>7Q zw`Pb_Z32rf48hTV7Zp-n8E*oms;deOJ8RzTJcX~W*7gB0FGfJiugimI1-#B7V9j4G zXbb3g>f;5v4H8T4@0eQ?NSi#<9`yMfuoUeJSQoIttQkHKu*rE=xBjTyza6G6t?-k5 V*a_qODGs=g%_OTT0lVD7@eN!2ZA<_F literal 0 HcmV?d00001 diff --git a/scripts/armor.pex b/scripts/armor.pex new file mode 100644 index 0000000000000000000000000000000000000000..3ca5cf3ca0c7822ab982b2fc9c6924b30bc6e605 GIT binary patch literal 4983 zcmaJ_>v|K{72T3$uq|T@+55 z9CyhHhm>6fWmiGjRZw;nlwAd7S3%iTP<9oRT?J)VLB&;2aTQct1r=98#Z^#o6;xaW z6<0yURZwviOt}iC#${kGOqbFi4P|gHPU8;T4dZgqZl(3bAZAW2l4$KgK{RqH{Nw!$b?zsrXgk~cWJvvI-Z!{FLhhYc+xr?HFcY{kxnWG0T& zL^fDek-Qo6e9GR%uoYhmX_;-uEw!<$ z1ha9QcG&}dexs#r!R$CnWR#|~o|&YGg{(EwMjQoA*->xQYGEV=q-aUs0$N{4n5yV@ zzkr@LW#{yC8n)Jt%jkTNydG|C#_ift+U8vrlCZfdMXh3*y2H4NmuJIP&n;R4EUTfo7hw<%aCU6tg4+qDZA|ad2M@f)7f18t++O`C4Q zw$i6$M3Xt&!3dhl1nIIIn%#)1>`^JL2WhDtrW@@j0SQahjdmMbw3O(%gv`#V%!N`| z=g~33$Bl5^wg&5(NG_5A_E?wD-ccnJu-L#pvG%fSN2gEt!jjEKTCImv)<{b6<@dvC zT1sOTnyiP_#%d$18L0zNxY^M<6h~(wtQ{XL!*Mhdt~H_#GvZIkur|sb3#(=+JM++u&hhOm$AsyZ9&+1IJV7rBwr%Af>_ z6Z&<8uE>O2DlnxETO;rMvffA)Cf@%GdjD0;0UvTy@jmg&)x2^wQ!Yek4G(@Vbkz%8 zHKA(=U6rTN)w;G)e{wK3q->S(zXaaLn(=xmGxDvne0L2hezm4ot!b*YkhqE0NtCrb zHhnm&w~h*SQ_N?EoUEIux%(MsGfi3KXJCPM{rH}PrWrQG&X zZkv?fLFhIN_cK0kQ&2w7G*3?FOdZNPor4b* wtN5<-#NGD9-8SOBhtS(HW;5rpPu=bRil5_-m*bAf@qOgDBhTXB8Sdln|J}ao@c;k- literal 0 HcmV?d00001 diff --git a/scripts/armoraddon.pex b/scripts/armoraddon.pex new file mode 100644 index 0000000000000000000000000000000000000000..039a6da5e6ef7039611bb4c6eb3c9587b54834f3 GIT binary patch literal 1169 zcmZuw+invv5Ix@A+%JXFw6xr|+)_Y7ypp$8A{7sfs-}WRwB2=@g{&Q|9m>z}4}1b& zg2V^#13WSI#@(dCt5|2wjL(c`oWCD`{_;IA(E7Ch;}5!rc_#D2B$49vT*ZdRD>O@% z?D{d+V;yOZ#7kSQw4wW4U z)liHhn42-Qto$j@l@xfpE~2hd9Z$JYNmVE>KJ!?IT3S&x=W#kod9swP3x2hn_+Vge z^C8O7l;WL8mgy9qP0*I&h+n3{a_&w2Mwi|UgJ+(S0lou)0~H6V4%8f|JJ4{T=|IbY zwgVjpOh#G^8=$-g^m(|&aNAIZ|Bg+ISYgx7sLBo8DQshIS))h0x680iQVcy)IwRj6 zVKlK*gq#1*T?#a-j$KCv*uy>RxQ_>TNI$dMWdOsY<*9~EM&4zU(7H)LAZ8Ri`c|WTl6qF?Gd#CZeWLswh69Ed41GJx4y7eO Xu`gFxRLfi*R$EY`wk-4cH~aGs66Dq- literal 0 HcmV?d00001 diff --git a/scripts/art.pex b/scripts/art.pex new file mode 100644 index 0000000000000000000000000000000000000000..434b5d09b6bb52ce4c824f458ad38a2603455307 GIT binary patch literal 500 zcmY*WOHKnZ40Sp~zf=Aa602dwjy~ty>FOv6OY`?_$efs=LTA+aA`QqaTIyauKmO+aEr;spZ(48PnsU(En#F5*;jKw=w z;o_mB8nWpw8)#=ML&n*10qxpU6O5WHxT#i>(OGZw0Nx4T_c^jBuu2}7rTWeYBMufHT}94*Ue*!LRvnS z9{SFXY}NP#T+ASI_7>;HMr}KwZ%BC@3R*HA0m&AK&Y@sWwidJ%bc9O0LpLJTaM@GN z=|Ml9$3>kh7;tsANs><)a)w00;(kOd94@t$^ z2NK|7J+t1OS?}iI{WGpX1bpQF;tlprt<_RxPHDP(De$a-#|1WK@#$dEu6s z6LzhfT%u*BtkAPZlukI!6ooBNs=2~k*kIEnTz|VvoKduZR+@UzX=b3U>74TFIkC8! zLnBQq+SN3~g`$cb{T;xdD-C&n6tXl1iHGubVN;izk5{PiXQL1Uh&eJ#0JfrPpYR0r xfPT2YYY;;Nn!eb#x1i0j!>RZnf^GyoWKrmbnPtJqbK1xMf{NL+veuwtAv z5@iD3^>^?dpMjpjh><@L%WPQf{R#~C$8WG6PZgw{w~UBW_KQI?hV zQZfq0=APmd?Xh`?mlRJkLMPEGl~!sM^Mi#Z8i!NlfL&C!Y?*Yq*Y(bno#rKRl~%4TRp zQAxX64QMV^$?B8h8{Syi;>#JXb|d9v*ST_uC`{IQPKsl?0M+Wg5b&A=YHn{1copy~ zP_KY{$tBQmR}D>pmZPrT&@PbJa(4&Ztb=ahGworI&wZA>zQBRNA+us!PvD4sR*(Ov g@NrUh+lE6Or@KOcvt6O_U#RiWewo0X;(|y00`j?Q{W#h#)LD{1jXNsi_bd#P2;^X)RK7vnT z;=z~jWYsjiutZIqNv6O0>Z`A+d-~VKx9>p#1km&0=<83Yy^7~(;wOtNVGfQUbPVCj z8QPJJEkgB7TkT+rNT+ad=lvoj$-AjE>030JR?sEMg*LNvC~=maPsS40P`@J2$Iu=9 zNpVGzqEGUnG?{gtyH1_G6sxK9Z|c1isT*3o#7n8%25MTJs?_0nqE#xb)GD4qIF)IN z3QEJ7jxCf21B>&;Qz*XC3L%*2mFJ#8@LE}@4hEbW#|FZYHBw!|@o=dU_KWN^wvj=* zG%BM2qhx6eDjQ|_36r}U;rZ!`S%V466{gX8id-x+CyW@ZrA?-ki`VhzXkzpn9{)#` z)$ro_SQ|s0i|qBsPng)q>U_*>fr*?*>gEQmC|tWqiy6)){wDo^7Tp*D1-?WK0uPEF zlspJMCE(ioXR91VIal*sot2O1c(#Ec|0R8-LxJf|J0o;W))!*AN l`O+fd{w@&^@xT!R9+HO}CO8n#reC?~08MhEJh81E_BV&@(2N76unNIJ!x7B6w2nZm9?xdq%1J$=#A8MhQ z8rw=M3p)@uL#>j%iR6U3paT)=NJ%R+chXI*ML6am0q;o7Nu(009B|5-I*0S_pmXjm zBdC)t6~m`($$l&(r&Jv6s|oTpaI~Kt$5BX4l(3tf9q=ecp}=|!Os3Ey6rX(HuN>1d zDC*8cJR`P3C5MqIUc^)#N5dgY@&_t8BY#&(rkWVpe3e10gr>SUF0%T4rDAI2qv(qi zGZN7*i{t=(m(ew~EZ~L>jYC!J;%!xqqM)C}wLI&ZjCyW@uCqBXsYc&Un zH=Je8sWr8#(oMQWx3TYF2iR-acd^ZCObtD{hcIR>(tQ`ML=Ry3u&^$}dObJ6`6GIa z?-NMn6_1{J^b9PYamSvm{5H7TNhiK)Dq8(f=YLbm2c4h8jgRVAY8DK1H zV~|{Iz3m`LTGQ}R6Tp`8|%$0N*6oree52k+A1tMry=2?yK0g&X6xL* zSkoO9-3b<}Elf3~xKrdg|0~Pz;~RSXSmCoT0?v#=0sV$=;te8Si4He=kJkW(zVDN` j5HNxO#xQ9~0aI28m@yTc3pf&R%*gxCSj&B8PyVpKjznKw literal 0 HcmV?d00001 diff --git a/scripts/colorcomponent.pex b/scripts/colorcomponent.pex new file mode 100644 index 0000000000000000000000000000000000000000..66315f4d8b0aeee859f04eb2b789abde833d1797 GIT binary patch literal 1206 zcmb7C%We}f6ur*m{c0N?h4Sc>00ksiu^~HJwSf%_B9$d_XPnHSsU3NoMEn(>z#s4j zNG$jXR@`fknKa40RhiPK>T0f}kml7qk4S?T z(7&!A*BlEoG294fjg?Uj68ScpCmiaCK8o1d###so4P;KTg|N~)tUXHLW}&%Bm9)+a zPKM^>UkW0dg0)CN~QH^3&qaL$2gUEJIs~_-C;pN$qG%X^LE=3%!5ebA^bzlg}7 z&9=?wB1)$zu5*o>QmkC()@Ve%FSv$kF0v`S{*O)Y75^GewYu`p95857dJm`AR^Pum+jt9FQ?0G=D!olDMl?vQsaEqqI{lH4deO(>E z9^7_%fcAZy+=07fhc;HbFu+0rjonT6LE&z0b2mzN8PP9E*YIAET`Pss-6=`uzF)Yz zo5F)a*x3{w7F(>ALYZIRMz*&7Os{mhog5-TqXHouS!6%#fWaet9z%Fsl7J6n2u~cr j;3+O)aEw&2k9Wo38P4nz>fvJ4ksYkDc%4Idz83cv`rg7p literal 0 HcmV?d00001 diff --git a/scripts/colorform.pex b/scripts/colorform.pex new file mode 100644 index 0000000000000000000000000000000000000000..ac1ee8a82411925084e2f04fcd8f95b788bad679 GIT binary patch literal 1124 zcmY*X$#T;`5bg24#0eyT@vab-8^yl(7z!IM9B@@QQbL-pTL(;#Ru>K zaN>2_lUSOP=DnVN^Ll#p@5|3$#R4h9^Y!@0A8Ng`3!6@Cx_rFKA`a6-s$T^`Yg6rJ zE_9meQ|s&oa!`_}HuI>0*k>J!V47-esEWwxVy%gnK45NPo`r6mhAy#2GS5OzXhzn= z2?xUkRpv%fQV;7o-}#CIityv`$l`2AP}-`)y8Do-Ay5wf}Q(^umKD9=!J8jR(&>cWjn(^Vj*C8n`e;1-?cGMGs0Ils%{rR;w~Nv&yt7gK3TFfefZ~rbjZE!lg)U8BCi@ zdol{Nr>Mn2JnAp)3sM`7FKf%#R@V7Hyg@gmqAF$yijWRLi)}?EMMsJbbrHJu=DsGEugTi-s^16)I{E5n@ca7S5FBow|wD2Hfs&UXZ5 vkn_q2ljP5XV7VzRx7So!GQx=_ zydyJ~48r6QgAl41nL3h6X1ECA@2wUSX?(`s_qZZjsWDqw2IVM`z0+dg63B;VGH!nC zB#f$Rhl+@iSy10I&az^2V11yX&6=jRang1i4Xj2-_SDc)wAC`!JS6@pXwuCy7aQmL z1jXqS6knepd-?>`>Ju!xPwgD`36|BTwuXIzW%s#>+dou_Mkf&1ZnGrcM2OBmWS=Fz zh;2_qh0Ew97Hu;ZeLAM?3QapkS+kW7ERr$Lms_zt*=inAA9BQB1j& zXAYcm*{}5|{~R;kgs#Y@o|Qgu-+n@LTFVq?vh9f|?id4xJGPbLj%|7Aj<0RtQrPs%N&R?gTAH$6>L*6Y!)HxOUfX&}poGSAm z6<5I+7#=_Q7AKzNAo2;nip6NIM- z&k&v?=(C1TKo0bu5mFAw588xJsY`w|6l6Ah2XHq=$xq~G?bl&1$uIDI2-4_kKq>*L zf@LnuTtI5z2lbVulIIX=s_Xw$>g34OS+T{}xwr{`^GFj!7JN~wK5@-WopXgPS9szI zi@w4aed2*nyy_E|eBy??@&!8zN3?H?IHLPLvEx=-k53Lv_-5p>!x1vMUA^r zS6tzmFYU2U456LEAwP0!J@lnr_letX>I*vx2l>p6y5|aaU17(rgR{EhM%{LWr>?N; ztFz}5$K2FqU(|#fb;B1m?MBVG!jvnFz*GG;d+79cumR69nfDc+bW_(|;ejvhvJ>?` D&lPO7 literal 0 HcmV?d00001 diff --git a/scripts/constructibleobject.pex b/scripts/constructibleobject.pex new file mode 100644 index 0000000000000000000000000000000000000000..a2b8f457367a5bb8af146a99c5ef2f581ac61d7b GIT binary patch literal 1047 zcmZuv$#N4h5N&xKZ^4cM8^SVSDQ?{H5sIV&MJR9;Ia1@9jxBJcMC!qnzv2`45~}zB zet;9LQRJ}$I%r5B{^H-``H&v>G`=$odBM~ z@IP*LM2ARIN(iBKs7VKi^bu{oBxp_7aKKW}e#jF=k}hGe_LdZ@j`Oo4H8+?^RAiy= zC|Z;h^f_*u8DH0|9~@uTu02DJInn0p3{|>#iDsM#>Vb0YfMGz&S z$7TTaZ^<%85DFrL7rEq-!?W$O4N`8Ds~Y1pH-`U+FEVV-FX-_e2&lL{aiAJNEr5Ce zjR2YfL;4FQE^rra z6^O~(Fyed6RCOfaj)1#t6)p4x?6IHOdmAj&_?05%Rm0HS%yAzc6ff^=k`Ey+$Ob#N yLc67^0{iTJbQRtym10e{H`R~1jG%6nC6($PC*4XGm2djyE8O}M58W-e^S!^{SI*%8 literal 0 HcmV?d00001 diff --git a/scripts/container.pex b/scripts/container.pex new file mode 100644 index 0000000000000000000000000000000000000000..e9ce622c6b505dc852ac40cff23059d098b3eeb2 GIT binary patch literal 441 zcmY*V%TB{E5L`DUeTK&YA#uu$6G%OhV}VwvhyxYnoI2aaP}Y^bQNM>j;Y;`sPHfx= z!CG4H%+8J<-!GqEQ417E=+klq$&Dq>4WYZ*dJXZiGMmCf@-$nFr}Odi{lo2O1Sin@ z)yZUciah6>5qeY0c3%#(rNXeWly4v|O;I30dt%)?#B+9r)^IVYNY{##%bZh(TsiUr zFx8cFNSyj$+sU%MY5UON?+LHKkN??xMG+9 literal 0 HcmV?d00001 diff --git a/scripts/debug.pex b/scripts/debug.pex new file mode 100644 index 0000000000000000000000000000000000000000..6fce895fe1e04e6c2635616472ea7254298a4b7b GIT binary patch literal 2675 zcmb7E*?Jo_6h32Tu^qcflXTzI1-j6N7Ru5TC|;Tn+N5cnrq}ZL*cKT}{zjU(c?MpA z3m%0>;0d_mDY)WDGs;ZD731%-{`t?oX#V-|$6w_V1VB%CZuBQqJJ?HxYZD#9TrUw( zUqj>FtNqqyxAlJOb?3mEv1d_CIi8 zU}ZPrM;LFbL)=rIthXbj@x8|QwHm^*i_so&DKXknMhuRi(MiUWW+b@oaKoWN(c4N6 z#Bhg?5fMP10+R6sYl8{Wls%<5jMAADMf7+MZy-SVIgIr>7!)T?aESazv=}Pyaqcz%&p1)%A{NQbZng*91OI&XsUtYHZv`QUPuu~=I z@9tAKP4XF{IHb-_M@ZF;giD4>uwW`oI3gLRgxDZfW4OC<+z8w680|FDNrg#Fn?l*T zHJ@K!Pj~#$|A=E0JUba6OTk84UM zU*G^r_S0=a*@GDmW<8kmVBUj@2UQPh9xQlJ_n_gy84ngcSn}Yk2g@F;c(CfhISr1io<2SBio!;VFETSsk*sTg zh0_`{xklciOF5aEE$2i4KV%tKi{uOV(Wy3yWHW2|TyYMqjJ%R-ra_iY6W8+HN!sG_1-eoJ{G7EIsMi}L JC-!!M{TB^28OZJ5FPI>*=#<1gFsZKqN8U^1W5%Hk)TAzJ4p<|j=Ww)9EDqO1Wtm)0k{Aa zV>^*RVhVfSdt<++`M!JqNE2W{b$|T!1&0?n5zXA)JUpUwS3-*^+S5fX{RHg8;6I&| z_6XhB35QUOj5D##i5wdH4EcD~bfwXia>{5iht^D06>7-BOm=NF!r8FV((ByKgyZ#6 zIXT0ckgB-}p|~>yk=F~9YND{>bueygTt?s4*jc5gP?V+r^j28t7=5X$C}%a!CyM*xwmFEua&0f?ep**(WMJV6e$xi%|Hy&tRK$Vt0PA)o literal 0 HcmV?d00001 diff --git a/scripts/door.pex b/scripts/door.pex new file mode 100644 index 0000000000000000000000000000000000000000..5ae4b55aa39aed1c641bdee46ceddba3dae77adf GIT binary patch literal 431 zcmY*VyG{c!5M1Yu%jLzRK#{22(IKVe$`BHvAPOQveerD)Ls&<)Px&7HgfBtjH>gugwZF0gx^@kYwJj&|B&}CxcC8O|HGRMwUqC*8M^+ z^G=&Pe3{oqg-Ys|(x;Am?M%f9rK)z0j8Cg5u|Ao!0vFa0`ts-Z+k0LdTaCY>g1B7~ z2C_J*oeZQ{o0nF4eEVOedemMmDahz5wUHt>!1g$i{@AG2mKhm<-sT1 zvw=ZqZcH2sY%)A-hB{my;S;tnj`c1Vw%bnZ@TkBpL)`;`J%N4B;wmF15!hk$^9Pid LdZ!hUmYH4wj7WIK literal 0 HcmV?d00001 diff --git a/scripts/enchantment.pex b/scripts/enchantment.pex new file mode 100644 index 0000000000000000000000000000000000000000..a0bee1e707fa39369f79708dcd7054a2368e016a GIT binary patch literal 1149 zcmZuv%W~5&6g|rO*_6^G(DHD3?%0zZfuv-BF31cl8DlGn7)R<@GKIh56ZjHl_yB%@ z6<1bNyF)c&``mM{?m1W1-;Y0kRV!ei_37lt9}H$P+Jw?qIJs6 z(u9VieX5Mw!G(UUv=IqMpYmtfcD7pa$Y>00Xf`f<7p|o+SjlfS6D%{Af(Ilx4K*(hJtFQ6|9+v;_&uqm zBC_5zM%3Xtz8fhS3tJN=Xlz6rbBWqqrCU@N(x7&xBu8E3e(PVuB;%+}l}gYpkJz$1 z-U@9{pC>9bcs|c$E*+RnXaap9Otj&eBB2BI`3oI*U=)Qs(C0i7E5YMH=l`lD`Gxyc zjU^2r*Jw{B*2af0MMue*j9t2>d9p%tGI3!~$thn8>7qUAvKu(}_4KNtl$$J-)(;P& zEKTViIeCA_eq%s4h@oO{mIYN0Y97=*Xn4@{pyff^gN_GX4|*Q-J=pWWO4DN4x1S1b zFdW#>at1eZ#9T~oMpo-Mbn(tF`WSkmf)QoM^w?FyEuY9^v~k-LEU&cm07ss5RSg__ zqNr*Wss&jkVq>@z%|Jh2Z;EKPjro8b|;u&Yz(xW>Jr j>gsg%2=jCD=g|GX@;L9&EP58+D`fYvldx}gL?-_M^ts%i literal 0 HcmV?d00001 diff --git a/scripts/encounterzone.pex b/scripts/encounterzone.pex new file mode 100644 index 0000000000000000000000000000000000000000..c46e43fb240ce11f9f5919332551bb3f9a728a54 GIT binary patch literal 449 zcmY*VO-}+b5S_xhe6GU5n0VToHxo|AJrac&j0cIBcw4#yRB=k$+3@%LCH@dEI$QQ2 zZ8Dwr=FRK0Kd)ck%?2otrO(YT4DU(Xk{I2aCA{8w4e_!x+rmTgJX?&X^YP2WoSmUHTun;Sl_KR$&Z$E# z9eDwm>e4wRPJOU#W!b?rdXnkj_PEdQ4eJe7jmD>T`Hq@Xw!z2mP@9#(qIPN%?(0#r ztTJ2V4!V}^si<%8xLrZt(iqo<0vCR17TpY>A&*rdhNLM`P^93b;;Z!mamZAStFs}y p1?^A|L0u~7Koh#qJCF+cqEL_s)x1z}s^Cme@J~c5bzukp*grjyWt#v1 literal 0 HcmV?d00001 diff --git a/scripts/equipslot.pex b/scripts/equipslot.pex new file mode 100644 index 0000000000000000000000000000000000000000..b4bc6d62f1daabc37ab0cf4af784f3aec063162f GIT binary patch literal 515 zcmY*WOHRWu5Pfb!+q6yj3yD=&v13n`NNvTYLaGEy6cV>FYV8tF)N^o?9)Xh}aR4sB zig8R4%))-}jXiHX{(5+O4_Xl5c)ZwtA|AceYCT&Tx?0=Z$v8#yD>Cg)B+V!ziD+WT zco?%dtygzhB{f+L9Hr7zv`bYKQlp<6T_{pUXG?@*Q>`F0f?G`pr$$R$k87Q~d_rYL ziQOp5OKF)Yo0z9(nNvcBsZ8uz=4!5Fk=Uk}u9h3$N_$3?(hEds>WbcH6?#UGbm7yX zmCHFgY3k{~=o`6E+Oy054OEiqN;`j<Vn8+}1)H z=m6!}t2pOl?9}5b96wEe1NQ)G1poj5 literal 0 HcmV?d00001 diff --git a/scripts/explosion.pex b/scripts/explosion.pex new file mode 100644 index 0000000000000000000000000000000000000000..e9a595facec91cc892f1ceacdf3981138637e0de GIT binary patch literal 441 zcmY*V%TB{E5S%ojZTjGGKp;-OaYO0_i5x51iibE*QO>EeZC!$0*^bKR^-KC8oY*9Q zz=!qBcz0*LpRc=p*gyb2@^lUKM<1KqIA!$J#z{2ig~~IB{`13ZIGGM#?jCOk1DqiK z&Ev}Ug#6T}o)AxrH#KaoRF;uOR~nru&mGeo(b(8`L{CN&ZpMX{r7rv`^}=nHmn(A2 zloMvYCh3JYOi8#6NwrXv30K*)HEq9Lrrs*OM4TjL(^+cKF?yu4`Z;oxFVISon)Zwy z(o*S~UH%`yk}s?-{Yl8eTGBjJX;*FMet&+A27flFVg*8u%p%|*sCS4rG%NJO%e#RP qEwszzvOGqIW0$4yEI=Z-#9r+oopM`Bd~ literal 0 HcmV?d00001 diff --git a/scripts/faction.pex b/scripts/faction.pex new file mode 100644 index 0000000000000000000000000000000000000000..f94c6dd5060ed8383a7a80c0a960ad2170797e6c GIT binary patch literal 3819 zcmaKtTUQ%55XWb22Ml(?9Rj&I_dB`YNZJMn5U0UVOrc4dq{5bA>-EZKcOA-GKTNUnne#TI4E!wjI_; zggxkwC2UMKWB&Zwt=FZ$9H>@heKDn1+p^{gZ&9^&L$g9CpI(sx?5|uRjnx_7)nfA(yyx^wW>woFUYlhAE)0v&21UTedRSEzapb*Bq9j| zD=Jb3hp^|mI7sFJMf9?*$#kot{4G~`(#L$JbruIuEc*@7I?#55sZPU*oqH5e*^s8t zFolh3MDfd!Y;6gzBTc%dj~Xhz+7}!P0MS>3Oma#Z^_e z%PL?i8F$pU9?HUS6*C+ce%=#73$$W9H`N>AdeC2$(Y)s!KoP;l9!s})p?MUSe2JMk zffUb8w?}N7=UPB1ncd*3Xv(gioV?%71(G?eqDQE*1D9T#Aid)-A)KYiAyYu zqsOWYYJ0+u7L^|fm$vmdx*b)E<*=fnD%Kd+0>{xO)jWZLP$uhJH#AvEw+l7p*Ihbf zga>_l`XGVavchU-%ecvN3rcyA!yPQ4Uo_XEJ)Fmc*uj7eOnKnq9@$ihtikH!1tVf- zL$=fxS@yr+d!vE_7$iw}dJ7FItb(ZkA)df0u5Kzh5Fl+=|@SXA@slf5UUUkQ~T3__L-lOSrBv zNBD!rV}u(T`v|KV`w2HS<_Uk)I6%0iagcCZV}bA|jYYzD8jlmc*LZ^PgT^8J)iBI3 z!Z6A(#xTw>!7#}%#c+~gnqh|F6vJtTGYn@L&M}l2&NEzKxX5sc;WEP&hN}$M7_I|k zK;Va}a04InW|e;N43fp4ja&#`~tJ55wafa8#dm&W2SkQ;i>WObJU%U`qS0Z#O?zXTZQWzPWg z_p-z9Q0!&Lo!8gPj<#%1djjYk9{DL@LVMYv1i7B}VXRJ%_*fbG%)%q~%1~|a zc?R>QY%EN7dt878_Q=8_c6o(emhel@DcjxAMiTE>k(vM_-NJbrGXu+LUBNFscdfyJ z*RgogPRR~ZvYxsp+_r)PW$Z%F#kBY)7O$km@8dy6?I5}*T((|j-EYxzHTJ%R|FrKh z?RK!Uwns)MqY@7|(;fST^`w)S4q$+DR?Of*JdY=^Ny=n*_Xpj=ob5`dwdwX8U=YSl8K$x@7Q%c!^iT0%T4* zfcM0Eyfda8xUK0Oo*UrMEi!}`#n05iJkE>*AK^Ynq6+YMH(4al4178g{u73uJrw>E z-0Pm?RgOZTKgZb|M)8+;0(gRdKoiY8ivf3RK)@^RqXPofT1v$?FL{aVemP^s4A5Sw z$79{#jGJXhG&NAlCRvgg|CWy5h_fUyDGeCwUdkmqgaf?)$Gg3*SueA3chLi%{{cAb BqZR-F literal 0 HcmV?d00001 diff --git a/scripts/flora.pex b/scripts/flora.pex new file mode 100644 index 0000000000000000000000000000000000000000..41ee91f3074d84b93a7f417f9dc296ae64f310db GIT binary patch literal 651 zcmZWnyHdk25IiN06DKhtyaH6FqNB$h3?$Idcm_&F*q1~Qq>LmdzePvOmoUQz@B>tw z?05)pg|xdmt#)qob@%pOuK@$9`=ggn2!=DI`N`a*PJ#ny6avB42yJ4yMF>X9suK1{ zyyAL+#wIG48T67rLP#Cga-uO4C@q9^zD7H#l9{kVNj?LADzXeE1ZSxg3vQJrJLh_V zCe>o@1n)*kgwtUzsYl7kPPvWDQrL8ghL|vsdU(XtMphBU$jmVnV}V&@itsIo%QCy4 zSS{oPf;e`jw_HP8$xE4)$DYC27@Bch(yo%{I1#dBeg5<>*-+_cIR2eXqs_H+!7xg5 zt!V_S99{nOGly#aAK=rZ8PweD9jI5pt3aayu9J#E(`_|qF$f%W^$P6*u@!f_4<2+% zzOpCxE`-Ge(l?+->n2I{0fRn+En>y{A%kr?Cv|5{g$A`2&$<7zOWv-0*sH|SxJI^v S61tTgk{Lx_ySh(TsJ;Q#7>HK@ literal 0 HcmV?d00001 diff --git a/scripts/form.pex b/scripts/form.pex new file mode 100644 index 0000000000000000000000000000000000000000..41531213855ef03f00a0a272ed6c28f60021c571 GIT binary patch literal 5057 zcmb7H>2?%F6uzCA%$A*mB>`b@!wm$*g}7iyNQgitGD&dP&P+|FO;7dM-NO*~eF67B z>hUFf1fRrnd;uT8U*20)H`U$X4=0DrSKqyL>#kMdpR0fTnHvBH@bkve-~WcvVi0yt zbfX3_@Dt=|ji|IF;(F}H0?JE49556y$(I*k80AZW-`sHho`A{)H@YZx`a#%)p;h1A z5#dD{^dp$QBDTCJ79nn%lU~P-y+EG7CS(kw3DKom9S$Vcbx&^j0@)?kled>#3ZfYH z-?C@D+a#yQlLB9eE*wfQYoXiN7EKB&(#}jIq{c+jbxkd~9kJ$h1RP0dYgaQ0Q)oJj zYnyM0M!XsZEzie*V6q+u-7I-{Z;#@ZB3DAy!aiX22pr6D+6lgdGr3>ey71znh|$y@y_)ueF_&(C;N#C}`b=?WmQ zf`x!$-GDMOSB1CLj-ia4fx`%GgO1X!UdQxk1S7PL+q*rB%U#*HZRUC$QsG9?R{q!SyceN%YcuAmcFbGrO5RkhN(97)?zYtZZYZ z%@Xa8CG1}ovIi3>Gm6@qqR?AnBdF9Qfm&BcsvhBaKZpcOCT#{yJwjj_S(gGvurIF$p-(9j zK1@*C?=Dx}xD6B3{%Pu9N()C|O;C^cd0H`0Yi;IHa$w2>qDXKHJjK+`4tK!7h*xi^i_zp5uuO`d}#zd3~IOw zX7cjq0-T4EyG^YkLKt%Og{_p3-ta^p=|Pot(pz)GEfGTz&sL*U+!j0Ym@mjJ~oe9|^w&<8I4d zbjsLXx3wT5FT_WNu4v4OqDvi|A?5qvwt626Q5?>NTTqa_4t-OkK`+E)RNNMNEW&G; zyo#$jPv3v;whp!sX~lfx2QjLIQ~_ms$n^;8r+K*H`u--qcS>|x&1y9i4dGoA&1%0b zWHoMkQ8l8+zDl6)#f>(~+`hY0ZG}Mxj{lEcaR7OVy#tj*!#EN~+)Wiv*z3mlV&uEj zuxA!~QiX;-xG^6cX^#T+d{*NCm!cYVMZ;@(=$G;oN>cPGN^G0iS!${cH>5IYu7p+9 z=vexQP+<2}413=S}uW-!Cx zAcI2;?qG13!4U>k21gm($>1&qcQd$$!MzNQF}RPx{R|#p@F0VS0Lt(){`{hTeuZD* zH~gVm9A}*q3?621lEEnkk1%+Y!D$AMF?gK86AYeYaE8GwgQplg&EOdZ&oVg6;5i0! z49+o_XRyHFJcC6BOAIbBSZ44%gNqCKx>;-|QY--PsU{k;y0@RF7j@iM$Zs_-n6^dFK};Wb5$T2if{1h4C@19;LKxb;n= zc?WBf3odLz!`PinYH`86=)AmSi%7TEybR-q}F=W684Za>%7*w z7q&PWO*{zgG;t@}(Q<$qI;?Wb;XGkA22?m68l}%M7EnUpGUQ{H)D~aB2vYVQVkap* z+jv?IeCU8gI>7Jpv;!Rnx(@hs**T~);y{4QQTzvE4oJP+hln(CGlMXtRQEejaNupj zr$EWY4lD6X&wTNS1h-3Cbt?xQ|J;Q?^99eJ8BIfgR)UUQ4F6pR@vd*pMaD+RH2e z$iq9>2=C(DyocF(-?a5GD^Py<@Uh#GRVFEgA7E}jG$x*50Sy+7^+%>mhggsu*a{11 zM{<%kQ1G#;rulVOws+T2pJLGfbRf4f2=o%o$6j zr*1zBc>A~|Y#R>XA>V3O>9>P-$xRr{mi3u5} literal 0 HcmV?d00001 diff --git a/scripts/formlist.pex b/scripts/formlist.pex new file mode 100644 index 0000000000000000000000000000000000000000..9976d06388e5e0df3e0f8e937d3edcdf9c5aa7c1 GIT binary patch literal 813 zcmZuv%Wl&^6g`d;+erg0EzbhQU9n?NcB#~qN{B^^V1W=a_DwUTorz{9eehL$0$+l} z2k--|xYxsAkhqe^=bU@y&hg{t+ppi!9ujbU*!}VY?=)Go<3XW`^KaeHWux_Lnuc0!k}{~z%eO_PX! literal 0 HcmV?d00001 diff --git a/scripts/formtype.pex b/scripts/formtype.pex new file mode 100644 index 0000000000000000000000000000000000000000..0b5182458fc9365df15baedec1cbac2cbda5442f GIT binary patch literal 7963 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 literal 0 HcmV?d00001 diff --git a/scripts/globalvariable.pex b/scripts/globalvariable.pex new file mode 100644 index 0000000000000000000000000000000000000000..d1da473e608aeb6f167890abef7a11eb40ba3308 GIT binary patch literal 1023 zcmZWm%W~5&6uq_+=hc*wk|xaq99Xbp2#*C>W+0(c+65WHTCtVJ9aqZOa`QuM`3Dw! z2OIu^6-Tli+QD+1b00eA=<3hcAHN)%EW+crubb4GM{>oYC5uD0iuj9d;*+~d!zf6o z`T2Y~oiC;cG@uZJ6?6uF_Z}2)O5`ampfR_arqj$aUeRtnRvI~{J;o3)-cye{kedQ@>Y$aRnhwG3Bxv{F? zyUbZ#iVq^l@PQOleiaH6nfpBd`TIN7a48nqc(Ll3{33bhT z(zFNy-CtFzPT%BT&Hub@!o!N&L^({L6&tM5bZ6S>y6khUgmhA?e22J@LXbjxs?8hXg)>rZa5*g%uN0{(a+ex%rBT)c zN_lAvDVN${+sU%pwEd_R;rjoaJxIq3ss^P^^=eDprA`MQyC*K!l0@T_C^|G(&9cgD znH%)9x>ce%!P0JxfmRdRNENv7FLU$xjh25b3po^#&mOfIjw-&2SHz)W4X*ZG@=psT7{hDMLcm>1IQ_(rYh~e0y;6L_bUr-2NE>H>=?&O%6q|FQjhA`#WQEjymlSmm$q3v7o2s{Zh zyZ{ftiCx*Mn@e=Ce*51Ktycc`?bq+10t|4S9sK+Y?GwS%&pfm5mL?$;-a_Oxv>IP; zmg4NAL}!j8o`?d6H^LNn!es_s7mERs&z+EGOcS0#)AhSQ=3V33E@ENIYi|CAdLmK zgrm_)C6piA8MkpJ>?%_R4G|}+EECGc#tow0@8@G+c)&y}tokEw_WgPZb0uvu6I4T* zSf76viH)sxCCySK@kkoRm{2Hr=q9y5LyjYn#-XP^9yKeH4v9lInDnWe_$71 zpFxG;CvX@Lh7Lo*s>3Q_&0&qO?yyc6IgAJ!4(aQl>7nJJ?V;o0o`9@fi;TL=vl zo)wH6>oIr^^nyhcgBa`3>Xh}I4Lfj9M!mq}X?4rK%2S&d`7%#p@XEDth*Gf6;5CCI R28Z;3(806OkLsH{>VMzry(jEM4E6Pn_WDI(KuAp4*pNDMVyd83Ma4ixnXif4rW{U{Q5cy(|R+Ur_Z%E9pQel?jbCr|Um?RX5QkOc|r z^BMZ3FFitcX1r-&d#9B`g1$7QwAY5p3bLuOuaG?$Lb#sRBtu^KUFn5;(_Ze-G1E?% z^&X`c-Y`Ys4k-0TqY^IKFRvYLPMMDRMCb-qq zu*?4gSoF1};EzJq)*|sx!7lD(@o{s27JoL0F@lsMvkc%UX*LHh(2nSrhr0zSbRZAn mP~L?e$3Cah^8^M744K7N437Dov!g#*uJ6G~Qyn{8u@&Q5PeE)=cD<6LO?7t=3SA1}|(afZYH4{)#UoZP}mN9fIsGc^p~<$3mqQ57x|)gz%HeKO021 zv@zca<2vs12Z_{6#AzG_6C5>QaiVcDrqX{Fq^o=gdLi#F%v&=|`x3f|wUWnaV zy4Y@&OV(tWDI1&n2TEM*3{#42PKm#38ry2hTj5!M>fq$<8BuDmKO~Zhcz&_+6ZF OLqz+^7GANuYw;ILZH@;3 literal 0 HcmV?d00001 diff --git a/scripts/impactdataset.pex b/scripts/impactdataset.pex new file mode 100644 index 0000000000000000000000000000000000000000..2059d5f1e364d1391e7dd306d519ff486b124358 GIT binary patch literal 449 zcmY*VO-}+b5S_BPe6GmBn0VTQi8m9D?vW^j_;GL}o=bOtB1}m;8~%&G#$VzO@npB` zL8i%c-kUeCAHN^pKT!h&_)wRd0Ssrmy;S@lS?0)hd#4~?lzLk@NZy|2<7qyApFKZ} zMlgirMC%>eQ{!Lt{=ET??#5r3{E4ZDMq$)+qYssla zE-g6^Fjb|sNSwN0+sd+|Y4g<(!u{!-J7`vGtOm79&0>R!Q#QfJ?NRBa#-es=6CUcT zW?5x6mlnE)9;v8LaJXGU-_RIWngSPo>E&y10}cOJ5ppOZpFL^{IIH+7J|Pa3sByJ7 s{Axiv^g|NY0y+>u7kWohK;J6_B%X?{1e^;Pcoh5-ul0S;Ui@SK00p>Yng9R* literal 0 HcmV?d00001 diff --git a/scripts/ingredient.pex b/scripts/ingredient.pex new file mode 100644 index 0000000000000000000000000000000000000000..5afae5797cdd7252956871ac200125583c155b6a GIT binary patch literal 1369 zcmZva*;3R%6o&uIzA!VuFrv5xTyVd4?mz*jRBouk3(K-%(lgUm=%&&g;jw%KU%*$e z$_MZTys|r;GYLp8lK*^XPo2LXe*CId;K4kfH^2Wueec4DAD{WiBV`jZ~V)4BdAuNW|WB%0i7nW*o9}eF5ymv9lF=rrcqALgvVtdhX2k z!Ax+SMhwekypym1Yi05}O#;oOzcxMFy>6k#S{jHm8MqchEhb_t`@{-%y|?sf!e-IPEel+ z{qYlOhf*-qcBPC_=h;eC<3asf5T^{y{a6Mzu3M^$X29L{^~{Z4$!TI6M>^qRhVA`S zgtob_=YjSUrqe_yV=zBVlf+z!ud+*Mj>ql}US7;lXIzJKW>dKG<(IGKCVVZk3hI=F ze9Bpr*JufLmLJo2Y?nF?5_F{46OqF;#o{TJq}XLME;2@!`x|TKGCfr6!CFxzQ6o_& z(IC+z(IU|%(IL?#u|%RrqEBK#VwuDWiB%Fq5_V4Wco^AF1=l>RThp?ixbD>A?U}vS zaKqX8a%f`XB3Qvq0v>MRwk?KQ0W%xRMOr0`x|2t);x47T$R+p$ihA`T-NR;{+A!a2 zcABk?EdoXA2=@rO2Av|Uh^pW|9yq^!dmA1eqF;2Sp|`S_!T%1o_we%Xs+!1cSJ%TM m)5ODLgR1Kuo_Kg_tn65Nrk(K{`m99Jy=v560bSwNCGZab+4`^m literal 0 HcmV?d00001 diff --git a/scripts/input.pex b/scripts/input.pex new file mode 100644 index 0000000000000000000000000000000000000000..4e2f4d810713b3803f38bcd012e93c7f3e7fa263 GIT binary patch literal 968 zcmb7?&u-K(5XQ%w-DHyu(DE-(TAH3X!3hrRv8a?4qC&KSBMR|sV@T~Nc6Qmf;t_Zf zBo4d;C&uwwTSPDTVE_Di=JROm-ygpJ2nN7_#>azizaXB;rZZ0(U0MkaVAKnQ<6|_Z zrZ5Qcu`*nXtcad`6t~4q4x1xRx%YyUP(!L zQ#1|s>Gs_1UMOi=RYR)eA)X8AZcmgvlHBp6RFVrLlq_lpE5SKR2xihiL??Z6cxqZ9 z&mrNs5G9_i8ieQzu1dubhKGv$WB!$@al(m`2u#AGmz^xFac-)@2PBmgj$G=%p}ag*HX#Tz&eCrOA!z9dv`Gm6J3Rf5@M2l4@_DN+{73i+DLpxZf&By)0uMtE zBM+g6$ivt}>>=?m@nHRFFt}!y0bFNr!)~qij8;o-c54a=Y`OD*!nffj+#@LdgD&8eJvEn^Xq()_&1dkpn8{zO%P8+hMRn{mbBi6B+FG m1@Dm*WYho#4;k$B9VVvmT~gCaDm_L9`x{H3re%;{68-=P(70j% literal 0 HcmV?d00001 diff --git a/scripts/key.pex b/scripts/key.pex new file mode 100644 index 0000000000000000000000000000000000000000..626bf7e68d607206433c0d4fe5cacc8f2c578d62 GIT binary patch literal 435 zcmY*V%TB{E5F9rp=@ZJKLgJJgH>4iPu>vAg9ug7dO6qJ|mtt43ql&-dOZX5@Y}_2c zmexD7v$M8;UcbJB76f?7@n(c*MxU2ED-kX#wJj`$&$Ib7&89DR_t%pNP7$zz)t!`F z=5j~qrpB2=+LuNb$|Q* zFVQplMi`LXSBiTM@=FE8Pxx4uFCuu=|?c4jGf6@O;tEF}2?oFkF6FcbCE++X2 z`LUOt&^@uzRsmX&zhs~bKyVJislmxtU07hZED}4wew~)x5#(^ z0H+m6?nujy1YjZeZ+Q%SDJAB5Z`cAGiz*-E& zO$-Irkz%7!wXumOc#3Cu&T9)Vu+1x2!lIWEvG!H0J7ia~E$~|4jleKIXN?PToV{=V L@uH1)|GnZK_tB2o literal 0 HcmV?d00001 diff --git a/scripts/leveledactor.pex b/scripts/leveledactor.pex new file mode 100644 index 0000000000000000000000000000000000000000..ab071b6bb27b8fbd42c2e277ca02920471c12eaf GIT binary patch literal 805 zcmZuv%Wl*#6g^Hd$;@PcmPZH5qhZxu_sp&!T2(?_bfmIG!Eqa-sXcO>_P6>8d`TsK zfDd5B^&^^s>P39+x#ymHZRgL|pLb~j23p_V-~Ptd7jZ3CqB-PNn}c=7T?TuY-RFrJ z9}By*wH25gYpVk+4x8pkn=9mJ52lbWt&!>y`$xUvuCTIgZ7U;e zZ&XKtsCaLTP`2v)nTo|CoM^=T93TEI>~5sxt#FmHtMvCDg4@b!Z`7>?mlskr(Q2&3 zO}wbZ!i{-e8%(wOteQY)omgF9rqxGrDOGH{a<4GF$}ddm#u*a#6b_^V$ObSPKt6zC z0OJ8n2H@OiF_dmgFasX3@DH##9(xpH!i>6ScoOmn$+t+dji;^_IqiPTI2(#sPdbKY zQI+61UUL>jV|Ybf8Fq`j&M;k&8CWuot;S*;DPt@2xA+9Ugc*K- z4`9WWWYrB?*yo;m?zvZwzh8d-3VL9m_4WA2A0!|7cV6-0T=UJFZIhb>P7vRqi5M=p zUg}J9j222O2M6zp;!M>WM4!l`)|is&w9I7AFO=k%F89LZI=iUUDyxuO=UXBs#l>!8 zJR6KnpiA4pCUj|MLQG|pXalD@RXeGD#syI+ih@hTxsrv@LP=^FTD#z!#7rWzV}@%Q z2QxRr=d2dls^W;UtsRLB5G{2ra?*3IGE4f@kO~kD!kpVY_5dPOKwUp6gUA>(p#{E-nQxTCbtxSM9aT z=VmiBKE_IZkcFeehF6!EDEXeRg|wW%`rnw*#WM8Fg&Pof5PHz}Ao5_~!O(+|2V)On z4<;T=Jun?Z zO4<##yF|Y$wN(f^BEUoPctlMO+eS&3?Ah**+eAeFJ>Tj7$|tR|ho^YvTA439WH`d0 vQ!}KkG9dEUDH)zq8N&;rf&+$^46i7%H#8*!$`kwg28&5IQMdhZM_S{5F51*-B0wLYAV+os_QqKR=Nz1Fuxz?$oQP> z+7^~DIXBh>n7u2@Gt=B6z2qv5#e!9*RiPza7)@BLAJ7?RFSfVN(PHX|t-ReQY~@>G z#wJd5L>gTxtBfvcq?Ia5(n!21@h#F~<5^ay;D|qJi&Xj{AT-{dZMAd-a$6NPZ|{_q z6}8M%o13d|ByDaDQ_9;7Np-EL%v-ZuEP)Q97`bhXXWZw~coFDVN)(A=Wv49A%JoXlD$+2s8=R#v??<@HLK7$Wp zpVAmCB>*{|6X>l~GP#B)l?4C_2i?)!%w~|N4M{p1`2t zzULAL>m+oc0Zj&xD?84-nsl9{D~|!6kze1_MI1NT0ze T)rlScVM($FXMWmwc13N!{f%ed literal 0 HcmV?d00001 diff --git a/scripts/location.pex b/scripts/location.pex new file mode 100644 index 0000000000000000000000000000000000000000..bbe4ada2aba9319c6f5db6334d9c0da7dcd72363 GIT binary patch literal 1744 zcmZux-BJ@V6h0~a2U?Y15g{!o{s5w0**if|Mn@fS^wJ5tDP7raI=iV1kKo(*2tJ83 z-unbz`6b!3#W9&S=X^QmJ2^k?pHDx2P8Em|*5}su-!$`D1wuzE*&SqoL1~Yw9)nhW zA@#8qT2k$W(#nYqfUo4mxk|%lLJOLQ{$6%JTnyyXIQl9N)G*OBH%6aH5jwE>Qe+3J z-&e^ykxE$A0pz|^JIW4X2|T0<#9kDKR6WXGD-i-}9A(F%FGr7S9AAD#9lCd~A$A^M zI#5X%nG{7# z$5o*CMkOeTIPn3C`%1-B5od4Vm9o-%&yfx#kGhUa#4*D0I4?PmT#O7^agocz!61%g zI5yfb?jqr8;Bw$+uJXn^%dNM0q`8PQHGcav`_f}S+> zN1p2Biwrc^$|jZ#WDs>tKimLR6M60?pw{V_8Tcqts;lIA5;}NBCHwL;N}N^|XNOU& zF%agLg&*86YCvFAFuD<@yioK)$qQvKRJ>62Ld^?xFHC!3hUg}(VXu!iCr<5&y+LMg zPV8Ic_Fb?rn)O`ftyqkj<|xn=Mpun$ly7v+O3dl_X2`8Tb2M-6-C`?@7630gBlE|z zM9cQBj?*#WxSrcjk3omj{sm?Lthl=Z-GH!)bW2Eg8R;$~(Pe7k)5hm!lhGQZ4MsO+ z8LdO9TVTCmkF`Y{ru+q`uX=rPiBZM+aeEDaMyrm3gMxz$E;u+`tj!c$HmzODxG>l| zibPq;UL3~Dn&rGmp*_J1i?+AOc_%FLWZRaPxo@;#-8M0= zI3i+|(DhLZZqt?pXUEMd*y7$HGZlnMU8H+fg42EUnb9^N^TZunt!?u}LRJg72f90f iQUwjkV-;+>AE0k$6+u6GglVQ(<^R2`I;LQhKld+bXG94A literal 0 HcmV?d00001 diff --git a/scripts/locationalias.pex b/scripts/locationalias.pex new file mode 100644 index 0000000000000000000000000000000000000000..eea5e48f75c768d6d03be824d7eadb138013e4c6 GIT binary patch literal 594 zcmY*VJyXI!5Z!|W!be0@bjB*3oimiui3;PuPzYijE(;uH?wH(V_&@#*3xA2f!ph3M zgs5z>_ulT_+c*3D^6^F%PYQN;npDrl7%T(66BtDl1HDBqmI9+dXJ$N!yWC4Hlf2w)aGP>qUXV8Fg(qf5m)LiS~4IXfwMc^&izo Bd?Ek< literal 0 HcmV?d00001 diff --git a/scripts/locationreftype.pex b/scripts/locationreftype.pex new file mode 100644 index 0000000000000000000000000000000000000000..7bef11a94693e0b86b7ca70ef6e8e4f564b28441 GIT binary patch literal 456 zcmZ8d%T59@6uo6|c#Fgs6BnjCcP1>IB@u~2T!7-n&Cp(;NLtc%Lijts#1AnpyzRJ9 zyEr}PzRqnwU*12G3NWA}&Ne+bofwgOW%Lx6Plp{|@0@^iQK+qS(3y_sgVAj8d_TGE z_n`;ff7LXlK0-h9xkqS>j5j5138SS7WAiPfYb7OWsEzTkH&#OR(P)I5yF!al!u>k; z-0hVYYjmWP<7Tlz;kh>?k-HrVwNxm%i%xZo`_d?#d8_ma8d(;G&T|V*qla3S>8iu+ z5^7mi%C^x1Tq#|utG^3a^o7;IAGs*3MNLZuyZBiTU$2)?q4%sW^(rG36=R{S~GDCY+Sr0oetWeFJn`Xnp_y literal 0 HcmV?d00001 diff --git a/scripts/magiceffect.pex b/scripts/magiceffect.pex new file mode 100644 index 0000000000000000000000000000000000000000..bb929b33fe72e3755c8099d807eb0af7cb715715 GIT binary patch literal 2501 zcmZvd>2@166vywxc5KIXoVZKcbaT3;YszMzh5}ja)HG>BUEl+U!%@ewt#%@r8M!4- z1&_d!a1JlP1MrC}X>P4C)raJ#zwRdKYW(kyfBuzQfBoJJZ}an1V7B$IE4C45&U+U9#VF{g4MMq>>nbaPZi?Xl4PF&pq0s;JLq zE4bE?;h0HUU%~aPV)k$pt5Ix6F77CW)$eBY}?CTiM6RPf*(p#-% zx1A47XB6E17b4qxOWvgwZD~LK428tLkvucaR|=_z8@*$1|6(YxaW=bCi5;M1Q;(T$ z##~Qhnc##s!)Y9Ishjwm@I4mWZTA`r{Rzhh_%Q33ycIeebK@zJChi*hs;QL?luUSN zvJKKuCCT5qSmk!x9Mcahh9xCCa^U2A!lNNnmE7SYAyduXPC=+Wr8aNO@a-As|42wt`poKxJj@{aEstJ!5xCT1osH;6PO#p5x@iUZvj34_%Lw4 z1-akhBTMNVIlvpd4l zjK%pKJb<07TfukRMRPM&d~q+$cx8U`Ro|+U?%<*?wy;PuioQrmuKFSsd>gvi`mVpv zY60uqw~_6iU_F4xa04D?T{oeZ6)s_a*zW;#&#i3mo{e@VD|W3|neU(_--2P@6oyZdnahiibvo{ zkhtI_xZ*g;QBrBRz*6k*{60C0;<4)ndTyA(-80Xy?7ou79 zq_{KVJZHy=wQ=H78S`or3;)`fD#Q427ma)PxUo`hxJGiZT@~*aVyh}rBa>yq^3>)_ z(TD1()yIXHu8I$eWR0pw$pYxY!>nrjQjcH*=f@}oEBO6Ac!E}TnWsJ2#C=p(D=L2O b4cN-xcC)vJZg_9H@U#>G|Bfy^s|bGqa5>ki literal 0 HcmV?d00001 diff --git a/scripts/message.pex b/scripts/message.pex new file mode 100644 index 0000000000000000000000000000000000000000..6baaad11944caa6cbeb422d239be5f5f597a3c7d GIT binary patch literal 743 zcmY*W&2rN)5MJ4ilO_$c&{8OWraf?DCj2+IX4-@fG>3+kvubY=bzCVU$qmoJbMO#6 z1xFr)6DwJnDLeD|+waqAwX*(x`}HS|fB{9meYFLhQ#6Lp@YTZPkX}}zEDUtdK3@z* zlfn7Pm!n<}_MsW7Xjf~5c4E0jSQ{y;>NJ_m)e<({_t1R8aw$sU#EQA$G z@)FXyC<>I243)lyWUM4Ylbhoklory7)k4nTU|7lAZOH7L+srJ5&F5%H36rVIE6iX3^o{SlJZA)8Qi0Fa_`@AscC2#LE>9(!8SY~ s?7&0cG$HmgMKsbQTG%B#COjcLB|IZMCuD>d1Q!vFvF9`YVY_trKb%#VX#fBK literal 0 HcmV?d00001 diff --git a/scripts/miscobject.pex b/scripts/miscobject.pex new file mode 100644 index 0000000000000000000000000000000000000000..9b25ff8f231dffa07045b1713bbe9f65011a8b43 GIT binary patch literal 443 zcmY*V%TB{E5ZpAOkMsc?5Qvj++>m-C#|j$pmZ&J_)Y-N!WnI~h`a%2%U(yfZ#M%J? zKCEZfJ3H(BeEHbL4Tyk`JX#4D+$$>|XDgKMd}AdvXO&u)7Wz-O(@{PdJzw8l4u^0E z>2D!x+c~<4D;z>6*G|{4xm0C|1YN1AR8DCs){u;~d4uFZ6T-!~BI)zOEej{?Rynyu z%S>6J!w|x0rYP(NrJ5@&g$*`s!tJ-q#2G~k=wz91IxP&Ony#p7xr_rJ9&o&e>Ms+fS4n*1Yj?!w+OG$4CsgZy8$t@ ppzVvjyaOr6E~nz-2zn9pnT1vi2K>(1{XbdOr*KfKLx)o?`vO%We}f6o$`SGM6OfR-jOB(-kXNu_4Q%rs{$U5eb&a%$#&wP3+3!NyJ<62s{ZA z55Nns;vBnHin79s@#p_PK9}*I&p&=9F+@P?%hC7WFnzC^lQk;)`l_#4g(E0}MyKKw z?ZOI+P@Zb5J!bC=vXm}RHIRSA4n>bpd>H!nSnCdQrZZ)sWSDnaSQs-dtdZ)%N6xib z!BnebypYN#9&2@?8qbqjt43O>mFOUAWz(R7)TPf_p_&dM;S%Y&RtTfD=mv!Bx7FA_i*;hReSut#+ty}WMMtrN5Mz7%Qd{8xaLZQNj zh~8h+UoWw?mDO~_s=vZoE+t)e387H9@$;0k8F%_g7)X2UmXOb8-g)&OO<4^u|Lw-0 z9gN~;u&M`RXjET2Jn}D?(nCfN^XoDs0nz}Y09k-MKoOt}Fb*&Y!1-xKu*X{rw<5UB zN7l}0XYyaaPhkXiyr0l^7w&N=-Z$TgI7<^ zwrFGyGxL4(^Udz}^T(%G0|sRLczyxVePJYjd|l!B%5VrKg&(Qq*C_D9{P+q>&d z2aX{8>!Zm=AMMDd79s3wtE<$z5(0uDF7*pSi)$sMm0G0>2r?-ID)4(cUxNRj6~bk& zP~6pHo2523YiW6ghLAL|p3ITk*lL0pn-y|7l_+9UYBm(EE6HGFbE#$!CW%`*PIG8# zb)!U8_6;tkP*0KywzcZwOsWclb|V4v#59{giT Xp$&)CwDatg+GuH5No?+;W44JO?j2_m literal 0 HcmV?d00001 diff --git a/scripts/netimmerse.pex b/scripts/netimmerse.pex new file mode 100644 index 0000000000000000000000000000000000000000..ef1a9662951c54d58ff59c45e0663c952729d8c9 GIT binary patch literal 2929 zcmb7E>2lLZ5bm*MJ8>=t5^``UkSxm)&IE|rUBGNO3N}k6yFfxwl#s_nl%q*W6B2kT z9)TyJivK(TzqVVWwq#qeYvn5Io3FdS?&;~#&zE1n<#QkapSN>ge!%FO)K7MHWDv^B zyP-=wtU@_qaXs)z>J9B^34@Q6RtAtDOPE9}ftM<1)}O1;)1LBQWz(D4^cGB` z$hvGg+WRO;EYUg4vUzCCRx8Of1L?aGET3*daRWE+zlWiQ z7lisb-YMmSRa2@7rD|2no!x7Y^L!{pQm@}Yfx_;aSB-tHGq?)Yn(`%x&oEf65`5tV zAU=UOfI=7zl%=s@P)<$IxrckcOGj(#ZAaUI#L@CYTu9s93$R*khtXBWip*{oS3eRP zNLS+JtK0kAl7hX^INAjEJ?(CzO)FUXAMVb+^T}=mY6n)@%Zdf5E|gbMH&Hw)Gu)M~ z*YGf#DRjV>`=(MWl+6Zzy1v6aewqa2=!-=l&%k0(U{GXGVlcp9kU^Qj5QAX`BMe3v zj4`M%7-w*V!BGYi3?>;IV=%>Fn!yZ%Sq8@$oM3R0!71AJV_XS1O@B`#XcJtE;2dCo z*6~Nw8Cv{{KU$on#Vh>Lf;t(21$yP+7Xjyp$EQ%kHzD(H-t(yStFcqx&%*_{2$x_H zE+csbO}QBi5m3Yx9ZO!oc>xy%EY6aBBJv|1tXA+&Sc3a0ug4EO5b$$rt}y`qoxi=Ipz3en}@*-u}PkzOe(S^MYt zq5YSWXft4(f(DG9V&c$#yUBPYOa2ZgSKEEfghv0`0cw1_n4yh0uuMrL>`HnAp|@?4IE3P@>2p91pFBfDU6^R+L4`4 GvHt;_Pw^c9 literal 0 HcmV?d00001 diff --git a/scripts/objectreference.pex b/scripts/objectreference.pex new file mode 100644 index 0000000000000000000000000000000000000000..3933dfac2e53047339f31b61b543175eb612feae GIT binary patch literal 16307 zcmb7L2YejG)qiv9l4Z$7Ha6`{Cm7o*Heg6VR5xJyB-HeTngVHrbV3>?gwWFSwR~yR}$eyqS6P=Djzg zum`vUA$?W7_J(@} zZ=sN%+vMyHW`<@9rF`U4+lG9QnXz3${j{{t$!AJ=bT!~-f)cBJi@V#+Q%9fU4?0nC zEObz0f#D3gY46KJAN_7r3`-a|BrNU=T{Q2$*r{fi=xjzgF!aLw=mUi=-jDhAEifyxGFbFd)CcE94$_9B1ac2K4#OzMSm*q?n>Zz0w?Go&A>~6sqSz>kB7D)2=cUae>JcT zTDHH6L0CwUxc3cCBwAUHVqYo5t|^u&6h=7Z(!!)}OOVmsQ(HnC&A7fxEmLk0iYz+V zcC-Ms16dDqt7tF?OUKyFd|ARK*U5VRl%BSp>L%Blnl92j)Ug5eu@%r_TLO2!IK9n< zszI#>6~?QZZE^jn;;&p z90{cX{cd%lNXs9=7BM@O^|{Sq{q?!|ysq39L>|v~S4C;OqBLRlea3+yc0j~f=uJ(z zp|L+ReOAVfz{|K}a|Ktk@AR^mE%&G`X|&)#=krkBi;^zs~M;>s*zYHygTEa}!1cuTb2I#W9d~yDqo#V2xje z3TbggvDeRPPt?KGjR-1};ard~w=)?|6eF^u){LWb*m>EQZFH0lVa6)5m5tg3Ts!85 zAvS`QGk;qcWZWo%pDn-;sC8Q@n%36TyT_TM!;B;A&FA;$^&^^})MM{PwA_^U$4t$( zj-$je2LGS&rf$0%xkaiO#aQN#!dyp-@CdzmC!D3$QR__moDz&FE*f9c$hGWS=^%~v z>qPfgqn+sfDvT4IhbrwZgE?4O8%h-}j;qUcesz$NDzF=AZk8jh?h|qcE+~10 z0-Dy3_!~oKlA1<*>uPC!3GU9VcLXd};R#PyBtEK8uqjz3! z9TCb#wAGpNGG>qIG>Au`*BQUt5dwKM+mV_f9P`ADnWGNwJkR}(767y>KA6X9Yyhj+ zo1YD$VqY*@;Ixi9Dk@|0q6+e$ijfU6gEZ-IVHF60F zgqE<=3A0)?2tC84SyoR(&0Hu>!%Sv%<}el%ojh0VG_idV>NTx5oDD)tY#E9+IpJ=k zau^$Lo20ZDC2n3B{o5^dtFsr14w0p_LoV|r6b_I~u?)Qb%8Kw-5eSmM5{596%Wd&y zIRbJpMc699MGnIOv%9G%bMj(BnTh$j0kT#YXmOUa6K+smUSKlQa?%pWfYz}4%weTB z@4)~fo$f$^m2{ovYzw>yd$$D*;WAjmkxsSZ4Pr>F;mX#K+L8%;WMr@!Cr|a$9?aOM zTD?kj#+fy)Uk_y!y4O%`ggkD3(7PVoXY zO}RxQi&~;-XU6RVHFT)W6yQNZGn}=v9aD?rX?xa5a+@>5g?QaD(V5Ypgj_kc4yuQJ@>Z!cDSM+cX>1sh z^f@em>&elvgC$?*>FMIMQ%r|0ax_0e!A)n(2_cO%AN~gGY;xZwX9f**RBMwsAcXnO z3?`b40p*c=HYwLTliC$FIg>UT612?Dj*ZKiv8hQ*nGdA~XT}7i>-q<_Z6E0C9UJIh zpY9(?508wc&l(+AmBvXjAEiw$miBV#$)GrGW`GK;b-L;-n|A!Hu9pRV8N)O}K|KGw zJqEE>pdzIGX+J2Y*)O`;RWOd+F8C6-7lz{roUqXDrOuP6QAEiacb*)hQ%v@%kMj+s zqLj*nhmFKnQ1hSHG0D^+mA2tEgvu##*2G<*RpctTO|YOg0stT5Vi}} z)fJ;|KJZ9#gAJ5}j*U`bwYlv$*Os6=_ODRqJa`s;iGmgCWR1f7x+AaHsL1m^ zfUn@AE$?2lpsjW+V*z)833>WB#(hC=IMOyH$6ok47>LcJ8z4+4#LbQeXTpLJqM;(= zo=h2Y*ky8lpz#<@7zCFkZX3hkWx^=Rzab_n03+bvVVre{Xi(f;OgT+ACn$Ce5BdvxIDz)dnYR7Um=YCkr@* z>TS}~jMN=@i8=2Wn#OibJL5I&jMucYi(MG}J$5KkF?KoSmkO<>)bA7>T-JDV|PJ+iQDbQ z%ADf~#^SB+h3 zoWf=goLQ{q6e1&|iPFb;ZaN-Zq_Y!kW6|-*ZKmDK4B7_i$ko=%AuB!Y81sco;VPpe zz7{ig`*3zEwHR1C0^rJYM&Fb}G`cO!rGuO{es0aFP@zv9ebOu*xPiS!eIab9r-5It?v;e!yd)TL)S}XldfPR9oTEk^tj_iY-hZ( zoojK9fCBB+Yn`m ze9+OMeuhvS^?8@`wZ;tEO(LvLCndN&u>)kb9J1IndLt7pPN__-qdgu{H|=-e=xm09 z#bb{c;T+-RJQz--lkG;|-NW<2=mLL$@4gt%!~Lr}<=H!E4w7>2pysl>VNBHiX$Cn0 zhy5X+>bL2rBkJsq{eRCI_663ZnV5(;s{#0Bu*6Dkv@438 zX;BxnFe6(SF|*&x1lddWipUM=AVA zZ@|li8ZKOdmkYIAxD+oJ>J+KeUp1^}_%{t37(Sz6Bg1DkY-0GFhRqD0*RX}*3mVSD zzZ$d(m`}8V8YDvgY|m|9f~)tWwsF=PRHOq7VmL* zU!~ubwEuTCt)_1MuBEkfGTv8fG3|uW^y3|fU)I9{CU4g77TSt;L~}1BjCDuVJ5J+t zwys`8)J#sro24w}bmd~g{CvEDeG6pX3&_0OZwFX4_Ywh11so(`nSkX24i<2TfI|fw zCg5-ZX#pz)93kLH0Y?cqTEH;^jumj6fa3+cO27#MRth*#z$yW&1*{R!DWFS0w}2i2 zYXz(maFT$N1)L&ay?|2%oF;%5ACIEf2smB98AMCfVJfYTh~J~sQR*1|9;=Si@2eEQ zYxK)wQq(K$H^6k%8F+iu2Gz%}uE)O(>a}<`t1W6Pzna`H%?1Pv3fL%MlYk)suNAOa zz!m{47LTG~0WjT^dV?}sf16Ox6tG>usDLp6X9?ILV5fjx0>%YQ5d6vw{DPwNj?my7 zVK`U7>ja!9;PnC=0h0nU0J0lcs9D4G&5Ex;3SzJM74c>%Kmd;x)gf`AJIgaRS~ zMFAxNy9MkKuvfsG0A2+=iry&TO#sMw(qK;9W$msa<%-^*fQ8NS%|sy3xCZ z_dNpME8sc-?-THT0Ur?XK>;5U@L>Vh3t(%+qv#_7J}Tfw0XGS_S->pt&j|RefX@lIUBDdz?i6sBfV&0UBjED_z98U>0=^{RUIF(B__Bbn z2>7aiuL=0Nfcph}L%;(9zA4~a0=_NaI|9Bd;ClkTFW^A|KM?ScfFCkQ(T^1Um{$$Y z!9+jN2$=r+(o3KM?RPI!}^@S`%}N2&3E z0&6j4MGqi<`MFUGTs=JoS--&dIKF0j0##1}J%!(=>6i2?;9ukW4a&cT&VEO~r$3;) zVxgiZ6g^gZ`o+kHG=8E3KRlG01&W^HI$&G()Dl~lTC6p{Owqq6`d39y>#<|8*8(eg zQrBWut%`nyV!M_E^f&}O#g!e%T%XjHk0ay#weBAj@c#itB)g~tddv`>G{gLZW|J}0 zaGj>;!PH~8zhMdw7d*e=ZfZ3TQ89fcC1m))y{ms-oBQ>p9 zs@LeoFEFE0^cTo_PSFc(ieA)cA5IZKFQUnd%u{DNdk(yRhfLiJBnbbz)=g}Wk%GC3}YPnK1w7qNzRjtBmcE)TC$zvWy4f44g}lH>z10$6 zWlSCRr55AA4qL7@+<$%-FL#o;QgR^WWG zLd#kYJG2X<)R8bueojpK)Ma{SBC19m1yM)iI|f|*d?%?)DL$p3FI_QJR-s3Ey!8p2 zs^#NEBcsqQsVfWSv@6+2niGO-`t8a(^-&BlKO+l-&+WodAJ#Y9);1L>S2` z{I16D8nCbfF@~~IuXU?JwOWZKUrAWG6HO6Ie4)PRy}GhzIE1an=zb0ZMWTGdh3+xM*r)$%!X>J z*XnAF;v@wDrk2eb-0Ot9<`oU~MaWr^7%I_qqCOeg-PMFiAs{j+7_Q=N&(EOhsa&jw z)cQ)o$EB$V_hoI6Qm9kmt4@OoUu_NOYt>8pq3Y(FtF2*4B2TH;*j{!^vlR4vI{ic; zFsWWF`v%J}nlLDwrj38Sq@37qiQiVoRnF*55L9RB?!82L=Pb~Z47TSFQEd{$zmyOm70-K<(HX)8LP$}I8p2>+i{;;pZwtPy_=fR~;M<1pOnlp+=}~JQ zE33tyRj#Hn(*uP`7b$fX{Zj3)&9|tXm8ySh!m03o9Qc_QusX4bWMY?=bBIETQhWE zhLg6h!xNDymBG}rwy$#%aVh0u5INi8)zvCpmWWVl%5t5irln&&5c+(gBtyV5R&u;8 zk&{v$dOY9CTAOetf$9edw^B1IuZ0dJoTihjg^S(YEOg;RV*$PbI2+UjKq0;eUlCsk z-)_|CJ#Yx_kd>NM>H?q|jY6PWjUre({4Z*YZ0!i~v{DyKQiStH?QSVvo;bWFh*T<6 zDne_eO5jq;S1M2#)(_R5O111r7Q)Qw`)aRnC^cu7>nk!*&SfM_@;TP7zG-@PB1^>! znl5k3tHRG6Lgce4XFLbmZEt`F~OqV(8y>ePr zaeg_y+Qz%9Q;GYM@hWu@2Efm~)$?DGaA^kmVztWV5{?>mvARUP1zY#6R^Auv)dEgH zO1;gl%V(v9kw{b&0;}%rQ0hCNu6J4yZ89Y0Zc>**`ejHIE(gmMz*hoah3{&VufcaM z#&@_JW7VZvjjc*uq12_&p2-<56Y7;pU8bpAA5*UaM$&S*f^c;e)&S^otik2nYzcCU zt5JjU)m*MY>hUhksf(O?p!#b2gCt0k>ruW2!qDoPvR3Fx7r7OxuQ9EziDj2%SvZLE zAg|@tu(^Fm;nCvS+JRFq#^KmX6@DCH$u9DPF>Q6Hgk1CGWo z&kb&{YO%S&4duDP(Pg4;gY3kH zyUT?u1*0uHO_T@AiV(okJ|T^`z|Y4LLgHy|O^Al;mTJOLpxY6p)JKgk(yUh{oHaTK zB?0J07{N{WZpL>DzFYC#hE=KzKsUw#=%zRT-3*SgDQ{ZPGMq&$j!`$ z%ZPC<`q6TtRvwyPpAcCZQ9jukHR==S@RQg#pMskBxmdXQ(g=4$>eII3{ZfHZ!~x^n zM3iogi`e+UtJG)gmRpQ-(q~P*QhcY~pl(;w>JD^!Cw}k3;@*t}$?*ej^%bf#@%6x@M%DIz;E2aTurFH3pHrFUPqt1nTnC#g(mkXrHkxk?qPau z!i}TB~5+@!7&egnN1Dxa$I0-HZ9%2ZZ_F$7Ji_QKO6O zt5JO)POkr1?oYaCb9AGOn;CpDeD8t z=7XRlqmKf0Xw6Fac zYTYkSn$=dA2464nGXfiuosBU(jA9C_`7kDj)qEKL3x)We$PD?7iNxg4dLBk;XKT2| zs|gcA;CiL@p$OH|I4e=@)244$@DmldIWzz z{}~*^qsnAN&UxN8lt#9Dob3 z;yFnrc#-0n$$K--`+55K3_1|tdcJ)BMtonOQ_5!v63pQ z9TS=4m99<+lBi zH1%eWnMG{$SQl-AldA=WM&HV%(v2qcZcASXc^d*9zaS5S9q>Arz@9%khy=Qx`g%jJ zMxy2Z4EgCdyfx#Y7=wDCeu)c#AqR}G--rSS+#zttQgAMCByh~EzQTxm`8%s8e^kCq Mlg!=%ryR)j3-D@Y0{{R3 literal 0 HcmV?d00001 diff --git a/scripts/package.pex b/scripts/package.pex new file mode 100644 index 0000000000000000000000000000000000000000..e18c06032eed6b472be8642c05c07b767a0bc431 GIT binary patch literal 525 zcmY*V%}&BV5S}fi1q%2d6HmQ)GvR2DL?K4vAByL)9bmESlI}K~d<5UgNAL-J5Kqo_ zA<;SP&iBpCH(%!G_4B*t0RswtvP>X)Ncmej$BVV*5KK#vXBs+Bx0C*G+<&{s(k_wr8!6=cu|#bkBK(Z2b#D72u4E>RP%_OSScoh`3I0G8 zEAa1>M7SK3lG}Q07O9E#Mi{<8O-SfiO_#_`Y!pF^^%}XD3Cv<$d1y%7I19np6to|j zNn%AOX#p)IuVv=SzQ%k8VUjr5RFp3zJ7v&iut%s8 i?=aY>IB@JRB=>D!l`k*^TTql)vgH^h+xB z3;N!t&aS=0iP#7G%$c(@XS^%_`||6zQvwFGzHa^e3)N$c&vs@>s2O+NQppT9h&;j{%4k|TNT+*3#T*l8>rhQ}c=;(1XV4xl5#55~IOa0u>JqvI)fL$( zC_ko{DCiVqIaAP(yD=_ka;B)6VH7QD4AU!U4)Gi#9367%*ei4_^2Iqn)3;cd(-1}X zCqa}hI?I?wD8+~?E=3SQdBR5{6yOeIJOwYCj|p%NgaUV0$_T0gFEZYXjJ-zg=|JHW z+#@LvJ`7S3>XN>i1j`6LZG8e0Id;Aswd} zL#^M}MNfhl>Qd~9QI>WSj837_?`L6Cid`IYkwuJycWwsu29XRDY%e;BQKhlahR_ew zI7UG(O@BAmH>N@^%op^Cr30@D$z=B$iOjqLsX1M75G8I<(p)xfd9wZOBWY(d3> zss%L*>J~ICXj;&+V8w#A1sw}kEm*UlYk~Gji@^>3DnXCIh7NV$!A*l$7Sof_TzY~m zuSK-#aLW=5HsQ7*J$f&w8gR!FC8N4a+w@vpPTYh0CQ+W3nAh!4GOs%)9q?hx?4jHP zcu3DjL^&G_9y54Ck@@~D2HTV;_Gy8o$*-I_#@RD!{2X4Gg6s6o`(?IuQm^K9?n>1A zrAeCy+oX=LW(*Ob|8MsDROU^yy07xO-Q~m%ZP%-{oOqq@s9xu!wyb`Wt5@Ky9cb>R Ly{vvmDq8;mwx|Dy literal 0 HcmV?d00001 diff --git a/scripts/potion.pex b/scripts/potion.pex new file mode 100644 index 0000000000000000000000000000000000000000..c61d8f04299d7f5cee50e32af1e3692c9b3eb46a GIT binary patch literal 1298 zcmZ{i%We}f6o!8%lS`B4(i??BVal!C#GdRZZAunYl_Fq)5E^Ej#wfL;v4`?lEO-E( z1c@hL&x+%5oJ<2)%H%(v=Uje!e!u_QoiwmhL{Mhjbj6u@GsaJ{<~ojyM{$FZ`h=UuQea4 zOeWZ%U}TI9g8I45!Uka%n=HUt6u$ zbC>q)a)!PTCLVK}B6O%eexln7jmj(NDUZcS@MKn_F8Rgm=6gLm=9?%*L&+nVI2>p` z8DUk)1AZo?W37UJvRBJpkZ2Y-I{7&tavi5)YEiWdzpnqI7W(ek40MaPS-7i(Uudtt|;#jt7rO4wq!VnfTmVcV(slaZYbTy^ox z6FRu&K?ys!jvMr|tBzg2!SW3Y1Kjk`hPLM|gt^KeY=>bF?f=zWU+!LAu2-hi+pZqN z9V*Unmr!||;U2?%it;;XQ5)JPx?iAl3=b}kw@PO6c{LN literal 0 HcmV?d00001 diff --git a/scripts/projectile.pex b/scripts/projectile.pex new file mode 100644 index 0000000000000000000000000000000000000000..6f505ca7d1eb94f3a80a2141d1aa2d26a06c382d GIT binary patch literal 443 zcmY*VO;5ux40YDhZQTcOKp;-NaYNdX9xK?yhY(_795{8Uw`CM(N>c6bapGs}hj7Bp zDgln<_&wXtalT(acR>pTu*sA48w{U}UZZrX#LJD95X~!978VB2_p@v=&0cOFu16y{ zhWNLTdpi?!QNGYSP9)O>C45cxnfh#`=)0Flp{~-A#d7k`(e9ou5v$t~x(oVi)?>XY#+1Y73GkXvJ{rcbkk?SIdFy1=! z*MCvZYb_nc$C^=vN%R*g7y@8vUdPL^iZ%7j2XTX= zqv`2bPkCOt7SVu^6M@5X%JsH#u!bqmRS^vX&9uT$`>e92%d?`srl~(Mq^4&BUsI_Z zO&RUfSB^wQmBz|Zs{7Navu@P%R9jbRxPzCi0;#7QEwy~#^=mBF*kH8vnn@V*g26$v z$r$|0F)+3kmUN_J>RE;}iDAQl+q@YE=~L|6Le2~v>EyN+mOwLhQ2{?;OnEkd_FZpQ zaYj~M*^gr7SL9?yuK8dJ+f&u*O0dYzhcqBGL_3OURHjj+S{{24gfwJ{)1kYn7Zzt| zhb7FYD88y{ZiU8$vabA^z7kYa>;`_u7`hETA9z*j6UJ7kQ^B*Y@`74R(=NLT-z&j} z4rjHhP6yRC4cmoFQAIWNt2iYZvm_H`_?*}(jB}ofV;!=!{g&|+?Ri1Et?XAqts;Fz zZ|F>zP?zhj=cVSC{WVT;I3!BTe(W|}4mE2Kr;J?^oXe1q*d&yhP_4z~ST|BJ3wrZL z;8yfvu!*yfI4`=DIzm{dL2LPORN9u5J1_!){eKCk)kT z6_ip0Dz8o>@1WLA4rQg?G}a`^0&6-_qL9R|sJJh}^SsaDgC!>GHLEk3QgHpMeishA zv#K4LJS;(wi>z(1gK~zj5XKt^;c1=gD^c5{T%!u7xRg+2xfY^iniM7Cw721IbHWkOJQU@230>_f{ zIf%xorTK^{FG;%|P|5XSgV>|$b1Lb3NLFs&Qwmb8fk6F**r%bOhEA`Ulgvb+zu3*}=%b^~Ju3~2DU@wzLX(8e3Vn&Q}bWJwqX^~!| zCA`Z}yaEwC_6b85th)~44T#{;C!$#4>qh@gkXY@AQG1isI#`3|n=~nMhzj&MDEU0z zH|PuWCX{{ADjO4-V&0i-R~Nm79bW=Bk6BXUh(oJ(`%EXXVng$6Cc-fyczd@HMbTiU z*)eW1*RG7qp(;3dybQS}{<3vv#$_1jtPr@4*l3NH$8@KCYu4zZaErVbg+P=y5t8Gm z*&Q!+GORXw0xD0Ld)*&Te$jw;Z}-Q@#z#K~n^GE#=mzLw6l|kEgT~n86Vg$~}kP&;RYVA>L!+{y~TC zJM;mV?(;mq-=VK1(jfyYcd#SjxsRWRppD~)SxdbRJ-}9w@$&!@9&D2^Y&KX4;CYxx zVAezez-_Y!9_%q5e8kf(m|k%97MwAj<*>N#zbzIZ;zQv=>7xM|5ji8mO5iT>$u%<4 z|8D`XlW>D?>vTu5EXex6>5Q18uiI?vB z@OVZ{y2tlXGC#n}<9xQ5Me)gum@@??<z`$L-SQZ_<~BWoutya-~0%%`7w+T z>xMdaa#8c>&xmGD&t;-Msr+QNm`|@ZZUJ(=9nToL=qE5jI?9P`A#?QkPU27P1=EG! zpCz{NUk7>pb9^SI4(90>ko!v;`d``PdLd)zrjO~@CT_n0({J(q4$l7GI=o*T&hFVq zAaMolHr4fri_PA%k7$Rm^S>7*XgMhRLt>&se>4{uH!iN@KV=n41F#(Hp#HgoicjS< KuacV{lKulLi|m~M literal 0 HcmV?d00001 diff --git a/scripts/race.pex b/scripts/race.pex new file mode 100644 index 0000000000000000000000000000000000000000..ad516f7b9b106492be52abd798b8d956a5befd70 GIT binary patch literal 6618 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 Lk&O70fzkaRXayP| literal 0 HcmV?d00001 diff --git a/scripts/referencealias.pex b/scripts/referencealias.pex new file mode 100644 index 0000000000000000000000000000000000000000..e80edf0e8c5e9cd6afc228d8194cfa599e9160f7 GIT binary patch literal 6206 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 literal 0 HcmV?d00001 diff --git a/scripts/scene.pex b/scripts/scene.pex new file mode 100644 index 0000000000000000000000000000000000000000..330488b64369b3d6fa75bf469ebb2c5eb4f73bc8 GIT binary patch literal 693 zcmZ8eO>@&Q5PgarCr+DwK`E4rZ`_#avAH#rW;`(E!$UZ6aOG_ya3zl=PlkWjKhY~c zq$gH(J&@|4eQ&jI_epyAe)lIBK!BG#{I!cXlcecwWhJ7kMwNxd^y`P^e38w+r612v zPVgGTwuTks1-Z=Sju0=5GaZ~C5XuNUCc^MPggaV@>PMag@2*yNYKs-+GzXm>B(D7u|7asl3K$HtXoN z(Q~>{x?^uP4b13J@8sy0rgY)_oS8%mbOEs(WI0CNBo4LO2HvZj?pG?ke=)ehb+oo_Urgq2^LxHP2ExkDQWCY)hqM&XjiCz8J92Sn2=2VV-sk^USPaiyH2HO!?&K z%Y>mtcd}^7sL?aJf?CHodj z2U0MUxwTZ>7aHYHVVn}R8_Q6mos)a>7PauWFViGq=)8FUfnNMeHe?ACL{RD|Oh!zj zq>ZJz_0x|fNs=xVSNb~PVua1zR77T`t{#WFn=qXwLQ%lFQJRpN?kc+p)n3o-!Q-

Xhqf%uESaU1;O zV9|pm56ql&0<4(70?q|kHKF0Y@>cxn!9ta+ks{!r>xKEK?g*FLLp4hD% ei)tq6G-}x-S&v0LI6Gbw4?U6Hnx_|&H}MCgiT+do literal 0 HcmV?d00001 diff --git a/scripts/shaderparticlegeometry.pex b/scripts/shaderparticlegeometry.pex new file mode 100644 index 0000000000000000000000000000000000000000..b2cd43de6d460b9650f929049ef0dacad41d6ca5 GIT binary patch literal 561 zcmZuu%}&BV5T1onC_nzA38&t?nQ*i>h(L_Q7*ITy?Lb%CU9w#yyn=V%zz6Y3d=O90 zwwh?d9A>}oo6I+p*{{cs&vFSEQ1JHi06Nn+j8NZ&+6bQD2vv$kZ!cCE2Y0>}Nt8ir zax?3Xru~QO@m04AZ8+WCM4q(~nyCp5f;Un|6|mA=BxP=a^o9C6#Z<4Tr31eewI(IN!%1e z-Ko(+F2M@|YdQ-x)Ri2_s3!Rp~+NLRTRDMDqKsL;Uq|D80N zwU%}z^!ZwAl(eVaAiwPR^}PoUor6KiUfP24FR(fVgNl7h;4-LMYU2%RIbuKDz7Dl| zP|xc`8_=ZOBB^}FV2{B*vE01H;DG9+9{y3O-z(hgw;#cAZdBPNmdN^~m}4{Rkl{Db CZFocg literal 0 HcmV?d00001 diff --git a/scripts/shout.pex b/scripts/shout.pex new file mode 100644 index 0000000000000000000000000000000000000000..105d77327fcacd9ec5a31a89729d3bde40ed6444 GIT binary patch literal 766 zcmZWn%Z}4P5UlYl$z~VG@>p0NYfjv_lOqyYaaj;X;`8$#e=sQ;yWyAXuJRI2kOo2E_>{Qdk_nSj z%eIFz5zn|;T35eYy|-I(nD$b!rnbdlPd-p(zmfa?QC|>d#m$~x+V%A0O3$>irq-;j zDO+TXu4^(#7S>%LIkSeK4C1$jk+6S7x@c|5GJ6;zE7)msju(rKsk}$dP06_<-Z;|< zp}g8SM~3q*EI69a`}L-m7fZ{fwQIb(>e6jBR}Fa^-R1VnSE@K?8(h0JReGhV-uaFV zZFiq=KKEmPDjoK$d1LBcPC9B=*th02oomx;SsAt%uIM+$av2Jdza9_b0VD%R2apY5 zGyvZ#p)m1Bggu3+r#}8-KOnW^{v1o;LC+&8zlGblgIOp~aX2JYNO(2EUEB-l@KDDJ z_mSYi&C1br-y^B=5liA>K+^O`{1lEwijNc?D?AYvHa-w%$&32*k}3mV8~2%v=_8Y| M!=C;M1& literal 0 HcmV?d00001 diff --git a/scripts/skse.pex b/scripts/skse.pex new file mode 100644 index 0000000000000000000000000000000000000000..2a872aa63685cf351ef5b5eecd13b5400adf4d88 GIT binary patch literal 845 zcmb7B%We}v5UjB`_S(+FAtV8xmJ=s9afxq4G7&-`#7g0amfdzd$eFQb$FcHPd_uk? z5urF2CNIg=+8P{e@Oy2n!~TXiCtu)jQ-7j46*b|Msl0T05mn;BkPkl2msi?E z`CV(yiR<-ZYbK@&cu-nXY0n;tIXW|4RbK-g5VI$r%pd$B5Rv#GP!@l}7I z&o8LZk|!0=jv$F(CxT7{-3U^d7;>f1i=60jC=4XEu&b~qrNnQ}g2FfCK6bDl&eyxq z-6oQ4qO(n;kqC>_NVHzFtH06;2aQ$nG{m9U386*`kNDn4c)TWX%pD3ROtnw>A`1LH cY258`ufj3c{Rb@n#3MY3f|3VJJbgg?0R}CoApigX literal 0 HcmV?d00001 diff --git a/scripts/soulgem.pex b/scripts/soulgem.pex new file mode 100644 index 0000000000000000000000000000000000000000..1c89404835da9ad420047a48bab77cd83bb79a9f GIT binary patch literal 506 zcmZ8d%TB{E5F9t9kEG=-A#n;PZrsTciB=qdLnJt&;A~r?Vpp-FO8f)=!YA-0NPGfU zPOP0&0`?HkjAwS^{l0(yh&mA9dN_IeLXw+$Ii=^bm6cw^A^NSvWH2R{yTTEMQ{zkn z6EAWqS1*K^3C9CYq|v2v%IIQ=-a?fnX~fsc%G<{$k`B?8cIf4TE?r8bQ2XIV42dt)@={BO>#m6HqdL1j}D2Bpq~K6XV?%@mbwr-7z* z`-?Mt~ GOZ@>KPiRH} literal 0 HcmV?d00001 diff --git a/scripts/sound.pex b/scripts/sound.pex new file mode 100644 index 0000000000000000000000000000000000000000..b96fa6cb560877eba0128e6293c147d46915b667 GIT binary patch literal 723 zcmY*X%Wf1g5UkmmePwr95+H%_&~W0$J$oa9jdB6RNXZd7p5Cm<#9n!N6y>k@1U`Z@ z5}&}86K&6q5`1V^mD}Cr$KUfGztSEO$oTsD`yY%8*Vyvyrq)5iEA*ovaCAakuwuga z#Ib8(_PJ8Gn1uMwmgmYarUkprsjXRAP1r4nJ96f#=9(~*Lhq^8-fY-;OtiD5VdJc- zFj$+iB#Uh6{57(V&Jy;N3H2|OzUnF=J++LHT5U`Amz7hD?AW<3$JucW4Gh2dh+(y6n@bZKnM-u!RC6F1(5{*>#+i%BsR+s)&(-(6Gp zLccMTw@AIFxl!pWjo(Q$7vIwKnwKb8#kmL$uXsl5CtKugtNPTP8QtVVy{*8hxm^E1`^^Y zxN+j`+HNRMmUm|SX7+ja&*$4;!vO@iLdwwLej?8 z_~iPEJ%ysY%Z@Z%cSkXwyLs1Hg*~Isbl%EAO=W?p(F@ur?KOW3=f8h`N5qFIFmSix zz_15F4@Nx*dob>S^KuDH+%mwPz`modeqid6=(t-Wj4*3?w;@Y+g1`ej^xj}6dd|_0 zaL_{c7RLgQG5)`6vJ(WJbXh|dpSD(kL(UO6VrlqHfS>2g{4dWqk-xL_;vW^^F4AZG E1xBZcrvLx| literal 0 HcmV?d00001 diff --git a/scripts/sounddescriptor.pex b/scripts/sounddescriptor.pex new file mode 100644 index 0000000000000000000000000000000000000000..f635d2f2bd448724696067c4ee9e4d833efb6378 GIT binary patch literal 900 zcmZuv%W@Mj5FB~e?<9_$m`8XmCvM#F4JtUrh09jKky>lVu_!Y#+Sy9wulNMMgepFP zDpC7@>b<*#~(4gJ~7my-Lyz|wol zLpm;Sy@c*;7Q!P-@9^4Ch{nr%ZHPV)!^w^h_Z#GkU7udvHSLf~N8U3gx^xanF5)fL zAK^C)a=!RlP%^+uZhSyR9V_p9jBwRu^LIA3P+xod5s; literal 0 HcmV?d00001 diff --git a/scripts/spawnertask.pex b/scripts/spawnertask.pex new file mode 100644 index 0000000000000000000000000000000000000000..8ea001372cc3abf9322e9dfddfda71c90cbcc456 GIT binary patch literal 907 zcmb7CO>Yx15Ph57B%3B_X!$6Vk8S~p6P&n^8!b)M3$2<84hSK~JDV(Q?Z|c-^B@?vhKzra&; zuhC4zhvddiI6~)8J6*xnz9CP=uhX;)M|iqWXzdFnsX$MwJ(}jK3SQIdK&2J#O0Ck| zEePR}a_DB-oS*5FLP$b1Vh1fJ%#<7k$CJ+_-6>^ch|6Jp zu5BrKoMn~++M_}X_u(UAqq%Xeg{IUCR_#w%Nzw@!n_GuyPwN7klOx6Hq9`ukS~Y0bz~{0B==h_7wE$i3 zdi%wvN7Y`PG1}-=_aPsBte2t96&aW005`CKP29vS+~#$M1GjJ&_jq}W*e|PGb&D3Z zYhooEvh4jbp6?#uA@7fv3b(l506XlJ>HPo+-!mIuV|gw;>{i*;-e85tD?WpMRB02*B%?%|HG@b11Z8}E)r6zLR8#?)ud{4qS0LT5w5T#97M^DIk3EtJGck>zj^xlGpa zlq-t`rP^@^a!Btm%Mn(19vZ(DI=^^BMaR}O{he{F} z;rT#iNkr&A|MfSX`!S6uA<0BLJl~1KF+GX2N>Fth>rcYulr(A)Um&qV*x^;*gmFfw za_Uz%r4x$8NYJpC z+IQEG^wvGQ+CV2lo}$_Bn|5A=31*bsmBWiynNmDLz2A3cTge?d74pKlqg0H#EspD{ zXmcA)dliFN@qp~3yfa;9LOM&Nsgin8mhhywbW@c7a{k6Te_NqYss}X> z>K-&aXnHW?LCb@-2OSS)J?MHc=fM>Z<~>;OV9|pm50*Vx@nF@1H4jX8yaH^Pt%R!q zJ~5^-_HoUkz}fsC@HDRAy0b4vf(CliL^UVM*u)Lo#4UWvyIJ#jc!1mNFl#Z7DB%t( zKI5NR>$p3edoB;R0xW$jw2ON_G_X01e&PS>Et_XH&zq|^@VQUn4r}EqN0d3=7Y+v4 z#+NL=&s2FOz*hmjX3M^pPJjpOXZD){izc?F^Vjh0G_i{BriqojfdCKj$eule$J451 ub_B-d?`ZA6b8P2F=lyo__HwesUG-gy=08~HUQo%)DA_Ca*IUmWHs(DC>?lD1 literal 0 HcmV?d00001 diff --git a/scripts/static.pex b/scripts/static.pex new file mode 100644 index 0000000000000000000000000000000000000000..bfa90fa8f31e90d0e66049f9c402cf224b7ad21a GIT binary patch literal 435 zcmY+A%}xR_5XYzNx-1K*9E^#l-n^M`bdN+?4a9>)JTKh=D%g^?8(z=%F!4b=Ic+`Y z947Odum7~)uODAY2N;lvi`@eh3s*ZSZVpyJwrb_Ru`qm|Ehp7t^71&p8;@ZGS!|-2 zyh7&zp;u|AW7rp3HPT6~>OEvz*)*siooe$A>62Cnx6@V$U*~RHJ8qBCi7i?pX}Mm# zp>W)3Lge;VqP8DwkYDlu literal 0 HcmV?d00001 diff --git a/scripts/stringutil.pex b/scripts/stringutil.pex new file mode 100644 index 0000000000000000000000000000000000000000..6c404bc224e81480e5fa068f6f5458c363a61a07 GIT binary patch literal 1100 zcmb7COK#La5Pcrce=-?(*WY=Wi4jhIf za1tagzyVlM?VgrF%7&Kge*LQ6tLo41ci(@64Fr(!aqHVJtWLR5diI7@{`9;|ERP-Z zYgX3XL*gmNOz0gNHXafmk)CmezQm6?dy&Njx|8yVn5jT#Qod9(#TZV?*K?ilJZ5Dy z2C|fr9G~Qb=7G{FdeiwyS@nU|ZuzQ6(cUd9yVmqP7mF36_h_cHE8RDGU#AWa5~EXP zjpH2cOrsDY9UpILRc&2G0-dcBLiBiP?urr!XgIxWnZe;PkAlB*BUurI=b(1WH2Ef3lrbUf&K(DR`0!N7wR4~8DBdSFY-2yn$t z4O|Uy%`PqXRc4Fa-_0X5aoxp3nQmasrlO0RHMzbd2QpVqp=`-!-V*6;`RwRjrfAiQ zMy1$TX7}r&&g#z6&RPv?Re<%SqJ5eFD(?D@oc}$M+ObmmTMI{aF0&Y66Zb34@)rsb vIUHcCYGqrfa9z$cz=HtW)qM^FJe0VwqrX@=@ijcE?Sc(Sle^f&>0i* literal 0 HcmV?d00001 diff --git a/scripts/talkingactivator.pex b/scripts/talkingactivator.pex new file mode 100644 index 0000000000000000000000000000000000000000..f75832e28f8aeaff02d379fe914cfe658dc66886 GIT binary patch literal 460 zcmZ8dOHRWu5FIxqZTf*Cfsj~v#}27WvLgZ_C}KgOtW#&&nnreIJM<`A2QI=vSTS}G z0%q|%Z+>sapHFWeQ41K5iNo~`96S`&TB_x_aPp;a+MI5zfOuZZsw5+*x|jtFPDDto&0xpJy{#b* w9{cA0Z9xPb=!QJe1bT#h3Pnc@1`LM8!YFcfDNoV8Us3As!Kmr>$d0M(3-fYnrvLx| literal 0 HcmV?d00001 diff --git a/scripts/textureset.pex b/scripts/textureset.pex new file mode 100644 index 0000000000000000000000000000000000000000..2402616a460ead29f085316f0bbd62e47c66103d GIT binary patch literal 593 zcmZ8fy-veG4ECkzU-|Lb(_*zLyoo7uFc6Ni9S#QE_#f3ttVuO#YvLs|GM%Pqz#rRu1^(0;go|-u63K^@ z#T2?{O-Y81k#?bde8Pl6vJ5eFYfSW9V;Z_rV9VfhrLQrgT$=^7qezHo{==IGv9sv(fY2{mpQQW9$Wv zQ?w`2&TL^NIumVmUB=f!pvN@{WtFC4gLJKgkc4Ec%QvJmTPj-Nd|VOtjLfbJo0Za5 zB^lSqj8|nT$z~>axAMGpP98K#T>aOXow9r_y-=AOTV_!MD}A@#VAceFyq zn%?KwaoXsFc{tb^Ll+5pHK{RnydL^Bi(%j-4Eqj>PZE51iP|9eVT!{RJw@ BV8j3b literal 0 HcmV?d00001 diff --git a/scripts/topicinfo.pex b/scripts/topicinfo.pex new file mode 100644 index 0000000000000000000000000000000000000000..0f7c7cdaa9d5e000a8dad43f50da57c3e866f5b0 GIT binary patch literal 490 zcmY*V%TB{E5Zp9r+VsIwh{q{6Zb&_FAjb+?6%Yst<(xX()~Kv2+fgrk9ADB8;l$ce z5!jMFGv3`<@Auo+CaggKyu=Y*Lia_jq!`gmU960Ncv{M3VW9hbH|Y<@{nyd`b*~49 zko?ARW^;&kY;%i{43$+C++p!?O_JtMB^nFyLKX!Qw1uKVTB#^sLNrkN1EL2-2v>uW zgws>I$ZcxY(uxHdX40f;`i{b;Rx!oYtWe0A#3D7`wn@0IT;s9TYzax0xuTO?Lrc*O z71eWOa5;lUmQ}Q)sE>0=6+8dmfJR$ta{ic#Qfnk`%G=fbkNnVXH>W2M@(co~xgk2> zs0Wd|YETD=gKEa`2@Q|7+}$DXCL}J{rMIBXXNRTmIDl>dJIs7d#=HE^>fRrf9on#8 QW%~+e90m~_c%yAwKVji&6#xJL literal 0 HcmV?d00001 diff --git a/scripts/treeobject.pex b/scripts/treeobject.pex new file mode 100644 index 0000000000000000000000000000000000000000..9c35354e4873254471c86aba0375d5235b76e7f6 GIT binary patch literal 650 zcmZ8fyHdk25Ii}~J0^rz7%EfI(c_YV1R5yJK*<>Ul86K;Bgy2q=xF&8X7~k4Do$2B zF9mpf7OASSw_d3egP(pN|!$2MxxZm#{ ziVzB@XbA`m0q2-tnppzEn2@i_WA#PAn4Jx`WHHglEwl<{8^m4XDAtJ!iNDQaD6kE2 znNiq=iKN6yXf;lFdn)Y0Og(xdzTz2reZ4FF!;WaeB$@K8A8FMki(u+mM@1sBP*!qB z90f9VQpsJ}w0OLsWHZo#l0LfG4w_B0H*1cY-B(gTv5SiPepjH^*4DiC!y};~ckFli z0&=m9wHnpG^FzpDKEhXG%0GOBf~g=74O*{#-G*GN<6}vNtju6FsH(a@e&7z!`yiAK;0MAM7R1u9B0uqVw% zqSGQx8*c0#3#q+OG(>QW<%6~$c@#86kAUsdL~U3b-9jjIKa{is;WheUNK&@p)_>^w z1OJ=X3RRashu^S**WUq`z6Jsr23ZC<26+Yr21N!XqCUmQfiYeiXHaG^!C(@w;S2mD z!W2E;8#v7cXBf;dILqK1m4Cv>fmvRgV=&KPfx#jb9%1Cb60e z!E@jeg*Y-laVBJ+c3y$=a5>IX5sqb89bG8#0=atyuEI6^UxVvdb%RoiDC$4~BQihZ zz!e9sIasm4#7u%%ft#ky*s!mAqDq;vQ6?qaKewaAe7f8^<>10F>B0tXa1(Bs#Pl#R z+z5?r` z*3XZ2a-afpOiZ?_z-^;Cf$H{3B=%03Gij`9Y~(o3sjPF%N^Y`x`hLuu-eeVuOiXTa zEk62ETCxgv%n8n>C#`9-X~_!QHO!f`ByE<)BwxMJm%4?^uD#`D2e#;zyY`kZVTkv1 z748{6`g7lSOW#EXU&}=Y9>nK{2?rix9#>ZqtN8o13Xd$?K3!C(4Hq2j@en`fRd_sH FgnyOBEs6jD literal 0 HcmV?d00001 diff --git a/scripts/uicallback.pex b/scripts/uicallback.pex new file mode 100644 index 0000000000000000000000000000000000000000..eba2100a08c0d8fd7526062babb2c0917fceae9c GIT binary patch literal 1139 zcmb7C%We}f6g`vIOx{4CrR6o{Ran4^4cVntTXj<*B4B|~<<2_+K zl`QRp6RyUJDURleRMNu6Va7F88*>rEf6G(Oa*p6lk&%fYqSTR1Fu5bN%j6L{QXKGUBJA*%6h|Un8JQ(<%mvz!6mg;wDOifynG_t2 z8542JQPno;3zin-*O;qYKQ)$3a|G7W$4~GLO(2+aQJk?k^;p?$D9Ysu4P8$eb?QlB z|F{s59vZ3{Q(?wck%^o(JdBDg<3feGIXZthw0>V4Ei{|)h$jmkhszn)#Yt`xLk*UR zie{uKiP!%QSV?*UCCZD>JW`Zq2IiMMN+t=_*^za$V&~c#aK+gd^nwE!aI#h5S zxZ&9c?R}%DO|JGP_Tgh-Sh88cP29p3wskG)6wQCCQqY24&CTrFM(C{zJJ>ZscT>1y zgc`M6^{?PA?%_UtdNs<5a&S%!J*aE0QYNijd(u7`(o vnFBm3NzgeB@YoU_o=}O0r$kk^>Cipw)6QIYmx@Uzwtt1Cdl}%_m3DstOR&cO literal 0 HcmV?d00001 diff --git a/scripts/utility.pex b/scripts/utility.pex new file mode 100644 index 0000000000000000000000000000000000000000..3a270ada2a280799dd353e32f57262bfe53a7678 GIT binary patch literal 2658 zcmb7E+j1L45bf3dYRh&UC(do1n{#nOfN+rsA-1t(kw^(LkOzvQCep|rO4@bp#g6$Z zK7lWxieKQ7CwjK0H7n(bt&-;S>7G8_J+u4o+du!xX21b_e%<)vAE^Eqsj-UAAD@H+ zO~N4*4TVOjEu+IoL=wtvKk^AS+F~MqQ20Y4P~H(NW7u9C1k#Jxm*)CXjCDNJI$_7_ zN-ysELrmEh-q4?Pya=iUTVr3KaVVosuR}(e3>{P5e*itHjXsEnK9fRxB=pI%LRW$8f$Vlcwkmf?z%%!mxNbEJ4 zEPxo?M)o4vdM^=6L{Ng6n3f+*h%jk)#!7^S>B~_4J|jeo6(Tz&M8u4c$zp|wND0+^ zZ&w~Ek8Wbc_wcv~R|mc~RFU#MF^0mi8V;ogB})JEFObvqK~~QzH&SB^F*7RYzA&H= z`f)IjkkdBg>GtJ%zK0i8j1HwvA41uSC&>YakV^)>AQYWeFP^-U0TeWg>9WdGkViSh z`BO2DB~-*{dOP!Cgm(w@BHrVo$Wq!WCfc~Km^7{vBmjzHbbv*Mu-S^efo|1}jz#1K z60f!wq9NS@y@qa>ytT#cZJN&0{Zo87F>)Z)sT{gz$5L-rAqBb`oT+GVj6QKD&fQVq zPoO!gVFwHGH5VZVzA6$g~0^|s|+qO zSYvRB!DR;P46ZP^%HSG<>kMu%a2aecxXIuagWC-5Fu2QLlfgX(_Zd83@Q{I?KRymT z(n|&&JMfV<@yXS3)rkIS-GW>2g#1|y{}?`jPvNN!hX?Q(JF@UO8sz*UabAEg*_qg| z08J(w*ha5@^7B!v^TZO0CDmnd`3lwbvkuQJ`L!W$!gD6M&Sy#VecOPp^T|vTH`4jP zF`aF|i}_R}e9vm=RL@N+(y7@FGoVxLV43>Kr8Ra<>sQhw_fWR&XJ8MFZ%y>|bjMug zZF>ORF%5sy*00NaValW)3RWYj4pwa4L^Ld6kE&=Zpr{hg-JDDY_R(mWgK(j39dsw? zwC`GnE~{_LA pP3RHf!0Y60y+JCwhHtt9-#hRo`P9~NGy0L;O0oD=ZbCnm?mxTO#LWNz literal 0 HcmV?d00001 diff --git a/scripts/visualeffect.pex b/scripts/visualeffect.pex new file mode 100644 index 0000000000000000000000000000000000000000..4e90d9b7b2d044f38822b6cd0b32579d0cf00ce4 GIT binary patch literal 585 zcmY*V%}(1u5dPLNCJ70D1yc3o8@Eb1*2f4ERiGA;Hk_CBm@GKEk#{Y`!|(uoi#`bA zK{$2RPAfWxo%!bHn{Vgs=J#tSf&iO3HW~I8+SRf=FA7rr^V%sSx3w;FhvD_bVltag zetx|?8;|i3gZHgG-<^@4d+7C-fr+z7Y>K?UMOLB~~OYQAFOG>?ENU2+s(uJlxbcj#qV zAYI4`eQVB5z7gc8EU=wrEgV=gp*w9_)Rhn4n>E;L{WTR-kx_(17C-cgur)2M^w^aT zQ>l2*rvLPR=@t39GC?_|s;-!VzY~Num%jKld_l}76Ntj)L(usfggl$TR&Ws#f$ac; zJ)_%1VuOQ^d9;UqQ)jq?0lz~|bw&ca0(*=a@}a;!*ExIeF3a=1mMvnULwvvyj&Z_1 WSj23jmO8xR6LYYze-oma;L0D$mV9ae literal 0 HcmV?d00001 diff --git a/scripts/voicetype.pex b/scripts/voicetype.pex new file mode 100644 index 0000000000000000000000000000000000000000..e83e4c5037ec43521d828972790f90c730d07795 GIT binary patch literal 441 zcmY*VO;5r=5PeIrP@sMsjEScnOuU(JwBCr)7!3zeJeTbNt2j%#+YtYqzr-KH$?eh@ zolR!vy?OKYWB2;?9kd|eLZ0#s;+a;GoFt+gvqG zYqMEiqNn+ei{=DF>jegyN3>MzIsZG8Xm^2@d#v!;7lF$TwFM4pzK(Z2ecC5bl*FS+eBYU~a^H1~6a)&S_)ID8x2cjvXg)U|5Z$#j9PhyNcnh@(6j7 zROJ=&lV9ncoklaeQ>FU4=j&s-d#3bx|L=cBa^L`dZ!Z1yAB^ow(GP=r{n#ZPL{LmM zh)WwXX(l3(P~HfWFopTL7fBe$tyK}rHPI6t6q~k)yU!ypF?J1+-0n!>cAO!=ng+Wpi|^EJdO#Ryx{ zeh4h04g^k+ByiP)4$bR4;1T zdb=&%MD^DY=d9iBU`-!!yW?B;s6;*jx_WC|eTcr`NiX`!+ z_$Z-(LU;_NM!c4`wc3a`A`BQGhfxcPjd)YI5=I*__PX6xK<%KHeGzp@mBxxnud*uYy|U^-(+|nZX!?3WF+x zaRw6%CK*gIm}W4;V3xrggA)u+GMHy@iot0HXBeDiaE`%w1{WAyWKd&piNR$CR~TGn zaE-xr1~(YoWN?eYZ3cH3+-2|;gL{DOIKV~yxKF|%E)pJ)AaIeeK!U_Y!b1`~TqHaq zp@)lv$0U5fMFKWE2LoIrERpaDR}P*y@RU^e6{g^sLQX21OVD${`oPg(SPh^1cY=ld&W;5=ZA=i;k-(x#u z-3nRPAvZ8&9nbk3UMM5=ONBU;0F9+Cv@MoJ+N#KwC%5GdjO}i#ky_g{To`+H)bk-*N0iOqa0dM4t112 zFv=mEH0`-U)7frLn5;KC$^$#fTPw<29YtW2w=kP+%yrY@JKdN^wnNu)=xT>8bm+oW z(_U)(%cio8b5GxuY#EpAC><+GM@Q*m6#QQ>bV%>QdpH7LIlYJjt?oHbUUA5D@X2_s zSZ7Qn*S2ITnK_!R&t$d(m8_y_`U!MP3Ryo>CM(pe3#PKKlf7vwKj7TbN3W@M&TH9f Qp2auIV$7L-+NtyZ0SfOR*#H0l literal 0 HcmV?d00001 diff --git a/scripts/weather.pex b/scripts/weather.pex new file mode 100644 index 0000000000000000000000000000000000000000..fdf6958ae11cbf1cbdeab032eb75f299d03708a8 GIT binary patch literal 1107 zcmZ8f+j7$|5M9U4)wvc*p#|!4>l^RnttBMG19Yb8kVi(bw~4@&f-JX_zv2`45@z@X z9(iJAS%gG0NzR@<+C96`pV^O}eg!6f`ENrxz z$tN}6-(@bDAYqs2v0RLJrkRKlYD=CZC?JfbNQ#y$g@6XWf#9PQ2-R^anT9&c`PF)b z;J+6dT5SGrJHfe>DYV)AERJb$%52k5*ct+D^l!$wC>%w4$#j(6aUCx)qljmboPQy^ zk(Lxj0ZX%49rgj_5kjA_Fa45;C_M1n6O8l1K79u(k~bX#ZZn2;lVaxT$c(D4&b3_ z1;+2zwKgTTh_0(st_XU&M9q1rko8A!2uJiWr@yPLZj@f3G^)WyRe{HJ^-1Z?C-qaK zFcyy?qVE%;`~wf3dGMT~V%ClaFDOs!%l}xi62U8byQpwTGU#l2*;K=gTTb^E%$dkm literal 0 HcmV?d00001 diff --git a/scripts/wordofpower.pex b/scripts/wordofpower.pex new file mode 100644 index 0000000000000000000000000000000000000000..3b1d0fe56706d2c5a54210421975a09a2d70c5a2 GIT binary patch literal 445 zcmY*V%TB{E5F9rpeN#9fBu=?;Ktk$~94lzWLx8Ag&#Ap_4aKf(NBxI>6<@-CzzN3* zQdvvuo$>70-k;g$S5yOo4}PLX=+CqfPm5>0C3Cs49PvDtYhlrQxt|Wlli};_!}VZ* zV|4bEzPmXlH*uLGw8q-$vW!9t%P(^t89(>NShDD6KAAa;(U}VUYsOumAS-_ z%Z;)gP{MO#NV&uY+eVs}ru9dy2v`66>{dFyqM}jSM9<%dyTs|>V>iU*LXxPQnu@m7 zQ`59Cn`Q=Wt!|X4Zm_gopsUr8mQn>SOz7@=cY&J!EDJdlkmN|(yP=;dKP&GPB%{p0Oq0;kab z75dq3hMaT32))d(Ig|rwNNLuFiW1_DRtgE)Gh;s>&e>{O!{w|ZSt}CW6r5P(%98T{ z6Ioe{#EA>Goisg|wx10l-29(&JI!)~^`Lf%S-zpcV3B literal 0 HcmV?d00001 diff --git a/scripts/wornobject.pex b/scripts/wornobject.pex new file mode 100644 index 0000000000000000000000000000000000000000..ad9fd55e3c753fe7c4ed1d912fd6b769bb781889 GIT binary patch literal 1629 zcmb7D+iuf95FICRu1%U=XrUBvxs_WBlyb{kThh{phKfk^0U@;5li1YRt-PCt{uQ6V zmmu*AJo3b>oh7k)kyy#zGiP?@%l7k5y#6;lYM9ic=5XNlZZ*n5jCRQ^6jE^-C4?X%eWklkb7wtNtX`Dvb7MYS&iDLBj!OnWJ6Lhw!O20Yn~vfxebCAi`W?gc6koQ0701J6SamGMdn z>~OYE|wY%-TVg@K~7@WfkLB^cvhOnbmC5gE(XUGIq*>{QSLa0qd_9+kqj)S ztBFwcBd&`<$L&XS6R5&id;LH1vH?4BI+5s^m-Gv!>7`hZ(GN(2tN}R#YyaZorfQx+)qL%;+ftvld*^rZ(C%Yn1$xc^WD(m-w^P!#rGu zE3g1p>C>YMi^f?@Ij_NWxB(6^$8B3!Yi97GKb+1?%J|c6yAZySxa`lj!81p$soZ Pgtb6%bfp&I<%op8-eWX< literal 0 HcmV?d00001 diff --git a/source/scripts/action.psc b/source/scripts/action.psc new file mode 100644 index 00000000..e1d1dbb7 --- /dev/null +++ b/source/scripts/action.psc @@ -0,0 +1 @@ +Scriptname Action extends Form Hidden diff --git a/source/scripts/activator.psc b/source/scripts/activator.psc new file mode 100644 index 00000000..85f95027 --- /dev/null +++ b/source/scripts/activator.psc @@ -0,0 +1 @@ +Scriptname Activator extends Form Hidden diff --git a/source/scripts/activemagiceffect.psc b/source/scripts/activemagiceffect.psc new file mode 100644 index 00000000..acd15a1e --- /dev/null +++ b/source/scripts/activemagiceffect.psc @@ -0,0 +1,448 @@ +Scriptname ActiveMagicEffect Hidden + +; Add an inventory event filter to this effect. Item added/removed events matching the +; specified form (or in the specified form list) will now be let through. +Function AddInventoryEventFilter(Form akFilter) native + +; Dispel this effect +Function Dispel() native + +; Get the base MagicEffect this active effect is using +MagicEffect Function GetBaseObject() native + +; Get the actor that cast this spell +Actor Function GetCasterActor() native + +; Get the actor this spell is targeting (is attached to) +Actor Function GetTargetActor() native + +; Register for the specified animation event from the specified object - returns true if it successfully registered +bool Function RegisterForAnimationEvent(ObjectReference akSender, string asEventName) native + +; Register for LOS gain and lost events between the viewer and the target +; A loss or gain event will be sent immediately, depending on whether or not the viewer is already looking at the target or not +; If the viewer is not the player, the target must be another actor +Function RegisterForLOS(Actor akViewer, ObjectReference akTarget) native + +; Register for only the first LOS gain event between the viewer and the target +; If the viewer is already looking at the target, an event will be received almost immediately +; If the viewer is not the player, the target must be another actor +Function RegisterForSingleLOSGain(Actor akViewer, ObjectReference akTarget) native + +; Register for only the first LOS lost event between the viewer and the target +; If the viewer is already not looking at the target, an event will be received almost immediately +; If the viewer is not the player, the target must be another actor +Function RegisterForSingleLOSLost(Actor akViewer, ObjectReference akTarget) native + +; Register for a single OnUpdate event, in afInterval seconds. All scripts attached to this magic effect will get the update events +; Of course, this means you don't need to call UnregisterForUpdate() +; If you find yourself doing this: +; Event OnUpdate() +; UnregisterForUpdate() +; {Do some stuff} +; endEvent +; Then you should use RegisterForSingleUpdate instead +Function RegisterForSingleUpdate(float afInterval) native + +; Registers this magic effect to receive events when the player sleeps and wakes up +Function RegisterForSleep() native + +; Registers this alias to receive events when tracked stats are updated +Function RegisterForTrackedStatsEvent() native + +; Register for OnUpdate events, every X seconds, where X is the interval. All scripts attached to this magic effect will get the update events +Function RegisterForUpdate(float afInterval) native + +; Register for OnUpdateGameTime events, every X hours of game time, where X is the interval. All scripts attached to this magic effect will get the update events +Function RegisterForUpdateGameTime(float afInterval) native + +; Register for a single OnUpdateGameTime event, in afInterval hours of game time. All scripts attached to this magic effect will get the update events +Function RegisterForSingleUpdateGameTime(float afInterval) native + +; Remove all inventory event filters from this effect - all item added/removed events will now be received +Function RemoveAllInventoryEventFilters() native + +; Remove an inventory event filter from this effect. Item added/removed events matching the +; specified form (or in the specified form list) will no longer be let through. +Function RemoveInventoryEventFilter(Form akFilter) native + +; Turns on profiling for this specific object and all scripts attached to it - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StartObjectProfiling() native + +; Turns off profiling for this specific object and all scripts attached to it - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StopObjectProfiling() native + +; Unregister for any LOS events between the viewer and target +Function UnregisterForLOS(Actor akViewer, ObjectReference akTarget) native + +; Unregister for the specified animation event from the specified object +Function UnregisterForAnimationEvent(ObjectReference akSender, string asEventName) native + +; Unregisters this magic effect to receive events when the player sleeps and wakes up +Function UnregisterForSleep() native + +; Unregisters this magic effect from receiving events when tracked stats are updated +Function UnregisterForTrackedStatsEvent() native + +; Unregister for OnUpdate events, all attached scripts will stop getting update events +Function UnregisterForUpdate() native + +; Unregister for OnUpdateGameTime events, all attached scripts will stop getting update game time events +Function UnregisterForUpdateGameTime() native + +; Animation event, sent when an object we are listening to hits one of the events we are listening for +Event OnAnimationEvent(ObjectReference akSource, string asEventName) +EndEvent + +; Event sent when you have been unregistered from receiving an animation event because the target +; object's animation graph has been unloaded +Event OnAnimationEventUnregistered(ObjectReference akSource, string asEventName) +EndEvent + +; Event received when this effect is first started (OnInit may not have been run yet!) +Event OnEffectStart(Actor akTarget, Actor akCaster) +EndEvent + +; Event received when this effect is finished (effect may already be deleted, calling +; functions on this effect will fail) +Event OnEffectFinish(Actor akTarget, Actor akCaster) +EndEvent + +; LOS event, sent whenever the viewer first sees the target (after registering) +Event OnGainLOS(Actor akViewer, ObjectReference akTarget) +EndEvent + +; Lost LOS event, sent whenever the viewer first loses sight of the target (after registering) +Event OnLostLOS(Actor akViewer, ObjectReference akTarget) +EndEvent + +; Received when the player sleeps. Start and desired end time are in game time days (after registering) +Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) +EndEvent + +; Received when the player stops sleeping - whether naturally or interrupted (after registering) +Event OnSleepStop(bool abInterrupted) +EndEvent + +; Event received when a tracked stat is updated for the player +Event OnTrackedStatsEvent(string arStatName, int aiStatValue) +EndEvent + +; Update event, sent every X seconds while this magic effect is registered for them +Event OnUpdate() +EndEvent + +; Update event, sent every X hours of game time while this magic effect is registered for them +Event OnUpdateGameTime() +EndEvent + +; The following events are received from the actor this effect is attached to: + +; Event received when this reference is activated +Event OnActivate(ObjectReference akActionRef) +EndEvent + +; Event received when this object has moved to an attached cell from a detached one +Event OnAttachedToCell() +EndEvent + +; Event received when this object's parent cell is attached +Event OnCellAttach() +EndEvent + +; Event received when this object's parent cell is detached +Event OnCellDetach() +EndEvent + +; Event received when every object in this object's parent cell is loaded (TODO: Find restrictions) +Event OnCellLoad() +EndEvent + +; Event received when this object is closed +Event OnClose(ObjectReference akActionRef) +EndEvent + +; Event received when this object enters, exits, or changes containers +Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer) +EndEvent + +; Event received when this reference's destruction stage has changed +Event OnDestructionStageChanged(int aiOldStage, int aiCurrentStage) +EndEvent + +; Event recieved when this object moves to a detached cell from an attached one +Event OnDetachedFromCell() +EndEvent + +; Event received when this object is equipped by an actor +Event OnEquipped(Actor akActor) +EndEvent + +; Event received when this object is grabbed by the player +Event OnGrab() +EndEvent + +; Event received when this object is hit by a source (weapon, spell, explosion) or projectile attack +Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) +EndEvent + +; Event received when an item is added to this object's inventory. If the item is a persistant reference, akItemReference will +; point at it - otherwise the parameter will be None +Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) +EndEvent + +; Event received when an item is removed from this object's inventory. If the item is a persistant reference, akItemReference +; will point at it - otherwise the parameter will be None +Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) +EndEvent + +; Event recieved when this object is completely loaded - will be fired every time this object is loaded +Event OnLoad() +EndEvent + +; Event received when the lock on this object changes +Event OnLockStateChanged() +EndEvent + +; Event received when a magic affect is being applied to this object +Event OnMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect) +EndEvent + +; Event received when this object is opened +Event OnOpen(ObjectReference akActionRef) +EndEvent + +; Event received when this actor finishes changing its race +Event OnRaceSwitchComplete() +EndEvent + +; Event received when this object, if a book, is read +Event OnRead() +EndEvent + +; Event received when this object is released by the player +Event OnRelease() +EndEvent + +; Event received when this reference is reset +Event OnReset() +EndEvent + +; Event received when this reference is sold by an actor +Event OnSell(Actor akSeller) +EndEvent + +; Event received when a spell is cast by this object +Event OnSpellCast(Form akSpell) +EndEvent + +; Event received when translation is complete (from a call to TranslateTo) +Event OnTranslationComplete() +EndEvent + +; Event received when translation is aborted (from a call to StopTranslateTo) +Event OnTranslationFailed() +EndEvent + +; Event recieved when this reference hits a target +Event OnTrapHit(ObjectReference akTarget, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, \ + int aeMaterial, bool abInitialHit, int aeMotionType) +EndEvent + +; Event recieved when this starts hitting a target +Event OnTrapHitStart(ObjectReference akTarget, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, \ + int aeMaterial, bool abInitialHit, int aeMotionType) +EndEvent + +; Event recieved when this stops hitting a target +Event OnTrapHitStop(ObjectReference akTarget) +EndEvent + +; Event received when a this trigger is tripped +Event OnTrigger(ObjectReference akActionRef) +EndEvent + +; Event received when this trigger volume is entered +Event OnTriggerEnter(ObjectReference akActionRef) +EndEvent + +; Event received when this trigger volume is left +Event OnTriggerLeave(ObjectReference akActionRef) +EndEvent + +; Event received when this object is unequipped by an actor +Event OnUnequipped(Actor akActor) +EndEvent + +; Event recieved when this object is being unloaded - will be fired every time this object is unloaded +Event OnUnload() +EndEvent + +; Event that is triggered when this actor's combat state against the target changes +; State is as follows: +; 0 - not in combat +; 1 - in combat +; 2 - searching +Event OnCombatStateChanged(Actor akTarget, int aeCombatState) +EndEvent + +; Event that is triggered when this actor sits in the furniture +Event OnSit(ObjectReference akFurniture) +EndEvent + +; Event that is triggered when this actor leaves the furniture +Event OnGetUp(ObjectReference akFurniture) +EndEvent + +; Event that is triggered when this actor finishes dying +Event OnDeath(Actor akKiller) +EndEvent + +; Event that is triggered when this actor begins dying +Event OnDying(Actor akKiller) +EndEvent + +; Event that is triggered when this actor changes from one location to another +Event OnLocationChange(Location akOldLoc, Location akNewLoc) +EndEvent + +; Received when the lycanthropy state of this actor changes (when SendLycanthropyStateChanged is called) +Event OnLycanthropyStateChanged(bool abIsWerewolf) +EndEvent + +; Event received when this actor equips something - akReference may be None if object is not persistent +Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference) +EndEvent + +; Event received when this actor unequips something - akReference may be None if object is not persistent +Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference) +EndEvent + +; Event received when this actor starts a new package +Event OnPackageStart(Package akNewPackage) +EndEvent + +; Event received when this actor's package changes +Event OnPackageChange(Package akOldPackage) +EndEvent + +; Event received when this actor's package ends +Event OnPackageEnd(Package akOldPackage) +EndEvent + +; Event received when this object's Ward is hit by a spell +Event OnWardHit(ObjectReference akCaster, Spell akSpell, int aiStatus) +EndEvent + +; Received when the player fires a bow. akWeapon will be a bow, akAmmo is the ammo or None, +; afPower will be 1.0 for a full-power shot, less for a dud, and abSunGazing will be true if the player is looking at the sun. +Event OnPlayerBowShot(Weapon akWeapon, Ammo akAmmo, float afPower, bool abSunGazing) +EndEvent + +; Received when the player finishes fast travel, gives the duration of game time the travel took +Event OnPlayerFastTravelEnd(float afTravelGameTimeHours) +EndEvent + +; Received immediately after the player has loaded a save game. A good time to check for additional content. +Event OnPlayerLoadGame() +EndEvent + +; Received when StartVampireFeed is called on an actor +Event OnVampireFeed(Actor akTarget) +EndEvent + +; Received when the vampirism state of this actor changes (when SendVampirismStateChanged is called) +Event OnVampirismStateChanged(bool abIsVampire) +EndEvent + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; Additional useful effect information +float Function GetDuration() native +float Function GetTimeElapsed() native + +; Registers for OnKeyDown and OnKeyUp events for the given keycode. +Function RegisterForKey(int keyCode) native +Function UnregisterForKey(int keyCode) native +Function UnregisterForAllKeys() native + +Event OnKeyDown(int keyCode) +EndEvent + +Event OnKeyUp(int keyCode, float holdTime) +EndEvent + +; Registers for OnControlDown and OnControlUp events for the given control. +; For a list of valid controls, see Input.psc. +Function RegisterForControl(string control) native +Function UnregisterForControl(string control) native +Function UnregisterForAllControls() native + +Event OnControlDown(string control) +EndEvent + +Event OnControlUp(string control, float holdTime) +EndEvent + +; Registers for OnMenuOpen and OnMenuClose events for the given menu. +; Registrations have to be refreshed after each game load. +; For a list of valid menu names, see UI.psc. +Function RegisterForMenu(string menuName) native +Function UnregisterForMenu(string menuName) native +Function UnregisterForAllMenus() native + +Event OnMenuOpen(string menuName) +endEvent + +Event OnMenuClose(string menuName) +endEvent + +; Registers a custom event callback for given event name. +; Registrations have to be refreshed after each game load. +; +; Examples: +; RegisterForModEvent("myCustomEvent", "MyModEventCallback") +; +; Event signature of custom event callbacks: +; Event MyModEventCallback(string eventName, string strArg, float numArg, Form sender) +; endEvent +; +Function RegisterForModEvent(string eventName, string callbackName) native +Function UnregisterForModEvent(string eventName) native +Function UnregisterForAllModEvents() native + +; Sends custom event with given generic parameters. +Function SendModEvent(string eventName, string strArg = "", float numArg = 0.0) native + +; See Form.psc +Function RegisterForCameraState() native +Function UnregisterForCameraState() native + +Event OnPlayerCameraState(int oldState, int newState) +EndEvent + +; See Form.psc +Function RegisterForCrosshairRef() native +Function UnregisterForCrosshairRef() native + +Event OnCrosshairRefChange(ObjectReference ref) +EndEvent + +; See Form.psc +Function RegisterForActorAction(int actionType) native +Function UnregisterForActorAction(int actionType) native + +Event OnActorAction(int actionType, Actor akActor, Form source, int slot) +EndEvent + +; Registers the script for when a QueueNiNodeUpdate is called +Function RegisterForNiNodeUpdate() native +Function UnregisterForNiNodeUpdate() native + +Event OnNiNodeUpdate(ObjectReference akActor) +EndEvent + +; returns the magnitude of the active effect +float Function GetMagnitude() native \ No newline at end of file diff --git a/source/scripts/actor.psc b/source/scripts/actor.psc new file mode 100644 index 00000000..ab4e337f --- /dev/null +++ b/source/scripts/actor.psc @@ -0,0 +1,980 @@ +Scriptname Actor extends ObjectReference Hidden + +; Relationship functions use the following values: +; 4 - Lover +; 3 - Ally +; 2 - Confidant +; 1 - Friend +; 0 - Acquaintance +; -1 - Rival +; -2 - Foe +; -3 - Enemy +; -4 - Archnemesis + +; DEPRECATED - use MakePlayerFriend() instead +; replacement for ModFavorPoints +; if iFavorPoints > 0, will setRelationshipRank to 1 if 0 +; otherwise, won't do anything +Function ModFavorPoints(int iFavorPoints = 1) + if iFavorPoints > 0 + MakePlayerFriend() + else +; debug.trace(self + " ModFavorPoints called with negative param. NO EFFECT.") + endif +endFunction + +; also DEPRECATED +Function ModFavorPointsWithGlobal(GlobalVariable FavorPointsGlobal) + ModFavorPoints(FavorPointsGlobal.GetValueInt()) +endFunction + +;this function will make an actor a friend of the player if allowed +Function MakePlayerFriend() + ActorBase myBase = GetActorBase() + if myBase.IsUnique() + if GetRelationshipRank(Game.GetPlayer())== 0 +; debug.trace(self + " MakePlayerFriend called on neutral actor - changed to FRIEND.") + SetRelationshipRank(Game.GetPlayer(), 1) + else +; debug.trace(self + " MakePlayerFriend called on non-neutral actor - NO EFFECT.") + endif + else +; debug.trace(self + " MakePlayerFriend called on non-Unique actor. NO EFFECT.") + endif +endFunction + +; Adds the specified perk to this actor +Function AddPerk(Perk akPerk) native + +; Adds the specified shout to this actor - returns true on success +bool Function AddShout(Shout akShout) native + +; Adds the specified spell to this actor - returns true on success +bool Function AddSpell(Spell akSpell, bool abVerbose=true) native + +; Sets this a essential actors ability to talk when in a bleedout state +Function AllowBleedoutDialogue(bool abCanTalk ) native + +; overrides the race flag on an actor and determines if he can talk to the player in dialogue menu +Function AllowPCDialogue(bool abTalk) native + +; Attaches an "ash pile" to this actor, placing it at this actor's location and using the specified +; base object (or leveled item list) to represent the pile. If None is passed, it will use the +; default ash pile object +Function AttachAshPile(Form akAshPileBase = None) native + +; Can this actor fly here? +bool Function CanFlyHere() native + +; Clears this actor's arrested state +Function ClearArrested() native + +; Clears any expression override on the actor +Function ClearExpressionOverride() native + +; Clears this actor's extra arrows 3D +Function ClearExtraArrows() native + +; Remove the obligation to use a particular marker when this actor has to land. +Function ClearForcedLandingMarker() + SetForcedLandingMarker( None ) +endFunction + +; Clear any keep offset from actor settings +Function ClearKeepOffsetFromActor() native + +; Clears this actor's look at target +Function ClearLookAt() native + +; Damages the specified actor value +Function DamageActorValue(string asValueName, float afDamage) native + +; Alias for DamageActorValue - damages the specified actor value +Function DamageAV(string asValueName, float afDamage) + DamageActorValue(asValueName, afDamage) +EndFunction + +; Initiates a dismount. +bool Function Dismount() native + +; Dispel all spells from this actor +Function DispelAllSpells() native + +; Dispel a spell from this actor +bool Function DispelSpell( Spell akSpell ) native + +; Apply a spell to a target in combat +Function DoCombatSpellApply( Spell akSpell, ObjectReference akTarget ) native + +; Enables or disable's this actor's AI +Function EnableAI(bool abEnable = true) native + +; End the Deferred Kill state. This must only be called if StartDeferredKill was called first. +Function EndDeferredKill() native + +; Forces this actor to equip the specified item, preventing removal if requested +Function EquipItem(Form akItem, bool abPreventRemoval = false, bool abSilent = false) native + +; Forces this actor to equip the specified shout +Function EquipShout(Shout akShout) native + +; Forces this actor to equip the specified spell. The casting source can be: +; 0 - Left hand +; 1 - Right hand +Function EquipSpell(Spell akSpell, int aiSource) native + +; Forces the AI to re-evaluate its package stack +Function EvaluatePackage() native + +; Force the specified actor value to a specified value +Function ForceActorValue(string asValueName, float afNewValue) native + +; Alias for ForceActorValue - force the specified actor value to a specified value +Function ForceAV(string asValueName, float afNewValue) + ForceActorValue(asValueName, afNewValue) +EndFunction + +;returns the ActorBase +ActorBase function GetActorBase() + return GetBaseObject() as ActorBase +endFunction + +; Gets the specified actor value - returns 0 and logs an error if the value is unknown +float Function GetActorValue(string asValueName) native + +; Gets the specified actor value's max, taking into account buffs/debuffs +float Function GetActorValueMax(string asValueName) native + +; Gets the specified actor value as a percentage of its max value - from 0 to 1 +float Function GetActorValuePercentage(string asValueName) native + +; Alias for GetActorValue - retrives the specified actor value +float Function GetAV(string asValueName) + return GetActorValue(asValueName) +EndFunction + +; Alias of GetActorValueMax - retrives actor value's max, taking into account buffs/debuffs +float Function GetAVMax(string asValueName) + return GetActorValueMax(asValueName) +EndFunction + +; Alias for GetActorValuePercentage - gets the actor value as a percent of max +float Function GetAVPercentage(string asValueName) + return GetActorValuePercentage(asValueName) +EndFunction + +; Gets the base value of the specified actor value - returns 0 and logs an error if the value is unknown +float Function GetBaseActorValue(string asValueName) native + +; Alias for GetBaseActorValue - retrieves the specified actor value's base value +float Function GetBaseAV(string asValueName) + return GetBaseActorValue(asValueName) +EndFunction + +; Obtains how much it would cost to bribe this actor +int Function GetBribeAmount() native + +; Get the faction this actor reports crimes to +Faction Function GetCrimeFaction() native + +; Gets this actor's current combat state +int Function GetCombatState() native + +; Gets this actor's current combat target +Actor Function GetCombatTarget() native + +; Gets this actor's current AI package +Package Function GetCurrentPackage() native + +; Gets this actor's current dialogue target +Actor Function GetDialogueTarget() native + +; Obtain the armor currently equipped in the specified slot +Armor Function GetEquippedArmorInSlot(int aiSlot) native + +; Obtains the item quipped in the specified hand (0 - Left hand, 1 - Right hand) +; Return values are: +; -1 - Error +; 0 - Nothing +; 1 - One-handed sword +; 2 - One-handed dagger +; 3 - One-handed axe +; 4 - One-handed mace +; 5 - Two-handed sword +; 6 - Two-handed axe +; 7 - Bow +; 8 - Staff +; 9 - Magic spell +; 10 - Shield +; 11 - Torch +int Function GetEquippedItemType(int aiHand) native + +; Gets this actor's currently equipped shout +Shout Function GetEquippedShout() native + +; Gets this actor's currently equipped weapon +; false - Default - Right Hand +; true - Left Hand +Weapon Function GetEquippedWeapon(bool abLeftHand = false) native + +; Gets this actor's currently equipped shield +Armor Function GetEquippedShield() native + +; Gets the spell currently equipped in the specified source +; 0 - Left Hand +; 1 - Right Hand +; 2 - Other +; 3 - Instant +Spell Function GetEquippedSpell(int aiSource) native + +; Obtains this actor's rank with the specified faction - returns -1 if the actor is not a member +int Function GetFactionRank(Faction akFaction) native + +; Obtains this actor's faction-based reaction to the other actor +; 0 - Neutral +; 1 - Enemy +; 2 - Ally +; 3 - Friend +int Function GetFactionReaction(Actor akOther) native + +; Obtains this actor's current flight state +; 0 - Not flying +; 1 - Taking off +; 2 - Cruising +; 3 - Hovering +; 4 - Landing +int Function GetFlyingState() native + +; Get the ref at which this actor is obliged to land, if one is set (or none, if not). +ObjectReference Function GetForcedLandingMarker() native + +; Retrieves the amount of gold this actor has +int Function GetGoldAmount() native + +; Gets this actor's highest relationship rank - returns 0 if they have no relationships +int Function GetHighestRelationshipRank() native + +; Returns this actor's killer - or None if this actor is still alive +Actor Function GetKiller() native + +; Returns this actor's current level. +int Function GetLevel() native + +; Returns this actor's current light level. +float Function GetLightLevel() native + +; Gets this actor's highest relationship rank - returns 0 if they have no relationships +int Function GetLowestRelationshipRank() native + +; Obtains a leveled actor's "fake" base (the one generated by the game when the +; actor is leveled. This differs from GetActorBase which will return the editor base +; object) +ActorBase Function GetLeveledActorBase() native + +; Queries whether this actor has no bleedout recovery flag set. +bool Function GetNoBleedoutRecovery() native + +; Queries whether this actor receives player input +bool Function GetPlayerControls() native + +; Returns this actor's race +Race Function GetRace() native + +; Obtains the relationship rank between this actor and another +int Function GetRelationshipRank(Actor akOther) native + +; Obtains this actor's sit state, which is one of the following: +; 0 - Not sitting +; 2 - Not sitting, wants to sit +; 3 - Sitting +; 4 - Sitting, wants to stand +int Function GetSitState() native + +; Obtains this actor's sleep state, which is one of the following: +; 0 - Not sleeping +; 2 - Not sleeping, wants to sleep +; 3 - Sleeping +; 4 - Sleeping, wants to wake +int Function GetSleepState() native + +; Gets the voice recovery timer from the actor +float Function GetVoiceRecoveryTime() native + +; Gets the total "warmth rating" for this actor +float Function GetWarmthRating() native + +; Checks to see if this actor has the specified association with the other actor - or anyone (if no actor is passed) +bool Function HasAssociation(AssociationType akAssociation, Actor akOther = None) native + +; Checks to see if this actor has a family relationship with the other actor - or anyone (if no actor is passed) +bool Function HasFamilyRelationship(Actor akOther = None) native + +; Sees if this actor has line-of-sight to another object. Only the player can check LOS to a non-actor +bool Function HasLOS(ObjectReference akOther) native + +; Checks to see if this actor is currently being affected by the given Magic Effect +bool Function HasMagicEffect(MagicEffect akEffect) native + +; Checks to see if this actor is currently being affected by a Magic Effect with the given Keyword +bool Function HasMagicEffectWithKeyword(Keyword akKeyword) native + +; Checks to see if this actor has a parent relationship with the other actor +bool Function HasParentRelationship(Actor akOther) native + +; Checks to see if this actor has the given Perk +bool Function HasPerk(Perk akPerk) native + +; Checks to see if this actor has the given Spell or Shout +bool Function HasSpell(Form akForm) native + +; Returns if this actor is alarmed or not +bool Function IsAlarmed() native + +; Returns if this actor is alerted or not +bool Function IsAlerted() native + +; Is this actor allowed to fly? +bool Function IsAllowedToFly() native + +; Is this actor currently arrested? +bool Function IsArrested() native + +; Is this actor currently arresting his target? (Must be a guard and alarmed) +bool Function IsArrestingTarget() native + +; Is the actor being ridden? +bool Function IsBeingRidden() native + +; Is this actor currently bleeding out? +bool Function IsBleedingOut() native + +; Queries whether this actor has player bribe flag set. +bool Function IsBribed() native + +; Is this actor a child? +bool Function IsChild() native + +; Is this actor a commanded by another? +bool Function IsCommandedActor() native + +; Returns if this actor is dead or not +bool Function IsDead() native + +; Returns if this actor is detected by the other one +bool Function IsDetectedBy(Actor akOther) native + +; Is this actor doing a favor for the player? +bool Function IsDoingFavor() native + +; Returns if the specified object is equipped on this actor +bool Function IsEquipped(Form akItem) native + +; Is this actor essential? +bool Function IsEssential() native + +; Returns if this actor is flying or not +bool Function IsFlying() native + +; Returns if this actor is a guard or not +bool Function IsGuard() native + +; Is this actor flagged as a ghost? +bool Function IsGhost() native + +; Is this actor hostile to another actor? +bool Function IsHostileToActor(Actor akActor) native + +; Returns if this actor is currently in combat +bool Function IsInCombat() native + +; Checks to see if this actor is a member of the specified faction +bool Function IsInFaction(Faction akFaction) native + +; Returns if this actor is in a kill move or not +bool Function IsInKillMove() native + +; Queries whether this actor has player intimidated flag set. +bool Function IsIntimidated() native + +; Is the actor on a mount? +bool Function IsOnMount() native + +; Is the actor over-encumbered? +bool Function IsOverEncumbered() native + +; Checks to see if this actor the last ridden horse of the player +bool Function IsPlayersLastRiddenHorse() native + +; Is this actor currently a teammate of the player? +bool Function IsPlayerTeammate() native + +; Is this actor currently running? +bool Function IsRunning() native + +; Is this actor currently sneaking? +bool Function IsSneaking() native + +; Is this actor currently sprinting? +bool Function IsSprinting() native + +; Is this actor trespassing? +bool Function IsTrespassing() native + +; Is this actor unconscious? +bool Function IsUnconscious() native + +; Does this actor have his weapon and/or magic drawn? +bool Function IsWeaponDrawn() native + +; Sets the actor to a mode where it will keep a given offset from another actor +Function KeepOffsetFromActor(Actor arTarget, float afOffsetX, float afOffsetY, float afOffsetZ, float afOffsetAngleX = 0.0, float afOffsetAngleY = 0.0, float afOffsetAngleZ = 0.0, float afCatchUpRadius = 20.0, float afFollowRadius = 5.0) native + +; Kills this actor with the killer being the guilty party +Function Kill(Actor akKiller = None) native + +; Kills this actor even if essential +Function KillEssential(Actor akKiller = None) + ActorBase akActorBase = GetBaseObject() as ActorBase + if akActorBase.IsUnique() + akActorBase.SetEssential(0) + endif + Kill(akKiller) +endFunction + +; Kills this actor without a kill event with the killer being the guilty party +Function KillSilent(Actor akKiller = None) native + +; Modifies the specified actor value +Function ModActorValue(string asValueName, float afAmount) native + +; Alias for ModActorValue - modifies the specified actor value +Function ModAV(string asValueName, float afAmount) + ModActorValue(asValueName, afAmount) +EndFunction + +; Modifies this actor's rank in the faction +Function ModFactionRank(Faction akFaction, int aiMod) native + +; Pop this actor to the initial location for a package. Mainly for use on +; disabled actors, since they would normally start at their editor locations. +Function MoveToPackageLocation( ) native + +; Opens this actor's inventory, as if you were pick-pocketing them. Only works on teammates, or anyone if forced. +Function OpenInventory(bool abForceOpen = false) native + +; Make the actor path to a reference, latent version +; Note: this method doesn't return until the goal is reached or pathing +; failed or was interrupted (by another request for instance) +bool Function PathToReference(ObjectReference aTarget, float afWalkRunPercent) native + +; Send an idle to the actor to load in and play. +bool Function PlayIdle(Idle akIdle) native + +; Send an idle to the actor to play, overriding its target with the specified reference +bool Function PlayIdleWithTarget(Idle akIdle, ObjectReference akTarget) native + +; Send an event to the subgraphs of an actor. +Function PlaySubGraphAnimation(string asEventName) native + +; Removes this actor from the specified faction +Function RemoveFromFaction(Faction akFaction) native + +; Removes this actor from all factions +Function RemoveFromAllFactions() native + +; Removes the specified perk from this actor +Function RemovePerk(Perk akPerk) native + +; Removes the specified shout from this actor - returns true on success +bool Function RemoveShout(Shout akShout) native + +; Removes the specified spell from this actor - returns true on success +bool Function RemoveSpell(Spell akSpell) native + +; Resets this actor's health and limb state +Function ResetHealthAndLimbs() native + +; Restores damage done to the actor value (up to 0 damage) +Function RestoreActorValue(string asValueName, float afAmount) native + +; Resurrects this actor +Function Resurrect() native + +; Alias for RestoreActorValue - restores damage done to the actor value +Function RestoreAV(string asValueName, float afAmount) + RestoreActorValue(asValueName, afAmount) +EndFunction + +; Has this actor behave as if assaulted +Function SendAssaultAlarm() native + +; Tell anyone who cares that the lycanthropy state of this actor has changed +Function SendLycanthropyStateChanged(bool abIsWerewolf) native + +; Has this actor behave as if they caught the target trespassing +Function SendTrespassAlarm(Actor akCriminal) native + +; Tell anyone who cares that the vampirism state of this actor has changed +Function SendVampirismStateChanged(bool abIsVampire) native + +; Sets the specified actor value +Function SetActorValue(string asValueName, float afValue) native + +; Sets the actor in an alerted state +Function SetAlert(bool abAlerted = true) native + +; Sets whether this actor is allowed to fly or not - if not, will land the actor +Function SetAllowFlying(bool abAllowed = true) native + +; Sets whether this actor is allowed to fly or not - if not, will land the actor +Function SetAllowFlyingEx(bool abAllowed = true, bool abAllowCrash = true, bool abAllowSearch = false) native + +; Sets this actor's alpha - with an optional fade to that alpha +; The alpha will be clamped between 0 and 1 +Function SetAlpha(float afTargetAlpha, bool abFade = false) native + +; Sets this actor to be attacked by all other actors on sight +Function SetAttackActorOnSight(bool abAttackOnSight = true) native + +; Alias for SetActorValue - sets the specified actor value +Function SetAV(string asValueName, float afValue) + SetActorValue(asValueName, afValue) +EndFunction + +; Flags/unflags this actor as bribed by the player +Function SetBribed(bool abBribe = true) native + +; Sets the faction this actor reports crimes to +Function SetCrimeFaction(Faction akFaction) native + +; Sets this actor's critical stage, which is one of the following (properties below also match this) +; 0 - None +; 1 - Goo start +; 2 - Goo end +; 3 - Disintegrate start +; 4 - Disintegrate end +Function SetCriticalStage(int aiStage) native + +; Flag this actor as currently doing a favor for the player +Function SetDoingFavor(bool abDoingFavor = true) native + +; Sets this actor as "don't move" or not +Function SetDontMove(bool abDontMove = true) native + +; Sets an expression to override any other expression other systems may give this actor. +; 7 - Mood Neutral +; 0 - Dialogue Anger 8 - Mood Anger 15 - Combat Anger +; 1 - Dialogue Fear 9 - Mood Fear 16 - Combat Shout +; 2 - Dialogue Happy 10 - Mood Happy +; 3 - Dialogue Sad 11 - Mood Sad +; 4 - Dialogue Surprise 12 - Mood Surprise +; 5 - Dialogue Puzzled 13 - Mood Puzzled +; 6 - Dialogue Disgusted 14 - Mood Disgusted +; aiStrength is from 0 to 100 (percent) +Function SetExpressionOverride(int aiMood, int aiStrength = 100) native + +;forces the eye texture for this actor to the give texture set +Function SetEyeTexture(TextureSet akNewTexture) native + +; Sets this actor's rank with the specified faction +Function SetFactionRank(Faction akFaction, int aiRank) native + +; Set a specific marker as the place at which this actor must land from flight. +; params: +; - aMarker: The ObjectReference to set as this actor's landing marker +Function SetForcedLandingMarker( ObjectReference aMarker ) native + +; Flags/unflags this actor as a ghost +Function SetGhost(bool abIsGhost = true) native + +; Adds this actor to a faction at rank 0 if they aren't already in it +Function AddToFaction(Faction akFaction) + if (!IsInFaction(akFaction)) + SetFactionRank(akFaction, 0) + endif +EndFunction + +; Turns on/off headtracking on this actor +Function SetHeadTracking(bool abEnable = true) native + +; Flags/unflags this actor as intimidated by the player +Function SetIntimidated(bool abIntimidate = true) native + +; Sets this actor's head tracking target, optionally forcing it as their pathing look-at target +Function SetLookAt(ObjectReference akTarget, bool abPathingLookAt = false) native + +; Set the no bleedout recovery flag on this actor +Function SetNoBleedoutRecovery(bool abAllowed) native + +; Sets this actor to not effect the detection level on the stealth meter if he is not hostile to the player +Function SetNotShowOnStealthMeter(bool abNotShow) native + +; Sets the actors outfit and makes him wear it +Function SetOutfit( Outfit akOutfit, bool abSleepOutfit = false ) native + +; Set/reset whether player input being sent to the actor +Function SetPlayerControls(bool abControls) native + +; Sets the player as resisting arrest from this actor's faction +Function SetPlayerResistingArrest() native + +; Sets or clears this actor as a teammate of the player +; abCanDoFavor - OPTIONAL default is true the teammate can do favors +Function SetPlayerTeammate(bool abTeammate = true, bool abCanDoFavor=true) native + +; Sets the actors race +; akRace - OPTIONAL (Def=None) New race for this actor. Default, no race, to switch back to the original race. +Function SetRace( Race akRace = None ) native + +; Sets the relationship rank between this actor and another (See GetRelationshipRank for the ranks) +Function SetRelationshipRank(Actor akOther, int aiRank) native + +; Sets this actor as restrained or not +Function SetRestrained(bool abRestrained = true) native + +; Set a variable on all of an actor's subgraphs +Function SetSubGraphFloatVariable(string asVariableName, float afValue) native + +; Sets this actor as unconscious or not +Function SetUnconscious(bool abUnconscious = true) native + +; Attach the actor to (or detach it from) a horse, cart, or other vehicle. +; akVehicle is the vehicle ref. To detach the actor from its current vehicle, set akVehicle to None (or to the Actor itself). +Function SetVehicle( ObjectReference akVehicle ) native + +; Sets the voice recovery timer on the actor +; afTime is recovery time in seconds +Function SetVoiceRecoveryTime( float afTime ) native + +; Opens the Barter menu +Function ShowBarterMenu() native + +; Opens the Gift menu +; Params: +; - abGivingGift: True if we're giving a gift to this Actor, false if the player is taking a gift from this Actor +; - apFilterList: OPTIONAL (Def=None) -- If present, this form list is used to filter the item list. Only items +; that match keywords / items in the list will get shown +; - abShowStolenItems: OPTIONAL (Def=false) -- If true, stolen items are shown +; - abUseFavorPoints: OPTIONAL (Def=true) -- If true, favor points are added / subtracted with each transaction. If false, FPs aren't used at all. +; Returns: The number of favor points spent / gained while in the menu. +int Function ShowGiftMenu( bool abGivingGift, FormList apFilterList = None, bool abShowStolenItems = false, bool abUseFavorPoints = true ) native + +; Starts Cannibal with the target +Function StartCannibal(Actor akTarget) native + +; Starts combat with the target +Function StartCombat(Actor akTarget) native + +; Start the Deferred Kill state. Be sure to call EndDeferredKill or the actor will be invulnerable. +Function StartDeferredKill() native + +; Starts vampire feed with the target +Function StartVampireFeed(Actor akTarget) native + +; Removes this actor from combat +Function StopCombat() native + +; Stops all combat and alarms against this actor +Function StopCombatAlarm() native + +; Returns whether the actor can trap the soul of the given actor. +bool Function TrapSoul(Actor akTarget) native + +; Unequips the all items from this actor +Function UnequipAll() native + +; Unequips the specified item from this actor +Function UnequipItem(Form akItem, bool abPreventEquip = false, bool abSilent = false) native + +; Unequips the all items in this slot for the actor +Function UnequipItemSlot(int aiSlot) native + +; Forces this actor to unequip the specified shout +Function UnequipShout(Shout akShout) native + +; Forces this actor to unequip the specified spell. The casting source can be: +; 0 - Left hand +; 1 - Right hand +Function UnequipSpell(Spell akSpell, int aiSource) native + +; This actor will unlock all the doors that he qualifies for ownership in his current parentcell +Function UnLockOwnedDoorsInCell() native + +; Returns whether intimidate will succeed against this actor or not +bool Function WillIntimidateSucceed() native + +; Returns whether anything the actor is wearing has the specified keyword +bool Function WornHasKeyword(Keyword akKeyword) native + +; Makes this actor start sneaking +Function StartSneaking() native + +; Makes this actor draw his weapon +Function DrawWeapon() native + +; Event that is triggered when this actor's combat state against the target changes +; State is as follows: +; 0 - not in combat +; 1 - in combat +; 2 - searching +Event OnCombatStateChanged(Actor akTarget, int aeCombatState) +EndEvent + +; Event that is triggered when this actor sits in the furniture +Event OnSit(ObjectReference akFurniture) +EndEvent + +; Event that is triggered when this actor leaves the furniture +Event OnGetUp(ObjectReference akFurniture) +EndEvent + +; Event that is triggered when this actor finishes dying +Event OnDeath(Actor akKiller) +EndEvent + +; Event that is triggered when this actor begins to die +Event OnDying(Actor akKiller) +EndEvent + +; Event received when an actor enters bleedout. +Event OnEnterBleedout() +EndEvent + +; Event that is triggered when this actor changes from one location to another +Event OnLocationChange(Location akOldLoc, Location akNewLoc) +EndEvent + +; Received when the lycanthropy state of this actor changes (when SendLycanthropyStateChanged is called) +Event OnLycanthropyStateChanged(bool abIsWerewolf) +EndEvent + +; Event received when this actor equips something - akReference may be None if object is not persistent +Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference) +EndEvent + +; Event received when this actor unequips something - akReference may be None if object is not persistent +Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference) +EndEvent + +; Event received when this actor starts a new package +Event OnPackageStart(Package akNewPackage) +EndEvent + +; Event received when this actor's package changes +Event OnPackageChange(Package akOldPackage) +EndEvent + +; Event received when this actor's package ends +Event OnPackageEnd(Package akOldPackage) +EndEvent + +; Event received when this actor finishes changing its race +Event OnRaceSwitchComplete() +EndEvent + +; Received when the player fires a bow. akWeapon will be a bow, akAmmo is the ammo or None, +; afPower will be 1.0 for a full-power shot, less for a dud, and abSunGazing will be true if the player is looking at the sun. +Event OnPlayerBowShot(Weapon akWeapon, Ammo akAmmo, float afPower, bool abSunGazing) +EndEvent + + +; Received immediately after the player has loaded a save game. A good time to check for additional content. +Event OnPlayerLoadGame() +EndEvent + +; Received when the player finishes fast travel, gives the duration of game time the travel took +Event OnPlayerFastTravelEnd(float afTravelGameTimeHours) +EndEvent + +; Received when StartVampireFeed is called on an actor +Event OnVampireFeed(Actor akTarget) +EndEvent + +; Received when the vampirism state of this actor changes (when SendVampirismStateChanged is called) +Event OnVampirismStateChanged(bool abIsVampire) +EndEvent + +; Set of read-only properties to essentually make a fake enum for critical stages +int Property CritStage_None = 0 AutoReadOnly +int Property CritStage_GooStart = 1 AutoReadOnly +int Property CritStage_GooEnd = 2 AutoReadOnly +int Property CritStage_DisintegrateStart = 3 AutoReadOnly +int Property CritStage_DisintegrateEnd = 4 AutoReadOnly + +; **** For Debugging Movement Animations (not in release builds) **** +; Forces the movement direction on the actor +; afXAngle, afYAngle and afZAngle are in degrees +Function ForceMovementDirection(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0) native + +; Forces the movement speed on the actor +; afSpeedMult is a speed multiplier based on the current max speeds +; - 0 -> 1 Scales between 0 and the Walk speed +; - 1 -> 2 Scales between Walk speed and Run Speed +; - 2 and above is a multiplier of the run speed (less 1.0 since Run is 2.0) +Function ForceMovementSpeed(float afSpeedMult) native + +; Forces the movement rotation speed on the actor +; Each component of the rotation speed is a multiplier following these rules: +; - 0 -> 1 Scales between 0 and the Walk speed +; - 1 -> 2 Scales between Walk speed and Run Speed +; - 2 and above is a multiplier of the run speed (less 1.0 since Run is 2.0) +Function ForceMovementRotationSpeed(float afXMult = 0.0, float afYMult = 0.0, float afZMult = 0.0) native + +; Ramps the movement direction on the actor to the passed in value over the passed in time +; afXAngle, afYAngle and afZAngle are in degrees +; afRampTime is in seconds +Function ForceMovementDirectionRamp(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0, float afRampTime = 0.1) native + +; Ramps the movement speed on the actor to the passed in value over the passed in time +; afSpeedMult is a speed multiplier based on the current max speeds +; - 0 -> 1 Scales between 0 and the Walk speed +; - 1 -> 2 Scales between Walk speed and Run Speed +; - 2 and above is a multiplier of the run speed (less 1.0 since Run is 2.0) +; afRampTime is in seconds +Function ForceMovementSpeedRamp(float afSpeedMult, float afRampTime = 0.1) native + +; Ramps the movement rotation speed on the actor to the passed in value over the passed in time +; Each component of the rotation speed is a multiplier following these rules: +; - 0 -> 1 Scales between 0 and the Walk speed +; - 1 -> 2 Scales between Walk speed and Run Speed +; - 2 and above is a multiplier of the run speed (less 1.0 since Run is 2.0) +; afRampTime is in seconds +Function ForceMovementRotationSpeedRamp(float afXMult = 0.0, float afYMult = 0.0, float afZMult = 0.0, float afRampTime = 0.1) native + +; Sets the target movement direction on the actor +; afXAngle, afYAngle and afZAngle are in degrees +Function ForceTargetDirection(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0) native + +; Sets the target movement speed on the actor +; afSpeedMult is a speed multiplier based on the current max speeds +; - 0 -> 1 Scales between 0 and the Walk speed +; - 1 -> 2 Scales between Walk speed and Run Speed +; - 2 and above is a multiplier of the run speed (less 1.0 since Run is 2.0) +Function ForceTargetSpeed(float afSpeed) native + +; Sets the target facing angle on the actor +; afXAngle, afYAngle and afZAngle are in degrees +Function ForceTargetAngle(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0) native + +; Clears any forced movement on the actor and return it to its standard state +Function ClearForcedMovement() native + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; returns the form for the item worn at the specified slotMask +; use Armor.GetMaskForSlot() to generate appropriate slotMask +Form Function GetWornForm(int slotMask) native + +; returns the itemId for the item worn at the specified slotMask +int Function GetWornItemId(int slotMask) native + +; returns the object currently equipped in the specified location +; 0 - left hand +; 1 - right hand +; 2 - shout +Form Function GetEquippedObject(int location) native + +; returns the itemId of the object currently equipped in the specified hand +; 0 - left hand +; 1 - right hand +int Function GetEquippedItemId(int location) native + +; returns the number of added spells for the actor +Int Function GetSpellCount() native + +; returns the specified added spell for the actor +Spell Function GetNthSpell(int n) native + +; Updates an Actors meshes (Used for Armor mesh/texture changes and face changes) +; DO NOT USE WHILE MOUNTED +Function QueueNiNodeUpdate() native + +; Updates an Actors head mesh +Function RegenerateHead() native + +int Property EquipSlot_Default = 0 AutoReadOnly +int Property EquipSlot_RightHand = 1 AutoReadOnly +int Property EquipSlot_LeftHand = 2 AutoReadOnly + +; equips item at the given slot +Function EquipItemEx(Form item, int equipSlot = 0, bool preventUnequip = false, bool equipSound = true) native + +; equips item with matching itemId at the given slot +Function EquipItemById(Form item, int itemId, int equipSlot = 0, bool preventUnequip = false, bool equipSound = true) native + +; unequips item at the given slot +Function UnequipItemEx(Form item, int equipSlot = 0, bool preventEquip = false) native + +; Adds a headpart, if the type exists it will replace, must not be misc type +; Beware: This function also affects the ActorBase +Function ChangeHeadPart(HeadPart hPart) native + +; Replaces a headpart on the loaded mesh does not affect ActorBase +; Both old and new must exist, and be of the same type +Function ReplaceHeadPart(HeadPart oPart, HeadPart newPart) native + +; Visually updates the actors weight +; neckDelta = (oldWeight / 100) - (newWeight / 100) +; Neck changes are player persistent, but actor per-session +; Weight itself is persistent either way so keep track of your +; original weight if you use this for Actors other than the player +; DO NOT USE WHILE MOUNTED +Function UpdateWeight(float neckDelta) native + +; Returns whether the actors AI is enabled +bool Function IsAIEnabled() native + +; Resets Actor AI +Function ResetAI() native + +; Returns whether the actor is currently swimming +bool Function IsSwimming() native + +; Sheathes the actors weapon +Function SheatheWeapon() native + +; Returns the reference of the furniture the actor is currently using +ObjectReference Function GetFurnitureReference() native + +; 0 - "Aah" +; 1 - "BigAah" +; 2 - "BMP" +; 3 - "ChJSh" +; 4 - "DST" +; 5 - "Eee" +; 6 - "Eh" +; 7 - "FV" +; 8 - "I" +; 9 - "K" +; 10 - "N" +; 11 - "Oh" +; 12 - "OohQ" +; 13 - "R" +; 14 - "Th" +; 15 - "W" +Function SetExpressionPhoneme(int index, float value) native + +; 0 - "BlinkLeft" +; 1 - "BlinkRight" +; 2 - "BrowDownLeft" +; 3 - "BrowDownRight" +; 4 - "BrowInLeft" +; 5 - "BrowInRight" +; 6 - "BrowUpLeft" +; 7 - "BrowUpRight" +; 8 - "LookDown" +; 9 - "LookLeft" +; 10 - "LookRight" +; 11 - "LookUp" +; 12 - "SquintLeft" +; 13 - "SquintRight" +; 14 - "HeadPitch" +; 15 - "HeadRoll" +; 16 - "HeadYaw" +Function SetExpressionModifier(int index, float value) native + +; Resets all expression, phoneme, and modifiers +Function ResetExpressionOverrides() native + +; Returns all factions with the specified min and max ranks (-128 to 127) +Faction[] Function GetFactions(int minRank, int maxRank) native \ No newline at end of file diff --git a/source/scripts/actorbase.psc b/source/scripts/actorbase.psc new file mode 100644 index 00000000..26136419 --- /dev/null +++ b/source/scripts/actorbase.psc @@ -0,0 +1,116 @@ +Scriptname ActorBase extends Form Hidden + +; Returns this actor's class +Class Function GetClass() native + +; Gets the number of actors of this type that have been killed +int Function GetDeadCount() native + +; Returns this actor's gift filter formlist +FormList Function GetGiftFilter() native + +; Returns this actor's race +Race Function GetRace() native + +; Returns this actor's sex. Values for sex are: +; -1 - None +; 0 - Male +; 1 - Female +int Function GetSex() native + +; Is this actor essential? +bool Function IsEssential() native + +; Is this actor invulnerable? +bool Function IsInvulnerable() native + +; Is this actor protected (can only be killed by player)? +bool Function IsProtected() native + +; Is this actor base unique? +bool Function IsUnique() native + +; Sets this actor as essential or not - if set as essential, will UNSET protected +Function SetEssential(bool abEssential = true) native + +; Sets this actor as invulnerable or not +Function SetInvulnerable(bool abInvulnerable = true) native + +; Sets this actor as protected or not - if set as protected, will UNSET essential +Function SetProtected(bool abProtected = true) native + +; Sets the actors outfit +Function SetOutfit( Outfit akOutfit, bool abSleepOutfit = false ) native + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; get/set the CombatStyle of the actor +CombatStyle Function GetCombatStyle() native +Function SetCombatStyle(CombatStyle cs) native + +; Get the Outfit of the actor +Outfit Function GetOutfit(bool bSleepOutfit = false) native + +; set the Class of the actor +Function SetClass(Class c) native + +; Get/Set the actors body height +float Function GetHeight() native +Function SetHeight(float height) native + +; Get/Set the actors body weight +float Function GetWeight() native +Function SetWeight(float weight) native + +; Get/Set actors HeadPart by index +int Function GetNumHeadParts() native +HeadPart Function GetNthHeadPart(int slotPart) native +Function SetNthHeadPart(HeadPart headPart, int slotPart) native +int Function GetIndexOfHeadPartByType(int type) native + +; These functions are READ-ONLY they are for accessing the +; HeadPart list when the ActorBase's Race has been overlayed +; with another race (e.g. Vampires) +int Function GetNumOverlayHeadParts() native +HeadPart Function GetNthOverlayHeadPart(int slotPart) native +int Function GetIndexOfOverlayHeadPartByType(int type) native + +; Get/Set actors face morph value by index +float Function GetFaceMorph(int index) native +Function SetFaceMorph(float value, int index) native + +; Get/Set actors facemorph preset by index +; 0 - Nose +; 1 - ?? +; 2 - Mouth +; 3 - Eyes +int Function GetFacePreset(int index) native +Function SetFacePreset(int value, int index) native + +ColorForm Function GetHairColor() native +Function SetHairColor(ColorForm color) native + +; returns the number of spells defined in the base actor form +int Function GetSpellCount() native + +; returns the specified spell defined in the base actor form +Spell Function GetNthSpell(int n) native + +; returns the face textureset of the actor (Player Only?) +TextureSet Function GetFaceTextureSet() native +Function SetFaceTextureSet(TextureSet textures) native + +; Gets/sets the Actor's voicetype +VoiceType Function GetVoiceType() native +Function SetVoiceType(VoiceType nVoice) native + +; Gets/sets the skin of the actorbase +Armor Function GetSkin() native +Function SetSkin(Armor skin) native + +; Gets/sets the far away skin of the actorbase +Armor Function GetSkinFar() native +Function SetSkinFar(Armor skin) native + +; Gets the root template of the ActorBase +ActorBase Function GetTemplate() native \ No newline at end of file diff --git a/source/scripts/actorvalueinfo.psc b/source/scripts/actorvalueinfo.psc new file mode 100644 index 00000000..99fec706 --- /dev/null +++ b/source/scripts/actorvalueinfo.psc @@ -0,0 +1,66 @@ +Scriptname ActorValueInfo extends Form Hidden + +; Returns the AVI by name +ActorValueInfo Function GetActorValueInfoByName(string avName) global native +ActorValueInfo Function GetAVIByName(string avName) global + return GetActorValueInfoByName(avName) +EndFunction + +; Returns the AVI by id (0-164) +ActorValueInfo Function GetActorValueInfoByID(int id) global native +ActorValueInfo Function GetAVIByID(int id) global + return GetActorValueInfoByID(id) +EndFunction + +; Returns whether this AVI is a skill +bool Function IsSkill() native + +; Skill Multiplier manipulation +float Function GetSkillUseMult() native +Function SetSkillUseMult(float value) native + +float Function GetSkillOffsetMult() native +Function SetSkillOffsetMult(float value) native + +float Function GetSkillImproveMult() native +Function SetSkillImproveMult(float value) native + +float Function GetSkillImproveOffset() native +Function SetSkillImproveOffset(float value) native + +; Returns the amount of experienced gained in this skill +float Function GetSkillExperience() native + +; Does not trigger skill-up +Function SetSkillExperience(float exp) native + +; Adds experience to this skill (Same as console AdvanceSkill, triggers skill-up) +Function AddSkillExperience(float exp) native + +; Returns the experience required for skill-up +; (ImproveMult * currentLevel ^ fSkillUseCurve + ImproveOffset) +float Function GetExperienceForLevel(int currentLevel) native + +; Returns the legendary level of this skill +int Function GetSkillLegendaryLevel() native + +; Sets the legendary level of this skill +Function SetSkillLegendaryLevel(int level) native + +; Returns perks from the skill into the FormList +; Actor filter applies to unowned and allRanks +; unowned will add perks that the actor does not own, or only perks the actor owns +; allRanks will add all ranks of each perk to the list, unowned/owned filter also applies +Function GetPerkTree(FormList list, Actor akActor = None, bool unowned = true, bool allRanks = false) native + +; Same as GetPerkTree except returns into a new array +Perk[] Function GetPerks(Actor akActor = None, bool unowned = true, bool allRanks = false) native + +; Same as Actor.GetActorValue (convenience function) +float Function GetCurrentValue(Actor akActor) native + +; Same as Actor.GetBaseActorValue (convenience function) +float Function GetBaseValue(Actor akActor) native + +; Acquires the Maximum value for the current ActorValue +float Function GetMaximumValue(Actor akActor) native \ No newline at end of file diff --git a/source/scripts/alias.psc b/source/scripts/alias.psc new file mode 100644 index 00000000..3a827168 --- /dev/null +++ b/source/scripts/alias.psc @@ -0,0 +1,198 @@ +Scriptname Alias Hidden + +; Returns the quest that owns this alias +Quest Function GetOwningQuest() native + +; Register for the specified animation event from the specified object - returns true if it successfully registered +bool Function RegisterForAnimationEvent(ObjectReference akSender, string asEventName) native + +; Register for LOS gain and lost events between the viewer and the target +; A loss or gain event will be sent immediately, depending on whether or not the viewer is already looking at the target or not +; If the viewer is not the player, the target must be another actor +Function RegisterForLOS(Actor akViewer, ObjectReference akTarget) native + +; Register for only the first LOS gain event between the viewer and the target +; If the viewer is already looking at the target, an event will be received almost immediately +; If the viewer is not the player, the target must be another actor +Function RegisterForSingleLOSGain(Actor akViewer, ObjectReference akTarget) native + +; Register for only the first LOS lost event between the viewer and the target +; If the viewer is already not looking at the target, an event will be received almost immediately +; If the viewer is not the player, the target must be another actor +Function RegisterForSingleLOSLost(Actor akViewer, ObjectReference akTarget) native + +; Register for a single OnUpdate event, in afInterval seconds. All scripts attached to this alias will get the update events +; Of course, this means you don't need to call UnregisterForUpdate() +; If you find yourself doing this: +; Event OnUpdate() +; UnregisterForUpdate() +; {Do some stuff} +; endEvent +; Then you should use RegisterForSingleUpdate instead +Function RegisterForSingleUpdate(float afInterval) native + +; Register for OnUpdate events, every X seconds, where X is the interval. All scripts attached to this alias will get the update events +Function RegisterForUpdate(float afInterval) native + +; Register for OnUpdateGameTime events, every X hours of game time, where X is the interval. All scripts attached to this alias will get the update events +Function RegisterForUpdateGameTime(float afInterval) native + +; Register for a single OnUpdateGameTime event, in afInterval hours of game time. All scripts attached to this alias will get the update events +Function RegisterForSingleUpdateGameTime(float afInterval) native + +; Registers this alias to receive events when the player sleeps and wakes up +Function RegisterForSleep() native + +; Registers this alias to receive events when tracked stats are updated +Function RegisterForTrackedStatsEvent() native + +; Turns on profiling for this specific object and all scripts attached to it - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StartObjectProfiling() native + +; Turns off profiling for this specific object and all scripts attached to it - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StopObjectProfiling() native + +; Unregister for any LOS events between the viewer and target +Function UnregisterForLOS(Actor akViewer, ObjectReference akTarget) native + +; Unregister for the specified animation event from the specified object +Function UnregisterForAnimationEvent(ObjectReference akSender, string asEventName) native + +; Unregisters this alias to receive events when the player sleeps and wakes up +Function UnregisterForSleep() native + +; Unregisters this alias from receiving events when tracked stats are updated +Function UnregisterForTrackedStatsEvent() native + +; Unregister for OnUpdate events, all attached scripts will stop getting update events +Function UnregisterForUpdate() native + +; Unregister for OnUpdateGameTime events, all attached scripts will stop getting update game time events +Function UnregisterForUpdateGameTime() native + +; Animation event, sent when an object we are listening to hits one of the events we are listening for +Event OnAnimationEvent(ObjectReference akSource, string asEventName) +EndEvent + +; Event sent when you have been unregistered from receiving an animation event because the target +; object's animation graph has been unloaded +Event OnAnimationEventUnregistered(ObjectReference akSource, string asEventName) +EndEvent + +; LOS event, sent whenever the viewer first sees the target (after registering) +Event OnGainLOS(Actor akViewer, ObjectReference akTarget) +EndEvent + +; Lost LOS event, sent whenever the viewer first loses sight of the target (after registering) +Event OnLostLOS(Actor akViewer, ObjectReference akTarget) +EndEvent + +; Received when the player sleeps. Start and desired end time are in game time days (after registering) +Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) +EndEvent + +; Received when the player stops sleeping - whether naturally or interrupted (after registering) +Event OnSleepStop(bool abInterrupted) +EndEvent + +; Event received when a tracked stat is updated for the player +Event OnTrackedStatsEvent(string arStatName, int aiStatValue) +EndEvent + +; Update event, sent every X seconds while this alias is registered for them +Event OnUpdate() +EndEvent + +; Update event, sent every X hours of game time while this alias is registered for them +Event OnUpdateGameTime() +EndEvent + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; return the name of the alias +string Function GetName() native + +; return the id of the alias +int Function GetID() native + +; Registers for OnKeyDown and OnKeyUp events for the given keycode. +Function RegisterForKey(int keyCode) native +Function UnregisterForKey(int keyCode) native +Function UnregisterForAllKeys() native + +Event OnKeyDown(int keyCode) +EndEvent + +Event OnKeyUp(int keyCode, float holdTime) +EndEvent + +; Registers for OnControlDown and OnControlUp events for the given control. +; For a list of valid controls, see Input.psc. +Function RegisterForControl(string control) native +Function UnregisterForControl(string control) native +Function UnregisterForAllControls() native + +Event OnControlDown(string control) +EndEvent + +Event OnControlUp(string control, float holdTime) +EndEvent + +; Registers for OnMenuOpen and OnMenuClose events for the given menu. +; Registrations have to be refreshed after each game load. +; For a list of valid menu names, see UI.psc. +Function RegisterForMenu(string menuName) native +Function UnregisterForMenu(string menuName) native +Function UnregisterForAllMenus() native + +Event OnMenuOpen(string menuName) +endEvent + +Event OnMenuClose(string menuName) +endEvent + +; Registers a custom event callback for given event name. +; Registrations have to be refreshed after each game load. +; +; Examples: +; RegisterForModEvent("myCustomEvent", "MyModEventCallback") +; +; Event signature of custom event callbacks: +; Event MyModEventCallback(string eventName, string strArg, float numArg, Form sender) +; endEvent +; +Function RegisterForModEvent(string eventName, string callbackName) native +Function UnregisterForModEvent(string eventName) native +Function UnregisterForAllModEvents() native + +; Sends custom event with given generic parameters. +Function SendModEvent(string eventName, string strArg = "", float numArg = 0.0) native + +; See Form.psc +Function RegisterForCameraState() native +Function UnregisterForCameraState() native + +Event OnPlayerCameraState(int oldState, int newState) +EndEvent + +; See Form.psc +Function RegisterForCrosshairRef() native +Function UnregisterForCrosshairRef() native + +Event OnCrosshairRefChange(ObjectReference ref) +EndEvent + +; See Form.psc +Function RegisterForActorAction(int actionType) native +Function UnregisterForActorAction(int actionType) native + +Event OnActorAction(int actionType, Actor akActor, Form source, int slot) +EndEvent + +; Registers the script for when a QueueNiNodeUpdate is called +Function RegisterForNiNodeUpdate() native +Function UnregisterForNiNodeUpdate() native + +Event OnNiNodeUpdate(ObjectReference akActor) +EndEvent \ No newline at end of file diff --git a/source/scripts/ammo.psc b/source/scripts/ammo.psc new file mode 100644 index 00000000..52cf7d30 --- /dev/null +++ b/source/scripts/ammo.psc @@ -0,0 +1,12 @@ +Scriptname Ammo extends Form Hidden + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; Returns whether this ammo is a bolt +bool Function IsBolt() native + +; Returns the projectile associated with this ammo +Projectile Function GetProjectile() native + +; Returns the base damage of this ammo +float Function GetDamage() native diff --git a/source/scripts/apparatus.psc b/source/scripts/apparatus.psc new file mode 100644 index 00000000..ae9a53c5 --- /dev/null +++ b/source/scripts/apparatus.psc @@ -0,0 +1,7 @@ +Scriptname Apparatus extends MiscObject Hidden + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +int Function GetQuality() native +Function SetQuality(int quality) native \ No newline at end of file diff --git a/source/scripts/armor.psc b/source/scripts/armor.psc new file mode 100644 index 00000000..3b738ebb --- /dev/null +++ b/source/scripts/armor.psc @@ -0,0 +1,167 @@ +Scriptname Armor extends Form Hidden + +; Returns the "warmth rating" for this armor +float Function GetWarmthRating() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +int Function GetArmorRating() native +int Function GetAR() + return GetArmorRating() +endFunction + +Function SetArmorRating(int armorRating) native +Function SetAR(int armorRating) + return SetArmorRating(armorRating) +endFunction + +Function ModArmorRating(int modBy) native +Function ModAR(int modBy) + return ModArmorRating(modBy) +endFunction + +; works on the path to the nif file representing the in-game model of the weapon +string Function GetModelPath(bool bFemalePath) native +Function SetModelPath(string path, bool bFemalePath) native + +; works on the path to the nif file representing the icon for the weapon in the inventory +string Function GetIconPath(bool bFemalePath) native +Function SetIconPath(string path, bool bFemalePath) native + +; works on the path to the file representing the message icon for the weapon +string Function GetMessageIconPath(bool bFemalePath) native +Function SetMessageIconPath(string path, bool bFemalePath) native + +; Weight Class +; 0 = Light Armor +; 1 = Heavy Armor +; 2 = None +int Function GetWeightClass() native +Function SetWeightClass(int weightClass) native + +; works on the enchantment associated with the armor +Enchantment Function GetEnchantment() native +Function SetEnchantment(Enchantment e) native + +; Armor info by keyword +bool Function IsLightArmor() + return HasKeywordString("ArmorLight") +endFunction + +bool Function IsHeavyArmor() + return HasKeywordString("ArmorHeavy") +endFunction + +bool Function IsClothing() + return HasKeywordString("ArmorClothing") +endFunction + +bool Function IsBoots() + return HasKeywordString("ArmorBoots") +endFunction + +bool Function IsCuirass() + return HasKeywordString("ArmorCuirass") +endFunction + +bool Function IsGauntlets() + return HasKeywordString("ArmorGauntlets") +endFunction + +bool Function IsHelmet() + return HasKeywordString("ArmorHelmet") +endFunction + +bool Function IsShield() + return HasKeywordString("ArmorShield") +endFunction + +bool Function IsJewelry() + return HasKeywordString("ArmorJewelry") +endFunction + +bool Function IsClothingHead() + return HasKeywordString("ClothingHead") +endFunction + +bool Function IsClothingBody() + return HasKeywordString("ClothingBody") +endFunction + +bool Function IsClothingFeet() + return HasKeywordString("ClothingFeet") +endFunction + +bool Function IsClothingHands() + return HasKeywordString("ClothingHands") +endFunction + +bool Function IsClothingRing() + return HasKeywordString("ClothingRing") +endFunction + +bool Function IsClothingRich() + return HasKeywordString("ClothingRich") +endFunction + +bool Function IsClothingPoor() + return HasKeywordString("ClothingPoor") +endFunction + + +; Functions and Flags dealing the BipedObject slot values from the CK +; These are the equivalent of 1 << (SlotMask-30). Basically +; these are a flags where 30 is the first bit, and 61 is the 31st bit. + +; returns the slot mask for the armor. +int Function GetSlotMask() native +; sets the slot mask for the armor +Function SetSlotMask(int slotMask) native +; adds the specified slotMask to the armor +int Function AddSlotToMask(int slotMask) native +; removes the specified slot masks from the armor +int Function RemoveSlotFromMask(int slotMask) native + +; calculates the equivalent value for the properties below +int Function GetMaskForSlot(int slot) global native + +; returns the number of armor addons for this armor +int Function GetNumArmorAddons() native + +; returns the nth armor addon for this armor +ArmorAddon Function GetNthArmorAddon(int n) native + +; returns the SlotMask for a single slot from the CK +; can be used with the non-global SlotMask functions above +; and with the Math bit shifting functions +int Property kSlotMask30 = 0x00000001 AutoReadOnly +int Property kSlotMask31 = 0x00000002 AutoReadOnly +int Property kSlotMask32 = 0x00000004 AutoReadOnly +int Property kSlotMask33 = 0x00000008 AutoReadOnly +int Property kSlotMask34 = 0x00000010 AutoReadOnly +int Property kSlotMask35 = 0x00000020 AutoReadOnly +int Property kSlotMask36 = 0x00000040 AutoReadOnly +int Property kSlotMask37 = 0x00000080 AutoReadOnly +int Property kSlotMask38 = 0x00000100 AutoReadOnly +int Property kSlotMask39 = 0x00000200 AutoReadOnly +int Property kSlotMask40 = 0x00000400 AutoReadOnly +int Property kSlotMask41 = 0x00000800 AutoReadOnly +int Property kSlotMask42 = 0x00001000 AutoReadOnly +int Property kSlotMask43 = 0x00002000 AutoReadOnly +int Property kSlotMask44 = 0x00004000 AutoReadOnly +int Property kSlotMask45 = 0x00008000 AutoReadOnly +int Property kSlotMask46 = 0x00010000 AutoReadOnly +int Property kSlotMask47 = 0x00020000 AutoReadOnly +int Property kSlotMask48 = 0x00040000 AutoReadOnly +int Property kSlotMask49 = 0x00080000 AutoReadOnly +int Property kSlotMask50 = 0x00100000 AutoReadOnly +int Property kSlotMask51 = 0x00200000 AutoReadOnly +int Property kSlotMask52 = 0x00400000 AutoReadOnly +int Property kSlotMask53 = 0x00800000 AutoReadOnly +int Property kSlotMask54 = 0x01000000 AutoReadOnly +int Property kSlotMask55 = 0x02000000 AutoReadOnly +int Property kSlotMask56 = 0x04000000 AutoReadOnly +int Property kSlotMask57 = 0x08000000 AutoReadOnly +int Property kSlotMask58 = 0x10000000 AutoReadOnly +int Property kSlotMask59 = 0x20000000 AutoReadOnly +int Property kSlotMask60 = 0x40000000 AutoReadOnly +int Property kSlotMask61 = 0x80000000 AutoReadOnly \ No newline at end of file diff --git a/source/scripts/armoraddon.psc b/source/scripts/armoraddon.psc new file mode 100644 index 00000000..9b529a94 --- /dev/null +++ b/source/scripts/armoraddon.psc @@ -0,0 +1,41 @@ +Scriptname ArmorAddon extends Form Hidden + +; returns the model path of the particular model +string Function GetModelPath(bool firstPerson, bool female) native + +; sets the model path of the particular model +Function SetModelPath(string path, bool firstPerson, bool female) native + +; returns the number of texturesets for the particular model +int Function GetModelNumTextureSets(bool first, bool female) native + +; returns the nth textureset for the particular model +TextureSet Function GetModelNthTextureSet(int n, bool first, bool female) native + +; sets the nth textureset for the particular model +Function SetModelNthTextureSet(TextureSet texture, int n, bool first, bool female) native + +; returns the number of races this armor addon applies to +int Function GetNumAdditionalRaces() native + +; returns the nth race this armor addon applies to +Race Function GetNthAdditionalRace(int n) native + +; Functions and Flags dealing the BipedObject slot values from the CK +; These are the equivalent of 1 << (SlotMask-30). Basically +; these are a flags where 30 is the first bit, and 61 is the 31st bit. + +; returns the slot mask for the armor addon. +int Function GetSlotMask() native +; sets the slot mask for the armor addon +Function SetSlotMask(int slotMask) native +; adds the specified slotMask to the armor addon +int Function AddSlotToMask(int slotMask) native +; removes the specified slot masks from the armor addon +int Function RemoveSlotFromMask(int slotMask) native + +; calculates the equivalent mask value for the slot +; This is a global function, use it directly from Armor as it is faster +int Function GetMaskForSlot(int slot) global + return Armor.GetMaskForSlot(slot) +EndFunction \ No newline at end of file diff --git a/source/scripts/art.psc b/source/scripts/art.psc new file mode 100644 index 00000000..190ccc56 --- /dev/null +++ b/source/scripts/art.psc @@ -0,0 +1,4 @@ +Scriptname Art extends Form Hidden + +string Function GetModelPath() native +Function SetModelPath(string path) native \ No newline at end of file diff --git a/source/scripts/associationtype.psc b/source/scripts/associationtype.psc new file mode 100644 index 00000000..f1ef6f68 --- /dev/null +++ b/source/scripts/associationtype.psc @@ -0,0 +1 @@ +Scriptname AssociationType extends Form Hidden \ No newline at end of file diff --git a/source/scripts/book.psc b/source/scripts/book.psc new file mode 100644 index 00000000..926e065b --- /dev/null +++ b/source/scripts/book.psc @@ -0,0 +1,8 @@ +Scriptname Book Extends Form Hidden + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; Returns the spell that this book teaches +Spell Function GetSpell() native +Int Function GetSkill() native +bool Function IsRead() native +bool Function IsTakeable() native \ No newline at end of file diff --git a/source/scripts/camera.psc b/source/scripts/camera.psc new file mode 100644 index 00000000..8f7a048a --- /dev/null +++ b/source/scripts/camera.psc @@ -0,0 +1,45 @@ +Scriptname Camera Hidden + + +; Returns the character's current camera state +; 0 - first person +; 1 - auto vanity +; 2 - VATS +; 3 - free +; 4 - iron sights +; 5 - furniture +; 6 - transition +; 7 - tweenmenu +; 8 - third person 1 +; 9 - third person 2 +; 10 - horse +; 11 - bleedout +; 12 - dragon +int Function GetCameraState() global native + +; Updates the camera when changing Shoulder positions +Function UpdateThirdPerson() global native + +; Returns the player's camera FOV +float Function GetWorldFieldOfView() global native +float Function GetWorldFOV() global + return GetWorldFieldOfView() +EndFunction + +; Sets the player's camera FOV +Function SetWorldFieldOfView(float fov) global native +Function SetWorldFOV(float fov) global + SetWorldFieldOfView(fov) +EndFunction + +; Returns the player's camera FOV +float Function GetFirstPersonFieldOfView() global native +float Function GetFirstPersonFOV() global + return GetFirstPersonFieldOfView() +EndFunction + +; Sets the player's camera FOV +Function SetFirstPersonFieldOfView(float fov) global native +Function SetFirstPersonFOV(float fov) global + SetFirstPersonFieldOfView(fov) +EndFunction \ No newline at end of file diff --git a/source/scripts/cell.psc b/source/scripts/cell.psc new file mode 100644 index 00000000..e3751298 --- /dev/null +++ b/source/scripts/cell.psc @@ -0,0 +1,48 @@ +Scriptname Cell extends Form Hidden + +; Gets the actor that owns this cell (or none if not owned by an actor) +ActorBase Function GetActorOwner() native + +; Gets the faction that owns this cell (or none if not owned by a faction) +Faction Function GetFactionOwner() native + +; Is this cell "attached"? (In the loaded area) +bool Function IsAttached() native + +; Is this cell an interior cell? +bool Function IsInterior() native + +; Flags the cell for reset on next load +Function Reset() native + +; Sets this cell's owner as the specified actor +Function SetActorOwner(ActorBase akActor) native + +; Sets this cell's owner as the specified faction +Function SetFactionOwner(Faction akFaction) native + +; Sets the fog color for this cell (interior, non-sky-lit cells only) +Function SetFogColor(int aiNearRed, int aiNearGreen, int aiNearBlue, \ + int aiFarRed, int aiFarGreen, int aiFarBlue) native + +; Adjusts this cell's fog near and far planes (interior, non-sky-lit cells only) +Function SetFogPlanes(float afNear, float afFar) native + +; Sets the fog power for this cell (interior, non-sky-lit cells only) +Function SetFogPower(float afPower) native + +; Sets this cell as public or private +Function SetPublic(bool abPublic = true) native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; Returns the number of refs in the cell +int Function GetNumRefs(int formTypeFilter = 0) native + +; returns the ref at the specified index +ObjectReference Function GetNthRef(int n, int formTypeFilter = 0) native + +; Returns the water level of the cell (-2147483648 if no water) +float Function GetWaterLevel() native + +; Returns water level of the cell, if default returns water level from worldspace +float Function GetActualWaterLevel() native \ No newline at end of file diff --git a/source/scripts/class.psc b/source/scripts/class.psc new file mode 100644 index 00000000..666ca876 --- /dev/null +++ b/source/scripts/class.psc @@ -0,0 +1 @@ +Scriptname Class extends Form Hidden \ No newline at end of file diff --git a/source/scripts/colorcomponent.psc b/source/scripts/colorcomponent.psc new file mode 100644 index 00000000..b0873fa2 --- /dev/null +++ b/source/scripts/colorcomponent.psc @@ -0,0 +1,19 @@ +Scriptname ColorComponent Hidden + +int Function GetAlpha(int argb) global native +int Function GetRed(int argb) global native +int Function GetGreen(int argb) global native +int Function GetBlue(int argb) global native + +float Function GetHue(int argb) global native +float Function GetSaturation(int argb) global native +float Function GetValue(int argb) global native + +int Function SetAlpha(int argb, int a) global native +int Function SetRed(int argb, int r) global native +int Function SetGreen(int argb, int g) global native +int Function SetBlue(int argb, int b) global native + +int Function SetHue(int argb, float h) global native +int Function SetSaturation(int argb, float s) global native +int Function SetValue(int argb, float v) global native \ No newline at end of file diff --git a/source/scripts/colorform.psc b/source/scripts/colorform.psc new file mode 100644 index 00000000..09ce6762 --- /dev/null +++ b/source/scripts/colorform.psc @@ -0,0 +1,28 @@ +Scriptname ColorForm extends Form Hidden + +int Function GetColor() native +Function SetColor(int color) native + +int Function GetRed() + return ColorComponent.GetRed(Self.GetColor()) +EndFunction + +int Function GetGreen() + return ColorComponent.GetGreen(Self.GetColor()) +EndFunction + +int Function GetBlue() + return ColorComponent.GetBlue(Self.GetColor()) +EndFunction + +float Function GetHue() + return ColorComponent.GetHue(Self.GetColor()) +EndFunction + +float Function GetSaturation() + return ColorComponent.GetSaturation(Self.GetColor()) +EndFunction + +float Function GetValue() + return ColorComponent.GetValue(Self.GetColor()) +EndFunction \ No newline at end of file diff --git a/source/scripts/combatstyle.psc b/source/scripts/combatstyle.psc new file mode 100644 index 00000000..a19caeef --- /dev/null +++ b/source/scripts/combatstyle.psc @@ -0,0 +1,71 @@ +Scriptname CombatStyle extends Form Hidden + +; functions related to the General Tab values +float Function GetOffensiveMult() native +float Function GetDefensiveMult() native +float Function GetGroupOffensiveMult() native +float Function GetAvoidThreatChance() native +float Function GetMeleeMult() native +float Function GetRangedMult() native +float Function GetMagicMult() native +float Function GetShoutMult() native +float Function GetStaffMult() native +float Function GetUnarmedMult() native + +Function SetOffensiveMult(float mult) native +Function SetDefensiveMult(float mult) native +Function SetGroupOffensiveMult(float mult) native +Function SetAvoidThreatChance(float chance) native +Function SetMeleeMult(float mult) native +Function SetRangedMult(float mult) native +Function SetMagicMult(float mult) native +Function SetShoutMult(float mult) native +Function SetStaffMult(float mult) native +Function SetUnarmedMult(float mult) native + +; functions related to the Melee tab values +float Function GetMeleeAttackStaggeredMult() native +float Function GetMeleePowerAttackStaggeredMult() native +float Function GetMeleePowerAttackBlockingMult() native +float Function GetMeleeBashMult() native +float Function GetMeleeBashRecoiledMult() native +float Function GetMeleeBashAttackMult() native +float Function GetMeleeBashPowerAttackMult() native +float Function GetMeleeSpecialAttackMult() native +bool Function GetAllowDualWielding() native + +Function SetMeleeAttackStaggeredMult(float mult) native +Function SetMeleePowerAttackStaggeredMult(float mult) native +Function SetMeleePowerAttackBlockingMult(float mult) native +Function SetMeleeBashMult(float mult) native +Function SetMeleeBashRecoiledMult(float mult) native +Function SetMeleeBashAttackMult(float mult) native +Function SetMeleeBashPowerAttackMult(float mult) native +Function SetMeleeSpecialAttackMult(float mult) native +Function SetAllowDualWielding(bool allow) native + +; functions related to the Close Range tab values +float Function GetCloseRangeDuelingCircleMult() native +float Function GetCloseRangeDuelingFallbackMult() native +float Function GetCloseRangeFlankingFlankDistance() native +float Function GetCloseRangeFlankingStalkTime() native + +Function SetCloseRangeDuelingCircleMult(float mult) native +Function SetCloseRangeDuelingFallbackMult(float mult) native +Function SetCloseRangeFlankingFlankDistance(float mult) native +Function SetCloseRangeFlankingStalkTime(float mult) native + +; functions related to the LongRange tab values +float Function GetLongRangeStrafeMult() native +Function SetLongRangeStrafeMult(float mult) native + +; functions related to the Flight tab values +float Function GetFlightHoverChance() native +float Function GetFlightDiveBombChance() native +float Function GetFlightFlyingAttackChance() native + +Function SetFlightHoverChance(float chance) native +Function SetFlightDiveBombChance(float chance) native +Function SetFlightFlyingAttackChance(float mult) native + + diff --git a/source/scripts/constructibleobject.psc b/source/scripts/constructibleobject.psc new file mode 100644 index 00000000..231128fe --- /dev/null +++ b/source/scripts/constructibleobject.psc @@ -0,0 +1,26 @@ +Scriptname ConstructibleObject extends MiscObject Hidden + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; Gets/Sets the result of this recipe +Form Function GetResult() native +Function SetResult(Form result) native + +; Gets/Sets the amount of results of this recipe +int Function GetResultQuantity() native +Function SetResultQuantity(int quantity) native + +; Gets the number of ingredients +int Function GetNumIngredients() native + +; Gets/Sets the Nth ingredient required +Form Function GetNthIngredient(int n) native +Function SetNthIngredient(Form required, int n) native + +; Gets/Sets the quantity of Nth ingredient required +int Function GetNthIngredientQuantity(int n) native +Function SetNthIngredientQuantity(int value, int n) native + +; Gets/Sets the Workbench keyword (Which apparatus creates this) +Keyword Function GetWorkbenchKeyword() native +Function SetWorkbenchKeyword(Keyword aKeyword) native \ No newline at end of file diff --git a/source/scripts/container.psc b/source/scripts/container.psc new file mode 100644 index 00000000..87922ea1 --- /dev/null +++ b/source/scripts/container.psc @@ -0,0 +1 @@ +Scriptname Container extends Form Hidden diff --git a/source/scripts/debug.psc b/source/scripts/debug.psc new file mode 100644 index 00000000..f81b8a15 --- /dev/null +++ b/source/scripts/debug.psc @@ -0,0 +1,115 @@ +Scriptname Debug Hidden + +; Note that these functions will do nothing in release console builds + +; COC functionality +Function CenterOnCell(string asCellname) native global + +; COC functionality +float Function CenterOnCellAndWait(string asCellname) native global + +; player.moveto functionality +float Function PlayerMoveToAndWait(string asDestRef) native global + +; Closes the specified user log +Function CloseUserLog(string asLogName) native global + +; Outputs the string to a named debug channel (useful on the Xenon currently) +Function DebugChannelNotify(string channel, string message) native global + +; Dumps all alias fill information for the quest to the AliasDump log in Logs/Script/ +Function DumpAliasData(Quest akQuest) native global + +; Returns the config name +string Function GetConfigName() native global + +; Returns the platform name +string Function GetPlatformName() native global + +; Returns the version number string +string Function GetVersionNumber() native global + +; Displays an in-game message box +Function MessageBox(string asMessageBoxText) native global + +; Displays an in-game notification +Function Notification(string asNotificationText) native global + +; Opens a user log - fails if the log is already open +bool Function OpenUserLog(string asLogName) native global + +; Quits the game +Function QuitGame() native global + +; Toggles Foot IK on/off +Function SetFootIK(bool abFootIK) native global + +; TGM functionality +Function SetGodMode(bool abGodMode) native global + +; Forcibly sends an animation event to a reference's behavior graph +; used to bypass actor limitation on the ObjectReference version +Function SendAnimationEvent(ObjectReference arRef, string asEventName) native global + +; Start profiing a specific script - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StartScriptProfiling(string asScriptName) native global + +; Start profiling the calling stack - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StartStackProfiling() native global + +; Stop profiling a specific script - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StopScriptProfiling(string asScriptName) native global + +; Stop profiling the calling stack - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StopStackProfiling() native global + +; Takes a screenshot (Xenon only) +Function TakeScreenshot(string asFilename) native global + +; ToggleAI +Function ToggleAI() native global + +; TCL functionality +Function ToggleCollisions() native global + +; Toggles menus on/off +Function ToggleMenus() native global + +; Outputs the string to the log +; Severity is one of the following: +; 0 - Info +; 1 - Warning +; 2 - Error +Function Trace(string asTextToPrint, int aiSeverity = 0) native global + +; Outputs the current stack to the log +Function TraceStack(string asTextToPrint = "Tracing stack on request", int aiSeverity = 0) native global + +; Outputs the string to a user log - fails if the log hasn't been opened +bool Function TraceUser(string asUserLog, string asTextToPrint, int aiSeverity = 0) native global + +;Suppressable Trace +Function TraceConditional(string TextToPrint, bool ShowTrace) Global +{As Trace() but takes a second parameter bool ShowTrace (which if false suppresses the message). Used to turn off and on traces that might be otherwise annoying.} +;jduval + if ShowTrace + trace(TextToPrint) + EndIf +EndFunction + +Function TraceAndBox(string asTextToPrint, int aiSeverity = 0) global +{A convenience function to both throw a message box AND write to the trace log, since message boxes sometimes stack in weird ways and won't show up reliably.} + ;SJML + MessageBox(asTextToPrint) + Trace(asTextToPrint, aiSeverity) +EndFunction + +; Used to add a tripod to a reference (non-release builds only) +Function ShowRefPosition(ObjectReference arRef) native global + +;Prints out the players position to the database (non-release PC and Xenon builds only) +Function DBSendPlayerPosition() native global diff --git a/source/scripts/defaultobjectmanager.psc b/source/scripts/defaultobjectmanager.psc new file mode 100644 index 00000000..20d9e5cf --- /dev/null +++ b/source/scripts/defaultobjectmanager.psc @@ -0,0 +1,355 @@ +Scriptname DefaultObjectManager extends Form Hidden + +; Returns the default form for this key e.g. 'GOLD' +Form Function GetForm(string key) native + +; Sets the default form for the particular key +Function SetForm(string key, Form newForm) native + +; Valid Keys +; WWSP - Werewolf Spell +; SALT - Sitting Angle Limit +; APSH - Allow Player Shout +; GOLD - Gold +; LKPK - Lockpick +; SKLK - SkeletonKey +; PFAC - Player Faction +; GFAC - Guard Faction +; DFMS - Default Music +; BTMS - Battle Music +; DTMS - Death Music +; SCMS - Success Music +; LUMS - Level Up Music +; DCMS - Dungeon Cleared Music +; PVMA - Player Voice (Male) +; PVMC - Player Voice (Male Child) +; PVFA - Player Voice (Female) +; PVFC - Player Voice (Female Child) +; EPDF - Eat Package Default Food +; LHEQ - LeftHand Equip +; RHEQ - RightHand Equip +; EHEQ - EitherHand Equip +; VOEQ - Voice Equip +; POEQ - Potion Equip +; EACA - Every Actor Ability +; CACA - Commanded Actor Ability +; DEIS - Drug Wears Off Image Space +; DFTS - Footstep Set +; DLMT - Landscape Material +; DLZM - Dragon Land Zone Marker +; DCZM - Dragon Crash Zone Marker +; CSTY - Combat Style +; PLST - Default Pack List +; PWFD - Wait-For-Dialogue Package +; LRTB - LocRefType Boss +; VLOC - Virtual Location +; PLOC - PersistAll Location +; INVP - Inventory Player +; PTNP - Pathing Test NPC +; FPCS - Favor Cost Small +; FPCM - Favor Cost Medium +; FPCL - Favor Cost Large +; FGPD - Favor Gifts Per Day +; AASW - Action Swim State Change +; AALK - Action Look +; AALA - Action LeftAttack +; AALD - Action LeftReady +; AALR - Action LeftRelease +; AALI - Action LeftInterrupt +; AARA - Action RightAttack +; AARD - Action RightReady +; AARR - Action RightRelease +; AARI - Action RightInterrupt +; AADA - Action DualAttack +; AADL - Action DualRelease +; AAAC - Action Activate +; AAJP - Action Jump +; AAFA - Action Fall +; AALN - Action Land +; AASN - Action Sneak +; AAVC - Action Voice +; AAVD - Action VoiceReady +; AAVR - Action VoiceRelease +; AAVI - Action VoiceInterrupt +; AAID - Action Idle +; AAST - Action Sprint Start +; AASP - Action Sprint Stop +; AADR - Action Draw +; AASH - Action Sheath +; ALPA - Action Left Power Attack +; AAPA - Action Right Power Attack +; ADPA - Action Dual Power Attack +; AAS1 - Action Stagger Start +; AABH - Action Block Hit +; AABA - Action Block Anticipate +; AARC - Action Recoil +; AAR2 - Action Large Recoil +; AAB1 - Action Bleedout Start +; AAB2 - Action Bleedout Stop +; AAIS - Action Idle Stop +; AAWH - Action Ward Hit +; AAFQ - Action Force Equip +; AASC - Action Shield Change +; AAPS - Action Path Start +; AAPE - Action Path End +; AALM - Action Large Movement Delta +; AAF1 - Action Fly Start +; AAF2 - Action Fly Stop +; AAH1 - Action Hover Start +; AAH2 - Action Hover Stop +; AABI - Action Bumped Into +; AASS - Action Summoned Start +; ATKI - Action Talking Idle +; ALTI - Action Listen Idle +; AADE - Action Death +; AADW - Action Death Wait +; AIDW - Action Idle Warn +; AMST - Action Move Start +; AMSP - Action Move Stop +; ATRI - Action Turn Right +; ATLE - Action Turn Left +; ATSP - Action Turn Stop +; AMFD - Action Move Forward +; AMBK - Action Move Backward +; AMLT - Action Move Left +; AMRT - Action Move Right +; ARAG - Action Reset Animation Graph +; AKDN - Action Knockdown +; AAGU - Action Get Up +; ASID - Action Idle Stop Instant +; ARGI - Action Ragdoll Instant +; AWWS - Action Waterwalk Start +; AREL - Action Reload +; PUSG - Pickup Sound Generic +; PDSG - Putdown Sound Generic +; PUSW - Pickup Sound Weapon +; PDSW - Putdown Sound Weapon +; PUSA - Pickup Sound Armor +; PDSA - Putdown Sound Armor +; PUSB - Pickup Sound Book +; PDSB - Putdown Sound Book +; PUSI - Pickup Sound Ingredient +; PDSI - Putdown Sound Ingredient +; HVSS - Harvest Sound +; HVFS - Harvest Failed Sound +; WBSN - Ward Break Sound +; WASN - Ward Absorb Sound +; WDSN - Ward Deflect Sound +; MFSN - Magic Fail Sound +; SFSN - Shout Fail Sound +; HFSD - Heartbeat Sound Fast +; HSSD - Heartbeat Sound Slow +; IMLH - Imagespace: Low Health +; SCSD - Soul Captured Sound +; NASD - No-Activation Sound +; MMSD - Map Menu Looping Sound +; DDSC - Dialogue Voice Category +; NDSC - Non-Dialogue Voice Category +; SFDC - SFX To Fade In Dialogue Category +; PDMC - Pause During Menu Category (Fade) +; PIMC - Pause During Menu Category (Immediate) +; PDLC - Pause During Loading Menu Category +; MDSC - Music Sound Category +; SMSC - Stats Mute Category +; SSSC - Stats Music +; MTSC - Master Sound Category +; TSSC - Time Sensitive Sound Category +; DOP2 - Dialogue Output Model (3D) +; DOP3 - Dialogue Output Model (2D) +; POPM - Player's Output Model (1st Person) +; P3OM - Player's Output Model (3rd Person) +; IOPM - Interface Output Model +; RVBT - Reverb Type +; UWLS - Underwater Loop Sound +; URVT - Underwater Reverb Type +; HRSK - Keyword - Horse +; UNDK - Keyword - Undead +; NPCK - Keyword - NPC +; KWBR - Keyword - BeastRace +; KWDM - Keyword - DummyObject +; KWGE - Keyword - UseGeometryEmitter +; KWMS - Keyword - MustStop +; KWUA - Keyword - UpdateDuringArchery +; KWOT - Keyword - Skip Outfit Items +; FTHD - Male Face Texture Set: Head +; FTMO - Male Face Texture Set: Mouth +; FTEL - Male Face Texture Set: Eyes +; FTHF - Female Face Texture Set: Head +; FTMF - Female Face Texture Set: Mouth +; FTRF - Female Face Texture Set: Eyes +; IMID - ImageSpaceModifier for inventory menu. +; PTEM - Package template +; MMCL - Main Menu Cell +; DMWL - Default MovementType: Walk +; DMRN - Default MovementType: Run +; DMSW - Default MovementType: Swim +; DMFL - Default MovementType: Fly +; DMSN - Default MovementType: Sneak +; DMSP - Default MovementType: Sprint +; SPFK - Keyword - Special Furniture +; FFFP - Keyword - Furniture Forces 1st Person +; FFTP - Keyword - Furniture Forces 3rd Person +; AFNP - Keyword - Activator Furniture No Player +; TKGS - Telekinesis Grab Sound +; TKTS - Telekinesis Throw Sound +; WMWE - World Map Weather +; HMPC - Help Manual PC +; HMXB - Help Manual XBox +; TKAM - Keyword - Type Ammo +; TKAR - Keyword - Type Armor +; TKBK - Keyword - Type Book +; TKIG - Keyword - Type Ingredient +; TKKY - Keyword - Type Key +; TKMS - Keyword - Type Misc +; TKSG - Keyword - Type SoulGem +; TKWP - Keyword - Type Weapon +; TKPT - Keyword - Type Potion +; BENW - Base Weapon Enchantment +; BENA - Base Armor Enchantment +; BAPO - Base Potion +; BAPS - Base Poison +; DRAK - Keyword - Dragon +; MVBL - Keyword - Movable +; ABSE - Art Object - Absorb Effect +; WEML - Weapon Material List +; ARTL - Armor Material List +; DIEN - Keyword - Disallow Enchanting +; FTML - Favor travel marker location +; LKHO - Keyword - Hold Location +; CWOK - Keyword - Civil War Owner +; CWNE - Keyword - Civil War Neutral +; LRSO - LocRefType - Civil War Soldier +; KWDO - Keyword - ClearableLocation +; LRRD - LocRefType - Resource Destructible +; HCLL - FormList - Hair Color List +; CMPX - Complex Scene Object +; RUSG - Keyword - Reusable SoulGem +; ANML - Keyword - Animal +; DAED - Keyword - Daedra +; BEEP - Keyword - Robot +; NRNT - Keyword - Nirnroot +; FTGF - Fighters' Guild Faction +; MGGF - Mages' Guild Faction +; TVGF - Thieves' Guild Faction +; DBHF - Dark Brotherhood Faction +; JRLF - Jarl Faction +; AWWW - Bunny Faction +; PIVV - Player Is Vampire Variable +; PIWV - Player Is Werewolf Variable +; NMRD - Road Marker +; SAT1 - Keyword: Scale Actor To 1.0 +; VAMP - Keyword: Vampire +; FORG - Keyword: Forge +; COOK - Keyword: Cooking Pot +; SMLT - Keyword: Smelter +; TANN - Keyword: Tanning Rack +; HBLK - Help - Basic Lockpicking (PC) +; HBLX - Help - Basic Lockpicking (Console) +; HBFG - Help - Basic Forging +; HBCO - Help - Basic Cooking +; HBML - Help - Basic Smelting +; HBTA - Help - Basic Tanning +; HBOC - Help - Basic Object Creation +; HBEC - Help - Basic Enchanting +; HBSM - Help - Basic Smithing Weapon +; HBSA - Help - Basic Smithing Armor +; HBAL - Help - Basic Alchemy +; HBBR - Help - Barter +; HBLU - Help - Leveling up +; HBSK - Help - Skills Menu +; HBMM - Help - Map Menu +; HBJL - Help - Journal +; HBLH - Help - Low Health +; HBLM - Help - Low Magicka +; HBLS - Help - Low Stamina +; HBHJ - Help - Jail +; HBFT - Help - Teamate Favor +; HBWC - Help - Weapon Charge +; HBFS - Help - Favorites +; KHFL - Kinect Help FormList +; HBFM - Help - Flying Mount +; HBTL - Help - Target Lock +; HBAT - Help - Attack Target +; LSIS - Imagespace: Load screen +; WMDA - Keyword - Weapon Material Daedric +; WMDR - Keyword - Weapon Material Draugr +; WMDH - Keyword - Weapon Material DraugrHoned +; WMDW - Keyword - Weapon Material Dwarven +; WMEB - Keyword - Weapon Material Ebony +; WMEL - Keyword - Weapon Material Elven +; WMFA - Keyword - Weapon Material Falmer +; WMFH - Keyword - Weapon Material FalmerHoned +; WMGL - Keyword - Weapon Material Glass +; WMIM - Keyword - Weapon Material Imperial +; WMIR - Keyword - Weapon Material Iron +; WMOR - Keyword - Weapon Material Orcish +; WMST - Keyword - Weapon Material Steel +; WMWO - Keyword - Weapon Material Wood +; WTBA - Keyword - WeaponTypeBoundArrow +; AODA - Keyword - Armor Material Daedric +; AODP - Keyword - Armor Material Dragonplate +; AODS - Keyword - Armor Material Dragonscale +; AODB - Keyword - Armor Material Dragonbone +; AODW - Keyword - Armor Material Dwarven +; AOEB - Keyword - Armor Material Ebony +; AOEL - Keyword - Armor Material Elven +; AOES - Keyword - Armor Material ElvenSplinted +; AOFL - Keyword - Armor Material FullLeather +; AOGL - Keyword - Armor Material Glass +; AOHI - Keyword - Armor Material Hide +; AOIM - Keyword - Armor Material Imperial +; AOIH - Keyword - Armor Material ImperialHeavy +; AOIR - Keyword - Armor Material ImperialReinforced +; AOFE - Keyword - Armor Material Iron +; AOIB - Keyword - Armor Material IronBanded +; AOOR - Keyword - Armor Material Orcish +; AOSC - Keyword - Armor Material Scaled +; AOST - Keyword - Armor Material Steel +; AOSP - Keyword - Armor Material SteelPlate +; AOSK - Keyword - Armor Material Stormcloak +; AOSD - Keyword - Armor Material Studded +; GCK1 - Keyword - Generic Craftable Keyword 01 +; GCK2 - Keyword - Generic Craftable Keyword 02 +; GCK3 - Keyword - Generic Craftable Keyword 03 +; GCK4 - Keyword - Generic Craftable Keyword 04 +; GCK5 - Keyword - Generic Craftable Keyword 05 +; GCK6 - Keyword - Generic Craftable Keyword 06 +; GCK7 - Keyword - Generic Craftable Keyword 07 +; GCK8 - Keyword - Generic Craftable Keyword 08 +; GCK9 - Keyword - Generic Craftable Keyword 09 +; GCKX - Keyword - Generic Craftable Keyword 10 +; JWLR - Keyword - Jewelry +; KWCU - Keyword - Cuirass +; LMHP - Local Map Hide Plane +; SLDM - Snow LOD Material +; SLHD - Snow LOD Material (HD) +; ALDM - Ash LOD Material +; ALHD - Ash LOD Material (HD) +; DGFL - DialogueFollower Quest +; PTFR - PotentialFollower Faction +; AVWP - Werewolf Available Perks +; AVVP - Vampire Available Perks +; RIWR - Werewolf Race +; RIVR - Vampire Race +; RIVS - Vampire Spells +; DMXL - Dragon Mount No Land List +; PCMD - Player Can Mount Dragon Here List +; FMYS - Flying Mount - Allowed Spells +; FMNS - Flying Mount - Disallowed Spells +; MNT2 - Keyword - Mount +; AIVC - Verlet Cape +; FTNP - Furniture Test NPC +; COEX - Keyword - Conditional Explosion +; VFNC - Vampire Feed No Crime Faction +; KWSP - Skyrim - Worldspace +; ALBM - Keyword - Armor Material Light Bonemold +; ALCH - Keyword - Armor Material Light Chitin +; ALNC - Keyword - Armor Material Light Nordic +; ALSM - Keyword - Armor Material Light Stalhrim +; FMFF - Flying Mount - Fly Fast Worldspaces +; AHBM - Keyword - Armor Material Heavy Bonemold +; AHCH - Keyword - Armor Material Heavy Chitin +; AHNC - Keyword - Armor Material Heavy Nordic +; AHSM - Keyword - Armor Material Heavy Stalhrim +; WPNC - Keyword - Weapon Material Nordic +; WPSM - Keyword - Weapon Material Stalhrim \ No newline at end of file diff --git a/source/scripts/door.psc b/source/scripts/door.psc new file mode 100644 index 00000000..4e74a020 --- /dev/null +++ b/source/scripts/door.psc @@ -0,0 +1 @@ +Scriptname Door extends Form Hidden diff --git a/source/scripts/effectshader.psc b/source/scripts/effectshader.psc new file mode 100644 index 00000000..1e592a85 --- /dev/null +++ b/source/scripts/effectshader.psc @@ -0,0 +1,7 @@ +Scriptname EffectShader extends Form Hidden + +; Starts playing this effect shader on the specified object for the specified length of time in seconds. Negative values indiciate "infinite" +Function Play(ObjectReference akObject, float afDuration = -1.0) native + +; Stops playing this effect shader on the specified object +Function Stop(ObjectReference akObject) native \ No newline at end of file diff --git a/source/scripts/enchantment.psc b/source/scripts/enchantment.psc new file mode 100644 index 00000000..40841922 --- /dev/null +++ b/source/scripts/enchantment.psc @@ -0,0 +1,41 @@ +Scriptname Enchantment extends Form Hidden + +; Is this enchantment classified as hostile? +bool Function IsHostile() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; return the number of the effects +int Function GetNumEffects() native + +; return the magnitude of the specified effect +float Function GetNthEffectMagnitude(int index) native + +; return the area of the specified effect +int Function GetNthEffectArea(int index) native + +; return the duration of the specified effect +int Function GetNthEffectDuration(int index) native + +; return the magic effect of the specified effect +MagicEffect Function GetNthEffectMagicEffect(int index) native + +; return the index of the costliest effect +int Function GetCostliestEffectIndex() native + +; sets the magnitude of the specified effect +Function SetNthEffectMagnitude(int index, float value) native + +; sets the area of the specified effect +Function SetNthEffectArea(int index, int value) native + +; sets the duration of the specified effect +Function SetNthEffectDuration(int index, int value) native + +; returns the base enchantment of this enchantment +Enchantment Function GetBaseEnchantment() native + +; Returns a Formlist of Keywords +FormList Function GetKeywordRestrictions() native + +; Sets the FormList of keywords +Function SetKeywordRestrictions(FormList newKeywordList) native \ No newline at end of file diff --git a/source/scripts/encounterzone.psc b/source/scripts/encounterzone.psc new file mode 100644 index 00000000..4aef1c23 --- /dev/null +++ b/source/scripts/encounterzone.psc @@ -0,0 +1 @@ +Scriptname EncounterZone extends Form Hidden \ No newline at end of file diff --git a/source/scripts/equipslot.psc b/source/scripts/equipslot.psc new file mode 100644 index 00000000..7638267c --- /dev/null +++ b/source/scripts/equipslot.psc @@ -0,0 +1,7 @@ +Scriptname EquipSlot extends Form Hidden + +; Returns the number of parent slots +int Function GetNumParents() native + +; Returns the Nth parent slot +EquipSlot Function GetNthParent(int n) native \ No newline at end of file diff --git a/source/scripts/explosion.psc b/source/scripts/explosion.psc new file mode 100644 index 00000000..eeb117d5 --- /dev/null +++ b/source/scripts/explosion.psc @@ -0,0 +1 @@ +Scriptname Explosion extends Form Hidden diff --git a/source/scripts/faction.psc b/source/scripts/faction.psc new file mode 100644 index 00000000..e2674010 --- /dev/null +++ b/source/scripts/faction.psc @@ -0,0 +1,131 @@ +Scriptname Faction extends Form Hidden + +; Checks to see if the player can pay the crime gold for this faction +bool Function CanPayCrimeGold() native + +; Gets the amount of gold the player is to pay to this faction for crimes +int Function GetCrimeGold() native + +; Gets the amount of gold the player is to pay to this faction for non-violent crimes +int Function GetCrimeGoldNonViolent() native + +; Gets the amount of gold the player is to pay to this faction for violent crimes +int Function GetCrimeGoldViolent() native + +; Get the player's "infamy" with this faction (accumulated crime gold) +int Function GetInfamy() native + +; Get the player's "non-violent infamy" with this faction (accumulated non-violent crime gold) +int Function GetInfamyNonViolent() native + +; Get the player's "violent infamy" with this faction (accumulated violent crime gold) +int Function GetInfamyViolent() native + +; Gets this faction's reaction towards the other +int Function GetReaction(Faction akOther) native + +; Obtains the value of all items stolen by the player from this faction that was witnessed +int Function GetStolenItemValueCrime() native + +; Obtains the value of all items stolen by the player from this faction that was NOT witnessed +int Function GetStolenItemValueNoCrime() native + +; Is the passed in faction in this faction's crime group +bool Function IsFactionInCrimeGroup(Faction akOther) native + +; Is the player expelled from this faction? +bool Function IsPlayerExpelled() native + +; Modifies the amount of crime gold for this faction - violent or non-violent +Function ModCrimeGold(int aiAmount, bool abViolent = false) native + +; Modifies this faction's reaction towards the other faction +Function ModReaction(Faction akOther, int aiAmount) native + +; Has the player pay the crime gold for this faction +Function PlayerPayCrimeGold(bool abRemoveStolenItems = true, bool abGoToJail = true) native + +; Finds a nearby NPC in this faction and has them behave as if assaulted +Function SendAssaultAlarm() native + +; Sends the player to this faction's jail - removing inventory if requested, and to a "real" jail or not +Function SendPlayerToJail(bool abRemoveInventory = true, bool abRealJail = true) native + +; Sets this faction and the other as allies or friends - if the friend booleans are true - the specified one-way relationship +; is a friend instead of an ally +Function SetAlly(Faction akOther, bool abSelfIsFriendToOther = false, bool abOtherIsFriendToSelf = false) native + +; Sets the non-violent crime gold on this faction +Function SetCrimeGold(int aiGold) native + +; Sets the violent crime gold on this faction +Function SetCrimeGoldViolent(int aiGold) native + +; Sets this faction and the other as enemies or neutral - if the friend booleans are true - the specified one-way relationship +; is a neutral instead of an enemy +Function SetEnemy(Faction akOther, bool abSelfIsNeutralToOther = false, bool abOtherIsNeutralToSelf = false) native + +; Sets or clears the player as an enemy of this faction +Function SetPlayerEnemy(bool abIsEnemy = true) native + +; Sets or clears the expelled flag for this faction on the player +Function SetPlayerExpelled(bool abIsExpelled = true) native + +; Sets this faction's reaction towards the other +Function SetReaction(Faction akOther, int aiNewValue) native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +int property kFaction_HiddenFromNPC = 0x00000001 AutoReadOnly +int property kFaction_SpecialCombat = 0x00000002 AutoReadOnly +int property kFaction_TrackCrime = 0x00000010 AutoReadOnly +int property kFaction_IgnoreMurder = 0x00000020 AutoReadOnly +int property kFaction_IgnoreAssault = 0x00000040 AutoReadOnly +int property kFaction_IgnoreStealing = 0x00000080 AutoReadOnly +int property kFaction_IgnoreTrespass = 0x00000100 AutoReadOnly +int property kFaction_NoReportCrime = 0x00000200 AutoReadOnly +int property kFaction_CrimeGoldDefaults = 0x00000400 AutoReadOnly +int property kFaction_IgnorePickpocket = 0x00000800 AutoReadOnly +int property kFaction_Vendor = 0x00001000 AutoReadOnly +int property kFaction_CanBeOwner = 0x00002000 AutoReadOnly +int property kFaction_IgnoreWerewolf = 0x00004000 AutoReadOnly + +; Not recommended unless the faction was previously a vendor +; due to the faction not having a package location the vendor +; may not be able to set up shop anywhere at all +Function MakeVendor() + SetFactionFlag(self.kFaction_Vendor) +EndFunction + +bool Function IsVendor() + return IsFactionFlagSet(self.kFaction_Vendor) +EndFunction + +Function ClearVendor() + ClearFactionFlag(self.kFaction_Vendor) +EndFunction + +bool Function IsFactionFlagSet(int flag) native +Function SetFactionFlag(int flag) native +Function ClearFactionFlag(int flag) native + +bool Function OnlyBuysStolenItems() native +Function SetOnlyBuysStolenItems(bool onlyStolen) native + +int Function GetVendorStartHour() native +Function SetVendorStartHour(int hour) native + +int Function GetVendorEndHour() native +Function SetVendorEndHour(int hour) native + +int Function GetVendorRadius() native +Function SetVendorRadius(int radius) native + +ObjectReference Function GetMerchantContainer() native +Function SetMerchantContainer(ObjectReference akContainer) native + +bool Function IsNotSellBuy() native +Function SetNotSellBuy(bool notSellBuy) native + +FormList Function GetBuySellList() native +Function SetBuySellList(FormList akList) native \ No newline at end of file diff --git a/source/scripts/flora.psc b/source/scripts/flora.psc new file mode 100644 index 00000000..55e264a6 --- /dev/null +++ b/source/scripts/flora.psc @@ -0,0 +1,9 @@ +Scriptname Flora extends Activator Hidden + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +SoundDescriptor Function GetHarvestSound() native +Function SetHarvestSound(SoundDescriptor akSoundDescriptor) native + +Form Function GetIngredient() native +Function SetIngredient(Form akIngredient) native \ No newline at end of file diff --git a/source/scripts/form.psc b/source/scripts/form.psc new file mode 100644 index 00000000..68b75170 --- /dev/null +++ b/source/scripts/form.psc @@ -0,0 +1,280 @@ +Scriptname Form Hidden + +; Returns the formID for this object +Int Function GetFormID() native + +; Obtains this form's value in gold. Will return -1 if the form doesn't have any value (like a quest) +int Function GetGoldValue() native + +; Returns if this form has the specified keyword attached +bool Function HasKeyword(Keyword akKeyword) native + +; Is the "Known" flag set for this form? +bool Function PlayerKnows() native + +; Register for the specified animation event from the specified object - returns true if it successfully registered +bool Function RegisterForAnimationEvent(ObjectReference akSender, string asEventName) native + +; Register for LOS gain and lost events between the viewer and the target +; A loss or gain event will be sent immediately, depending on whether or not the viewer is already looking at the target or not +; If the viewer is not the player, the target must be another actor +Function RegisterForLOS(Actor akViewer, ObjectReference akTarget) native + +; Register for only the first LOS gain event between the viewer and the target +; If the viewer is already looking at the target, an event will be received almost immediately +; If the viewer is not the player, the target must be another actor +Function RegisterForSingleLOSGain(Actor akViewer, ObjectReference akTarget) native + +; Register for only the first LOS lost event between the viewer and the target +; If the viewer is already not looking at the target, an event will be received almost immediately +; If the viewer is not the player, the target must be another actor +Function RegisterForSingleLOSLost(Actor akViewer, ObjectReference akTarget) native + +; Register for a single OnUpdate event, in afInterval seconds. All scripts attached to this form will get the update events +; Of course, this means you don't need to call UnregisterForUpdate() +; If you find yourself doing this: +; Event OnUpdate() +; UnregisterForUpdate() +; {Do some stuff} +; endEvent +; Then you should use RegisterForSingleUpdate instead +Function RegisterForSingleUpdate(float afInterval) native + +; Registers this form to receive events when the player sleeps and wakes up +Function RegisterForSleep() native + +; Registers this form to receive events when tracked stats are updated +Function RegisterForTrackedStatsEvent() native + +; Register for OnUpdate events, every X seconds, where X is the interval. All scripts attached to this form will get the update events +Function RegisterForUpdate(float afInterval) native + +; Register for OnUpdateGameTime events, every X hours of game time, where X is the interval. All scripts attached to this form will get the update events +Function RegisterForUpdateGameTime(float afInterval) native + +; Register for a single OnUpdateGameTime event, in afInterval hours of game time. All scripts attached to this form will get the update events +Function RegisterForSingleUpdateGameTime(float afInterval) native + +; Turns on profiling for this specific object and all scripts attached to it - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StartObjectProfiling() native + +; Turns off profiling for this specific object and all scripts attached to it - setting doesn't persist across saves +; Will do nothing on release console builds, and if the Papyrus:bEnableProfiling ini setting is off +Function StopObjectProfiling() native + +; Unregister for the specified animation event from the specified object +Function UnregisterForAnimationEvent(ObjectReference akSender, string asEventName) native + +; Unregister for any LOS events between the viewer and target +Function UnregisterForLOS(Actor akViewer, ObjectReference akTarget) native + +; Unregisters this form to receive events when the player sleeps and wakes up +Function UnregisterForSleep() native + +; Unregisters this form from receiving events when tracked stats are updated +Function UnregisterForTrackedStatsEvent() native + +; Unregister for OnUpdate events, all attached scripts will stop getting update events +Function UnregisterForUpdate() native + +; Unregister for OnUpdateGameTime events, all attached scripts will stop getting update game time events +Function UnregisterForUpdateGameTime() native + +; Animation event, sent when an object we are listening to hits one of the events we are listening for +Event OnAnimationEvent(ObjectReference akSource, string asEventName) +EndEvent + +; Event sent when you have been unregistered from receiving an animation event because the target +; object's animation graph has been unloaded +Event OnAnimationEventUnregistered(ObjectReference akSource, string asEventName) +EndEvent + +; LOS event, sent whenever the viewer first sees the target (after registering) +Event OnGainLOS(Actor akViewer, ObjectReference akTarget) +EndEvent + +; Lost LOS event, sent whenever the viewer first loses sight of the target (after registering) +Event OnLostLOS(Actor akViewer, ObjectReference akTarget) +EndEvent + +; Received when the player sleeps. Start and desired end time are in game time days (after registering) +Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) +EndEvent + +; Received when the player stops sleeping - whether naturally or interrupted (after registering) +Event OnSleepStop(bool abInterrupted) +EndEvent + +; Event received when a tracked stat is updated for the player +Event OnTrackedStatsEvent(string arStatName, int aiStatValue) +EndEvent + +; Update event, sent every X seconds while this form is registered for them +Event OnUpdate() +EndEvent + +; Update event, sent every X hours of game time while this form is registered for them +Event OnUpdateGameTime() +EndEvent + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; Returns the typecode for this form object +Int Function GetType() native + +; returns the form's name, full name if possible +string Function GetName() native + +; sets the name of the form +Function SetName(string name) native + +; returns the weight of the form +float Function GetWeight() native + +; sets the weight of the form +Function SetWeight(float weight) native + +; sets the gold value of the form +Function SetGoldValue(int value) native + +; returns the number of keywords on the form +int Function GetNumKeywords() native + +; returns the keyword at the specified index +Keyword Function GetNthKeyword(int index) native + +; returns all keywords of the form +Keyword[] Function GetKeywords() native + +bool Function HasKeywordString(string s) + Keyword k = Keyword.GetKeyword(s) + if k == None + return false + endif + return HasKeyword(k) +endFunction + +; Sets whether the player knows this form +; Should only be used for Magic Effects, +; Words of Power, and Enchantments +Function SetPlayerKnows(bool knows) native + +; Registers for OnKeyDown and OnKeyUp events for the given keycode. +Function RegisterForKey(int keyCode) native +Function UnregisterForKey(int keyCode) native +Function UnregisterForAllKeys() native + +Event OnKeyDown(int keyCode) +EndEvent + +Event OnKeyUp(int keyCode, float holdTime) +EndEvent + +; Registers for OnControlDown and OnControlUp events for the given control. +; For a list of valid controls, see Input.psc. +Function RegisterForControl(string control) native +Function UnregisterForControl(string control) native +Function UnregisterForAllControls() native + +Event OnControlDown(string control) +EndEvent + +Event OnControlUp(string control, float holdTime) +EndEvent + +; Registers for OnMenuOpen and OnMenuClose events for the given menu. +; Registrations have to be refreshed after each game load. +; For a list of valid menu names, see UI.psc. +Function RegisterForMenu(string menuName) native +Function UnregisterForMenu(string menuName) native +Function UnregisterForAllMenus() native + +Event OnMenuOpen(string menuName) +endEvent + +Event OnMenuClose(string menuName) +endEvent + +; Registers a custom event callback for given event name. +; Registrations have to be refreshed after each game load. +; +; Examples: +; RegisterForModEvent("myCustomEvent", "MyModEventCallback") +; +; Event signature of custom event callbacks: +; Event MyModEventCallback(string eventName, string strArg, float numArg, Form sender) +; endEvent +; +Function RegisterForModEvent(string eventName, string callbackName) native +Function UnregisterForModEvent(string eventName) native +Function UnregisterForAllModEvents() native + +; Sends custom event with given generic parameters. +Function SendModEvent(string eventName, string strArg = "", float numArg = 0.0) native + +; Registers for OnPlayerCameraState events +Function RegisterForCameraState() native +Function UnregisterForCameraState() native + +Event OnPlayerCameraState(int oldState, int newState) +EndEvent + +; Registers for OnCrosshairRefChange events +Function RegisterForCrosshairRef() native +Function UnregisterForCrosshairRef() native + +; Note: ref is none for no target +Event OnCrosshairRefChange(ObjectReference ref) +EndEvent + +Function RegisterForActorAction(int actionType) native +Function UnregisterForActorAction(int actionType) native + +; ActionTypes +; 0 - Weapon Swing (Melee weapons that are swung, also barehand) +; 1 - Spell Cast (Spells and staves) +; 2 - Spell Fire (Spells and staves) +; 3 - Voice Cast +; 4 - Voice Fire +; 5 - Bow Draw +; 6 - Bow Release +; 7 - Unsheathe Begin +; 8 - Unsheathe End +; 9 - Sheathe Begin +; 10 - Sheathe End +; Slots +; 0 - Left Hand +; 1 - Right Hand +; 2 - Voice +Event OnActorAction(int actionType, Actor akActor, Form source, int slot) +EndEvent + +; Registers the script for when a QueueNiNodeUpdate is called +Function RegisterForNiNodeUpdate() native +Function UnregisterForNiNodeUpdate() native + +Event OnNiNodeUpdate(ObjectReference akActor) +EndEvent + +; Returns a temporary clone of this form +Form Function TempClone() native + +; Returns whether this Form has a World Model (fast) +bool Function HasWorldModel() native + +; Returns the world model path of this Form, if it has a world model +string Function GetWorldModelPath() native +Function SetWorldModelPath(string path) native + +; Returns the number of texture sets the world model has, if its textures can be swapped +int Function GetWorldModelNumTextureSets() native + +; Returns the Nth texture set of the world model, if the textures can be swapped +TextureSet Function GetWorldModelNthTextureSet(int n) native + +; Sets the world models Nth texture set, if the textures can be set +Function SetWorldModelNthTextureSet(TextureSet nSet, int n) native + +; Returns whether this Form is playable, only applied to Forms with the playable flag +bool Function IsPlayable() native \ No newline at end of file diff --git a/source/scripts/formlist.psc b/source/scripts/formlist.psc new file mode 100644 index 00000000..c912398b --- /dev/null +++ b/source/scripts/formlist.psc @@ -0,0 +1,31 @@ +Scriptname FormList extends Form + +; Adds the given form to this form list +Function AddForm(Form apForm) native + +; Finds the specified form in the form list and returns its index. +; If not found, returns a negative number +int Function Find(Form apForm) native + +; Returns the number of forms in the list +int Function GetSize() native + +; Returns the form at index 'aiIndex' in the list +Form Function GetAt(int aiIndex) native + +; Queries the form list to see if it contains the passed in form +bool Function HasForm(Form akForm) native + +; Removes the given added form from this form list +Function RemoveAddedForm(Form apForm) native + +; Removes all script added forms from this form list +Function Revert() native + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; Returns a Form array of this list (Invalid entries will be None) +Form[] Function ToArray() native + +; Adds an Array of Forms to this list +Function AddForms(Form[] forms) native \ No newline at end of file diff --git a/source/scripts/formtype.psc b/source/scripts/formtype.psc new file mode 100644 index 00000000..2d398c3f --- /dev/null +++ b/source/scripts/formtype.psc @@ -0,0 +1,137 @@ +Scriptname FormType Hidden + +int Property kNone = 0 AutoReadOnly +int Property kTES4 = 1 AutoReadOnly +int Property kGroup = 2 AutoReadOnly +int Property kGMST = 3 AutoReadOnly +int Property kKeyword = 4 AutoReadOnly +int Property kLocationRef = 5 AutoReadOnly +int Property kAction = 6 AutoReadOnly +int Property kTextureSet = 7 AutoReadOnly +int Property kMenuIcon = 8 AutoReadOnly +int Property kGlobal = 9 AutoReadOnly +int Property kClass = 10 AutoReadOnly +int Property kFaction = 11 AutoReadOnly +int Property kHeadPart = 12 AutoReadOnly +int Property kEyes = 13 AutoReadOnly +int Property kRace = 14 AutoReadOnly +int Property kSound = 15 AutoReadOnly +int Property kAcousticSpace = 16 AutoReadOnly +int Property kSkill = 17 AutoReadOnly +int Property kEffectSetting = 18 AutoReadOnly +int Property kScript = 19 AutoReadOnly +int Property kLandTexture = 20 AutoReadOnly +int Property kEnchantment = 21 AutoReadOnly +int Property kSpell = 22 AutoReadOnly +int Property kScrollItem = 23 AutoReadOnly +int Property kActivator = 24 AutoReadOnly +int Property kTalkingActivator = 25 AutoReadOnly +int Property kArmor = 26 AutoReadOnly +int Property kBook = 27 AutoReadOnly +int Property kContainer = 28 AutoReadOnly +int Property kDoor = 29 AutoReadOnly +int Property kIngredient = 30 AutoReadOnly +int Property kLight = 31 AutoReadOnly +int Property kMisc = 32 AutoReadOnly +int Property kApparatus = 33 AutoReadOnly +int Property kStatic = 34 AutoReadOnly +int Property kStaticCollection = 35 AutoReadOnly +int Property kMovableStatic = 36 AutoReadOnly +int Property kGrass = 37 AutoReadOnly +int Property kTree = 38 AutoReadOnly +int Property kFlora = 39 AutoReadOnly +int Property kFurniture = 40 AutoReadOnly +int Property kWeapon = 41 AutoReadOnly +int Property kAmmo = 42 AutoReadOnly +int Property kNPC = 43 AutoReadOnly +int Property kLeveledCharacter = 44 AutoReadOnly +int Property kKey = 45 AutoReadOnly +int Property kPotion = 46 AutoReadOnly +int Property kIdleMarker = 47 AutoReadOnly +int Property kNote = 48 AutoReadOnly +int Property kConstructibleObject = 49 AutoReadOnly +int Property kProjectile = 50 AutoReadOnly +int Property kHazard = 51 AutoReadOnly +int Property kSoulGem = 52 AutoReadOnly +int Property kLeveledItem = 53 AutoReadOnly +int Property kWeather = 54 AutoReadOnly +int Property kClimate = 55 AutoReadOnly +int Property kShaderParticleGeometryData = 56 AutoReadOnly +int Property kReferenceEffect = 57 AutoReadOnly +int Property kRegion = 58 AutoReadOnly +int Property kNAVI = 59 AutoReadOnly +int Property kCell = 60 AutoReadOnly +int Property kReference = 61 AutoReadOnly +int Property kCharacter = 62 AutoReadOnly +int Property kMissile = 63 AutoReadOnly +int Property kArrow = 64 AutoReadOnly +int Property kGrenade = 65 AutoReadOnly +int Property kBeamProjectile = 66 AutoReadOnly +int Property kFlameProjectile = 67 AutoReadOnly +int Property kConeProjectile = 68 AutoReadOnly +int Property kBarrierProjectile = 69 AutoReadOnly +int Property kPHZD = 70 AutoReadOnly +int Property kWorldSpace = 71 AutoReadOnly +int Property kLand = 72 AutoReadOnly +int Property kNavMesh = 73 AutoReadOnly +int Property kTLOD = 74 AutoReadOnly +int Property kTopic = 75 AutoReadOnly +int Property kTopicInfo = 76 AutoReadOnly +int Property kQuest = 77 AutoReadOnly +int Property kIdle = 78 AutoReadOnly +int Property kPackage = 79 AutoReadOnly +int Property kCombatStyle = 80 AutoReadOnly +int Property kLoadScreen = 81 AutoReadOnly +int Property kLeveledSpell = 82 AutoReadOnly +int Property kANIO = 83 AutoReadOnly +int Property kWater = 84 AutoReadOnly +int Property kEffectShader = 85 AutoReadOnly +int Property kTOFT = 86 AutoReadOnly +int Property kExplosion = 87 AutoReadOnly +int Property kDebris = 88 AutoReadOnly +int Property kImageSpace = 89 AutoReadOnly +int Property kImageSpaceModifier = 90 AutoReadOnly +int Property kList = 91 AutoReadOnly +int Property kPerk = 92 AutoReadOnly +int Property kBodyPartData = 93 AutoReadOnly +int Property kAddonNode = 94 AutoReadOnly +int Property kActorValueInfo = 95 AutoReadOnly +int Property kCameraShot = 96 AutoReadOnly +int Property kCameraPath = 97 AutoReadOnly +int Property kVoiceType = 98 AutoReadOnly +int Property kMaterialType = 99 AutoReadOnly +int Property kImpactData = 100 AutoReadOnly +int Property kImpactDataSet = 101 AutoReadOnly +int Property kARMA = 102 AutoReadOnly +int Property kEncounterZone = 103 AutoReadOnly +int Property kLocation = 104 AutoReadOnly +int Property kMessage = 105 AutoReadOnly +int Property kRagdoll = 106 AutoReadOnly +int Property kDefaultObject = 107 AutoReadOnly +int Property kLightingTemplate = 108 AutoReadOnly +int Property kMusicType = 109 AutoReadOnly +int Property kFootstep = 110 AutoReadOnly +int Property kFootstepSet = 111 AutoReadOnly +int Property kStoryBranchNode = 112 AutoReadOnly +int Property kStoryQuestNode = 113 AutoReadOnly +int Property kStoryEventNode = 114 AutoReadOnly +int Property kDialogueBranch = 115 AutoReadOnly +int Property kMusicTrack = 116 AutoReadOnly +int Property kDLVW = 117 AutoReadOnly +int Property kWordOfPower = 118 AutoReadOnly +int Property kShout = 119 AutoReadOnly +int Property kEquipSlot = 120 AutoReadOnly +int Property kRelationship = 121 AutoReadOnly +int Property kScene = 122 AutoReadOnly +int Property kAssociationType = 123 AutoReadOnly +int Property kOutfit = 124 AutoReadOnly +int Property kArt = 125 AutoReadOnly +int Property kMaterial = 126 AutoReadOnly +int Property kMovementType = 127 AutoReadOnly +int Property kSoundDescriptor = 128 AutoReadOnly +int Property kDualCastData = 129 AutoReadOnly +int Property kSoundCategory = 130 AutoReadOnly +int Property kSoundOutput = 131 AutoReadOnly +int Property kCollisionLayer = 132 AutoReadOnly +int Property kColorForm = 133 AutoReadOnly +int Property kReverbParam = 134 AutoReadOnly diff --git a/source/scripts/furniture.psc b/source/scripts/furniture.psc new file mode 100644 index 00000000..ffae95db --- /dev/null +++ b/source/scripts/furniture.psc @@ -0,0 +1 @@ +Scriptname Furniture extends Activator Hidden diff --git a/source/scripts/gamedata.psc b/source/scripts/gamedata.psc new file mode 100644 index 00000000..82840f10 --- /dev/null +++ b/source/scripts/gamedata.psc @@ -0,0 +1,35 @@ +Scriptname GameData Hidden + +; Keywords are AND operations, must have all listed keywords +; IgnoreTemplates will exclude items that are inherited from other items with slightly altered stats +; IgnoreEnchantments will exclude any item with an enchantment +; WeaponTypes are a bitfield, will filter weapons by type +; Add together to filter by multiple types +int Property WeaponTypeHandToHand = 1 AutoReadOnly +int Property WeaponTypeOneHandSword = 2 AutoReadOnly +int Property WeaponTypeOneHandDagger = 4 AutoReadOnly +int Property WeaponTypeOneHandAxe = 8 AutoReadOnly +int Property WeaponTypeOneHandMace = 16 AutoReadOnly +int Property WeaponTypeTwoHandSword = 32 AutoReadOnly +int Property WeaponTypeTwoHandAxe = 64 AutoReadOnly +int Property WeaponTypeBow = 128 AutoReadOnly +int Property WeaponTypeStaff = 256 AutoReadOnly +int Property WeaponTypeCrossbow = 512 AutoReadOnly + +Form[] Function GetAllWeapons(string modName, Keyword[] keywords = None, bool playable = true, bool ignoreTemplates = true, bool ignoreEnchantments = true, bool onlyEnchanted = false, int weaponTypes = 0xFFFFFFFF) global native + +Form[] Function GetAllArmor(string modName, Keyword[] keywords = None, bool playable = true, bool ignoreTemplates = true, bool ignoreEnchantments = true, bool onlyEnchanted = false, bool ignoreSkin = true) global native + +Form[] Function GetAllAmmo(string modName, Keyword[] keywords = None, bool playable = true) global native + +Form[] Function GetAllBooks(string modName, Keyword[] keywords = None, bool regular = true, bool spell = false, bool skill = false) global native + +Form[] Function GetAllPotions(string modName, Keyword[] keywords = None, bool potions = true, bool food = false, bool poison = false) global native + +Form[] Function GetAllIngredients(string modName, Keyword[] keywords = None) global native + +Form[] Function GetAllScrolls(string modName, Keyword[] keywords = None) global native + +Form[] Function GetAllKeys(string modName, Keyword[] keywords = None) global native + +Form[] Function GetAllMiscItems(string modName, Keyword[] keywords = None) global native \ No newline at end of file diff --git a/source/scripts/globalvariable.psc b/source/scripts/globalvariable.psc new file mode 100644 index 00000000..88ec0555 --- /dev/null +++ b/source/scripts/globalvariable.psc @@ -0,0 +1,34 @@ +Scriptname GlobalVariable extends Form Hidden + +; Obtains the global's current value +float Function GetValue() native + +; Sets the global's current value +Function SetValue(float afNewValue) native + +; convenience functions for ints +int Function GetValueInt() + return GetValue() as int +endFunction + +; Sets the global's current value +Function SetValueInt(int aiNewValue) + SetValue(aiNewValue as float) +endFunction + +; Easy access to the global's value +float Property Value Hidden + float Function get() + return GetValue() + EndFunction + + Function set(float afValue) + SetValue(afValue) + EndFunction +EndProperty + +; the threadsafe way to modify a global variable +float Function Mod(float afHowMuch) + Value += afHowMuch + Return Value +EndFunction diff --git a/source/scripts/hazard.psc b/source/scripts/hazard.psc new file mode 100644 index 00000000..c752056a --- /dev/null +++ b/source/scripts/hazard.psc @@ -0,0 +1 @@ +Scriptname Hazard extends Form Hidden diff --git a/source/scripts/headpart.psc b/source/scripts/headpart.psc new file mode 100644 index 00000000..03e23a21 --- /dev/null +++ b/source/scripts/headpart.psc @@ -0,0 +1,30 @@ +Scriptname HeadPart extends Form Hidden + +int Property Type_Misc = 0 AutoReadOnly +int Property Type_Face = 1 AutoReadOnly +int Property Type_Eyes = 2 AutoReadOnly +int Property Type_Hair = 3 AutoReadOnly +int Property Type_FacialHair = 4 AutoReadOnly +int Property Type_Scar = 5 AutoReadOnly +int Property Type_Brows = 6 AutoReadOnly + +HeadPart Function GetHeadPart(string name) native global + +; Returns the head part type +int Function GetType() native + +int Function GetNumExtraParts() native +HeadPart Function GetNthExtraPart(int n) native + +bool Function HasExtraPart(HeadPart p) native +int Function GetIndexOfExtraPart(HeadPart p) native + +; Returns a formlist of the valid races for this head part +FormList Function GetValidRaces() native +Function SetValidRaces(FormList vRaces) native + +; Returns whether the head part is an extra part +bool Function IsExtraPart() native + +; Returns the EditorID of the HeadPart +string Function GetPartName() native \ No newline at end of file diff --git a/source/scripts/idle.psc b/source/scripts/idle.psc new file mode 100644 index 00000000..61c588ed --- /dev/null +++ b/source/scripts/idle.psc @@ -0,0 +1 @@ +Scriptname Idle extends Form Hidden diff --git a/source/scripts/imagespacemodifier.psc b/source/scripts/imagespacemodifier.psc new file mode 100644 index 00000000..d129360e --- /dev/null +++ b/source/scripts/imagespacemodifier.psc @@ -0,0 +1,16 @@ +Scriptname ImageSpaceModifier extends Form Hidden + +; Applies this modifier with the specified strength (which is not clamped) +Function Apply(float afStrength = 1.0) native + +; Adds this modifier to the cross-fade chain, removing the previous modifier, and fading over the specified duration (in seconds) +Function ApplyCrossFade(float afFadeDuration = 1.0) native + +; Disables this modifier and enables the new one, "popping" between the two. Will not interrupt any running cross-fade (if the modifiers aren't the ones fading) +Function PopTo(ImageSpaceModifier akNewModifier, float afStrength = 1.0) native + +; Removes this modifier +Function Remove() native + +; Removes whatever modifier is on the cross-fade chain, fading it out +Function RemoveCrossFade(float afFadeDuration = 1.0) native global \ No newline at end of file diff --git a/source/scripts/impactdataset.psc b/source/scripts/impactdataset.psc new file mode 100644 index 00000000..3417cea7 --- /dev/null +++ b/source/scripts/impactdataset.psc @@ -0,0 +1 @@ +Scriptname ImpactDataSet extends Form Hidden diff --git a/source/scripts/ingredient.psc b/source/scripts/ingredient.psc new file mode 100644 index 00000000..037cf7dd --- /dev/null +++ b/source/scripts/ingredient.psc @@ -0,0 +1,56 @@ +Scriptname Ingredient extends Form + +; Is this ingredient classified as hostile? +bool Function IsHostile() native + +; Flags the effect with the given 0 based index as known by the player +Function LearnEffect(int aiIndex) native + +; Flags the next unknown effect as known by the player, returning index of effect learned +int Function LearnNextEffect() native + +; Flags the all effects as known by the player +Function LearnAllEffects() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; return the number of the effects +int Function GetNumEffects() native + +; return the magnitude of the specified effect +float Function GetNthEffectMagnitude(int index) native + +; return the area of the specified effect +int Function GetNthEffectArea(int index) native + +; return the duration of the specified effect +int Function GetNthEffectDuration(int index) native + +; return the magic effect of the specified effect +MagicEffect Function GetNthEffectMagicEffect(int index) native + +; return the index of the costliest effect +int Function GetCostliestEffectIndex() native + +; sets the magnitude of the specified effect +Function SetNthEffectMagnitude(int index, float value) native + +; sets the area of the specified effect +Function SetNthEffectArea(int index, int value) native + +; sets the duration of the specified effect +Function SetNthEffectDuration(int index, int value) native + +; determines whether the player knows this effect +bool Function GetIsNthEffectKnown(int index) native + +; Returns all the magnitudes of this object in order +float[] Function GetEffectMagnitudes() native + +; Returns all the areas of this object in order +int[] Function GetEffectAreas() native + +; Returns all the durations of this object in order +int[] Function GetEffectDurations() native + +; Returns all the magic effects of this object in order +MagicEffect[] Function GetMagicEffects() native \ No newline at end of file diff --git a/source/scripts/input.psc b/source/scripts/input.psc new file mode 100644 index 00000000..99c6adde --- /dev/null +++ b/source/scripts/input.psc @@ -0,0 +1,38 @@ +Scriptname Input Hidden + +; returns whether a key is pressed +bool Function IsKeyPressed(Int dxKeycode) global native + +; taps the specified key +Function TapKey(Int dxKeycode) global native + +; holds down the specified key until released +Function HoldKey(Int dxKeycode) global native + +; releases the specified key +Function ReleaseKey(Int dxKeycode) global native + +; how many keys are pressed +int Function GetNumKeysPressed() global native + +; for walking over the pressed keys +int Function GetNthKeyPressed(int n) global native + +; returns keycode bound to a control for given device +; +; Valid controls: +; "Forward", "Back", "Strafe Left", "Strafe Right", "Move", "Look", "Left Attack/Block", "Right Attack/Block" +; "Activate", "Ready Weapon", "Tween Menu", "Toggle POV", "Zoom Out", "Zoom In", "Jump", "Sprint", "Shout", +; "Sneak", "Run", "Toggle Always Run", "Auto-Move", "Favorites", "Hotkey1", "Hotkey2", "Hotkey3", "Hotkey4", +; "Hotkey5", "Hotkey6", "Hotkey7", "Hotkey8", "Quicksave", "Quickload", "Wait", "Journal", "Pause", "Screenshot", +; "Multi-Screenshot", "Console", "CameraPath", "Quick Inventory", "Quick Magic", "Quick Stats", "Quick Map" +; +; Valid device types: +; (default) auto detect +; 0 keyboard +; 1 mouse +; 2 gamepad +int Function GetMappedKey(string control, int deviceType = 0xFF) global native + +; returns name of control bound to given keycode, or "" if unbound +string Function GetMappedControl(int keycode) global native \ No newline at end of file diff --git a/source/scripts/key.psc b/source/scripts/key.psc new file mode 100644 index 00000000..db2fea40 --- /dev/null +++ b/source/scripts/key.psc @@ -0,0 +1 @@ +Scriptname Key extends MiscObject Hidden \ No newline at end of file diff --git a/source/scripts/keyword.psc b/source/scripts/keyword.psc new file mode 100644 index 00000000..a5ab4dd2 --- /dev/null +++ b/source/scripts/keyword.psc @@ -0,0 +1,16 @@ +Scriptname Keyword Extends Form Hidden + +; Sends this keyword as a story event to the story manager +Function SendStoryEvent(Location akLoc = None, ObjectReference akRef1 = None, ObjectReference akRef2 = None, int aiValue1 = 0, \ + int aiValue2 = 0) native + +; Sends this keyword as a story event to the story manager and waits for it to be processed. Returns true if a quest was started. +bool Function SendStoryEventAndWait(Location akLoc = None, ObjectReference akRef1 = None, ObjectReference akRef2 = None, \ + int aiValue1 = 0, int aiValue2 = 0) native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; return the keyword with the specified key +Keyword Function GetKeyword(string key) global native + +; return the string value of the keyword +string Function GetString() native \ No newline at end of file diff --git a/source/scripts/leveledactor.psc b/source/scripts/leveledactor.psc new file mode 100644 index 00000000..a8ef1462 --- /dev/null +++ b/source/scripts/leveledactor.psc @@ -0,0 +1,17 @@ +Scriptname LeveledActor extends Form Hidden + +; Adds the given count of the given form to the under the given level in this leveled list +Function AddForm(Form apForm, int aiLevel) native + +; Removes all script added forms from this leveled list +Function Revert() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +int Function GetNumForms() native +Form Function GetNthForm(int n) native + +int Function GetNthLevel(int n) native +Function SetNthLevel(int n, int level) native + +int Function GetNthCount(int n) native +Function SetNthCount(int n, int count) native \ No newline at end of file diff --git a/source/scripts/leveleditem.psc b/source/scripts/leveleditem.psc new file mode 100644 index 00000000..0ae4f96d --- /dev/null +++ b/source/scripts/leveleditem.psc @@ -0,0 +1,23 @@ +Scriptname LeveledItem extends Form Hidden + +; Adds the given count of the given form to the under the given level in this leveled list +Function AddForm(Form apForm, int aiLevel, int aiCount) native + +; Removes all script added forms from this leveled list +Function Revert() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +int function GetChanceNone() native +Function SetChanceNone(int chance) native + +GlobalVariable Function GetChanceGlobal() native +Function SetChanceGlobal(GlobalVariable glob) native + +int Function GetNumForms() native +Form Function GetNthForm(int n) native + +int Function GetNthLevel(int n) native +Function SetNthLevel(int n, int level) native + +int Function GetNthCount(int n) native +Function SetNthCount(int n, int count) native \ No newline at end of file diff --git a/source/scripts/leveledspell.psc b/source/scripts/leveledspell.psc new file mode 100644 index 00000000..4936368f --- /dev/null +++ b/source/scripts/leveledspell.psc @@ -0,0 +1,17 @@ +Scriptname LeveledSpell extends Form Hidden + +; Adds the given count of the given form to the under the given level in this leveled list +Function AddForm(Form apForm, int aiLevel) native + +; Removes all script added forms from this leveled list +Function Revert() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +int function GetChanceNone() native +Function SetChanceNone(int chance) native + +int Function GetNumForms() native +Form Function GetNthForm(int n) native + +int Function GetNthLevel(int n) native +Function SetNthLevel(int n, int level) native diff --git a/source/scripts/light.psc b/source/scripts/light.psc new file mode 100644 index 00000000..a5269449 --- /dev/null +++ b/source/scripts/light.psc @@ -0,0 +1,4 @@ +Scriptname Light extends Form Hidden + +; Returns the "warmth rating" for this light +float Function GetWarmthRating() native \ No newline at end of file diff --git a/source/scripts/location.psc b/source/scripts/location.psc new file mode 100644 index 00000000..6d7dded4 --- /dev/null +++ b/source/scripts/location.psc @@ -0,0 +1,52 @@ +Scriptname Location extends Form Hidden + +; Returns the float value attached to the specified keyword attached to this location +float Function GetKeywordData(Keyword akKeyword) native + +; Returns the number of alive references matching the specified reference type +int Function GetRefTypeAliveCount(LocationRefType akRefType) native + +; Returns the number of dead references matching the specified reference type +int Function GetRefTypeDeadCount(LocationRefType akRefType) native + +; Returns if these two locations have a common parent - filtered with the keyword, if provided +bool Function HasCommonParent(Location akOther, Keyword akFilter = None) native + +; Returns if this location has the specified reference type +bool Function HasRefType(LocationRefType akRefType) native + +; Returns whether this location is flagged as "cleared" or not +bool Function IsCleared() native + +; Returns whether the other location is a child of this one +bool Function IsChild(Location akOther) native + +; Is this location loaded in game? +bool Function IsLoaded() native + +bool Function IsSameLocation(Location akOtherLocation, Keyword akKeyword = None) +{Returns true if the calling location is the same as the supplied location - if an optional keyword is supplied, it also returns true if the locations share a parent with that keyword, or if either location is a child of the other and the other has that keyword.} +;jduvall + bool bmatching = self == akOtherLocation + if !bmatching && akKeyword + bmatching = HasCommonParent(akOtherLocation, akKeyword) + + if !bmatching && akOtherLocation.HasKeyword(akKeyword) + bmatching = akOtherLocation.IsChild(self) + elseif !bmatching && self.HasKeyword(akKeyword) + bmatching = self.IsChild(akOtherLocation) + endif + + endif + return bmatching +endFunction + + +; Sets the specified keyword's data on the location +Function SetKeywordData(Keyword akKeyword, float afData) native + +; Sets this location as cleared or not +Function SetCleared(bool abCleared = true) native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +Location Function GetParent() native \ No newline at end of file diff --git a/source/scripts/locationalias.psc b/source/scripts/locationalias.psc new file mode 100644 index 00000000..6ad712ae --- /dev/null +++ b/source/scripts/locationalias.psc @@ -0,0 +1,10 @@ +Scriptname LocationAlias extends Alias Hidden + +; Clears the alias - fails on non-optional aliases +Function Clear() native + +; Get the object reference this alias refers to +Location Function GetLocation() native + +; Forces this alias to the specified location +Function ForceLocationTo(Location akNewLocation) native \ No newline at end of file diff --git a/source/scripts/locationreftype.psc b/source/scripts/locationreftype.psc new file mode 100644 index 00000000..bce65106 --- /dev/null +++ b/source/scripts/locationreftype.psc @@ -0,0 +1 @@ +Scriptname LocationRefType extends Keyword Hidden \ No newline at end of file diff --git a/source/scripts/magiceffect.psc b/source/scripts/magiceffect.psc new file mode 100644 index 00000000..ec126fb0 --- /dev/null +++ b/source/scripts/magiceffect.psc @@ -0,0 +1,104 @@ +Scriptname MagicEffect extends Form Hidden +; Get the Associated Skill for this MagicEffect +string Function GetAssociatedSkill() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +Function SetAssociatedSkill(string skill) native + +string Function GetResistance() native +Function SetResistance(string skill) native + +; Hostile 0x00000001 +; Recover 0x00000002 +; Detrimental 0x00000004 +; NoHitEvent 0x00000010 +; DispelKeywords 0x00000100 +; NoDuration 0x00000200 +; NoMagnitude 0x00000400 +; NoArea 0x00000800 +; FXPersist 0x00001000 +; GloryVisuals 0x00004000 +; HideInUI 0x00008000 +; NoRecast 0x00020000 +; Magnitude 0x00200000 +; Duration 0x00400000 +; Painless 0x04000000 +; NoHitEffect 0x08000000 +; NoDeathDispel 0x10000000 + +bool Function IsEffectFlagSet(int flag) native +Function SetEffectFlag(int flag) native +Function ClearEffectFlag(int flag) native + +float Function GetCastTime() native +Function SetCastTime(float castTime) native + +int Function GetSkillLevel() native +Function SetSkillLevel(int level) native + +int Function GetArea() native +Function SetArea(int area) native + +float Function GetSkillUsageMult() native +Function SetSkillUsageMult(float usageMult) native + +float Function GetBaseCost() native +Function SetBaseCost(float cost) native + +Light Function GetLight() native +Function SetLight(Light obj) native + +EffectShader Function GetHitShader() native +Function SetHitShader(EffectShader obj) native + +EffectShader Function GetEnchantShader() native +Function SetEnchantShader(EffectShader obj) native + +Projectile Function GetProjectile() native +Function SetProjectile(Projectile obj) native + +Explosion Function GetExplosion() native +Function SetExplosion(Explosion obj) native + +Art Function GetCastingArt() native +Function SetCastingArt(Art obj) native + +Art Function GetHitEffectArt() native +Function SetHitEffectArt(Art obj) native + +Art Function GetEnchantArt() native +Function SetEnchantArt(Art obj) native + +ImpactDataSet Function GetImpactDataSet() native +Function SetImpactDataSet(ImpactDataSet obj) native + +Spell Function GetEquipAbility() native +Function SetEquipAbility(Spell obj) native + +ImageSpaceModifier Function GetImageSpaceMod() native +Function SetImageSpaceMod(ImageSpaceModifier obj) native + +Perk Function GetPerk() native +Function SetPerk(Perk obj) native + +int Function GetCastingType() native +; Constant Effect 0 +; Fire And Forget 1 +; Concentration 2 + +int Function GetDeliveryType() native +; Self 0 +; Contact 1 +; Aimed 2 +; Target Actor 3 +; Target Location 4 + +; Entries will be None if there is no sound +; will always return an array of size 6 +Sound[] Function GetSounds() native +; Draw Sheathe 0 +; Charge 1 +; Ready 2 +; Release 3 +; Loop 4 +; Hit 5 \ No newline at end of file diff --git a/source/scripts/math.psc b/source/scripts/math.psc new file mode 100644 index 00000000..5e64d0fc --- /dev/null +++ b/source/scripts/math.psc @@ -0,0 +1,49 @@ +Scriptname Math Hidden + +; Calculates the absolute value of the passed in value - N for N, and N for (-N) +float Function abs(float afValue) global native + +; Calculates the arccosine of the passed in value, returning degrees +float Function acos(float afValue) global native + +; Calculates the arcsine of the passed in value, returning degrees +float Function asin(float afValue) global native + +; Calculates the arctangent of the passed in value, returning degrees +float Function atan(float afValue) global native + +; Calculates the ceiling of the passed in value - the smallest integer greater than or equal to the value +int Function Ceiling(float afValue) global native + +; Calculates the cosine of the passed in value (in degrees) +float Function cos(float afValue) global native + +; Converts degrees to radians +float Function DegreesToRadians(float afDegrees) global native + +; Calculates the floor of the passed in value - the largest integer less than or equal to the value +int Function Floor(float afValue) global native + +; Calculates x raised to the y power +float Function pow(float x, float y) global native + +; Converts radians to degrees +float Function RadiansToDegrees(float afRadians) global native + +; Calculates the sine of the passed in value (in degrees) +float Function sin(float afValue) global native + +; Calculate the square root of the passed in value +float Function sqrt(float afValue) global native + +; Calculates the tangent of the passed in value (in degrees) +float Function tan(float afValue) global native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +int Function LeftShift(int value, int shiftBy) global native +int Function RightShift(int value, int shiftBy) global native +int Function LogicalAnd(int arg1, int arg2) global native +int Function LogicalOr(int arg1, int arg2) global native +int Function LogicalXor(int arg1, int arg2) global native +int Function LogicalNot(int arg1) global native +float Function Log(float arg1) global native \ No newline at end of file diff --git a/source/scripts/message.psc b/source/scripts/message.psc new file mode 100644 index 00000000..0f59d19a --- /dev/null +++ b/source/scripts/message.psc @@ -0,0 +1,13 @@ +Scriptname Message extends Form Hidden + +; Show this message on the screen, substituting the values as appropriate. If a message box, it will wait until the user closes the box +; before returning - returning the button the user hit. If not a message box, or something went wrong, it will return -1 +int Function Show(float afArg1 = 0.0, float afArg2 = 0.0, float afArg3 = 0.0, float afArg4 = 0.0, float afArg5 = 0.0, float afArg6 = 0.0, float afArg7 = 0.0, float afArg8 = 0.0, float afArg9 = 0.0) native + + +; Shows help message for a user action on screen. +Function ShowAsHelpMessage(string asEvent, float afDuration, float afInterval, int aiMaxTimes) native + + +; Resets help message status for an input event so a new message can be displayed for that event. +Function ResetHelpMessage(string asEvent) native global diff --git a/source/scripts/miscobject.psc b/source/scripts/miscobject.psc new file mode 100644 index 00000000..a5369fea --- /dev/null +++ b/source/scripts/miscobject.psc @@ -0,0 +1 @@ +Scriptname MiscObject extends Form Hidden \ No newline at end of file diff --git a/source/scripts/modevent.psc b/source/scripts/modevent.psc new file mode 100644 index 00000000..c5ae1c4e --- /dev/null +++ b/source/scripts/modevent.psc @@ -0,0 +1,51 @@ +Scriptname ModEvent Hidden + +; ModEvent allows sending mod events with any number/type of arguments, unlike the more limited Form.SendModEvent. +; +; Example: +; +; (Sender) +; +; int handle = ModEvent.Create("MYPREFIX_myCustomEvent") +; if (handle) +; ModEvent.PushForm(handle, self) +; ModEvent.PushForm(handle, someOtherForm) +; ModEvent.PushInt(handle, 1000) +; ModEvent.PushString(handle, "It worked!") +; UIDelegate.Send(handle) +; endIf +; +; (Receiver) +; +; function OnInit() +; RegisterForModEvent("MYPREFIX_myCustomEvent", "OnMyCustomEvent") +; endFunction +; +; event OnMyCustomEvent(Form sender, Form theForm, int theInt, string theString) +; ; sender == (Sender) +; ; theForm == someOtherForm +; ; theInt == 1000 +; ; theString == "It worked!" +; endEvent + +; Creates a new ModEvent and returns the handle. +int Function Create(string eventName) global native + +; Sends the ModEvent and releases it. +; Returns true, if it was sent successfully, false if an error happened. +bool Function Send(int handle) global native + +; Releases the ModEvent without sending it. +Function Release(int handle) global native + +; Push single parameter. +; +; For arguments 1 .. N, the signature of the receiving event callback has to look like this: +; +; event MyCallback(TYPE_1 PARAM_1, ... , TYPE_N PARAM_N) +; +Function PushBool(int handle, bool value) global native +Function PushInt(int handle, int value) global native +Function PushFloat(int handle, float value) global native +Function PushString(int handle, string value) global native +Function PushForm(int handle, Form value) global native diff --git a/source/scripts/musictype.psc b/source/scripts/musictype.psc new file mode 100644 index 00000000..7e1a71ba --- /dev/null +++ b/source/scripts/musictype.psc @@ -0,0 +1,7 @@ +Scriptname MusicType extends Form Hidden + +; Add this music type to the music system stack +Function Add() native + +; Remove this music type from the music system stack +Function Remove() native \ No newline at end of file diff --git a/source/scripts/netimmerse.psc b/source/scripts/netimmerse.psc new file mode 100644 index 00000000..d6109947 --- /dev/null +++ b/source/scripts/netimmerse.psc @@ -0,0 +1,89 @@ +Scriptname NetImmerse Hidden + +; Note that only local transforms can be set as the world transform +; is computed based on the entire hierarchy rather than a single node + +; Return whether the object has the particular node +bool Function HasNode(ObjectReference ref, string node, bool firstPerson) native global + +; NiNode Manipulation +float Function GetNodeWorldPositionX(ObjectReference ref, string node, bool firstPerson) native global +float Function GetNodeWorldPositionY(ObjectReference ref, string node, bool firstPerson) native global +float Function GetNodeWorldPositionZ(ObjectReference ref, string node, bool firstPerson) native global + +; Returns nodeB - nodeA +float Function GetRelativeNodePositionX(ObjectReference ref, string nodeA, string nodeB, bool firstPerson) native global +float Function GetRelativeNodePositionY(ObjectReference ref, string nodeA, string nodeB, bool firstPerson) native global +float Function GetRelativeNodePositionZ(ObjectReference ref, string nodeA, string nodeB, bool firstPerson) native global + +float Function GetNodeLocalPositionX(ObjectReference ref, string node, bool firstPerson) native global +float Function GetNodeLocalPositionY(ObjectReference ref, string node, bool firstPerson) native global +float Function GetNodeLocalPositionZ(ObjectReference ref, string node, bool firstPerson) native global + +Function SetNodeLocalPositionX(ObjectReference ref, string node, float x, bool firstPerson) native global +Function SetNodeLocalPositionY(ObjectReference ref, string node, float y, bool firstPerson) native global +Function SetNodeLocalPositionZ(ObjectReference ref, string node, float z, bool firstPerson) native global + +; Sets the scale of a particular Nif node +float Function GetNodeScale(ObjectReference ref, string node, bool firstPerson) native global +Function SetNodeScale(ObjectReference ref, string node, float scale, bool firstPerson) native global + +; Sets a NiTriShape's textures by name of the Nif node +Function SetNodeTextureSet(ObjectReference ref, string node, TextureSet tSet, bool firstPerson) native global + + +; Array based functions, return true when successful, false when unsuccessful (node did not exist, or array wrong size) + +; returns the node's world position into the specify array, must be size of 3 +bool Function GetNodeWorldPosition(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; returns the node's relative world position of nodeB minus nodeA into the specify array, must be size of 3 +bool Function GetRelativeNodePosition(ObjectReference ref, string nodeA, string nodeB, float[] in, bool firstPerson) native global + +; returns the node's local position into the specify array, must be size of 3 +bool Function GetNodeLocalPosition(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; sets the node's local position of the specified array, must be size of 3 +bool Function SetNodeLocalPosition(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; Euler Rotation in DEGREES (heading, attitude, bank) +; returns the euler rotation of the node into the specified array, must be size of 3 +bool Function GetNodeWorldRotationEuler(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; returns the euler rotation of the node into the specified array, must be size of 3 +bool Function GetNodeLocalRotationEuler(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; sets the euler rotation for the node of the specified array, must be size of 3 +bool Function SetNodeLocalRotationEuler(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; Matrix Rotation in RADIANS +; returns the matrix rotation of the node into the specified array, must be size of 9 +bool Function GetNodeWorldRotationMatrix(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; returns the matrix rotation of the node into the specified array, must be size of 9 +bool Function GetNodeLocalRotationMatrix(ObjectReference ref, string node, float[] in, bool firstPerson) native global + +; sets the matrix rotation for the node of the specified array, must be size of 9 +bool Function SetNodeLocalRotationMatrix(ObjectReference ref, string node, float[] in, bool firstPerson) native global + + +; DEPRECATED FUNCTIONS +Function SetNodePositionX(ObjectReference ref, string node, float x, bool firstPerson) global + NetImmerse.SetNodeLocalPositionX(ref, node, x, firstPerson) +EndFunction +Function SetNodePositionY(ObjectReference ref, string node, float y, bool firstPerson) global + NetImmerse.SetNodeLocalPositionY(ref, node, y, firstPerson) +EndFunction +Function SetNodePositionZ(ObjectReference ref, string node, float z, bool firstPerson) global + NetImmerse.SetNodeLocalPositionZ(ref, node, z, firstPerson) +EndFunction + +float Function GetNodePositionX(ObjectReference ref, string node, bool firstPerson) global + return NetImmerse.GetNodeWorldPositionX(ref, node, firstPerson) +EndFunction +float Function GetNodePositionY(ObjectReference ref, string node, bool firstPerson) global + return NetImmerse.GetNodeWorldPositionY(ref, node, firstPerson) +EndFunction +float Function GetNodePositionZ(ObjectReference ref, string node, bool firstPerson) global + return NetImmerse.GetNodeWorldPositionZ(ref, node, firstPerson) +EndFunction \ No newline at end of file diff --git a/source/scripts/objectreference.psc b/source/scripts/objectreference.psc new file mode 100644 index 00000000..11d11f28 --- /dev/null +++ b/source/scripts/objectreference.psc @@ -0,0 +1,834 @@ +Scriptname ObjectReference extends Form Hidden + +bool FUNCTION rampRumble(float power = 0.5, float duration = 0.25, float falloff = 1600.0) + ; Function to shake cam/controller based on distance from player + ; should always be called on the source of the rumble, + ; as final intensity is relevant to player + if power > 1.0 || power <= 0 +; debug.traceStack(self + " called rampRumble() but parameter 'power' was invalid. Must be a non-zero float less than 1.0",1) + ; throw the warning, but don't return false - value gets clamped anyway + endif + float playerDist = game.getplayer().getDistance(self) + ; ignore if the player is too far away + if playerDist < falloff + float intensity = (1 - (playerDist / falloff)) + ; ramp actual intensity down based on parameter value + intensity = intensity*power + if intensity > 1.0 + ; clamp to prevent invalid values +; debug.traceStack(self + " called for too much controller/camera shake. Clamped to 1.0", 0) + intensity = 1.0 + elseif intensity <= 0 + ; clamp to prevent invalid values +; debug.traceStack(self + " called for too little controller/camera shake", 0) + intensity = 0 + return false + endif + game.shakeCamera(game.getPlayer(), intensity) + game.shakeController(intensity, intensity, duration) + return true + else +; debug.traceStack(self + "called for rampedRumble(), but player is too far away", 0) + return False + endif +endFUNCTION + +; Function to know if I'm near the player (whether I can be safely enabled or disabled) +bool Function IsNearPlayer() + Actor player = Game.GetPlayer() + Cell targetCell = self.GetParentCell() + Cell playerCell = player.GetParentCell() + + if (targetCell != playerCell) + ; player and target are in different cells + if (targetCell && targetCell.IsInterior() || playerCell && playerCell.IsInterior()) + ; in different cells and at least one is an interior + ; -- we can safely enable or disable + return false + else + ; both in an exterior -- no means of testing + ; worldspace at the moment, so this will do. + if (player.GetDistance(self) > 3000) + ; pretty darned far away -- safe + return false + else + ; too close for comfort + return true + endif + endif + else + ; in the same cell -- err on the side of caution + return true + endif +endFunction + +;jduvall +bool Function IsInInterior() +{Returns !IsInExterior()} + Cell parentCell = GetParentCell() + Return parentCell && parentCell.IsInterior() +EndFunction + +;kkuhlmann: +bool function MoveToIfUnloaded(ObjectReference akTarget, float afXOffset = 0.0, float afYOffset = 0.0, float afZOffset = 0.0) +{Calls MoveTo if the calling ObjectReference is currently unloaded. Doesn't do anything if it IS loaded. No waiting or while loops. Returns true if it does the moveto} + if !Is3DLoaded() + MoveTo(akTarget, afXOffset, afYOffset, afZOffset) + return true + else + return false + endif +endFunction + +;jduvall: +function MoveToWhenUnloaded(ObjectReference akTarget, float afXOffset = 0.0, float afYOffset = 0.0, float afZOffset = 0.0) +{DEPRECATED: DO NOT USE. Calls MoveTo if both the calling ObjectReference and the akTarget ObjectReference have current locations that are not loaded.} + while self.GetCurrentLocation().IsLoaded() || akTarget.GetCurrentLocation().IsLoaded() + ;do nothing +; debug.trace(self + "MoveToWhenUnloaded() waiting for current location and target location to be unloaded before moving. If called by a quest stage fragment, this may cause that quest stage to not complete until this function finishes (and if it's a startup stage, the quest will not report itself as running until the stage finishes.).", 1) + Utility.Wait(5) ;when this function is threaded we can increase this wait time... I set it lower for testing purposes so it reevaluates faster when I need to purge cell buffers in the Civil War when calling moveto on the player between Civil War campaigns + EndWhile + self.MoveTo(akTarget, afXOffset, afYOffset, afZOffset) +EndFunction + +;jduvall +Function DeleteWhenAble() +{This will become a native function... it will wait until the object is not persisting, then delete itself.} + While GetParentCell() && GetParentCell().IsAttached() + ;do nothing +; debug.trace(self + "DeleteWhenAble() waiting for current location to be unloaded before deleting. If called by a quest stage fragment, this may cause that quest stage to not complete until this function finishes (and if it's a startup stage, the quest will not report itself as running until the stage finishes.).", 1) + Utility.Wait(5) ;when this function is threaded we can increase this wait time... I set it lower for testing purposes so it reevaluates faster when I need to purge cell buffers in the Civil War when calling moveto on the player between Civil War campaigns + EndWhile + Delete() +EndFunction + + + +;jduvall +Function AddKeyIfNeeded(ObjectReference ObjectWithNeededKey) +{Should only be called by ObjectReferences that have/are containers (ie Containers and Actors). Checks to see if self has the key to ObjectWithNeededKey, and if not, creates a copy of the key and puts it in self.} + key NeededKey = ObjectWithNeededKey.GetKey() + if NeededKey != None + if GetItemCount(NeededKey) == 0 + AddItem(NeededKey) + EndIf + EndIf +EndFunction + + +; Property to obtain the current X position of the object +float Property X + float Function get() + return GetPositionX() + EndFunction +EndProperty + +; Property to obtain the current Y position of the object +float Property Y + float Function get() + return GetPositionY() + EndFunction +EndProperty + +; Property to obtain the current Z position of the object +float Property Z + float Function get() + return GetPositionZ() + EndFunction +EndProperty + +; Have akActivator activate this reference. If abDefaultProcessingOnly is true then any block will be bypassed +; and no OnActivate event will be sent. The function returns true if default processing ran, and succeeded. If +; default processing has been blocked, will always return false. +bool Function Activate(ObjectReference akActivator, bool abDefaultProcessingOnly = false) native + +; Sets up a dependent animated object +; This function should be used only with a coder supervision. It is left undocumented because it can cause dangling pointers as well as very broken functionality +; for the dependent object if used improperly. +bool Function AddDependentAnimatedObjectReference( ObjectReference akDependent ) native + +; Add an inventory event filter to this reference. Item added/removed events matching the +; specified form (or in the specified form list) will now be let through. +Function AddInventoryEventFilter(Form akFilter) native + +; Adds the specified base object or object reference to this object reference's container/inventory +; Note that you cannot add more then one copy of a reference to a container (a warning will be printed if you try) +Function AddItem(Form akItemToAdd, int aiCount = 1, bool abSilent = false) native + +; Adds this reference (which is a map marker) to the map, optionally making it available for fast travel +Function AddToMap(bool abAllowFastTravel = false) native + +; Apply an impulse to this reference +Function ApplyHavokImpulse(float afX, float afY, float afZ, float afMagnitude) native + +; Turns on and off blocking of normal activation - OnActivate events will still be sent +Function BlockActivation(bool abBlocked = true) native + +; Calculate's this references encounter level based on the requested difficulty level +; 0 - Easy +; 1 - Medium +; 2 - Hard +; 3 - Very Hard +; 4 - None +int Function CalculateEncounterLevel(int aiDifficulty = 4) native + +; Can the map marker be fast traveled to? +bool Function CanFastTravelToMarker() native + +; Clears all effects of destruction from this object +Function ClearDestruction() native + +; Create a detection event at this reference, with the specified owner. Sound level is between 0 and 100 + +Function CreateDetectionEvent(Actor akOwner, int aiSoundLevel = 0 ) native + +; Damages this object and advances the destruction stage - does not return until the object is damaged +Function DamageObject(float afDamage) native + +; Delets this object +Function Delete() native + +; Disables this object - fading out if requested +Function Disable(bool abFadeOut = false) native + +; Disables this object - fading out if requested. Does NOT wait for the fade or disable to finish +Function DisableNoWait(bool abFadeOut = false) native + +; Drops the specified object from this object's inventory +ObjectReference Function DropObject(Form akObject, int aiCount = 1) native + +; Enables this object - fading in if requested +Function Enable(bool abFadeIn = false) native + +; Enables the ability to fast travel to this marker - or disables it. Note that if you disable +; fast travel the player will see "You haven't discovered this location" as an error message +Function EnableFastTravel(bool abEnable = true) native + +; Enables this object - fading in if requested. Does NOT wait for the fade or enable to finish +Function EnableNoWait(bool abFadeIn = false) native + +; Forcibly adds / removes the ragdoll for a reference to the world +Function ForceAddRagdollToWorld() native +Function ForceRemoveRagdollFromWorld() native + +; Gets the actor that owns this object (or None if not owned by an Actor) +ActorBase Function GetActorOwner() native + +; Get the current X angle of this object +float Function GetAngleX() native + +; Get the current Y angle of this object +float Function GetAngleY() native + +; Get the current Z angle of this object +float Function GetAngleZ() native + +; Get a variable from the reference's animation graph (if applicable). Bool version. +bool Function GetAnimationVariableBool(string arVariableName) native + +; Get a variable from the reference's animation graph (if applicable). Int version. +int Function GetAnimationVariableInt(string arVariableName) native + +; Get a variable from the reference's animation graph (if applicable). Float version. +float Function GetAnimationVariableFloat(string arVariableName) native + +; Returns the base object this reference represents +Form Function GetBaseObject() native + +; Returns the object's current destruction stage +int Function GetCurrentDestructionStage() native + +; Returns this reference's current location +Location Function GetCurrentLocation() native + +; Returns the scene this reference is currently in - if any +Scene Function GetCurrentScene() native + +; Calculates the distance between this reference and another - both must either be in the same interior, or same worldspace +float Function GetDistance(ObjectReference akOther) native + +; Returns this reference's editor location +Location Function GetEditorLocation() native + +; Gets the faction that owns this object (or None if not owned by a Faction) +Faction Function GetFactionOwner() native + +; Gets the angle between this object's heading and the other object in degrees - in the range from -180 to 180 +float Function GetHeadingAngle(ObjectReference akOther) native + +; Get the current height of the object +float Function GetHeight() native + +; Returns how many of the specified item is in this object reference's inventory +int Function GetItemCount(Form akItem) native + +; Returns the smithed health of this object reference (1.0 == 100%) +float Function GetItemHealthPercent() native + +; Returns the key base object that will unlock this object +Key Function GetKey() native + +; Get the current length of the object +float Function GetLength() native + +; Get our linked reference +ObjectReference Function GetLinkedRef(Keyword apKeyword = NONE) native + +; Get the level of the lock on this object +int Function GetLockLevel() native + +;jtucker, jduvall +;This function counts the number of linked refs that are in a linked Ref chain (ie object is linked to A, A is linked to B, etc. this then counts all the linked refs.) +;Often used in conjunction with GetNthLinkedRef() +;*** WARNING: Having a link ref chain that at any point loops back on itself and calling this function will result in very bad things. Don't do that!*** +int Function countLinkedRefChain(keyword apKeyword = None, int maxExpectedLinkedRefs = 100) + ;Don't use this on a loop of linked refs. + ObjectReference CurrentLink = self + ObjectReference NewLink + int NumLinkedRefs = 0 + + while(currentLink) && NumLinkedRefs <= maxExpectedLinkedRefs + + NewLink = currentLink.getLinkedRef(apKeyword) + + if NewLink != self + currentLink = NewLink + NumLinkedRefs = NumLinkedRefs + 1 + Else + currentLink = None +; debug.trace( self + "countLinkedRefs() found itself. This suggests it was linked back to itself. This will create an infinite loop, so we are killing the function now. NumLinkedRefs =" + NumLinkedRefs) + EndIf + + endWhile + + if NumLinkedRefs >= maxExpectedLinkedRefs +; debug.trace( self + "countLinkedRefs() bailing out early because it found more linked refs than maxExpectedLinkRefs (suggesting an infinite loop). LinkedRefs found:" + NumLinkedRefs + ", maxExpectedLinkedRefs:" + maxExpectedLinkedRefs) + EndIf + + + return NumLinkedRefs + +endFunction + + +; Returns the Nth linked ref from this reference (0 = self, 1 = GetLinkedRef, 2 = GetLinkedRef.GetLinkedRef, etc) +ObjectReference Function GetNthLinkedRef(int aiLinkedRef) native + + +; Enables all of the references that are linked, in a chain, to this one. +Function EnableLinkChain(Keyword apKeyword = None) + ObjectReference CurrentLink = GetLinkedRef(apKeyword) + While CurrentLink + CurrentLink.Enable() + CurrentLink = CurrentLink.GetLinkedRef(apKeyword) + endWhile +endFunction + + +; Disables all of the references that are linked, in a chain, to this one. +Function DisableLinkChain(Keyword apKeyword = None, bool abFadeOut = false) + ObjectReference CurrentLink = GetLinkedRef(apKeyword) + While CurrentLink + CurrentLink.Disable(abFadeOut) + CurrentLink = CurrentLink.GetLinkedRef(apKeyword) + endWhile +endFunction + + +; Get this object's mass +float Function GetMass() native + +; Gets the open state of this object. Which can be one of the following: +; 0 - None +; 1 - Open +; 2 - Opening +; 3 - Closed +; 4 - Closing +int Function GetOpenState() native + +; Gets the cell this object is in +Cell Function GetParentCell() native + +; Get the current X position of the object +float Function GetPositionX() native + +; Get the current Y position of the object +float Function GetPositionY() native + +; Get the current Z position of the object +float Function GetPositionZ() native + +; Get the current scale of the object +float Function GetScale() native + +; Get the number of objects inside this trigger (throws warning if not a triggger) +int Function GetTriggerObjectCount() native + +; Gets the voice type for this reference. Will return None if not an actor or a talking activator +VoiceType Function GetVoiceType() native + +; Get the current width of the object +float Function GetWidth() native + +; Get this objects worldspace +WorldSpace Function GetWorldSpace() native + +; Returns self cast as an actor +actor Function GetSelfAsActor() + return self as Actor +endFunction + +; Returns if this reference has an active effect coming from a magic effect with the specified keyword attached +bool Function HasEffectKeyword(Keyword akKeyword) native + +; Returns whether the reference has the given node +bool Function HasNode(string asNodeName) native + +; Returns if this reference has the specified location ref type +bool Function HasRefType(LocationRefType akRefType) native + +; Flags this reference as ignoring (or not ignoring) friendly hits +Function IgnoreFriendlyHits(bool abIgnore = true) native + +; Interrupts any spell-casting this object may be doing +Function InterruptCast() native + +; Checks to see if the passed in reference is the activate child of this one +bool Function IsActivateChild(ObjectReference akChild) native + +; Checks to see if activation is currently blocked on this object +bool Function IsActivationBlocked() native + +; Returns if the 3d for this object is loaded or not +bool Function Is3DLoaded() native + +; Is this object currently flagged for delete? +bool Function IsDeleted() native + +; Is this object currently disabled? +bool Function IsDisabled() native + +; Because Shane got tired of remembering which way to call this +bool Function IsEnabled() + return !IsDisabled() +EndFunction + +; Is any marker on this furniture in use? +bool Function IsFurnitureInUse(bool abIgnoreReserved = false) native + +; Is a particular marker on this furniture in use? +bool Function IsFurnitureMarkerInUse(int aiMarker, bool abIgnoreReserved = false) native + +; Is this object ignoring friendly hits? +bool Function IsIgnoringFriendlyHits() native + +; Is this actor or talking activator currently talking to the player? +bool Function IsInDialogueWithPlayer() native + +; Is the lock on this object broken? +bool Function IsLockBroken() native + +; Is the lock on this object locked? +bool Function IsLocked() native + +; Is the map marker visible? +bool Function IsMapMarkerVisible() native + +; Executes a knock effect to an area +Function KnockAreaEffect(float afMagnitude, float afRadius) native + +; Lock/unlock this object. If told to lock it, it will add a lock if it doesn't have one. If locked/unlocked as the owner on a door, +; the adjoining cell will be made public/private as appropriate +Function Lock(bool abLock = true, bool abAsOwner = false) native + +; Moves this object to the position of the specified object, with an offset, and optionally matching its rotation +Function MoveTo(ObjectReference akTarget, float afXOffset = 0.0, float afYOffset = 0.0, float afZOffset = 0.0, bool abMatchRotation = true) native + +; Moves this object to the position (and rotation) of the specified object's interaction position +Function MoveToInteractionLocation(ObjectReference akTarget) native + +; Moves this object to its editor location +Function MoveToMyEditorLocation() native + +; Moves this object to the position (and rotation) of the specified node on the specified object's 3D +Function MoveToNode(ObjectReference akTarget, string asNodeName) native + +; Create x copies of the passed in form (forcing them to persist if desired) and place them at our location, returning the last object created +ObjectReference Function PlaceAtMe(Form akFormToPlace, int aiCount = 1, bool abForcePersist = false, bool abInitiallyDisabled = false) native + +; Create an actor at this object's location. Level mod is one of the following: +; 0 - Easy +; 1 - Medium +; 2 - Hard +; 3 - Boss +; 4 - None +Actor Function PlaceActorAtMe(ActorBase akActorToPlace, int aiLevelMod = 4, EncounterZone akZone = None) native + +; Start the specified animation playing - returns true if it succeeds +bool Function PlayAnimation(string asAnimation) native + +; Start the specified animation playing and wait for the specified event - returns true if succeeds +bool Function PlayAnimationAndWait(string asAnimation, string asEventName) native + +; Start the specified Gamebryo animation playing - returns true if it succeeds +bool Function PlayGamebryoAnimation(string asAnimation, bool abStartOver = false, float afEaseInTime = 0.0) native + +; Play the specified impact effect - returns true if it succeeds +bool Function PlayImpactEffect(ImpactDataSet akImpactEffect, string asNodeName = "", float afPickDirX = 0.0, float afPickDirY = 0.0, float afPickDirZ = -1.0, float afPickLength = 512.0, bool abApplyNodeRotation = false, bool abUseNodeLocalRotation = false) native + +; Play two animations at once - one on this object, one on another object +bool Function PlaySyncedAnimationSS(string asAnimation1, ObjectReference akObj2, string asAnimation2) native + +; Play two animations at once - one on this object, one on another object - and wait for both +bool Function PlaySyncedAnimationAndWaitSS(string asAnimation1, string asEvent1, ObjectReference akObj2, string asAnimation2, string asEvent2) native + +; Play a terrain effect that is attached to the specified bone of this object. +Function PlayTerrainEffect(string asEffectModelName, string asAttachBoneName) native + +; Tells this object to process a trap hitting it +Function ProcessTrapHit(ObjectReference akTrap, float afDamage, float afPushback, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, int aeMaterial, float afStagger) native + +; Pushes the passed-in actor away from this object, using the passed in knockback force to determine the speed +Function PushActorAway(Actor akActorToPush, float aiKnockbackForce) native + +; Remove all inventory event filters from this reference - all item added/removed events will now be received +Function RemoveAllInventoryEventFilters() native + +; Removes all items from this container, transferring it to the other object if passed +Function RemoveAllItems(ObjectReference akTransferTo = None, bool abKeepOwnership = false, bool abRemoveQuestItems = false) native + +; Remove an inventory event filter from this reference. Item added/removed events matching the +; specified form (or in the specified form list) will no longer be let through. +Function RemoveInventoryEventFilter(Form akFilter) native + +; Removes the specified item from this object reference's inventory +Function RemoveItem(Form akItemToRemove, int aiCount = 1, bool abSilent = false, ObjectReference akOtherContainer = None) native + +; Removes a previously added dependent object +; This function should be used only with a coder supervision. It is left undocumented because it can cause dangling pointers as well as very broken functionality +; for the dependent object if used improperly. +bool Function RemoveDependentAnimatedObjectReference( ObjectReference akDependent ) native + +; Resets this object, optional place the object at the new target +Function Reset(ObjectReference akTarget = None) native + +; Has this object "say" the specified topic, as if spoken by the specified actor (if one is +; provided, and potentially "speaking" in the player's head. +Function Say(Topic akTopicToSay, Actor akActorToSpeakAs = None, bool abSpeakInPlayersHead = false) native + +; Has this object behave as if the specified actor attempted to steal it +Function SendStealAlarm(Actor akThief) native + +; Sets this object's actor cause to the specified actor +Function SetActorCause(Actor akActor) native + +; Sets this object's owner to the specified actor base - None means to remove ownership +Function SetActorOwner(ActorBase akActorBase) native + +; Set the orientation of the object (angles are in degrees) +Function SetAngle(float afXAngle, float afYAngle, float afZAngle) native + +; Set a variable on the reference's animation graph (if applicable). Bool version. +Function SetAnimationVariableBool(string arVariableName, bool abNewValue) native + +; Set a variable on the reference's animation graph (if applicable). Int version. +Function SetAnimationVariableInt(string arVariableName, int aiNewValue) native + +; Set a variable on the reference's animation graph (if applicable). Float version. +Function SetAnimationVariableFloat(string arVariableName, float afNewValue) native + +; Sets this object as destroyed or not +Function SetDestroyed(bool abDestroyed = true) native + +; Sets this object's owner to the specified faction +Function SetFactionOwner(Faction akFaction) native + +; Sets the lock level on this object. Will add an unlocked lock to it if it doesn't have one +Function SetLockLevel(int aiLockLevel) native + +; Sets the motion type of the reference +; aeMotionType: The type of motion (see properties at end of file) +; abAllowActivate: When setting to a dynamic type, allows the simulation to be activated +Function SetMotionType(int aeMotionType, bool abAllowActivate = true) native + +; Sets this object reference as one that teammates will refuse to do favors on +Function SetNoFavorAllowed(bool abNoFavor = true) native + +; Opens/closes this object +Function SetOpen(bool abOpen = true) native + +; Set the position of the object +Function SetPosition(float afX, float afY, float afZ) native + +; Set the current scale of the object +Function SetScale(float afScale) native + +; Makes the reference translate to the given position/orientation +; Note: Rotation speed is entirely dependent on the length of the path and the movement speed +; that is, the rotation will happen such that the reference reaches the goal orientation at the end +; of the translation. +Function TranslateTo(float afX, float afY, float afZ, float afXAngle, float afYAngle, float afZAngle, float afSpeed, float afMaxRotationSpeed = 0.0) native + +; Makes the reference translate to the given position/orientation on a spline +Function SplineTranslateTo(float afX, float afY, float afZ, float afXAngle, float afYAngle, float afZAngle, float afTangentMagnitude, float afSpeed, float afMaxRotationSpeed = 0.0) native + +; Makes the reference translate to the target node's ref/orient on a spline at the given speed +Function SplineTranslateToRefNode(ObjectReference arTarget, string arNodeName, float afTangentMagnitude, float afSpeed, float afMaxRotationSpeed = 0.0) native + +; Stops the reference from moving +Function StopTranslation() native + +; Makes the reference translate to the target ref position/orient at the given speed +Function TranslateToRef(ObjectReference arTarget, float afSpeed, float afMaxRotationSpeed = 0.0) + TranslateTo(arTarget.X, arTarget.Y, arTarget.Z, arTarget.GetAngleX(), arTarget.GetAngleY(), arTarget.GetAngleZ(), afSpeed, afMaxRotationSpeed) +endFunction + +; Makes the reference translate to the target ref position/orient on a spline at the given speed +Function SplineTranslateToRef(ObjectReference arTarget, float afTangentMagnitude, float afSpeed, float afMaxRotationSpeed = 0.0) + SplineTranslateTo(arTarget.X, arTarget.Y, arTarget.Z, arTarget.GetAngleX(), arTarget.GetAngleY(), arTarget.GetAngleZ(), afTangentMagnitude, afSpeed, afMaxRotationSpeed) +endFunction + +; Tether a prisoner cart to the given horse. +Function TetherToHorse(ObjectReference akHorse) native + +; Waits for the animation graph to send the specified event +bool Function WaitForAnimationEvent(string asEventName) native + +; Convenience function to check if I'm in a location or any of its children +bool Function IsInLocation(Location akLocation) + ; cache current location to avoid changing location while this function is running (surprisingly that seems to be happening occasionally) + Location currLoc = GetCurrentLocation() + if currLoc == None + return false + else + return akLocation.IsChild(currLoc) || currLoc == akLocation + endif +endFunction + +; Event received when this reference is activated +Event OnActivate(ObjectReference akActionRef) +EndEvent + +; Event received when this object has moved to an attached cell from a detached one +Event OnAttachedToCell() +EndEvent + +; Event received when this object's parent cell is attached +Event OnCellAttach() +EndEvent + +; Event received when this object's parent cell is detached +Event OnCellDetach() +EndEvent + +; Event received when every object in this object's parent cell is loaded (TODO: Find restrictions) +Event OnCellLoad() +EndEvent + +; Event received when this object is closed +Event OnClose(ObjectReference akActionRef) +EndEvent + +; Event received when this object enters, exits, or changes containers +Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer) +EndEvent + +; Event received when this reference's destruction stage has changed +Event OnDestructionStageChanged(int aiOldStage, int aiCurrentStage) +EndEvent + +; Event recieved when this object moves to a detached cell from an attached one +Event OnDetachedFromCell() +EndEvent + +; Event received when this object is equipped by an actor +Event OnEquipped(Actor akActor) +EndEvent + +; Event received when this object is grabbed by the player +Event OnGrab() +EndEvent + +; Event received when a this trigger is tripped +Event OnTrigger(ObjectReference akActionRef) +EndEvent + +; Event received when this trigger volume is entered +Event OnTriggerEnter(ObjectReference akActionRef) +EndEvent + +; Event received when this trigger volume is left +Event OnTriggerLeave(ObjectReference akActionRef) +EndEvent + +; Event received when this object is hit by a source (weapon, spell, explosion) or projectile attack +Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) +EndEvent + +; Event received when an item is added to this object's inventory. If the item is a persistant reference, akItemReference will +; point at it - otherwise the parameter will be None +Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) +EndEvent + +; Event received when an item is removed from this object's inventory. If the item is a persistant reference, akItemReference +; will point at it - otherwise the parameter will be None +Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) +EndEvent + +; Event recieved when this object is completely loaded - will be fired every time this object is loaded +Event OnLoad() +EndEvent + +; Event received when the lock on this object changes +Event OnLockStateChanged() +EndEvent + +; Event received when a magic affect is being applied to this object +Event OnMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect) +EndEvent + +; Event received when this object is opened +Event OnOpen(ObjectReference akActionRef) +EndEvent + +; Event received when this object, if a book, is read +Event OnRead() +EndEvent + +; Event received when this object is released by the player +Event OnRelease() +EndEvent + +; Event received when this reference is reset +Event OnReset() +EndEvent + +; Event received when this reference is sold by an actor +Event OnSell(Actor akSeller) +EndEvent + +; Event received when a spell is cast by this object +Event OnSpellCast(Form akSpell) +EndEvent + +; Event received when translation is almost complete (from a call to TranslateTo, "almost" is determined by a gamesetting, default is 90% of the way) +Event OnTranslationAlmostComplete() +EndEvent + +; Event received when translation is complete (from a call to TranslateTo) +Event OnTranslationComplete() +EndEvent + +; Event received when translation is aborted (from a call to StopTranslateTo) +Event OnTranslationFailed() +EndEvent + +; Event recieved when this reference hits a target +Event OnTrapHit(ObjectReference akTarget, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, \ + int aeMaterial, bool abInitialHit, int aeMotionType) +EndEvent + +; Event recieved when this starts hitting a target +Event OnTrapHitStart(ObjectReference akTarget, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, \ + int aeMaterial, bool abInitialHit, int aeMotionType) +EndEvent + +; Event recieved when this stops hitting a target +Event OnTrapHitStop(ObjectReference akTarget) +EndEvent + +; Event received when this object is unequipped by an actor +Event OnUnequipped(Actor akActor) +EndEvent + +; Event recieved when this object is being unloaded - will be fired every time this object is unloaded +Event OnUnload() +EndEvent + +; Event received when this object's Ward is hit by a spell +Event OnWardHit(ObjectReference akCaster, Spell akSpell, int aiStatus) +EndEvent + +; Set of read-only properties to essentually make a fake enum for motion types passed in to the trap hit +int Property Motion_Dynamic = 1 AutoReadOnly +int Property Motion_SphereIntertia = 2 AutoReadOnly +int Property Motion_BoxIntertia = 3 AutoReadOnly +int Property Motion_Keyframed = 4 AutoReadOnly +int Property Motion_Fixed = 5 AutoReadOnly +int Property Motion_ThinBoxIntertia = 6 AutoReadOnly +int Property Motion_Character = 7 AutoReadOnly + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; Container-only functions +int Function GetNumItems() native +Form Function GetNthForm(int index) native +float Function GetTotalItemWeight() native +float Function GetTotalArmorWeight() native + +; Tree and Flora only functions +bool Function IsHarvested() native +Function SetHarvested(bool harvested) native + +; Tempering +Function SetItemHealthPercent(float health) native + +; Charges + +; Only works on ObjectReferences that have user-enchants +Function SetItemMaxCharge(float maxCharge) native +; Works on any enchanted item +float Function GetItemMaxCharge() native + +float Function GetItemCharge() native +Function SetItemCharge(float charge) native + +Function ResetInventory() native + +bool Function IsOffLimits() native + +; Returns the name of this reference +; this is the name that is displayed +string Function GetDisplayName() native + +; Sets a reference's display name +; returns false if force is false and the reference +; is held by an alias using 'Stored Text' or 'Uses Stored Text' +; Text Replacement does not use this name and may be lost if forced +bool Function SetDisplayName(string name, bool force = false) native + +; Returns the enable parent object +ObjectReference Function GetEnableParent() native + +; Returns the player-made enchantment if there is one +Enchantment Function GetEnchantment() native + +; Changes an item's player-made enchantment to something else +; None enchantment will remove the existing enchantment +; does not delete the custom enchantment, only removes it +Function SetEnchantment(Enchantment source, float maxCharge) native + +; Creates a new enchantment on the item given the specified parameters +; all arrays must be the same size +; created enchantments are not purged from the save when removed or overwritten +; exact same enchantments are re-used by the game +Function CreateEnchantment(float maxCharge, MagicEffect[] effects, float[] magnitudes, int[] areas, int[] durations) native + +; Returns the number of ref aliases holding this reference +int Function GetNumReferenceAliases() native + +; Returns the nth ReferenceAlias holding this reference +ReferenceAlias Function GetNthReferenceAlias(int n) native + +; Returns the poison applied to the weapon +Potion Function GetPoison() native + +; Returns all base forms in the inventory/container into the specified FormList +Function GetAllForms(FormList toFill) native + +; Returns all base forms from the container into a new array +Form[] Function GetContainerForms() native + +; Returns all of the aliases holding this reference +ReferenceAlias[] Function GetReferenceAliases() native \ No newline at end of file diff --git a/source/scripts/outfit.psc b/source/scripts/outfit.psc new file mode 100644 index 00000000..cbc68815 --- /dev/null +++ b/source/scripts/outfit.psc @@ -0,0 +1,7 @@ +Scriptname Outfit extends Form Hidden + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +int Function GetNumParts() native +Form Function GetNthPart(int n) native \ No newline at end of file diff --git a/source/scripts/package.psc b/source/scripts/package.psc new file mode 100644 index 00000000..4400fb46 --- /dev/null +++ b/source/scripts/package.psc @@ -0,0 +1,7 @@ +Scriptname Package extends Form Hidden + +; Returns the quest that owns this package +Quest Function GetOwningQuest() native + +; Obtains the package that is the parent template of this one (if any) +Package Function GetTemplate() native \ No newline at end of file diff --git a/source/scripts/perk.psc b/source/scripts/perk.psc new file mode 100644 index 00000000..3123c8f1 --- /dev/null +++ b/source/scripts/perk.psc @@ -0,0 +1,31 @@ +Scriptname Perk extends Form Hidden + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +Perk Function GetNextPerk() native + +int Function GetNumEntries() native + +int Function GetNthEntryRank(int n) native +bool Function SetNthEntryRank(int n, int rank) native + +int Function GetNthEntryPriority(int n) native +bool Function SetNthEntryPriority(int n, int priority) native + +Quest Function GetNthEntryQuest(int n) native +bool Function SetNthEntryQuest(int n, Quest newQuest) native + +int Function GetNthEntryStage(int n) native +bool Function SetNthEntryStage(int n, int stage) native + +Spell Function GetNthEntrySpell(int n) native +bool Function SetNthEntrySpell(int n, Spell newSpell) native + +LeveledItem Function GetNthEntryLeveledList(int n) native +bool Function SetNthEntryLeveledList(int n, LeveledItem lList) native + +string Function GetNthEntryText(int n) native +bool Function SetNthEntryText(int n, string newText) native + +float Function GetNthEntryValue(int n, int i) native +bool Function SetNthEntryValue(int n, int i, float value) native \ No newline at end of file diff --git a/source/scripts/potion.psc b/source/scripts/potion.psc new file mode 100644 index 00000000..8f6116fd --- /dev/null +++ b/source/scripts/potion.psc @@ -0,0 +1,53 @@ +Scriptname Potion extends Form + +; Is this postion classified as hostile? +bool Function IsHostile() native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; Is this potion classified as Food? +bool Function IsFood() native + +; Is this potion classified as Poison? +bool Function IsPoison() native + +; return the number of the effects +int Function GetNumEffects() native + +; return the magnitude of the specified effect +float Function GetNthEffectMagnitude(int index) native + +; return the area of the specified effect +int Function GetNthEffectArea(int index) native + +; return the duration of the specified effect +int Function GetNthEffectDuration(int index) native + +; return the magic effect of the specified effect +MagicEffect Function GetNthEffectMagicEffect(int index) native + +; return the index of the costliest effect +int Function GetCostliestEffectIndex() native + +; sets the magnitude of the specified effect +Function SetNthEffectMagnitude(int index, float value) native + +; sets the area of the specified effect +Function SetNthEffectArea(int index, int value) native + +; sets the duration of the specified effect +Function SetNthEffectDuration(int index, int value) native + +; gets the use sound of this potion +SoundDescriptor Function GetUseSound() native + +; Returns all the magnitudes of this object in order +float[] Function GetEffectMagnitudes() native + +; Returns all the areas of this object in order +int[] Function GetEffectAreas() native + +; Returns all the durations of this object in order +int[] Function GetEffectDurations() native + +; Returns all the magic effects of this object in order +MagicEffect[] Function GetMagicEffects() native \ No newline at end of file diff --git a/source/scripts/projectile.psc b/source/scripts/projectile.psc new file mode 100644 index 00000000..d291897a --- /dev/null +++ b/source/scripts/projectile.psc @@ -0,0 +1 @@ +Scriptname Projectile extends Form Hidden diff --git a/source/scripts/quest.psc b/source/scripts/quest.psc new file mode 100644 index 00000000..1992b88d --- /dev/null +++ b/source/scripts/quest.psc @@ -0,0 +1,268 @@ +Scriptname Quest extends Form Hidden + +; non-native functions + +; thread-safe way to modify a global value +; optional parameters: +; aiObjectiveID = objective ID to redisplay +; afTargetValue = value you're counting up (or down) towards -- if included, function will return TRUE when the global reaches the target value +; abCountingUp = by default, function assumes you're counting up towards the target value; make this false to count DOWN towards target value +; abCompleteObjective = by default, function assumes you're completing the objective once you reach the target value; make this false to FAIL the objective +; abRedisplayObjective = by default, function asssume you want to redisplay the objective every time the global is incremeneted; make this FALSE to only display the objectives on complete or failure +bool Function ModObjectiveGlobal(float afModValue, GlobalVariable aModGlobal, int aiObjectiveID = -1, float afTargetValue = -1.0, bool abCountingUp = true, bool abCompleteObjective = true, bool abRedisplayObjective = true) + aModGlobal.Mod(afModValue) + UpdateCurrentInstanceGlobal(aModGlobal) + if aiObjectiveID >= 0 + ; display/complete objectives automatically + if afTargetValue > -1 + if (abCountingUp && aModGlobal.value >= afTargetValue) || (!abCountingUp && aModGlobal.value <= afTargetValue) + if (abCompleteObjective) + ; complete objective + SetObjectiveCompleted(aiObjectiveID) + return true + Else + ; fail objective + SetObjectiveFailed(aiObjectiveID) + return true + Endif + elseIf (abRedisplayObjective) + ; redisplay objective + SetObjectiveDisplayed(aiObjectiveID, true, true) + Else + SetObjectiveDisplayed(aiObjectiveID, true, false) + endif + elseIf (abRedisplayObjective) + ; no target value, always redisplay objective + SetObjectiveDisplayed(aiObjectiveID, true, true) + Else + SetObjectiveDisplayed(aiObjectiveID, true, false) + endif + endif + return false +endFunction + + +; native functions + +; Flags all objectives as complete +Function CompleteAllObjectives() native + +; Flags this quest as completed +Function CompleteQuest() native + +; Flags all objectives as failed +Function FailAllObjectives() native + +; Obtains the specified alias on the quest +Alias Function GetAlias(int aiAliasID) native + +; Obtains the id of the highest completed stage on this quest +int Function GetCurrentStageID() native + +; Alias for GetCurrentStage - obtains the highest completed stage on this quest +int Function GetStage() + return GetCurrentStageID() +EndFunction + +; Alias for IsStageDone - checks to see whether the given stage is done or not +bool Function GetStageDone(int aiStage) + return IsStageDone(aiStage) +EndFunction + +; Is this quest "active" (tracked by the player)? +bool Function IsActive() native + +; Checks to see if the quest is completed +bool Function IsCompleted() native + +; Checks to see if the specified objective is completed +bool Function IsObjectiveCompleted(int aiObjective) native + +; Checks to see if the specified objective is displayed +bool Function IsObjectiveDisplayed(int aiObjective) native + +; Checks to see if the specified objective is failed +bool Function IsObjectiveFailed(int aiObjective) native + +; Checks to see if the quest is running +bool Function IsRunning() native + +; Obtains whether the specified stage is done or not +bool Function IsStageDone(int aiStage) native + +; Checks to see if the quest is enabled but not running yet +bool Function IsStarting() native + +; Checks to see if the quest is not enabled anymore but still shutting down +bool Function IsStopping() native + +; Checks to see if the quest is no longer enabled or running +bool Function IsStopped() native + +; Resets the quest +Function Reset() native + +; Flags this quest as "active" (tracked by the player) +Function SetActive(bool abActive = true) native + +; Set the quest to the requested stage ID - returns true if stage exists and was set. +; This function is latent and will wait for the quest to start up before returning (if it needed to be started) +bool Function SetCurrentStageID(int aiStageID) native + +; Sets the specified objective to completed or not +Function SetObjectiveCompleted(int aiObjective, bool abCompleted = true) native + +; Sets the specified objective to displayed or hidden - if abForce is true, will display the objective even if it has already been displayed +Function SetObjectiveDisplayed(int aiObjective, bool abDisplayed = true, bool abForce = false) native + +; Sets the specified objective to failed or not +Function SetObjectiveFailed(int aiObjective, bool abFailed = true) native + +; Alias of SetCurrentStage - Set the quest to the requested stage +; This function is latent and will wait for the quest to start up before returning (if it needed to be started) +bool Function SetStage(int aiStage) + return SetCurrentStageID(aiStage) +EndFunction + +; Starts the quest - returns whether the quest was able to be started or not +; This function is latent and will wait for the quest to start up before returning +bool Function Start() native + +; Stops the quest +Function Stop() native + +; Updates current instance's value for the given global +bool Function UpdateCurrentInstanceGlobal( GlobalVariable aUpdateGlobal ) native + +; Story manager events - fired in parallel with the quest startup stage + +Event OnStoryAddToPlayer(ObjectReference akOwner, ObjectReference akContainer, \ + Location akLocation, Form akItemBase, int aiAcquireType) +EndEvent + +Event OnStoryArrest(ObjectReference akArrestingGuard, ObjectReference akCriminal, \ + Location akLocation, int aiCrime) +EndEvent + +Event OnStoryAssaultActor(ObjectReference akVictim, ObjectReference akAttacker, \ + Location akLocation, int aiCrime) +EndEvent + +Event OnStoryBribeNPC(ObjectReference akActor) +EndEvent + +Event OnStoryCastMagic(ObjectReference akCastingActor, ObjectReference akSpellTarget, \ + Location akLocation, Form akSpell) +EndEvent + +Event OnStoryChangeLocation(ObjectReference akActor, Location akOldLocation, \ + Location akNewLocation) +EndEvent + +Event OnStoryCrimeGold(ObjectReference akVictim, ObjectReference akCriminal, \ + Form akFaction, int aiGoldAmount, int aiCrime) +EndEvent + +Event OnStoryCure(Form akInfection) +EndEvent + +Event OnStoryDialogue(Location akLocation, ObjectReference akActor1, ObjectReference akActor2) +EndEvent + +Event OnStoryDiscoverDeadBody(ObjectReference akActor, ObjectReference akDeadActor, \ + Location akLocation) +EndEvent + +Event OnStoryEscapeJail(Location akLocation, Form akCrimeGroup) +EndEvent + +Event OnStoryActivateActor(Location akLocation, ObjectReference akActor) +EndEvent + +Event OnStoryFlatterNPC(ObjectReference akActor) +EndEvent + +Event OnStoryHello(Location akLocation, ObjectReference akActor1, ObjectReference akActor2) +EndEvent + +Event OnStoryIncreaseLevel(int aiNewLevel) +EndEvent + +Event OnStoryIncreaseSkill(string asSkill) +EndEvent + +Event OnStoryInfection(ObjectReference akTransmittingActor, Form akInfection) +EndEvent + +Event OnStoryIntimidateNPC(ObjectReference akActor) +EndEvent + +Event OnStoryJail(ObjectReference akGuard, Form akCrimeGroup, Location akLocation, \ + int aiCrimeGold) +EndEvent + +Event OnStoryKillActor(ObjectReference akVictim, ObjectReference akKiller, \ + Location akLocation, int aiCrimeStatus, int aiRelationshipRank) +EndEvent + +Event OnStoryCraftItem(ObjectReference akBench, Location akLocation, Form akCreatedItem) +EndEvent + +Event OnStoryNewVoicePower(ObjectReference akActor, Form akVoicePower) +EndEvent + +Event OnStoryPickLock(ObjectReference akActor, ObjectReference akLock) +EndEvent + +Event OnStoryPayFine(ObjectReference akCriminal, ObjectReference akGuard, \ + Form akCrimeGroup, int aiCrimeGold) +EndEvent + +Event OnStoryPlayerGetsFavor(ObjectReference akActor) +EndEvent + +Event OnStoryRelationshipChange(ObjectReference akActor1, ObjectReference akActor2, \ + int aiOldRelationship, int aiNewRelationship) +EndEvent + +Event OnStoryRemoveFromPlayer(ObjectReference akOwner, ObjectReference akItem, \ + Location akLocation, Form akItemBase, int aiRemoveType) +EndEvent + +Event OnStoryScript(Keyword akKeyword, Location akLocation, ObjectReference akRef1, \ + ObjectReference akRef2, int aiValue1, int aiValue2) +EndEvent + +Event OnStoryServedTime(Location akLocation, Form akCrimeGroup, int aiCrimeGold, \ + int aiDaysJail) +EndEvent + +Event OnStoryTrespass(ObjectReference akVictim, ObjectReference akTrespasser, \ + Location akLocation, int aiCrime) +EndEvent + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; returns the quest with the specified editor id +Quest Function GetQuest(string editorId) global native + +; returns the editor ID of the quest +string Function GetID() native + +; returns the priority of the quest +int Function GetPriority() native + +; returns the number of aliases associated with the quest +int Function GetNumAliases() native + +; returns the specified alias associated with the queest +Alias Function GetNthAlias(int index) native + +; returns the alias associated with the quest by name +Alias Function GetAliasByName(string name) native + +; returns the alias by AlisID +Alias Function GetAliasById(int aliasId) native + +; Returns all the aliases of this quest +Alias[] Function GetAliases() native \ No newline at end of file diff --git a/source/scripts/race.psc b/source/scripts/race.psc new file mode 100644 index 00000000..c9f4d6e0 --- /dev/null +++ b/source/scripts/race.psc @@ -0,0 +1,231 @@ +Scriptname Race extends Form Hidden + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; returns the number of spells for the race +int Function GetSpellCount() native + +; returns the specified spell from the race +Spell Function GetNthSpell(int n) native + +; returns whether the specified race flag is set +bool Function IsRaceFlagSet(int n) native + +; sets the specified race flag +Function SetRaceFlag(int n) native + +; clears the specified race flag +Function ClearRaceFlag(int n) native + +; Returns the races default voice type +VoiceType Function GetDefaultVoiceType(bool female) native + +; Sets the races default voice type +Function SetDefaultVoiceType(bool female, VoiceType voice) native + +; Gets/sets the skin of the race +Armor Function GetSkin() native +Function SetSkin(Armor skin) native + +; Returns the number of playable races +int Function GetNumPlayableRaces() native global + +; Returns the nth playable race +Race Function GetNthPlayableRace(int n) native global + +; Returns a race by it's editorId name +Race Function GetRace(string editorId) native global + +; race flags for previous functions +int property kRace_Playable = 0x00000001 AutoReadOnly +int property kRace_FaceGenHead = 0x00000002 AutoReadOnly +int property kRace_Child = 0x00000004 AutoReadOnly +int property kRace_TiltFrontBack = 0x00000008 AutoReadOnly +int property kRace_TiltLeftRight = 0x00000010 AutoReadOnly +int property kRace_NoShadow = 0x00000020 AutoReadOnly +int property kRace_Swims = 0x00000040 AutoReadOnly +int property kRace_Flies = 0x00000080 AutoReadOnly +int property kRace_Walks = 0x00000100 AutoReadOnly +int property kRace_Immobile = 0x00000200 AutoReadOnly +int property kRace_NotPushable = 0x00000400 AutoReadOnly +int property kRace_NoCombatInWater = 0x00000800 AutoReadOnly +int property kRace_NoRotatingToHeadTrack = 0x00001000 AutoReadOnly +int property kRace_UseHeadTrackAnim = 0x00008000 AutoReadOnly +int property kRace_SpellsAlignWithMagicNode = 0x00010000 AutoReadOnly +int property kRace_UseWorldRaycasts = 0x00020000 AutoReadOnly +int property kRace_AllowRagdollCollision = 0x00040000 AutoReadOnly +int property kRace_CantOpenDoors = 0x00100000 AutoReadOnly +int property kRace_AllowPCDialogue = 0x00200000 AutoReadOnly +int property kRace_NoKnockdowns = 0x00400000 AutoReadOnly +int property kRace_AllowPickpocket = 0x00800000 AutoReadOnly +int property kRace_AlwaysUseProxyController = 0x01000000 AutoReadOnly +int property kRace_AllowMultipleMembraneShaders = 0x20000000 AutoReadOnly +int property kRace_AvoidsRoads = 0x80000000 AutoReadOnly + +bool Function IsPlayable() + return IsRaceFlagSet(self.kRace_Playable) +endFunction + +Function MakePlayable() + SetRaceFlag(self.kRace_Playable) +endFunction + +Function MakeUnplayable() + ClearRaceFlag(self.kRace_Playable) +endFunction + +bool Function IsChildRace() + return IsRaceFlagSet(self.kRace_Child) +endFunction + +Function MakeChildRace() + SetRaceFlag(self.kRace_Child) +endFunction + +Function MakeNonChildRace() + ClearRaceFlag(self.kRace_Child) +endFunction + +bool Function CanFly() + return IsRaceFlagSet(self.kRace_Flies) +endFunction + +Function MakeCanFly() + SetRaceFlag(self.kRace_Flies) +endFunction + +Function MakeNonFlying() + ClearRaceFlag(self.kRace_Flies) +endFunction + +bool Function CanSwim() + return IsRaceFlagSet(self.kRace_Swims) +endFunction + +Function MakeCanSwim() + SetRaceFlag(self.kRace_Swims) +endFunction + +Function MakeNonSwimming() + ClearRaceFlag(self.kRace_Swims) +endFunction + +bool Function CanWalk() + return IsRaceFlagSet(self.kRace_Walks) +endFunction + +Function MakeCanWalk() + SetRaceFlag(self.kRace_Walks) +endFunction + +Function MakeNonWalking() + ClearRaceFlag(self.kRace_Walks) +endFunction + +bool Function IsImmobile() + return IsRaceFlagSet(self.kRace_Immobile) +endFunction + +Function MakeImmobile() + SetRaceFlag(self.kRace_Immobile) +endFunction + +Function MakeMobile() + ClearRaceFlag(self.kRace_Immobile) +endFunction + +bool Function IsNotPushable() + return IsRaceFlagSet(self.kRace_NotPushable) +endFunction + +Function MakeNotPushable() + SetRaceFlag(self.kRace_NotPushable) +endFunction + +Function MakePushable() + ClearRaceFlag(self.kRace_NotPushable) +endFunction + +bool Function NoKnockdowns() + return IsRaceFlagSet(self.kRace_AllowPickpocket) +endFunction + +Function MakeNoKnockdowns() + SetRaceFlag(self.kRace_AllowPickpocket) +endFunction + +Function ClearNoKNockdowns() + ClearRaceFlag(self.kRace_AllowPickpocket) +endFunction + +bool Function NoCombatInWater() + return IsRaceFlagSet(self.kRace_NoCombatInWater) +endFunction + +Function SetNoCombatInWater() + SetRaceFlag(self.kRace_NoCombatInWater) +endFunction + +Function ClearNoCombatInWater() + ClearRaceFlag(self.kRace_NoCombatInWater) +endFunction + +bool Function AvoidsRoads() + return IsRaceFlagSet(self.kRace_AvoidsRoads) +endFunction + +Function SetAvoidsRoads() + SetRaceFlag(self.kRace_AvoidsRoads) +endFunction + +Function ClearAvoidsRoads() + ClearRaceFlag(self.kRace_AvoidsRoads) +endFunction + +bool Function AllowPickpocket() + return IsRaceFlagSet(self.kRace_AllowPickpocket) +endFunction + +Function SetAllowPickpocket() + SetRaceFlag(self.kRace_AllowPickpocket) +endFunction + +Function ClearAllowPickpocket() + ClearRaceFlag(self.kRace_AllowPickpocket) +endFunction + +bool Function AllowPCDialogue() + return IsRaceFlagSet(self.kRace_AllowPCDialogue) +endFunction + +Function SetAllowPCDialogue() + SetRaceFlag(self.kRace_AllowPCDialogue) +endFunction + +Function ClearAllowPCDialogue() + ClearRaceFlag(self.kRace_AllowPCDialogue) +endFunction + +bool Function CantOpenDoors() + return IsRaceFlagSet(self.kRace_CantOpenDoors) +endFunction + +Function SetCantOpenDoors() + SetRaceFlag(self.kRace_CantOpenDoors) +endFunction + +Function ClearCantOpenDoors() + ClearRaceFlag(self.kRace_CantOpenDoors) +endFunction + +bool Function NoShadow() + return IsRaceFlagSet(self.kRace_NoShadow) +endFunction + +Function SetNoShadow() + SetRaceFlag(self.kRace_NoShadow) +endFunction + +Function ClearNoShadow() + ClearRaceFlag(self.kRace_NoShadow) +endFunction + diff --git a/source/scripts/referencealias.psc b/source/scripts/referencealias.psc new file mode 100644 index 00000000..9de2f65f --- /dev/null +++ b/source/scripts/referencealias.psc @@ -0,0 +1,414 @@ +Scriptname ReferenceAlias extends Alias Hidden +import ObjectReference + +; Add an inventory event filter to this alias. Item added/removed events matching the +; specified form (or in the specified form list) will now be let through. +Function AddInventoryEventFilter(Form akFilter) native + +; Clears the alias - fails on non-optional aliases +Function Clear() native + +; Get the object reference this alias refers to +ObjectReference Function GetReference() native + +; Forces this alias to use the specified reference +Function ForceRefTo(ObjectReference akNewRef) native + +; Remove all inventory event filters from this alias - all item added/removed events will now be received +Function RemoveAllInventoryEventFilters() native + +; Remove an inventory event filter from this alias. Item added/removed events matching the +; specified form (or in the specified form list) will no longer be let through. +Function RemoveInventoryEventFilter(Form akFilter) native + +; SJML -- tries to force a reference into the alias, but only if it's already empty. +; returns true if the alias now holds the passed reference, false if it was already filled. +bool Function ForceRefIfEmpty(ObjectReference akNewRef) + if (GetReference()) + return False + else + ForceRefTo(akNewRef) + return True + endif +EndFunction + +; Autocast to Actor is applicable +Actor Function GetActorReference() + return GetReference() as Actor +endFunction + +; Convenience function +ObjectReference Function GetRef() + return GetReference() +endFunction + +; Convenience fucntion +Actor Function GetActorRef() + return GetActorReference() +endFunction + + +; Convenience function - jduvall +bool Function TryToAddToFaction(Faction FactionToAddTo) + Actor ActorRef = GetActorReference() + + if ActorRef + ActorRef.AddToFaction(FactionToAddTo) + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToRemoveFromFaction(Faction FactionToRemoveFrom) + Actor ActorRef = GetActorReference() + + if ActorRef + ActorRef.RemoveFromFaction(FactionToRemoveFrom) + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToStopCombat() + Actor ActorRef = GetActorReference() + + if ActorRef + ActorRef.StopCombat() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToDisable() + ObjectReference Ref = GetReference() + + if Ref + Ref.Disable() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - wshen +bool Function TryToDisableNoWait() + ObjectReference Ref = GetReference() + + if Ref + Ref.DisableNoWait() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToEnable() + ObjectReference Ref = GetReference() + + if Ref + Ref.Enable() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - wshen +bool Function TryToEnableNoWait() + ObjectReference Ref = GetReference() + + if Ref + Ref.EnableNoWait() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToEvaluatePackage() + Actor ActorRef = GetActorReference() + + if ActorRef + ActorRef.EvaluatePackage() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToKill() + Actor ActorRef = GetActorReference() + + if ActorRef + ActorRef.Kill() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToMoveTo(ObjectReference RefToMoveTo) + ObjectReference Ref = GetReference() + + if Ref + Ref.MoveTo(RefToMoveTo) + Return True + EndIf + + Return False +EndFunction + +; Convenience function - jduvall +bool Function TryToReset() + ObjectReference Ref = GetReference() + + if Ref + Ref.Reset() + Return True + EndIf + + Return False +EndFunction + +; Convenience function - sjml +bool Function TryToClear() + if (GetReference()) + Clear() + return True + endif + + return False +EndFunction + +; The following events are received if the object the alias points at receives the events: + +; Event received when this reference is activated +Event OnActivate(ObjectReference akActionRef) +EndEvent + +; Event received when this object has moved to an attached cell from a detached one +Event OnAttachedToCell() +EndEvent + +; Event received when this object's parent cell is attached +Event OnCellAttach() +EndEvent + +; Event received when this object's parent cell is detached +Event OnCellDetach() +EndEvent + +; Event received when every object in this object's parent cell is loaded (TODO: Find restrictions) +Event OnCellLoad() +EndEvent + +; Event received when this object is closed +Event OnClose(ObjectReference akActionRef) +EndEvent + +; Event received when this object enters, exits, or changes containers +Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer) +EndEvent + +; Event received when this reference's destruction stage has changed +Event OnDestructionStageChanged(int aiOldStage, int aiCurrentStage) +EndEvent + +; Event recieved when this object moves to a detached cell from an attached one +Event OnDetachedFromCell() +EndEvent + +; Event received when this object is equipped by an actor +Event OnEquipped(Actor akActor) +EndEvent + +; Event received when this object is grabbed by the player +Event OnGrab() +EndEvent + +; Event received when this object is hit by a source (weapon, spell, explosion) or projectile attack +Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) +EndEvent + +; Event received when an item is added to this object's inventory. If the item is a persistant reference, akItemReference will +; point at it - otherwise the parameter will be None +Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) +EndEvent + +; Event received when an item is removed from this object's inventory. If the item is a persistant reference, akItemReference +; will point at it - otherwise the parameter will be None +Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) +EndEvent + +; Event recieved when this object is completely loaded - will be fired every time this object is loaded +Event OnLoad() +EndEvent + +; Event received when the lock on this object changes +Event OnLockStateChanged() +EndEvent + +; Event received when a magic affect is being applied to this object +Event OnMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect) +EndEvent + +; Event received when this object is opened +Event OnOpen(ObjectReference akActionRef) +EndEvent + +; Event received when this object, if a book, is read +Event OnRead() +EndEvent + +; Event received when this object is released by the player +Event OnRelease() +EndEvent + +; Event received when this reference is reset +Event OnReset() +EndEvent + +; Event received when this reference is sold by an actor +Event OnSell(Actor akSeller) +EndEvent + +; Event received when a spell is cast by this object +Event OnSpellCast(Form akSpell) +EndEvent + +; Event received when translation is complete (from a call to TranslateTo) +Event OnTranslationComplete() +EndEvent + +; Event received when translation is aborted (from a call to StopTranslateTo) +Event OnTranslationFailed() +EndEvent + +; Event recieved when this reference hits a target +Event OnTrapHit(ObjectReference akTarget, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, \ + int aeMaterial, bool abInitialHit, int aeMotionType) +EndEvent + +; Event recieved when this starts hitting a target +Event OnTrapHitStart(ObjectReference akTarget, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, \ + int aeMaterial, bool abInitialHit, int aeMotionType) +EndEvent + +; Event recieved when this stops hitting a target +Event OnTrapHitStop(ObjectReference akTarget) +EndEvent + +; Event received when a this trigger is tripped +Event OnTrigger(ObjectReference akActionRef) +EndEvent + +; Event received when this trigger volume is entered +Event OnTriggerEnter(ObjectReference akActionRef) +EndEvent + +; Event received when this trigger volume is left +Event OnTriggerLeave(ObjectReference akActionRef) +EndEvent + +; Event received when this object is unequipped by an actor +Event OnUnequipped(Actor akActor) +EndEvent + +; Event recieved when this object is being unloaded - will be fired every time this object is unloaded +Event OnUnload() +EndEvent + +; Event that is triggered when this actor's combat state against the target changes +; State is as follows: +; 0 - not in combat +; 1 - in combat +; 2 - searching +Event OnCombatStateChanged(Actor akTarget, int aeCombatState) +EndEvent + +; Event that is triggered when this actor sits in the furniture +Event OnSit(ObjectReference akFurniture) +EndEvent + +; Event that is triggered when this actor leaves the furniture +Event OnGetUp(ObjectReference akFurniture) +EndEvent + +; Event that is triggered when this actor finishes dying (only if this alias points at an actor) +Event OnDeath(Actor akKiller) +EndEvent + +; Event that is triggered when this actor begins dying (only if this alias points at an actor) +Event OnDying(Actor akKiller) +EndEvent + +; Event received when an actor enters bleedout. (only if this alias points at an actor) +Event OnEnterBleedout() +EndEvent + +; Event that is triggered when this actor changes from one location to another (only if this alias points at an actor) +Event OnLocationChange(Location akOldLoc, Location akNewLoc) +EndEvent + +; Received when the lycanthropy state of this actor changes (when SendLycanthropyStateChanged is called) +Event OnLycanthropyStateChanged(bool abIsWerewolf) +EndEvent + +; Event received when this actor equips something - akReference may be None if object is not persistent (only if this alias points at an actor) +Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference) +EndEvent + +; Event received when this actor unequips something - akReference may be None if object is not persistent (only if this alias points at an actor) +Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference) +EndEvent + +; Event received when this actor starts a new package (only if this alias points at an actor) +Event OnPackageStart(Package akNewPackage) +EndEvent + +; Event received when this actor's package changes (only if this alias points at an actor) +Event OnPackageChange(Package akOldPackage) +EndEvent + +; Event received when this actor's package ends (only if this alias points at an actor) +Event OnPackageEnd(Package akOldPackage) +EndEvent + +; Event received when this actor finishes changing its race +Event OnRaceSwitchComplete() +EndEvent + +; Event received when this object's Ward is hit by a spell +Event OnWardHit(ObjectReference akCaster, Spell akSpell, int aiStatus) +EndEvent + +; Received when the player fires a bow. akWeapon will be a bow, akAmmo is the ammo or None, +; afPower will be 1.0 for a full-power shot, less for a dud, and abSunGazing will be true if the player is looking at the sun. +Event OnPlayerBowShot(Weapon akWeapon, Ammo akAmmo, float afPower, bool abSunGazing) +EndEvent + +; Received when the player finishes fast travel, gives the duration of game time the travel took +Event OnPlayerFastTravelEnd(float afTravelGameTimeHours) +EndEvent + +; Received immediately after the player has loaded a save game. A good time to check for additional content. +Event OnPlayerLoadGame() +EndEvent + +; Received when StartVampireFeed is called on an actor +Event OnVampireFeed(Actor akTarget) +EndEvent + +; Received when the vampirism state of this actor changes (when SendVampirismStateChanged is called) +Event OnVampirismStateChanged(bool abIsVampire) +EndEvent diff --git a/source/scripts/scene.psc b/source/scripts/scene.psc new file mode 100644 index 00000000..06eb1990 --- /dev/null +++ b/source/scripts/scene.psc @@ -0,0 +1,19 @@ +Scriptname Scene extends Form Hidden + +; Forces a scene to start and kills the current scenes running on any ref in that scene +Function ForceStart() native + +; Starts this scene +Function Start() native + +; Stops the scene +Function Stop() native + +; Is this scene currently playing? +bool Function IsPlaying() native + +; Returns the quest that owns this scene +Quest Function GetOwningQuest() native + +; Returns whether the specified action is complete or not +bool Function IsActionComplete(int aiActionID) native \ No newline at end of file diff --git a/source/scripts/scroll.psc b/source/scripts/scroll.psc new file mode 100644 index 00000000..87c902c0 --- /dev/null +++ b/source/scripts/scroll.psc @@ -0,0 +1,54 @@ +Scriptname Scroll extends Form Hidden + +; Cast this scroll from an ObjectReference, optionally toward another. +Function Cast(ObjectReference akSource, ObjectReference akTarget=NONE) native + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; return the casting time +float Function GetCastTime() native + +; return the perk associated with the spell +Perk Function GetPerk() native + +; return the number of the effects +int Function GetNumEffects() native + +; return the magnitude of the specified effect +float Function GetNthEffectMagnitude(int index) native + +; return the area of the specified effect +int Function GetNthEffectArea(int index) native + +; return the duration of the specified effect +int Function GetNthEffectDuration(int index) native + +; return the magic effect of the specified effect +MagicEffect Function GetNthEffectMagicEffect(int index) native + +; return the index of the costliest effect +int Function GetCostliestEffectIndex() native + +; sets the magnitude of the specified effect +Function SetNthEffectMagnitude(int index, float value) native + +; sets the area of the specified effect +Function SetNthEffectArea(int index, int value) native + +; sets the duration of the specified effect +Function SetNthEffectDuration(int index, int value) native + +; Returns the particular equipslot type +EquipSlot Function GetEquipType() native +Function SetEquipType(EquipSlot type) native + +; Returns all the magnitudes of this object in order +float[] Function GetEffectMagnitudes() native + +; Returns all the areas of this object in order +int[] Function GetEffectAreas() native + +; Returns all the durations of this object in order +int[] Function GetEffectDurations() native + +; Returns all the magic effects of this object in order +MagicEffect[] Function GetMagicEffects() native \ No newline at end of file diff --git a/source/scripts/shaderparticlegeometry.psc b/source/scripts/shaderparticlegeometry.psc new file mode 100644 index 00000000..0c6d7ea6 --- /dev/null +++ b/source/scripts/shaderparticlegeometry.psc @@ -0,0 +1,7 @@ +Scriptname ShaderParticleGeometry extends Form Hidden + +; Applies this effect with the specified fade time +Function Apply(float afFadeTime) native + +; Removes this effect +Function Remove(float afFadeTime) native diff --git a/source/scripts/shout.psc b/source/scripts/shout.psc new file mode 100644 index 00000000..5b196e39 --- /dev/null +++ b/source/scripts/shout.psc @@ -0,0 +1,10 @@ +Scriptname Shout extends Form Hidden + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +WordOfPower Function GetNthWordOfPower(int n) native +Spell Function GetNthSpell(int n) native +float Function GetNthRecoveryTime(int n) native + +Function SetNthWordOfPower(int n, WordOfPower aWoop) native +Function SetNthSpell(int n, Spell aSpell) native +Function SetNthRecoveryTime(int n, float time) native \ No newline at end of file diff --git a/source/scripts/skse.psc b/source/scripts/skse.psc new file mode 100644 index 00000000..1b2745d4 --- /dev/null +++ b/source/scripts/skse.psc @@ -0,0 +1,20 @@ +Scriptname SKSE Hidden +; General SKSE-specific information + +; get the major version of SKSE +int Function GetVersion() global native +; get the minor version of SKSE +int Function GetVersionMinor() global native +; get the beta version of SKSE +int Function GetVersionBeta() global native +; get the release index of SKSE. This number is incremented every time +; SKSE is released outside of the development team +int Function GetVersionRelease() global native +; get the release index of this script file. +; Can be used to detect a script/runtime version mismatch +int Function GetScriptVersionRelease() global + return 65 +endFunction + +; get a plugins version number, -1 if the plugin is not loaded +int Function GetPluginVersion(string name) global native \ No newline at end of file diff --git a/source/scripts/soulgem.psc b/source/scripts/soulgem.psc new file mode 100644 index 00000000..38f84938 --- /dev/null +++ b/source/scripts/soulgem.psc @@ -0,0 +1,6 @@ +Scriptname SoulGem extends MiscObject Hidden + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +int Function GetSoulSize() native +int Function GetGemSize() native \ No newline at end of file diff --git a/source/scripts/sound.psc b/source/scripts/sound.psc new file mode 100644 index 00000000..62e8344b --- /dev/null +++ b/source/scripts/sound.psc @@ -0,0 +1,19 @@ +Scriptname Sound extends Form Hidden +import ObjectReference + +; Play this sound base object from the specified source +int Function Play(ObjectReference akSource) native + +; Play this sound from the specified source, and wait for it to finish +bool Function PlayAndWait(ObjectReference akSource) native + +; Stops a given playback instance of a sound +Function StopInstance(int aiPlaybackInstance) native global + +; Set the volume of a given playback instance of a sound. Clamped between 0 and 1. +Function SetInstanceVolume(int aiPlaybackInstance, float afVolume) native global + + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +SoundDescriptor Function GetDescriptor() native \ No newline at end of file diff --git a/source/scripts/soundcategory.psc b/source/scripts/soundcategory.psc new file mode 100644 index 00000000..92d6e453 --- /dev/null +++ b/source/scripts/soundcategory.psc @@ -0,0 +1,20 @@ +Scriptname SoundCategory extends Form Hidden + + +; Pause any sounds that belong to this category +Function Pause() native + +; Play any Paused sounds that belong to this category +Function UnPause() native + +; Mute any sounds that belong to this category +Function Mute() native + +; UnMute any Muted sounds that belong to this category +Function UnMute() native + +; Set a volume modifier [0.0 - 1.0] for any sounds in this category +Function SetVolume(float afVolume) native + +; Set a frequency modifier [0.0 - 1.0] for any sounds in this category +Function SetFrequency(float afFrequencyCoeffecient) native \ No newline at end of file diff --git a/source/scripts/sounddescriptor.psc b/source/scripts/sounddescriptor.psc new file mode 100644 index 00000000..5e9a84f3 --- /dev/null +++ b/source/scripts/sounddescriptor.psc @@ -0,0 +1,13 @@ +Scriptname SoundDescriptor extends Form Hidden + +float Function GetDecibelAttenuation() native +Function SetDecibelAttenuation(float dbAttenuation) native + +int Function GetDecibelVariance() native +Function SetDecibelVariance(int dbVariance) native + +int Function GetFrequencyVariance() native +Function SetFrequencyVariance(int frequencyVariance) native + +int Function GetFrequencyShift() native +Function SetFrequencyShift(int frequencyShift) native \ No newline at end of file diff --git a/source/scripts/spawnertask.psc b/source/scripts/spawnertask.psc new file mode 100644 index 00000000..37fea86c --- /dev/null +++ b/source/scripts/spawnertask.psc @@ -0,0 +1,58 @@ +Scriptname SpawnerTask Hidden + +; SpawnerTask allows to spawn and position an arbitrary number references in game world. +; It's effectively a batch combination of PlaceAtMe and SetPosition/MoveTo that smoothly executes in a single frame. +; +; Example: +; +; ObjectReference player = ... +; Form chair = ... +; float[] offset = new float[3] +; float[] rotation = new float[3] +; +; ; Allocate new task +; int taskId = SpawnerTask.Create() +; +; ; No rotation +; rotation[0] = 0 +; rotation[1] = 0 +; rotation[2] = 0 +; +; ; Spawn 100 chairs in a grid above the player +; int i = 0 +; while i < 100 +; offset[0] = -250 + (i / 10) * 50 +; offset[1] = -250 + (i % 10) * 50 +; offset[2] = 200 +; +; SpawnerTask.AddSpawn(taskId, chair, player, offset, rotation) +; i += 1 +; endWhile +; +; ; Run the task and return all placed references in an array +; ObjectReference[] spawned = SpawnerTask.Run(taskId) + + +; Creates a new SpawnerTask and returns a handle, which is an identifier for the created task. +; The task handle is valid until the task has been run or canceled, or until the calling stack has exited. +; (Function type: non-delayed) +; +int Function Create() global native + +; Adds a spawn to the task identified by the given handle. +; Running the task places a new instance of formToPlace at target reference with given rotation and position offset. Parameters are analogously defined to PlaceAtMe. +; Multiple spawns can be added to the same task to be executed in a batch (which is the purpose). +; (Function type: non-delayed) +; +Function AddSpawn(int handle, Form formToPlace, ObjectReference target, float[] positionOffset, float[] rotation, int count = 1, bool bForcePersist = false, bool bInitiallyDisabled = false) global native + +; Runs the task and returns the spawned references in an array. May return arrays with a size larger than 128. +; The resources allocated to the task are freed in the process, so the same task handle cannot be run twice. +; (Function type: latent) +; +ObjectReference[] Function Run(int handle) global native + +; Cancels a task before running it and frees its allocated resources. +; Tasks cannot be canceled once they have been started with Run, and vice versa. +; +Function Cancel(int handle) global native diff --git a/source/scripts/spell.psc b/source/scripts/spell.psc new file mode 100644 index 00000000..f66eb2d0 --- /dev/null +++ b/source/scripts/spell.psc @@ -0,0 +1,79 @@ +Scriptname Spell extends Form Hidden + +; Cast this spell from an ObjectReference, optionally toward another. +Function Cast(ObjectReference akSource, ObjectReference akTarget=NONE) native + +; Cast this spell from an ObjectReference, optionally toward another, and blame it on a particular actor. +Function RemoteCast(ObjectReference akSource, Actor akBlameActor, ObjectReference akTarget=NONE) native + +; Is this spell classified as hostile? +bool Function IsHostile() native + +; Preload the art for this spell. Useful for spells you equip & unequip on the player. +; Warning: Misuse of this function can lead to erroneous behavior as well as excessive +; memory consumption. It's best to avoid using this. This function will likely be +; deprecated in the future. +Function Preload() native + +; Unload the art for this spell. Call this only if you've previously called Preload. +; Warning: Misuse of this function can lead to erroneous behavior including spell art +; being unloaded while in use, and excessive memory consumption. It's best to avoid using this. +; This function will likely be deprecated in the future. +Function Unload() native + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC +; return the casting time +float Function GetCastTime() native + +; return the perk associated with the spell +Perk Function GetPerk() native + +; return the number of the effects +int Function GetNumEffects() native + +; return the magnitude of the specified effect +float Function GetNthEffectMagnitude(int index) native + +; return the area of the specified effect +int Function GetNthEffectArea(int index) native + +; return the duration of the specified effect +int Function GetNthEffectDuration(int index) native + +; return the magic effect of the specified effect +MagicEffect Function GetNthEffectMagicEffect(int index) native + +; return the index of the costliest effect +int Function GetCostliestEffectIndex() native + +; return the base magicka cost of the spell +int Function GetMagickaCost() native + +; return the effective magicka cost of the spell for given caster +int Function GetEffectiveMagickaCost(Actor caster) native + +; sets the magnitude of the specified effect +Function SetNthEffectMagnitude(int index, float value) native + +; sets the area of the specified effect +Function SetNthEffectArea(int index, int value) native + +; sets the duration of the specified effect +Function SetNthEffectDuration(int index, int value) native + +; Returns the particular equipslot type +EquipSlot Function GetEquipType() native +Function SetEquipType(EquipSlot type) native + +; Returns all the magnitudes of this object in order +float[] Function GetEffectMagnitudes() native + +; Returns all the areas of this object in order +int[] Function GetEffectAreas() native + +; Returns all the durations of this object in order +int[] Function GetEffectDurations() native + +; Returns all the magic effects of this object in order +MagicEffect[] Function GetMagicEffects() native \ No newline at end of file diff --git a/source/scripts/static.psc b/source/scripts/static.psc new file mode 100644 index 00000000..40e950de --- /dev/null +++ b/source/scripts/static.psc @@ -0,0 +1 @@ +Scriptname Static Extends Form diff --git a/source/scripts/stringutil.psc b/source/scripts/stringutil.psc new file mode 100644 index 00000000..a1640a0f --- /dev/null +++ b/source/scripts/stringutil.psc @@ -0,0 +1,45 @@ +Scriptname StringUtil Hidden + +; Note about the internal Skyrim implementation of the string classes used for scripting: +; the strings are case-insensitive. Each BSFixedString is managed in a cache and reused +; everywhere it is needed. This means that strings like "O" and "o" are technically equivalent; +; Which string is used depends greatly on which version is found first. We are investigating +; how to manage this, but for the time being be aware that the distinction between uppercase +; and lowercase may not exist. It also means that functions below returning an integer +; for the character may not correspond exactly. Also GetNthChar("Hello Skyrim!", 4) will +; return a string with either "O" or "o" depnding on which might be registered first. All +; my tests so far have it return the uppercase, eventhough in the string it is lowercase. +; We may solve this problem by switching back to returning an integer rather than a string +; for GetNthChar, but this will still have problems. + +; return the length of the string +int Function GetLength(string s) global native + +; returns a single character string with the character at index +string Function GetNthChar(string s, int index) global native + +; Functions to work on Chars +; returns information about a specific character +; assumes a single character string. If a multicharacter string is passed +; the information about the first character is returned +bool Function IsLetter(string c) global native +bool Function IsDigit(string c) global native +bool Function IsPunctuation(string c) global native +bool Function IsPrintable(string c) global native + +; returns the index of the first character of toFind inside string s +; returns -1 if toFind is not part of the string or if startIndex is invalid +int Function Find(string s, string toFind, int startIndex = 0) global native + +; returns a substring of the specified string starting at startIndex and going for len characters +; or until the end of the string. Default len of 0 means for the entire string +string Function Substring(string s, int startIndex, int len = 0) global native + +; returns the numeric value of the first character as an int +int Function AsOrd(string c) global native + +; returns a single character string interpreting c as a character +string Function AsChar(int c) global native + +; returns array of strings separated by the specified delimiter +string[] Function Split(string s, string delim) global native \ No newline at end of file diff --git a/source/scripts/talkingactivator.psc b/source/scripts/talkingactivator.psc new file mode 100644 index 00000000..f3f583fb --- /dev/null +++ b/source/scripts/talkingactivator.psc @@ -0,0 +1 @@ +Scriptname TalkingActivator extends Activator Hidden \ No newline at end of file diff --git a/source/scripts/textureset.psc b/source/scripts/textureset.psc new file mode 100644 index 00000000..6ef8df0b --- /dev/null +++ b/source/scripts/textureset.psc @@ -0,0 +1,13 @@ +Scriptname TextureSet extends Form Hidden + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; Returns the number of texture paths +int Function GetNumTexturePaths() native + +; Returns the path of the texture +string Function GetNthTexturePath(int n) native + +; Sets the path of the texture +Function SetNthTexturePath(int n, string texturePath) native \ No newline at end of file diff --git a/source/scripts/topic.psc b/source/scripts/topic.psc new file mode 100644 index 00000000..220b34a6 --- /dev/null +++ b/source/scripts/topic.psc @@ -0,0 +1,4 @@ +Scriptname Topic extends Form Hidden + +; Adds this topic to the list the player knows about +Function Add() native \ No newline at end of file diff --git a/source/scripts/topicinfo.psc b/source/scripts/topicinfo.psc new file mode 100644 index 00000000..c8af8afd --- /dev/null +++ b/source/scripts/topicinfo.psc @@ -0,0 +1,5 @@ +Scriptname TopicInfo extends Form Hidden +import Quest + +; Returns the quest that owns this topic info +Quest Function GetOwningQuest() native diff --git a/source/scripts/treeobject.psc b/source/scripts/treeobject.psc new file mode 100644 index 00000000..a168161f --- /dev/null +++ b/source/scripts/treeobject.psc @@ -0,0 +1,7 @@ +Scriptname TreeObject extends Form Hidden + +SoundDescriptor Function GetHarvestSound() native +Function SetHarvestSound(SoundDescriptor akSoundDescriptor) native + +Form Function GetIngredient() native +Function SetIngredient(Form akIngredient) native \ No newline at end of file diff --git a/source/scripts/ui.psc b/source/scripts/ui.psc new file mode 100644 index 00000000..f1b95a39 --- /dev/null +++ b/source/scripts/ui.psc @@ -0,0 +1,119 @@ +Scriptname UI Hidden + +; For functions that require a menuName, potential values are +; "InventoryMenu" +; "Console" +; "Dialogue Menu" +; "HUD Menu" +; "Main Menu" +; "MessageBoxMenu" +; "Cursor Menu" +; "Fader Menu" +; "MagicMenu" +; "Top Menu" +; "Overlay Menu" +; "Overlay Interaction Menu" +; "Loading Menu" +; "TweenMenu" +; "BarterMenu" +; "GiftMenu" +; "Debug Text Menu" +; "MapMenu" +; "Lockpicking Menu" +; "Quantity Menu" +; "StatsMenu" +; "ContainerMenu" +; "Sleep/Wait Menu" +; "LevelUp Menu" +; "Journal Menu" +; "Book Menu" +; "FavoritesMenu" +; "RaceSex Menu" +; "Crafting Menu" +; "Training Menu" +; "Mist Menu" +; "Tutorial Menu" +; "Credits Menu" +; "TitleSequence Menu" +; "Console Native UI Menu" +; "Kinect Menu" +; +; The target parameter requires one the following prefixes: +; _global , for the default namespace; +; _root , for the movie root. + + +; Returns if the menu is currently open. +bool Function IsMenuOpen(string menuName) global native + + +; Sets bool/number/string value at target location. +; Target value must already exist. +; +; Examples: +; UI.SetBool("InventoryMenu", "_root.Menu_mc._visible", false) +; UI.SetString("FavoritesMenu", "_root.Menu_mc.panel.message.text", "My Text") +; +Function SetBool(string menuName, string target, bool value) global native +Function SetInt(string menuName, string target, int value) global native +Function SetFloat(string menuName, string target, float value) global native +Function SetString(string menuName, string target, string value) global native +Function SetNumber(string menuName, string target, float value) global ; DEPRECIATED + SetFloat(menuName, target, value) +EndFunction + +; Gets bool/number/string from target location, or false/0/none if the value doesn't exist. +; +; Examples: +; bool visible = UI.GetBool("Inventory Menu", "_root.Menu_mc._visible") +; float height = UI.GetNumber("Magic Menu", "_root.Menu_mc._height") +; +bool Function GetBool(string menuName, string target) global native +int Function GetInt(string menuName, string target) global native +float Function GetFloat(string menuName, string target) global native +string Function GetString(string menuName, string target) global native +float Function GetNumber(string menuName, string target) global ; DEPRECIATED + return GetFloat(menuName, target) +EndFunction + + +; Invokes the ActionScript function at given target location. +; +; Examples: +; UI.InvokeString("InventoryMenu", "_global.skse.Log", "Printed to logfile") +; UI.InvokeStringA("InventoryMenu", "_global.myFunction", myArray) +; +Function Invoke(string menuName, string target) global + InvokeBool(menuName, target, false) +EndFunction + +Function InvokeBool(string menuName, string target, bool arg) global native +Function InvokeInt(string menuName, string target, int arg) global native +Function InvokeFloat(string menuName, string target, float arg) global native +Function InvokeString(string menuName, string target, string arg) global native +Function InvokeNumber(string menuName, string target, float arg) global ; DEPRECIATED + InvokeFloat(menuName, target, arg) +EndFunction + +Function InvokeBoolA(string menuName, string target, bool[] args) global native +Function InvokeIntA(string menuName, string target, int[] args) global native +Function InvokeFloatA(string menuName, string target, float[] args) global native +Function InvokeStringA(string menuName, string target, string[] args) global native +Function InvokeNumberA(string menuName, string target, float[] args) global ; DEPRECIATED + InvokeFloatA(menuName, target, args) +EndFunction + +; Sends Form data to Scaleform as a Flash object, FormLists included. +Function InvokeForm(string menuName, string target, Form arg) global native + +; returns if scaleform is in 'text input' mode +; this is useful for ignoring keys that should get swallowed by an editable text box +bool Function IsTextInputEnabled() global native + +; open a custom menu named "CustomMenu" by loading the given swf from the interface folder +; (filename without extension) +; there can only be a single custom menu open at the same time +Function OpenCustomMenu(string swfPath, int flags = 0) global native + +; close the custom menu if it's currently open. +Function CloseCustomMenu() global native \ No newline at end of file diff --git a/source/scripts/uicallback.psc b/source/scripts/uicallback.psc new file mode 100644 index 00000000..6b26727c --- /dev/null +++ b/source/scripts/uicallback.psc @@ -0,0 +1,46 @@ +Scriptname UICallback Hidden + +; UICallback allows passing arguments of different types to UI functions, unlike UI.Invoke* +; +; Example: +; int handle = UICallback.Create("InventoryMenu", "_global.MyClass.initData") +; if (handle) +; UICallback.PushBool(handle, true) +; UICallback.PushInt(handle, 1000) +; UICallback.PushString(handle, "Hello") +; UICallback.PushFloat(handle, 1.234) +; UIDelegate.Send(handle) +; endIf +; +; Any UICallback allocated by Create must be released later. +; That happens automatically when passing it to send. +; Otherwise the handle must be manually released by passing it to Release. +; +; Internally, UICallback objects only persist for the duration of the current +; game session. They are also cleared after each reload. +; +; This means that in very rare cases, the execution sequence of several operations +; on one UICallback might get interrupted, the handle turns invalid and the final Send +; will fail. If its necessary to detect this, check the return value of Send. + +; Creates a new UICallback and returns the handle. +int Function Create(string menuName, string target) global native + +; Invokes the UICallback and releases it. +; Returns true, if it was executed, false if an error happened. +bool Function Send(int handle) global native + +; Releases the UICallback without sending it. +Function Release(int handle) global native + +; Push single parameter. Maximum number of parameters per callback is 128. +Function PushBool(int handle, bool value) global native +Function PushInt(int handle, int value) global native +Function PushFloat(int handle, float value) global native +Function PushString(int handle, string value) global native + +; Push parameters from array. Maximum number of parameters per callback is 128. +Function PushBoolA(int handle, bool[] args) global native +Function PushIntA(int handle, int[] args) global native +Function PushFloatA(int handle, float[] args) global native +Function PushStringA(int handle, string[] args) global native \ No newline at end of file diff --git a/source/scripts/utility.psc b/source/scripts/utility.psc new file mode 100644 index 00000000..9051968e --- /dev/null +++ b/source/scripts/utility.psc @@ -0,0 +1,83 @@ +Scriptname Utility Hidden + +; Converts a float game time (in terms of game days passed) to a string detailing the date +; and time it represents in "MM/DD/YYYY HH:MM" format. A 24-hour clock is used, and the function +; is latent (due to issues in the current architecture with returning strings from code) +string Function GameTimeToString(float afGameTime) native global + +; Obtains the current game time in terms of game days passed (same as the global variable) +float Function GetCurrentGameTime() native global + +; Obtains the number of seconds since the application started (the same timer that WaitMenuMode uses) +; Does not take into account menu-mode, or VM frozen time +; Most useful for determining how long something took to run +float Function GetCurrentRealTime() native global + +; Returns whether the game is currently in menu mode or not +bool Function IsInMenuMode() native global + +; Generates a random integer between aiMin and aiMax (inclusive) +int Function RandomInt(int aiMin = 0, int aiMax = 100) native global + +; Generates a random floating point number between afMin and afMax (inclusive) +float Function RandomFloat(float afMin = 0.0, float afMax = 1.0) native global + +; Set the given INI by type +function SetINIFloat(string ini, float value) native global +function SetINIInt(string ini, int value) native global +function SetINIBool(string ini, bool value) native global +function SetINIString(string ini, string value) native global + +; Waits for the specified amount of time (latent). Timer will not run during menu mode +Function Wait(float afSeconds) native global + +; Waits for the specified amount of game time (latent) +Function WaitGameTime(float afHours) native global + +; Waits for the specified amount of time (latent) - Timer WILL run during menu mode +Function WaitMenuMode(float afSeconds) native global + +; Frame rate capture functions only available in beta version + +; Gets you a string describing the frame rate for a certain number of frames +; (String will be no longer than 1K characters long, separated by commas) +string Function CaptureFrameRate(int numFrames) native global + +; Starts or ends a frame rate capture -- then you can get the min or max since +; frame capture started at any time +Function StartFrameRateCapture() native global +Function EndFrameRateCapture() native global +float Function GetAverageFrameRate() native global +float Function GetMinFrameRate() native global +float Function GetMaxFrameRate() native global + +; Memory tracking functions - only available if memory tracking is turned on +int Function GetCurrentMemory() native global ; Must be called first, it sets up the memory stats used by the other functions +int Function GetBudgetCount() native global +int Function GetCurrentBudget(int aiBudgetNumber) native global +bool Function OverBudget(int aiBudgetNumber) native global +string Function GetBudgetName(int aiBudgetNumber) native global + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +float Function GetINIFloat(string ini) global native +int Function GetINIInt(string ini) global native +bool Function GetINIBool(string ini) global native +string Function GetINIString(string ini) global native + + +; Size is treated as unsigned, negative numbers will result +; extremely large positive numbers, USE WITH CARE +float[] Function CreateFloatArray(int size, float fill = 0.0) global native +int[] Function CreateIntArray(int size, int fill = 0) global native +bool[] Function CreateBoolArray(int size, bool fill = false) global native +string[] Function CreateStringArray(int size, string fill = "") global native +Form[] Function CreateFormArray(int size, Form fill = None) global native +Alias[] Function CreateAliasArray(int size, Alias fill = None) global native + +float[] Function ResizeFloatArray(float[] source, int size, float fill = 0.0) global native +int[] Function ResizeIntArray(int[] source, int size, int fill = 0) global native +bool[] Function ResizeBoolArray(bool[] source, int size, bool fill = false) global native +string[] Function ResizeStringArray(string[] source, int size, string fill = "") global native +Form[] Function ResizeFormArray(Form[] source, int size, Form fill = None) global native +Alias[] Function ResizeAliasArray(Alias[] source, int size, Alias fill = None) global native \ No newline at end of file diff --git a/source/scripts/visualeffect.psc b/source/scripts/visualeffect.psc new file mode 100644 index 00000000..795aebd2 --- /dev/null +++ b/source/scripts/visualeffect.psc @@ -0,0 +1,7 @@ +Scriptname VisualEffect extends Form Hidden + +; Plays this visual effect on the specified object, for a certain length of time (negative for infinite) and possibly facing another object +Function Play(ObjectReference akObject, float afTime = -1.0, ObjectReference akFacingObject = None) native + +; Stops this visual effect from playing in the specified object +Function Stop(ObjectReference akObject) native \ No newline at end of file diff --git a/source/scripts/voicetype.psc b/source/scripts/voicetype.psc new file mode 100644 index 00000000..7bd539f1 --- /dev/null +++ b/source/scripts/voicetype.psc @@ -0,0 +1 @@ +Scriptname VoiceType extends Form Hidden diff --git a/source/scripts/weapon.psc b/source/scripts/weapon.psc new file mode 100644 index 00000000..e122b936 --- /dev/null +++ b/source/scripts/weapon.psc @@ -0,0 +1,122 @@ +Scriptname Weapon extends Form Hidden + +; Fire this weapon base object from the specified source +Function Fire(ObjectReference akSource, Ammo akAmmo = None) native + + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +int Function GetBaseDamage() native +Function SetBaseDamage(int damage) native + +int Function GetCritDamage() native +Function SetCritDamage(int damage) native + +float Function GetReach() native +Function SetReach(float reach) native + +float Function GetMinRange() native +Function SetMinRange(float minRange) native + +float Function GetMaxRange() native +Function SetMaxRange(float maxRange) native + +float Function GetSpeed() native +Function SetSpeed(float speed) native + +float Function GetStagger() native +Function SetStagger(float stagger) native + +int Function GetWeaponType() native +Function SetWeaponType(int type) native + +; works on the path to the nif file representing the in-game model of the weapon +string Function GetModelPath() native +Function SetModelPath(string path) native + +; works on the path to the nif file representing the icon for the weapon in the inventory +string Function GetIconPath() native +Function SetIconPath(string path) native + +; works on the path to the file representing the message icon for the weapon +string Function GetMessageIconPath() native +Function SetMessageIconPath(string path) native + +; works on the enchantment associated with the weapon +Enchantment Function GetEnchantment() native +Function SetEnchantment(Enchantment e) native + +; works on the enchantment value of the associated weapon +int Function GetEnchantmentValue() native +Function SetEnchantmentValue(int value) native + +; works on the weapon model when equipped of the associated weapon +Static Function GetEquippedModel() native +Function SetEquippedModel(Static model) native + +; Returns the particular equipslot type +EquipSlot Function GetEquipType() native +Function SetEquipType(EquipSlot type) native + +string Function GetSkill() native +Function SetSkill(string skill) native + +; DamageResist +; ElectricResist +; FireResist +; FrostResist +; MagicResist +; PoisonResist +string Function GetResist() native +Function SetResist(string resist) native + +; works on the spell that applies when critting +Spell Function GetCritEffect() native +Function SetCritEffect(Spell ce) native + +; Gets, sets or unsets whether the the crit effect should only occur on death +bool Function GetCritEffectOnDeath() native +Function SetCritEffectOnDeath(bool ceod) native + +; Gets/sets the weapons crit multiplier +float Function GetCritMultiplier() native +Function SetCritMultiplier(float crit) native + +; returns the weapon template of this weapon +Weapon Function GetTemplate() native + +bool Function IsBattleaxe() + return HasKeywordString("WeapTypeBattleaxe") +endFunction + +bool Function IsBow() + return HasKeywordString("WeapTypeBow") +endFunction + +bool Function IsDagger() + return HasKeywordString("WeapTypeDagger") +endFunction + +bool Function IsGreatsword() + return HasKeywordString("WeapTypeGreatsword") +endFunction + +bool Function IsMace() + return HasKeywordString("WeapTypeMace") +endFunction + +bool Function IsStaff() + return HasKeywordString("WeapTypeStaff") +endFunction + +bool Function IsSword() + return HasKeywordString("WeapTypeSword") +endFunction + +bool Function IsWarhammer() + return HasKeywordString("WeapTypeWarhammer") +endFunction + +bool Function IsWarAxe() + return HasKeywordString("WeapTypeWarAxe") +endFunction diff --git a/source/scripts/weather.psc b/source/scripts/weather.psc new file mode 100644 index 00000000..0021777a --- /dev/null +++ b/source/scripts/weather.psc @@ -0,0 +1,61 @@ +Scriptname Weather extends Form Hidden + +; Tells the sky to release its overriding weather. +function ReleaseOverride() native global + +; Forces the active weather on the sky to be this weather. +function ForceActive( bool abOverride=false ) native + +; Sets the active weather on the sky to be this weather. +function SetActive( bool abOverride=false, bool abAccelerate=false ) native + +; Finds a weather from the current region/climate whose classification matches the given one. +; 0 - Pleasant +; 1 - Cloudy +; 2 - Rainy +; 3 - Snow +Weather function FindWeather( int auiType ) native global + +; Gets this weather's classification +; -1 - No classification +; 0 - Pleasant +; 1 - Cloudy +; 2 - Rainy +; 3 - Snow +int function GetClassification() native + +; Gets the sky's current weather +Weather function GetCurrentWeather() native global + +; Gets the sky's outgoing weather +Weather function GetOutgoingWeather() native global + +; Gets the transition percentage of the current weather +float function GetCurrentWeatherTransition() native global + +; Gets the sky's current mode +; 0 - No sky (SM_NONE) +; 1 - Interior (SM_INTERIOR) +; 2 - Skydome only (SM_SKYDOME_ONLY) +; 3 - Full sky (SM_FULL) +int function GetSkyMode() native global + +; SKSE 64 additions built 2020-07-29 17:24:48.495000 UTC + +; Returns the sun glare percentage +float Function GetSunGlare() native + +; Returns the sun damage percentage +float Function GetSunDamage() native + +; Returns the wind direction in degrees (0-360) +float Function GetWindDirection() native + +; Returns the wind direction range in degrees (0-180) +float Function GetWindDirectionRange() native + +; 0 - Near +; 1 - Far +; 2 - Power +; 3 - Max +float Function GetFogDistance(bool day, int type) native diff --git a/source/scripts/wordofpower.psc b/source/scripts/wordofpower.psc new file mode 100644 index 00000000..f210078a --- /dev/null +++ b/source/scripts/wordofpower.psc @@ -0,0 +1 @@ +Scriptname WordOfPower Extends Form Hidden \ No newline at end of file diff --git a/source/scripts/worldspace.psc b/source/scripts/worldspace.psc new file mode 100644 index 00000000..2904567a --- /dev/null +++ b/source/scripts/worldspace.psc @@ -0,0 +1 @@ +Scriptname WorldSpace extends Form Hidden diff --git a/source/scripts/wornobject.psc b/source/scripts/wornobject.psc new file mode 100644 index 00000000..44b30a1b --- /dev/null +++ b/source/scripts/wornobject.psc @@ -0,0 +1,62 @@ +Scriptname WornObject Hidden + +; These functions operate directly on +; worn items within the inventory +; Valid Hand Slot: +; 0 - Left +; 1 - Right +; Valid Slot Masks: +; See Armor.psc +; Use zero when using hand slot + +; Tempering +float Function GetItemHealthPercent(Actor akActor, int handSlot, int slotMask) global native +Function SetItemHealthPercent(Actor akActor, int handSlot, int slotMask, float health) global native + +; Charges +; Only works on items that have user-enchants +Function SetItemMaxCharge(Actor akActor, int handSlot, int slotMask, float maxCharge) global native + +; Works on any enchanted item +float Function GetItemMaxCharge(Actor akActor, int handSlot, int slotMask) global native + +float Function GetItemCharge(Actor akActor, int handSlot, int slotMask) global native + +; Use LeftItemCharge/RightItemCharge ActorValues instead +;Function SetItemCharge(Actor akActor, int handSlot, int slotMask, float charge) global native + +; Returns the name of this reference +; this is the name that is displayed +string Function GetDisplayName(Actor akActor, int handSlot, int slotMask) global native + +; Sets a reference's display name +; returns false if force is false and the reference +; is held by an alias using 'Stored Text' or 'Uses Stored Text' +; Text Replacement does not use this name and may be lost if forced +bool Function SetDisplayName(Actor akActor, int handSlot, int slotMask, string name, bool force = false) global native + +; Returns the player-made enchantment if there is one +Enchantment Function GetEnchantment(Actor akActor, int handSlot, int slotMask) global native + +; Changes an item's player-made enchantment to something else +; None enchantment will remove the existing enchantment +; does not delete the custom enchantment, only removes it +Function SetEnchantment(Actor akActor, int handSlot, int slotMask, Enchantment source, float maxCharge) global native + +; Creates a new enchantment on the item given the specified parameters +; all arrays must be the same size +; created enchantments are not purged from the save when removed or overwritten +; exact same enchantments are re-used by the game +Function CreateEnchantment(Actor akActor, int handSlot, int slotMask, float maxCharge, MagicEffect[] effects, float[] magnitudes, int[] areas, int[] durations) global native + +; Returns the number of ref aliases holding this reference +int Function GetNumReferenceAliases(Actor akActor, int handSlot, int slotMask) global native + +; Returns the nth ReferenceAlias holding this reference +ReferenceAlias Function GetNthReferenceAlias(Actor akActor, int handSlot, int slotMask, int n) global native + +; Returns the poison on the specified item +Potion Function GetPoison(Actor akActor, int handSlot, int slotMask) global native + +; Returns all of the ReferenceAlias holding this reference +ReferenceAlias[] Function GetReferenceAliases(Actor akActor, int handSlot, int slotMask) global native \ No newline at end of file