trevius
02-21-2010, 11:50 AM
Here is a long but interesting plugin. It will randomly select a weapon for the primary slot and a weapon or shield for the secondary slot. Other than the first 2 fields, the rest are all optional.
This plugin requires the RandomRange() plugin from this link:
http://www.eqemulator.org/forums/showthread.php?t=30421
This plugin also requires at least SVN Source Code Revision 1259 or later!
Here are the steps to add this plugin to your server:
1. Open notepad, or whatever text editor you prefer.
2. Copy and paste the following code into Notepad:
#Usage: plugin::RandomWeapons(MinModelNum, MaxModelNum, MyChance, MinShieldNum, MaxShieldNum, NoDualWield?, IgnoreClass? );
#Example: plugin::RandomWeapons(1, 11169, 50, 200, 230, 0, 0);
#MinModelNum - Minimum Model Number to use for selecting Primary/Offhand Weapons
#MaxModelNum - Maximum Model Number to use for selecting Primary/Offhand Weapons
#MyChance - The percent chance that the NPC will wield any weapons (1 - 100)
#MinShieldNum - Minimum Model Number to use for selecting Shields
#MaxShieldNum - Maximum Model Number to use for selecting Shields
#NoDualWield? - 1 = NPCs won't dual wield or use shield, 0 = They have a chance to dual wield / shield
#IgnoreClass? - 1 = Weapon selection will choose any random model number within the range given, 0 = Smart weapon selection based on NPC class
sub RandomWeapons {
my $npc = plugin::val('$npc');
my $MinModelNum = $_[0];
my $MaxModelNum = $_[1];
my $MyChance = $_[2];
my $MinShieldNum = $_[3];
my $MaxShieldNum = $_[4];
my $NoDualWield = $_[5];
my $IgnoreClass = $_[6];
%WeaponModels = (
#BEGIN Classic Weapon Models
1 => "1HS",
2 => "2HS",
3 => "1HS",
4 => "BOW",
5 => "1HP",
6 => "CASTER",
7 => "1HB",
8 => "2HB",
9 => "1HS",
10 => "OTHER", #Arrow
11 => "1HS", #SOE Fanfair Reward
12 => "STAFF", #SOE Fanfair Reward
13 => "STAFF", #SOE Fanfair Reward
14 => "1HB",
15 => "BARD",
16 => "1HP",
17 => "1HP",
18 => "1HB",
19 => "1HB",
20 => "1HP",
21 => "BARD",
22 => "1HS",
23 => "2HS",
24 => "2HB",
25 => "2HS",
26 => "1HS",
27 => "CASTER",
28 => "CASTER",
29 => "STAFF",
30 => "2HP",
31 => "1HB",
32 => "OTHER", #Broom
33 => "1HB",
34 => "1HS",
35 => "1HB",
36 => "OTHER", #Torch
37 => "1HB",
38 => "OTHER", #Fishing Pole
39 => "2HS",
40 => "1HS",
41 => "1HS",
42 => "1HS",
43 => "1HB",
44 => "1HS",
45 => "STAFF",
46 => "CASTER",
47 => "CASTER",
48 => "OTHER", #Lantern
49 => "1HB",
50 => "1HP",
51 => "1HB",
52 => "OTHER", #Shovel
53 => "2HS",
54 => "OTHER", #Cigar
55 => "OTHER", #Pipe
56 => "OTHER", #Mug
57 => "1HS",
58 => "1HS",
59 => "1HB",
60 => "1HS",
61 => "1HS",
62 => "1HS", #SoulFire
63 => "OTHER", #Small Bag
64 => "OTHER", #Large Bag
65 => "OTHER", #Scroll
66 => "TRADESKILL", #Forge
67 => "CASTER", #Voodoo Doll
68 => "H2H",
69 => "TRADESKILL", #Oven
70 => "TRADESKILL", #Brew Barrel
71 => "H2H",
72 => "CASTER",
73 => "TRADESKILL", #Kiln
74 => "TRADESKILL", #Pottery Wheel
75 => "STAFF",
76 => "2HS", #Luclin Weapn Model
78 => "OTHER", #Fire
79 => "2HP",
80 => "2HS",
81 => "1HS",
82 => "1HS",
83 => "2HS",
84 => "2HS",
85 => "1HS",
86 => "2HS",
87 => "1HS",
#END Classic Weapon Models
#BEGIN Kunark Weapon Models
88 => "2HS",
89 => "1HS",
90 => "1HS",
91 => "H2H",
92 => "2HP",
93 => "2HS",
94 => "H2H",
95 => "2HS",
96 => "CASTER", #Added for special quest later
97 => "1HS", #GM Sword
98 => "H2H",
99 => "1HS",
100 => "1HS",
101 => "2HB",
102 => "1HB",
103 => "2HP",
104 => "1HS",
105 => "1HS",
106 => "2HS",
107 => "1HS",
108 => "1HS",
109 => "1HS",
110 => "2HS",
111 => "2HB",
112 => "1HB",
113 => "1HS",
115 => "1HB",
117 => "2HB",
118 => "1HP",
119 => "1HP",
120 => "1HS",
121 => "1HS",
122 => "STAFF",
123 => "STAFF",
124 => "2HB",
125 => "STAFF",
126 => "STAFF",
127 => "STAFF",
128 => "TRADESKILL", #Loom
129 => "STAFF",
130 => "1HB",
131 => "1HS",
132 => "2HP",
133 => "CASTER",
134 => "CASTER",
135 => "H2H",
136 => "H2H",
137 => "BARD",
138 => "BARD",
139 => "1HP",
#BEGIN Epic 1.0s
140 => "1HP",
141 => "1HS",
142 => "1HS",
145 => "2HS",
146 => "2HS",
148 => "1HS",
149 => "1HS",
150 => "1HS",
151 => "CASTER",
153 => "STAFF",
154 => "2HP",
155 => "CASTER",
156 => "1HB",
157 => "CASTER",
160 => "2HS",
#END Epic 1.0s
#END Kunark Weapon Models
#BEGIN Velious Weapon Models
161 => "1HS",
162 => "1HS",
163 => "1HS",
164 => "1HS",
165 => "1HS",
166 => "2HS",
167 => "1HP",
168 => "1HS",
169 => "2HB",
170 => "1HS",
171 => "1HS",
172 => "2HP",
173 => "2HS",
174 => "1HS",
175 => "1HS",
176 => "2HS",
177 => "1HB",
178 => "2HB",
179 => "1HB",
180 => "1HB",
181 => "1HS",
182 => "1HS",
183 => "1HS",
184 => "1HS",
185 => "1HB",
186 => "STAFF",
187 => "2HP",
188 => "1HS",
189 => "1HB",
190 => "2HS",
191 => "1HS",
192 => "1HS",
193 => "1HB",
194 => "1HP",
195 => "1HP",
196 => "1HS",
197 => "2HP",
198 => "BOW",
199 => "BOW",
200 => "SHIELD",
201 => "SHIELD",
202 => "SHIELD",
203 => "SHIELD",
204 => "SHIELD",
205 => "SHIELD",
206 => "SHIELD",
207 => "SHIELD",
208 => "SHIELD",
209 => "SHIELD",
210 => "SHIELD",
211 => "SHIELD",
212 => "SHIELD",
213 => "SHIELD",
214 => "SHIELD",
215 => "SHIELD",
216 => "SHIELD",
217 => "SHIELD",
218 => "SHIELD",
219 => "SHIELD",
220 => "SHIELD",
221 => "SHIELD",
222 => "SHIELD",
223 => "SHIELD",
224 => "SHIELD",
225 => "SHIELD",
226 => "SHIELD",
227 => "SHIELD",
228 => "SHIELD",
250 => "OTHER", #Lollipop
300 => "2HS",
301 => "1HS",
308 => "STAFF",
#END Velious Weapon Models
#BEGIN Luclin Weapon Models
10000 => "1HS",
10001 => "2HB",
10002 => "1HS",
10003 => "1HB",
10004 => "2HS",
10005 => "1HS",
10006 => "1HP",
10007 => "1HB",
10008 => "1HB",
10009 => "1HP",
10010 => "1HS",
10011 => "2HS",
10012 => "1HB",
10013 => "2HB",
10014 => "1HS",
10015 => "H2H", #EPIC
10016 => "1HP",
10017 => "1HS",
10018 => "1HS",
10019 => "1HS",
10020 => "1HB",
10021 => "1HB",
10022 => "1HS",
10023 => "1HS",
10024 => "1HS",
10025 => "2HS",
10026 => "1HS",
10027 => "1HS",
10028 => "2HP",
10029 => "H2H", #EPIC
10100 => "2HP",
10101 => "2HP",
10103 => "1HP",
10104 => "1HP",
10105 => "1HP",
10106 => "2HP",
10107 => "1HP",
10108 => "2HP",
10109 => "1HP",
10200 => "STAFF",
10201 => "STAFF",
10202 => "STAFF",
10203 => "STAFF",
10300 => "BOW",
10301 => "BARD",
#END Luclin Weapon Models
#BEGIN PoP Weapon Models
#BEGIN PoP Gods Weapons
10400 => "1HB",
10401 => "2HS",
10402 => "2HP",
10403 => "STAFF",
10404 => "1HS",
10405 => "2HS",
10406 => "STAFF",
10407 => "STAFF",
10408 => "2HB",
10409 => "1HB",
10410 => "STAFF",
#END PoP Gods Weapons
10411 => "1HS",
10412 => "BOW",
10413 => "2HS",
10501 => "1HB",
10502 => "CASTER",
10503 => "CASTER",
10504 => "CASTER",
10505 => "STAFF",
10506 => "STAFF",
10507 => "STAFF",
10508 => "2HP",
10509 => "H2H",
10510 => "H2H",
10511 => "H2H",
10512 => "H2H",
10513 => "1HS",
10514 => "1HP",
10515 => "1HS",
10516 => "H2H",
10517 => "1HB",
10518 => "1HB",
10519 => "1HB",
10520 => "STAFF",
10521 => "STAFF",
10522 => "1HB",
10523 => "STAFF",
10524 => "1HB",
10525 => "CASTER",
10526 => "1HP",
10527 => "1HP",
10528 => "1HP",
10545 => "1HS",
10600 => "BARD",
10601 => "BARD",
10602 => "BARD",
10603 => "BARD",
10604 => "1HB",
10605 => "1HB",
10606 => "1HB",
10607 => "1HB",
10608 => "1HB",
10609 => "1HB",
10610 => "1HP",
10611 => "OTHER", #Snowball
10612 => "2HP",
10613 => "2HP",
10614 => "BOW",
10615 => "2HS",
10616 => "1HS",
10617 => "1HS",
10618 => "1HP",
10619 => "1HS",
10620 => "1HS",
10621 => "1HP",
10622 => "2HS",
10623 => "1HS",
10624 => "1HP",
10625 => "2HS",
10626 => "1HS",
10627 => "1HP",
10628 => "2HS",
10629 => "1HS",
10630 => "1HP",
10631 => "2HS",
10632 => "1HS",
10633 => "1HP",
10634 => "2HB",
10635 => "1HB",
10636 => "2HB",
10637 => "1HB",
10638 => "2HB",
10639 => "2HB",
10640 => "2HS",
10641 => "BOW",
10642 => "CASTER",
10643 => "STAFF",
10644 => "2HP",
10645 => "CASTER",
10646 => "CASTER",
10647 => "1HB",
10648 => "1HS",
10649 => "1HS",
10650 => "1HP",
10651 => "2HS",
10652 => "1HS",
10653 => "1HP",
10654 => "2HS",
10655 => "1HS",
10656 => "1HP",
10657 => "2HS",
10658 => "1HS",
10659 => "1HP",
10660 => "2HS",
10661 => "1HS",
10662 => "1HS",
10663 => "CASTER",
#END PoP Weapon Models
#BEGIN LoY Weapon Models
10664 => "SHIELD",
10665 => "SHIELD",
10666 => "SHIELD",
10667 => "SHIELD",
10668 => "SHIELD",
10669 => "SHIELD",
10670 => "SHIELD",
10671 => "SHIELD",
10672 => "1HB",
10673 => "1HS",
10674 => "1HS",
10675 => "2HB",
10676 => "2HS",
10677 => "STAFF",
10678 => "1HS",
10679 => "1HP",
10680 => "1HP",
10681 => "1HB",
10682 => "1HS",
10683 => "STAFF",
10685 => "2HS",
10686 => "1HS",
10687 => "1HP",
10688 => "1HB",
10689 => "1HP",
10690 => "1HP",
10691 => "SHIELD",
10692 => "1HP",
10693 => "1HP",
10694 => "1HS",
10695 => "CASTER",
10696 => "1HS",
10697 => "CASTER",
#END LoY Weapon Models
#BEGIN LDoN Weapon Models
10700 => "1HS",
10701 => "1HP",
10702 => "1HS",
10703 => "1HB",
10704 => "1HS",
10705 => "1HS",
10706 => "1HB",
10707 => "1HB",
10708 => "1HS",
10709 => "1HP",
10710 => "1HS",
10711 => "1HP",
10712 => "1HP",
#END LDoN Weapon Models
#BEGIN GoD Weapon Models
10713 => "1HB",
10714 => "TRADESKILL", #Augment Pool
10715 => "1HS",
10716 => "1HB",
10717 => "BOW",
10718 => "1HB",
10719 => "1HS",
10720 => "2HS",
10722 => "1HP",
10723 => "STAFF",
10724 => "OTHER", #Small Rock
10725 => "OTHER", #Chinese Star
10726 => "1HS",
10727 => "2HS", #Epic 1.5
10728 => "1HS",
10729 => "SHIELD",
10730 => "SHIELD",
10731 => "1HB",
10732 => "1HP",
10733 => "CASTER",
#BEGIN Epic 2.0s
10735 => "1HS",
10736 => "1HB",
10737 => "2HS",
10738 => "SHIELD",
10739 => "STAFF",
10740 => "STAFF",
10741 => "STAFF",
10742 => "H2H",
10743 => "STAFF",
10744 => "2HS",
10745 => "1HS",
10746 => "1HP",
10747 => "2HS",
10748 => "1HB",
10749 => "1HS",
10750 => "STAFF",
#END Epic 2.0s
#BEGIN Epic 1.5s
10751 => "1HS",
10752 => "1HB",
10753 => "2HS",
10754 => "SHIELD",
10755 => "STAFF",
10756 => "STAFF",
10757 => "STAFF",
10758 => "H2H",
10759 => "STAFF",
10760 => "2HS",
10761 => "1HS",
10762 => "1HP",
10763 => "2HS",
10764 => "1HB",
10765 => "1HS",
10766 => "STAFF",
#END Epic 1.5s
#BEGIN OOW+ Weapon Models
10767 => "CASTER",
10768 => "1HB",
10769 => "1HP",
10770 => "1HS",
10771 => "1HS",
10772 => "SHIELD",
10773 => "2HS",
10774 => "STAFF",
10775 => "SHIELD",
10776 => "2HS",
10777 => "1HB",
10778 => "1HS",
10779 => "1HS",
10780 => "1HS",
10781 => "SHIELD",
10782 => "2HP",
10783 => "H2H",
10784 => "1HS",
10785 => "1HS",
10786 => "2HS",
10787 => "1HS",
10788 => "CASTER",
10789 => "BOW",
10790 => "SHIELD",
10791 => "1HS",
10792 => "2HS",
10793 => "1HP",
10794 => "STAFF",
10795 => "1HB",
10796 => "2HB",
10797 => "2HS",
10798 => "1HP",
10799 => "1HP",
10806 => "CASTER",
10807 => "CASTER",
10808 => "CASTER",
10810 => "2HS",
10811 => "1HS",
10812 => "2HS",
10813 => "1HP",
10814 => "1HP",
10815 => "1HP",
10816 => "1HP",
10817 => "1HB",
10818 => "2HB",
10819 => "CASTER",
10820 => "STAFF",
10821 => "1HS",
10822 => "CASTER",
10823 => "STAFF",
10824 => "1HP",
10825 => "1HS",
10826 => "SHIELD",
10827 => "SHIELD",
10828 => "STAFF",
10829 => "1HB",
10830 => "2HB",
10831 => "1HP",
10832 => "SHIELD",
10833 => "SHIELD",
10834 => "1HS",
10835 => "2HS",
10836 => "CASTER",
10837 => "CASTER",
10838 => "1HB",
10839 => "2HB",
10840 => "1HS",
10841 => "2HS",
10842 => "H2H",
#END TITANIUM Weapon Models
#BEGIN SoF Weapon Models
10843 => "OTHER", #Broom
10844 => "1HP",
10845 => "2HB",
10846 => "1HB",
10847 => "2HB",
10848 => "1HS",
10849 => "SHIELD",
10850 => "SHIELD",
10851 => "OTHER", #Shovel
10852 => "STAFF",
10853 => "STAFF",
10854 => "CASTER",
10855 => "1HS",
10856 => "2HS",
10857 => "SHIELD",
10858 => "SHIELD",
10859 => "1HB",
10860 => "1HS",
10861 => "OTHER", #Beer Mug
10862 => "STAFF",
10866 => "1HP",
10867 => "1HS",
10868 => "1HP",
10869 => "2HS",
10870 => "1HP",
10871 => "2HS",
10872 => "1HS",
10873 => "2HS",
10874 => "1HS",
10875 => "2HS",
10876 => "1HS",
10877 => "2HS",
10878 => "1HS",
10879 => "2HS",
10880 => "1HS",
10881 => "2HS",
10882 => "1HP",
10883 => "1HS",
10884 => "2HS",
10885 => "1HS",
10886 => "2HS",
10887 => "1HS",
10888 => "2HS",
10889 => "1HS",
10890 => "2HS",
10891 => "1HS",
10892 => "2HS",
10893 => "1HS",
10894 => "2HS",
10895 => "1HS",
10896 => "2HS",
10897 => "1HS",
10898 => "2HS",
10899 => "1HS",
10900 => "2HS",
10901 => "1HS",
10902 => "2HS",
10903 => "1HP",
10904 => "1HS",
10905 => "2HS",
10906 => "1HS",
10907 => "2HS",
10908 => "1HS",
10909 => "2HS",
10910 => "1HP",
10911 => "1HP",
10912 => "1HP",
10913 => "1HP",
10914 => "1HP",
10915 => "1HP",
10916 => "1HP",
10917 => "1HP",
10918 => "1HP",
10919 => "1HP",
10920 => "1HS",
10921 => "2HS",
10922 => "1HS",
10923 => "2HS",
10924 => "1HB",
10925 => "2HB",
10926 => "1HB",
10927 => "2HB",
10928 => "1HB",
10929 => "2HB",
10930 => "1HB",
10931 => "2HB",
10932 => "1HB",
10933 => "2HB",
10934 => "1HB",
10935 => "2HB",
10936 => "1HB",
10937 => "2HB",
10938 => "STAFF",
10939 => "CASTER",
10940 => "STAFF",
10941 => "STAFF",
10942 => "STAFF",
10943 => "1HB",
10944 => "STAFF",
10945 => "1HB",
10946 => "1HB",
10947 => "2HB",
10948 => "1HB",
10949 => "2HB",
10950 => "2HP",
10951 => "2HP",
10952 => "2HP",
10953 => "2HP",
10954 => "2HP",
10955 => "2HP",
10956 => "2HP",
10957 => "2HP",
10958 => "1HP",
10959 => "STAFF",
10960 => "SHIELD",
10961 => "SHIELD",
10962 => "SHIELD",
10963 => "SHIELD",
10964 => "SHIELD",
10965 => "SHIELD",
10966 => "SHIELD",
10967 => "SHIELD",
10968 => "SHIELD",
10969 => "SHIELD",
10970 => "SHIELD",
10971 => "SHIELD",
10972 => "SHIELD",
10973 => "SHIELD",
10974 => "SHIELD",
10975 => "SHIELD",
10976 => "SHIELD",
10977 => "SHIELD",
10978 => "SHIELD",
10979 => "SHIELD",
10980 => "SHIELD",
10981 => "SHIELD",
10982 => "SHIELD",
10983 => "SHIELD",
10984 => "SHIELD",
10985 => "SHIELD",
10986 => "SHIELD",
10987 => "SHIELD",
10988 => "SHIELD",
10989 => "SHIELD",
10990 => "SHIELD",
10991 => "SHIELD",
10992 => "SHIELD",
10993 => "SHIELD",
10994 => "SHIELD",
10995 => "SHIELD",
10996 => "SHIELD",
10997 => "BOW",
10998 => "BOW",
10999 => "1HB",
11001 => "SHIELD",
11002 => "SHIELD",
11003 => "SHIELD",
11013 => "SHIELD",
11017 => "SHIELD",
11018 => "SHIELD",
11019 => "SHIELD",
11020 => "SHIELD",
11031 => "OTHER", #Torch
11032 => "STAFF",
11033 => "OTHER", #Hoe
11034 => "OTHER", #Rake
11035 => "OTHER", #Pitch Fork
11036 => "OTHER", #Bucket full of Dirt
11037 => "OTHER", #Bucket full of Apples
11038 => "OTHER", #Bucket full of Rocks
11039 => "OTHER", #Bucket full of Gems
11040 => "OTHER", #Bucket full of Ash?
11041 => "1HP",
11042 => "1HS",
11043 => "2HS",
11044 => "1HB",
11045 => "2HB",
11046 => "1HS",
11047 => "2HS",
11048 => "SHIELD",
11049 => "SHIELD",
11050 => "H2H",
11051 => "H2H",
11052 => "1HB",
11053 => "1HS",
11054 => "OTHER", #Box
11055 => "OTHER", #Rock
11056 => "OTHER", #Bush
11057 => "OTHER", #Rock
11058 => "OTHER", #3 Bones
11059 => "OTHER", #3 Large Books
11060 => "OTHER", #Green Leaf
11061 => "OTHER", #Mushroom
11062 => "OTHER", #Box
11063 => "OTHER", #Box
11064 => "OTHER", #Rock
11065 => "OTHER", #Rock
11066 => "OTHER", #Bush
11067 => "OTHER", #Bush
11068 => "OTHER", #Rock
11069 => "OTHER", #Red Apple
11070 => "OTHER", #Green Apple
11071 => "OTHER", #Pumpkin
11072 => "OTHER", #3 Bones
11073 => "OTHER", #3 Large Books
11074 => "OTHER", #White Branch
11075 => "OTHER", #Palm Tree Leaf
11076 => "OTHER", #Bamboo
11077 => "OTHER", #Brown Branch
11078 => "OTHER", #Dead Branch
11079 => "OTHER", #Brown Leaf
11080 => "OTHER", #Red Maple Leaf
11081 => "OTHER", #Yellow Mushroom
11082 => "OTHER", #Green Mushroom
11083 => "OTHER", #Brown Mushroom
11084 => "OTHER", #Green Branch
11085 => "SHIELD",
11086 => "SHIELD",
11087 => "CASTER",
11088 => "1HS",
11089 => "1HS",
11090 => "1HS",
11091 => "1HP",
11092 => "2HP",
11093 => "1HP",
11094 => "1HS",
11095 => "1HP",
11096 => "OTHER", #Rolling Pin
11097 => "STAFF",
11098 => "CASTER",
11099 => "H2H",
11100 => "2HS",
11101 => "1HP",
11102 => "SHIELD",
11103 => "SHIELD",
11104 => "STAFF",
11105 => "1HS",
11106 => "1HB",
11107 => "2HB",
11108 => "1HS",
11109 => "2HS",
11110 => "SHIELD",
11111 => "SHIELD",
11112 => "1HP",
11113 => "1HS",
11114 => "1HP",
11115 => "1HS",
11116 => "1HS",
11117 => "STAFF",
11118 => "OTHER", #Fish
11119 => "2HP",
11120 => "H2H",
11121 => "OTHER", #Gold Coin
11122 => "OTHER", #Silver Coin
11123 => "OTHER", #Crystal
11124 => "OTHER", #Crystal
11129 => "1HS",
11130 => "2HB",
11131 => "1HP",
11132 => "2HS",
11133 => "2HB",
11139 => "H2H",
11140 => "SHIELD",
11144 => "SHIELD",
11154 => "OTHER", #Large Crystal
11155 => "OTHER", #Large Crystal
11156 => "OTHER", #Large Crystal
11157 => "OTHER", #Large Crystal
11158 => "OTHER", #Large Crystal
11159 => "OTHER", #Large Crystal
11160 => "OTHER", #Large Crystal
11161 => "OTHER", #Large Crystal
11162 => "OTHER", #Small Crystal
11163 => "OTHER", #Small Crystal
11164 => "OTHER", #Small Crystal
11165 => "OTHER", #Small Crystal
11166 => "OTHER", #Small Crystal
11167 => "OTHER", #Small Crystal
11168 => "OTHER", #Small Crystal
11169 => "OTHER" #Small Crystal
#END SoF Weapon Models
);
%ClassPrimaryTypes = (
1 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Warrior
2 => [ "1HB", "2HB", "STAFF", "CASTER" ], #Cleric
3 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Paladin
4 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Ranger
5 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Shadow Knight
6 => [ "1HS", "1HB", "2HB", "STAFF", "CASTER" ], #Druid
7 => [ "1HB", "2HB", "H2H", "STAFF" ], #Monk
8 => [ "1HS", "1HB", "1HP", "BARD" ], #Bard
9 => [ "1HS", "1HB", "1HP" ], #Rogue
10 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Shaman
11 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Necromancer
12 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Wizard
13 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Mage
14 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Enchanter
15 => [ "1HB", "2HB", "1HP", "H2H", "STAFF" ], #Beastlord
16 => [ "2HS", "2HB", "2HP" ] #Berserker
);
%ClassSecondaryTypes = (
1 => [ "1HS", "1HB", "1HP", "SHIELD" ], #Warrior
2 => [ "CASTER", "SHIELD" ], #Cleric
3 => [ "SHIELD" ], #Paladin
4 => [ "1HS", "1HB", "1HP" ], #Ranger
5 => [ "SHIELD" ], #Shadow Knight
6 => [ "CASTER", "SHIELD" ], #Druid
7 => [ "1HB", "2HB", "H2H", "STAFF" ], #Monk
8 => [ "1HS", "1HB", "1HP" ], #Bard
9 => [ "1HS", "1HB", "1HP" ], #Rogue
10 => [ "CASTER", "SHIELD" ], #Shaman
11 => [ "CASTER", "SHIELD" ], #Necromancer
12 => [ "CASTER", "SHIELD" ], #Wizard
13 => [ "CASTER", "SHIELD" ], #Mage
14 => [ "CASTER", "SHIELD" ], #Enchanter
15 => [ "1HB", "1HP", "H2H" ], #Beastlord
16 => [ "NONE" ] #Berserker
);
%AttackTypes = (
"1HS" => 1,
"2HS" => 3,
"1HB" => 0,
"2HB" => 2,
"1HP" => 36,
"2HP" => 36,
"ARCHERY" => 7,
"THROWING" => 51,
"H2H" => 28,
"CASTER" => 28,
"SHIELD" => 28,
"BARD" => 28
);
my $RandChance = plugin::RandomRange(1, 100);
if($RandChance <= $MyChance || $MyChance == 0) {
if(!$IgnoreClass) {
my $NPCClass = $npc->GetClass();
my $PrimMax = $#{$ClassPrimaryTypes{$NPCClass}};
my $PrimTypeNum = plugin::RandomRange(0, $PrimMax + 1);
my $PrimType = $ClassPrimaryTypes{$NPCClass}[$PrimTypeNum];
my $SecMax = $#{$ClassSecondaryTypes{$NPCClass}};
my $SecTypeNum = plugin::RandomRange(0, $SecMax + 1);
my $SecType = $ClassSecondaryTypes{$NPCClass}[$SecTypeNum];
my @AvailPrims = (); #clear out the array of Available Primary Weapon Models
my @AvailSecs = (); #clear out the array of Available Secondary Weapon Models
foreach $k (keys (%WeaponModels)) {
if($k >= $MinModelNum && $k <= $MaxModelNum) {
if($WeaponModels{$k} eq $PrimType){
push(@AvailPrims, $k);
}
}
if($ClassSecondaryTypes{$NPCClass}[$SecType] eq "SHIELD" && $MinShieldNum && $MaxShieldNum) {
if($k >= $MinShieldNum && $k <= $MaxShieldNum) {
if($WeaponModels{$k} eq $SecType){
push(@AvailSecs, $k);
}
}
}
else {
if($k >= $MinModelNum && $k <= $MaxModelNum) {
if($WeaponModels{$k} eq $SecType){
push(@AvailSecs, $k);
}
}
}
}
my $TotalAvailPrims = @AvailPrims;
my $TotalAvailSecs = @AvailSecs;
if($TotalAvailPrims) {
my $PrimSelect = plugin::RandomRange(0, $TotalAvailPrims);
quest::wearchange(7, $AvailPrims[$PrimSelect]);
my $PrimSkill = $AttackTypes{$PrimType};
$npc->SetPrimSkill($PrimSkill);
my $chance = quest::ChooseRandom(1,2);
if(!$NoDualWield == 1 && $chance == 2 && $PrimType ne "2HS" && $PrimType ne "2HB" && $PrimType ne "2HP" && $PrimType ne "STAFF" && $PrimType ne "BARD" && $NPCClass != 16) {
my $SecSelect = plugin::RandomRange(0, $TotalAvailSecs);
quest::wearchange(8, $AvailSecs[$SecSelect]);
my $SecSkill = $AttackTypes{$SecType};
$npc->SetSecSkill($SecSkill);
}
}
}
else {
if ($MinModelNum && $MaxModelNum) {
my $PrimSelect = plugin::RandomRange($MinModelNum, $MaxModelNum);
quest::wearchange(7, $PrimSelect);
if(!$NoDualWield) {
my $chance2 = quest::ChooseRandom(1,2,3);
if ($chance2 == 1) { # if True, then choose a secondary weapon to use
my $SecSelect = plugin::RandomRange($MinModelNum, $MaxModelNum);
quest::wearchange(8, $SecSelect);
}
elsif ($chance2 == 2 && $MinShieldNum && $MaxShieldNum) { # if True, then choose a shield to use
my $SecSelect = plugin::RandomRange($MinShieldNum, $MaxShieldNum);
quest::wearchange(8, $SecSelect);
}
}
}
}
}
}
#Usage: plugin::SetWeapons(PrimaryModel, SecondaryModel, EnableRemoving? );
#Example: plugin::SetWeapons(11, 200);
sub SetWeapons {
my $npc = plugin::val('$npc');
my $PrimaryModel = $_[0];
my $SecondaryModel = $_[1];
my $EnableRemoving = $_[2];
%WeaponModels = (
#BEGIN Classic Weapon Models
1 => "1HS",
2 => "2HS",
3 => "1HS",
4 => "BOW",
5 => "1HP",
6 => "CASTER",
7 => "1HB",
8 => "2HB",
9 => "1HS",
10 => "OTHER", #Arrow
11 => "1HS", #SOE Fanfair Reward
12 => "STAFF", #SOE Fanfair Reward
13 => "STAFF", #SOE Fanfair Reward
14 => "1HB",
15 => "BARD",
16 => "1HP",
17 => "1HP",
18 => "1HB",
19 => "1HB",
20 => "1HP",
21 => "BARD",
22 => "1HS",
23 => "2HS",
24 => "2HB",
25 => "2HS",
26 => "1HS",
27 => "CASTER",
28 => "CASTER",
29 => "STAFF",
30 => "2HP",
31 => "1HB",
32 => "OTHER", #Broom
33 => "1HB",
34 => "1HS",
35 => "1HB",
36 => "OTHER", #Torch
37 => "1HB",
38 => "OTHER", #Fishing Pole
39 => "2HS",
40 => "1HS",
41 => "1HS",
42 => "1HS",
43 => "1HB",
44 => "1HS",
45 => "STAFF",
46 => "CASTER",
47 => "CASTER",
48 => "OTHER", #Lantern
49 => "1HB",
50 => "1HP",
51 => "1HB",
52 => "OTHER", #Shovel
53 => "2HS",
54 => "OTHER", #Cigar
55 => "OTHER", #Pipe
56 => "OTHER", #Mug
57 => "1HS",
58 => "1HS",
59 => "1HB",
60 => "1HS",
61 => "1HS",
62 => "1HS", #SoulFire
63 => "OTHER", #Small Bag
64 => "OTHER", #Large Bag
65 => "OTHER", #Scroll
66 => "TRADESKILL", #Forge
67 => "CASTER", #Voodoo Doll
68 => "H2H",
69 => "TRADESKILL", #Oven
70 => "TRADESKILL", #Brew Barrel
71 => "H2H",
72 => "CASTER",
73 => "TRADESKILL", #Kiln
74 => "TRADESKILL", #Pottery Wheel
75 => "STAFF",
76 => "2HS", #Luclin Weapn Model
78 => "OTHER", #Fire
79 => "2HP",
80 => "2HS",
81 => "1HS",
82 => "1HS",
83 => "2HS",
84 => "2HS",
85 => "1HS",
86 => "2HS",
87 => "1HS",
#END Classic Weapon Models
#BEGIN Kunark Weapon Models
88 => "2HS",
89 => "1HS",
90 => "1HS",
91 => "H2H",
92 => "2HP",
93 => "2HS",
94 => "H2H",
95 => "2HS",
96 => "CASTER", #Added for special quest later
97 => "1HS", #GM Sword
98 => "H2H",
99 => "1HS",
100 => "1HS",
101 => "2HB",
102 => "1HB",
103 => "2HP",
104 => "1HS",
105 => "1HS",
106 => "2HS",
107 => "1HS",
108 => "1HS",
109 => "1HS",
110 => "2HS",
111 => "2HB",
112 => "1HB",
113 => "1HS",
115 => "1HB",
117 => "2HB",
118 => "1HP",
119 => "1HP",
120 => "1HS",
121 => "1HS",
122 => "STAFF",
123 => "STAFF",
124 => "2HB",
125 => "STAFF",
126 => "STAFF",
127 => "STAFF",
128 => "TRADESKILL", #Loom
129 => "STAFF",
130 => "1HB",
131 => "1HS",
132 => "2HP",
133 => "CASTER",
134 => "CASTER",
135 => "H2H",
136 => "H2H",
137 => "BARD",
138 => "BARD",
139 => "1HP",
#BEGIN Epic 1.0s
140 => "1HP",
141 => "1HS",
142 => "1HS",
145 => "2HS",
146 => "2HS",
148 => "1HS",
149 => "1HS",
150 => "1HS",
151 => "CASTER",
153 => "STAFF",
154 => "2HP",
155 => "CASTER",
156 => "1HB",
157 => "CASTER",
160 => "2HS",
#END Epic 1.0s
#END Kunark Weapon Models
#BEGIN Velious Weapon Models
161 => "1HS",
162 => "1HS",
163 => "1HS",
164 => "1HS",
165 => "1HS",
166 => "2HS",
167 => "1HP",
168 => "1HS",
169 => "2HB",
170 => "1HS",
171 => "1HS",
172 => "2HP",
173 => "2HS",
174 => "1HS",
175 => "1HS",
176 => "2HS",
177 => "1HB",
178 => "2HB",
179 => "1HB",
180 => "1HB",
181 => "1HS",
182 => "1HS",
183 => "1HS",
184 => "1HS",
185 => "1HB",
186 => "STAFF",
187 => "2HP",
188 => "1HS",
189 => "1HB",
190 => "2HS",
191 => "1HS",
192 => "1HS",
193 => "1HB",
194 => "1HP",
195 => "1HP",
196 => "1HS",
197 => "2HP",
198 => "BOW",
199 => "BOW",
200 => "SHIELD",
201 => "SHIELD",
202 => "SHIELD",
203 => "SHIELD",
204 => "SHIELD",
205 => "SHIELD",
206 => "SHIELD",
207 => "SHIELD",
208 => "SHIELD",
209 => "SHIELD",
210 => "SHIELD",
211 => "SHIELD",
212 => "SHIELD",
213 => "SHIELD",
214 => "SHIELD",
215 => "SHIELD",
216 => "SHIELD",
217 => "SHIELD",
218 => "SHIELD",
219 => "SHIELD",
220 => "SHIELD",
221 => "SHIELD",
222 => "SHIELD",
223 => "SHIELD",
224 => "SHIELD",
225 => "SHIELD",
226 => "SHIELD",
227 => "SHIELD",
228 => "SHIELD",
250 => "OTHER", #Lollipop
300 => "2HS",
301 => "1HS",
308 => "STAFF",
#END Velious Weapon Models
#BEGIN Luclin Weapon Models
10000 => "1HS",
10001 => "2HB",
10002 => "1HS",
10003 => "1HB",
10004 => "2HS",
10005 => "1HS",
10006 => "1HP",
10007 => "1HB",
10008 => "1HB",
10009 => "1HP",
10010 => "1HS",
10011 => "2HS",
10012 => "1HB",
10013 => "2HB",
10014 => "1HS",
10015 => "H2H", #EPIC
10016 => "1HP",
10017 => "1HS",
10018 => "1HS",
10019 => "1HS",
10020 => "1HB",
10021 => "1HB",
10022 => "1HS",
10023 => "1HS",
10024 => "1HS",
10025 => "2HS",
10026 => "1HS",
10027 => "1HS",
10028 => "2HP",
10029 => "H2H", #EPIC
10100 => "2HP",
10101 => "2HP",
10103 => "1HP",
10104 => "1HP",
10105 => "1HP",
10106 => "2HP",
10107 => "1HP",
10108 => "2HP",
10109 => "1HP",
10200 => "STAFF",
10201 => "STAFF",
10202 => "STAFF",
10203 => "STAFF",
10300 => "BOW",
10301 => "BARD",
#END Luclin Weapon Models
#BEGIN PoP Weapon Models
#BEGIN PoP Gods Weapons
10400 => "1HB",
10401 => "2HS",
10402 => "2HP",
10403 => "STAFF",
10404 => "1HS",
10405 => "2HS",
10406 => "STAFF",
10407 => "STAFF",
10408 => "2HB",
10409 => "1HB",
10410 => "STAFF",
#END PoP Gods Weapons
10411 => "1HS",
10412 => "BOW",
10413 => "2HS",
10501 => "1HB",
10502 => "CASTER",
10503 => "CASTER",
10504 => "CASTER",
10505 => "STAFF",
10506 => "STAFF",
10507 => "STAFF",
10508 => "2HP",
10509 => "H2H",
10510 => "H2H",
10511 => "H2H",
10512 => "H2H",
10513 => "1HS",
10514 => "1HP",
10515 => "1HS",
10516 => "H2H",
10517 => "1HB",
10518 => "1HB",
10519 => "1HB",
10520 => "STAFF",
10521 => "STAFF",
10522 => "1HB",
10523 => "STAFF",
10524 => "1HB",
10525 => "CASTER",
10526 => "1HP",
10527 => "1HP",
10528 => "1HP",
10545 => "1HS",
10600 => "BARD",
10601 => "BARD",
10602 => "BARD",
10603 => "BARD",
10604 => "1HB",
10605 => "1HB",
10606 => "1HB",
10607 => "1HB",
10608 => "1HB",
10609 => "1HB",
10610 => "1HP",
10611 => "OTHER", #Snowball
10612 => "2HP",
10613 => "2HP",
10614 => "BOW",
10615 => "2HS",
10616 => "1HS",
10617 => "1HS",
10618 => "1HP",
10619 => "1HS",
10620 => "1HS",
10621 => "1HP",
10622 => "2HS",
10623 => "1HS",
10624 => "1HP",
10625 => "2HS",
10626 => "1HS",
10627 => "1HP",
10628 => "2HS",
10629 => "1HS",
10630 => "1HP",
10631 => "2HS",
10632 => "1HS",
10633 => "1HP",
10634 => "2HB",
10635 => "1HB",
10636 => "2HB",
10637 => "1HB",
10638 => "2HB",
10639 => "2HB",
10640 => "2HS",
10641 => "BOW",
10642 => "CASTER",
10643 => "STAFF",
10644 => "2HP",
10645 => "CASTER",
10646 => "CASTER",
10647 => "1HB",
10648 => "1HS",
10649 => "1HS",
10650 => "1HP",
10651 => "2HS",
10652 => "1HS",
10653 => "1HP",
10654 => "2HS",
10655 => "1HS",
10656 => "1HP",
10657 => "2HS",
10658 => "1HS",
10659 => "1HP",
10660 => "2HS",
10661 => "1HS",
10662 => "1HS",
10663 => "CASTER",
#END PoP Weapon Models
#BEGIN LoY Weapon Models
10664 => "SHIELD",
10665 => "SHIELD",
10666 => "SHIELD",
10667 => "SHIELD",
10668 => "SHIELD",
10669 => "SHIELD",
10670 => "SHIELD",
10671 => "SHIELD",
10672 => "1HB",
10673 => "1HS",
10674 => "1HS",
10675 => "2HB",
10676 => "2HS",
10677 => "STAFF",
10678 => "1HS",
10679 => "1HP",
10680 => "1HP",
10681 => "1HB",
10682 => "1HS",
10683 => "STAFF",
10685 => "2HS",
10686 => "1HS",
10687 => "1HP",
10688 => "1HB",
10689 => "1HP",
10690 => "1HP",
10691 => "SHIELD",
10692 => "1HP",
10693 => "1HP",
10694 => "1HS",
10695 => "CASTER",
10696 => "1HS",
10697 => "CASTER",
#END LoY Weapon Models
#BEGIN LDoN Weapon Models
10700 => "1HS",
10701 => "1HP",
10702 => "1HS",
10703 => "1HB",
10704 => "1HS",
10705 => "1HS",
10706 => "1HB",
10707 => "1HB",
10708 => "1HS",
10709 => "1HP",
10710 => "1HS",
10711 => "1HP",
10712 => "1HP",
#END LDoN Weapon Models
#BEGIN GoD Weapon Models
10713 => "1HB",
10714 => "TRADESKILL", #Augment Pool
10715 => "1HS",
10716 => "1HB",
10717 => "BOW",
10718 => "1HB",
10719 => "1HS",
10720 => "2HS",
10722 => "1HP",
10723 => "STAFF",
10724 => "OTHER", #Small Rock
10725 => "OTHER", #Chinese Star
10726 => "1HS",
10727 => "2HS", #Epic 1.5
10728 => "1HS",
10729 => "SHIELD",
10730 => "SHIELD",
10731 => "1HB",
10732 => "1HP",
10733 => "CASTER",
#BEGIN Epic 2.0s
10735 => "1HS",
10736 => "1HB",
10737 => "2HS",
10738 => "SHIELD",
10739 => "STAFF",
10740 => "STAFF",
10741 => "STAFF",
10742 => "H2H",
10743 => "STAFF",
10744 => "2HS",
10745 => "1HS",
10746 => "1HP",
10747 => "2HS",
10748 => "1HB",
10749 => "1HS",
10750 => "STAFF",
#END Epic 2.0s
#BEGIN Epic 1.5s
10751 => "1HS",
10752 => "1HB",
10753 => "2HS",
10754 => "SHIELD",
10755 => "STAFF",
10756 => "STAFF",
10757 => "STAFF",
10758 => "H2H",
10759 => "STAFF",
10760 => "2HS",
10761 => "1HS",
10762 => "1HP",
10763 => "2HS",
10764 => "1HB",
10765 => "1HS",
10766 => "STAFF",
#END Epic 1.5s
#BEGIN OOW+ Weapon Models
10767 => "CASTER",
10768 => "1HB",
10769 => "1HP",
10770 => "1HS",
10771 => "1HS",
10772 => "SHIELD",
10773 => "2HS",
10774 => "STAFF",
10775 => "SHIELD",
10776 => "2HS",
10777 => "1HB",
10778 => "1HS",
10779 => "1HS",
10780 => "1HS",
10781 => "SHIELD",
10782 => "2HP",
10783 => "H2H",
10784 => "1HS",
10785 => "1HS",
10786 => "2HS",
10787 => "1HS",
10788 => "CASTER",
10789 => "BOW",
10790 => "SHIELD",
10791 => "1HS",
10792 => "2HS",
10793 => "1HP",
10794 => "STAFF",
10795 => "1HB",
10796 => "2HB",
10797 => "2HS",
10798 => "1HP",
10799 => "1HP",
10806 => "CASTER",
10807 => "CASTER",
10808 => "CASTER",
10810 => "2HS",
10811 => "1HS",
10812 => "2HS",
10813 => "1HP",
10814 => "1HP",
10815 => "1HP",
10816 => "1HP",
10817 => "1HB",
10818 => "2HB",
10819 => "CASTER",
10820 => "STAFF",
10821 => "1HS",
10822 => "CASTER",
10823 => "STAFF",
10824 => "1HP",
10825 => "1HS",
10826 => "SHIELD",
10827 => "SHIELD",
10828 => "STAFF",
10829 => "1HB",
10830 => "2HB",
10831 => "1HP",
10832 => "SHIELD",
10833 => "SHIELD",
10834 => "1HS",
10835 => "2HS",
10836 => "CASTER",
10837 => "CASTER",
10838 => "1HB",
10839 => "2HB",
10840 => "1HS",
10841 => "2HS",
10842 => "H2H",
#END TITANIUM Weapon Models
#BEGIN SoF Weapon Models
10843 => "OTHER", #Broom
10844 => "1HP",
10845 => "2HB",
10846 => "1HB",
10847 => "2HB",
10848 => "1HS",
10849 => "SHIELD",
10850 => "SHIELD",
10851 => "OTHER", #Shovel
10852 => "STAFF",
10853 => "STAFF",
10854 => "CASTER",
10855 => "1HS",
10856 => "2HS",
10857 => "SHIELD",
10858 => "SHIELD",
10859 => "1HB",
10860 => "1HS",
10861 => "OTHER", #Beer Mug
10862 => "STAFF",
10866 => "1HP",
10867 => "1HS",
10868 => "1HP",
10869 => "2HS",
10870 => "1HP",
10871 => "2HS",
10872 => "1HS",
10873 => "2HS",
10874 => "1HS",
10875 => "2HS",
10876 => "1HS",
10877 => "2HS",
10878 => "1HS",
10879 => "2HS",
10880 => "1HS",
10881 => "2HS",
10882 => "1HP",
10883 => "1HS",
10884 => "2HS",
10885 => "1HS",
10886 => "2HS",
10887 => "1HS",
10888 => "2HS",
10889 => "1HS",
10890 => "2HS",
10891 => "1HS",
10892 => "2HS",
10893 => "1HS",
10894 => "2HS",
10895 => "1HS",
10896 => "2HS",
10897 => "1HS",
10898 => "2HS",
10899 => "1HS",
10900 => "2HS",
10901 => "1HS",
10902 => "2HS",
10903 => "1HP",
10904 => "1HS",
10905 => "2HS",
10906 => "1HS",
10907 => "2HS",
10908 => "1HS",
10909 => "2HS",
10910 => "1HP",
10911 => "1HP",
10912 => "1HP",
10913 => "1HP",
10914 => "1HP",
10915 => "1HP",
10916 => "1HP",
10917 => "1HP",
10918 => "1HP",
10919 => "1HP",
10920 => "1HS",
10921 => "2HS",
10922 => "1HS",
10923 => "2HS",
10924 => "1HB",
10925 => "2HB",
10926 => "1HB",
10927 => "2HB",
10928 => "1HB",
10929 => "2HB",
10930 => "1HB",
10931 => "2HB",
10932 => "1HB",
10933 => "2HB",
10934 => "1HB",
10935 => "2HB",
10936 => "1HB",
10937 => "2HB",
10938 => "STAFF",
10939 => "CASTER",
10940 => "STAFF",
10941 => "STAFF",
10942 => "STAFF",
10943 => "1HB",
10944 => "STAFF",
10945 => "1HB",
10946 => "1HB",
10947 => "2HB",
10948 => "1HB",
10949 => "2HB",
10950 => "2HP",
10951 => "2HP",
10952 => "2HP",
10953 => "2HP",
10954 => "2HP",
10955 => "2HP",
10956 => "2HP",
10957 => "2HP",
10958 => "1HP",
10959 => "STAFF",
10960 => "SHIELD",
10961 => "SHIELD",
10962 => "SHIELD",
10963 => "SHIELD",
10964 => "SHIELD",
10965 => "SHIELD",
10966 => "SHIELD",
10967 => "SHIELD",
10968 => "SHIELD",
10969 => "SHIELD",
10970 => "SHIELD",
10971 => "SHIELD",
10972 => "SHIELD",
10973 => "SHIELD",
10974 => "SHIELD",
10975 => "SHIELD",
10976 => "SHIELD",
10977 => "SHIELD",
10978 => "SHIELD",
10979 => "SHIELD",
10980 => "SHIELD",
10981 => "SHIELD",
10982 => "SHIELD",
10983 => "SHIELD",
10984 => "SHIELD",
10985 => "SHIELD",
10986 => "SHIELD",
10987 => "SHIELD",
10988 => "SHIELD",
10989 => "SHIELD",
10990 => "SHIELD",
10991 => "SHIELD",
10992 => "SHIELD",
10993 => "SHIELD",
10994 => "SHIELD",
10995 => "SHIELD",
10996 => "SHIELD",
10997 => "BOW",
10998 => "BOW",
10999 => "1HB",
11001 => "SHIELD",
11002 => "SHIELD",
11003 => "SHIELD",
11013 => "SHIELD",
11017 => "SHIELD",
11018 => "SHIELD",
11019 => "SHIELD",
11020 => "SHIELD",
11031 => "OTHER", #Torch
11032 => "STAFF",
11033 => "OTHER", #Hoe
11034 => "OTHER", #Rake
11035 => "OTHER", #Pitch Fork
11036 => "OTHER", #Bucket full of Dirt
11037 => "OTHER", #Bucket full of Apples
11038 => "OTHER", #Bucket full of Rocks
11039 => "OTHER", #Bucket full of Gems
11040 => "OTHER", #Bucket full of Ash?
11041 => "1HP",
11042 => "1HS",
11043 => "2HS",
11044 => "1HB",
11045 => "2HB",
11046 => "1HS",
11047 => "2HS",
11048 => "SHIELD",
11049 => "SHIELD",
11050 => "H2H",
11051 => "H2H",
11052 => "1HB",
11053 => "1HS",
11054 => "OTHER", #Box
11055 => "OTHER", #Rock
11056 => "OTHER", #Bush
11057 => "OTHER", #Rock
11058 => "OTHER", #3 Bones
11059 => "OTHER", #3 Large Books
11060 => "OTHER", #Green Leaf
11061 => "OTHER", #Mushroom
11062 => "OTHER", #Box
11063 => "OTHER", #Box
11064 => "OTHER", #Rock
11065 => "OTHER", #Rock
11066 => "OTHER", #Bush
11067 => "OTHER", #Bush
11068 => "OTHER", #Rock
11069 => "OTHER", #Red Apple
11070 => "OTHER", #Green Apple
11071 => "OTHER", #Pumpkin
11072 => "OTHER", #3 Bones
11073 => "OTHER", #3 Large Books
11074 => "OTHER", #White Branch
11075 => "OTHER", #Palm Tree Leaf
11076 => "OTHER", #Bamboo
11077 => "OTHER", #Brown Branch
11078 => "OTHER", #Dead Branch
11079 => "OTHER", #Brown Leaf
11080 => "OTHER", #Red Maple Leaf
11081 => "OTHER", #Yellow Mushroom
11082 => "OTHER", #Green Mushroom
11083 => "OTHER", #Brown Mushroom
11084 => "OTHER", #Green Branch
11085 => "SHIELD",
11086 => "SHIELD",
11087 => "CASTER",
11088 => "1HS",
11089 => "1HS",
11090 => "1HS",
11091 => "1HP",
11092 => "2HP",
11093 => "1HP",
11094 => "1HS",
11095 => "1HP",
11096 => "OTHER", #Rolling Pin
11097 => "STAFF",
11098 => "CASTER",
11099 => "H2H",
11100 => "2HS",
11101 => "1HP",
11102 => "SHIELD",
11103 => "SHIELD",
11104 => "STAFF",
11105 => "1HS",
11106 => "1HB",
11107 => "2HB",
11108 => "1HS",
11109 => "2HS",
11110 => "SHIELD",
11111 => "SHIELD",
11112 => "1HP",
11113 => "1HS",
11114 => "1HP",
11115 => "1HS",
11116 => "1HS",
11117 => "STAFF",
11118 => "OTHER", #Fish
11119 => "2HP",
11120 => "H2H",
11121 => "OTHER", #Gold Coin
11122 => "OTHER", #Silver Coin
11123 => "OTHER", #Crystal
11124 => "OTHER", #Crystal
11129 => "1HS",
11130 => "2HB",
11131 => "1HP",
11132 => "2HS",
11133 => "2HB",
11139 => "H2H",
11140 => "SHIELD",
11144 => "SHIELD",
11154 => "OTHER", #Large Crystal
11155 => "OTHER", #Large Crystal
11156 => "OTHER", #Large Crystal
11157 => "OTHER", #Large Crystal
11158 => "OTHER", #Large Crystal
11159 => "OTHER", #Large Crystal
11160 => "OTHER", #Large Crystal
11161 => "OTHER", #Large Crystal
11162 => "OTHER", #Small Crystal
11163 => "OTHER", #Small Crystal
11164 => "OTHER", #Small Crystal
11165 => "OTHER", #Small Crystal
11166 => "OTHER", #Small Crystal
11167 => "OTHER", #Small Crystal
11168 => "OTHER", #Small Crystal
11169 => "OTHER" #Small Crystal
#END SoF Weapon Models
);
%AttackTypes = (
"1HS" => 1,
"2HS" => 3,
"1HB" => 0,
"2HB" => 2,
"1HP" => 36,
"2HP" => 36,
"STAFF" => 2,
"ARCHERY" => 7,
"BOW" => 7,
"THROWING" => 51,
"H2H" => 28,
"CASTER" => 28,
"SHIELD" => 28,
"BARD" => 28,
"OTHER" => 28
);
if($EnableRemoving) {
quest::wearchange(7, $PrimaryModel);
quest::wearchange(8, $SecondaryModel);
if ($PrimaryModel) {
my $PrimSkill = $AttackTypes{$WeaponModels{$PrimaryModel}};
$npc->SetPrimSkill($PrimSkill);
}
else {
$npc->SetPrimSkill(28);
}
if($SecondaryModel) {
my $SecSkill = $AttackTypes{$WeaponModels{$SecondaryModel}};
$npc->SetSecSkill($SecSkill);
}
else {
$npc->SetSecSkill(28);
}
}
else {
if ($PrimaryModel) {
quest::wearchange(7, $PrimaryModel);
my $PrimSkill = $AttackTypes{$WeaponModels{$PrimaryModel}};
$npc->SetPrimSkill($PrimSkill);
}
if ($SecondaryModel) {
quest::wearchange(8, $SecondaryModel);
my $SecSkill = $AttackTypes{$WeaponModels{$SecondaryModel}};
$npc->SetSecSkill($SecSkill);
}
}
}
return 1; #Added because all other plugins have this, but it may not actually be required.
3. Save that file to your server /plugins/ folder and name it "weapon_tools.pl".
4. Do a #questreload and the new plugin should be ready for use
Here is an example script:
sub EVENT_SPAWN {
quest::settimer("WeaponChange", 5);
}
sub EVENT_TIMER {
if($timer eq "WeaponChange") {
quest::stoptimer("WeaponChange");
#Any random weapon and shield available through SoF
plugin::RandomWeapons(1, 11169, 50, 200, 230);
}
}
Note that in the example, I didn't set NoDualWield? and IgnoreClass?, because I wanted to show that they are just optional.
The hash of weapon types for every weapon model is something I have been wanting to do for a while. I finally wrote a simple script using saylinks that did most of the work for me while I just looked and clicked the type of weapon I saw. I am sure there are other good uses to having this weapon model type hash. I may adjust this script again, but for now I figured it was good enough to at least post.
This plugin requires the RandomRange() plugin from this link:
http://www.eqemulator.org/forums/showthread.php?t=30421
This plugin also requires at least SVN Source Code Revision 1259 or later!
Here are the steps to add this plugin to your server:
1. Open notepad, or whatever text editor you prefer.
2. Copy and paste the following code into Notepad:
#Usage: plugin::RandomWeapons(MinModelNum, MaxModelNum, MyChance, MinShieldNum, MaxShieldNum, NoDualWield?, IgnoreClass? );
#Example: plugin::RandomWeapons(1, 11169, 50, 200, 230, 0, 0);
#MinModelNum - Minimum Model Number to use for selecting Primary/Offhand Weapons
#MaxModelNum - Maximum Model Number to use for selecting Primary/Offhand Weapons
#MyChance - The percent chance that the NPC will wield any weapons (1 - 100)
#MinShieldNum - Minimum Model Number to use for selecting Shields
#MaxShieldNum - Maximum Model Number to use for selecting Shields
#NoDualWield? - 1 = NPCs won't dual wield or use shield, 0 = They have a chance to dual wield / shield
#IgnoreClass? - 1 = Weapon selection will choose any random model number within the range given, 0 = Smart weapon selection based on NPC class
sub RandomWeapons {
my $npc = plugin::val('$npc');
my $MinModelNum = $_[0];
my $MaxModelNum = $_[1];
my $MyChance = $_[2];
my $MinShieldNum = $_[3];
my $MaxShieldNum = $_[4];
my $NoDualWield = $_[5];
my $IgnoreClass = $_[6];
%WeaponModels = (
#BEGIN Classic Weapon Models
1 => "1HS",
2 => "2HS",
3 => "1HS",
4 => "BOW",
5 => "1HP",
6 => "CASTER",
7 => "1HB",
8 => "2HB",
9 => "1HS",
10 => "OTHER", #Arrow
11 => "1HS", #SOE Fanfair Reward
12 => "STAFF", #SOE Fanfair Reward
13 => "STAFF", #SOE Fanfair Reward
14 => "1HB",
15 => "BARD",
16 => "1HP",
17 => "1HP",
18 => "1HB",
19 => "1HB",
20 => "1HP",
21 => "BARD",
22 => "1HS",
23 => "2HS",
24 => "2HB",
25 => "2HS",
26 => "1HS",
27 => "CASTER",
28 => "CASTER",
29 => "STAFF",
30 => "2HP",
31 => "1HB",
32 => "OTHER", #Broom
33 => "1HB",
34 => "1HS",
35 => "1HB",
36 => "OTHER", #Torch
37 => "1HB",
38 => "OTHER", #Fishing Pole
39 => "2HS",
40 => "1HS",
41 => "1HS",
42 => "1HS",
43 => "1HB",
44 => "1HS",
45 => "STAFF",
46 => "CASTER",
47 => "CASTER",
48 => "OTHER", #Lantern
49 => "1HB",
50 => "1HP",
51 => "1HB",
52 => "OTHER", #Shovel
53 => "2HS",
54 => "OTHER", #Cigar
55 => "OTHER", #Pipe
56 => "OTHER", #Mug
57 => "1HS",
58 => "1HS",
59 => "1HB",
60 => "1HS",
61 => "1HS",
62 => "1HS", #SoulFire
63 => "OTHER", #Small Bag
64 => "OTHER", #Large Bag
65 => "OTHER", #Scroll
66 => "TRADESKILL", #Forge
67 => "CASTER", #Voodoo Doll
68 => "H2H",
69 => "TRADESKILL", #Oven
70 => "TRADESKILL", #Brew Barrel
71 => "H2H",
72 => "CASTER",
73 => "TRADESKILL", #Kiln
74 => "TRADESKILL", #Pottery Wheel
75 => "STAFF",
76 => "2HS", #Luclin Weapn Model
78 => "OTHER", #Fire
79 => "2HP",
80 => "2HS",
81 => "1HS",
82 => "1HS",
83 => "2HS",
84 => "2HS",
85 => "1HS",
86 => "2HS",
87 => "1HS",
#END Classic Weapon Models
#BEGIN Kunark Weapon Models
88 => "2HS",
89 => "1HS",
90 => "1HS",
91 => "H2H",
92 => "2HP",
93 => "2HS",
94 => "H2H",
95 => "2HS",
96 => "CASTER", #Added for special quest later
97 => "1HS", #GM Sword
98 => "H2H",
99 => "1HS",
100 => "1HS",
101 => "2HB",
102 => "1HB",
103 => "2HP",
104 => "1HS",
105 => "1HS",
106 => "2HS",
107 => "1HS",
108 => "1HS",
109 => "1HS",
110 => "2HS",
111 => "2HB",
112 => "1HB",
113 => "1HS",
115 => "1HB",
117 => "2HB",
118 => "1HP",
119 => "1HP",
120 => "1HS",
121 => "1HS",
122 => "STAFF",
123 => "STAFF",
124 => "2HB",
125 => "STAFF",
126 => "STAFF",
127 => "STAFF",
128 => "TRADESKILL", #Loom
129 => "STAFF",
130 => "1HB",
131 => "1HS",
132 => "2HP",
133 => "CASTER",
134 => "CASTER",
135 => "H2H",
136 => "H2H",
137 => "BARD",
138 => "BARD",
139 => "1HP",
#BEGIN Epic 1.0s
140 => "1HP",
141 => "1HS",
142 => "1HS",
145 => "2HS",
146 => "2HS",
148 => "1HS",
149 => "1HS",
150 => "1HS",
151 => "CASTER",
153 => "STAFF",
154 => "2HP",
155 => "CASTER",
156 => "1HB",
157 => "CASTER",
160 => "2HS",
#END Epic 1.0s
#END Kunark Weapon Models
#BEGIN Velious Weapon Models
161 => "1HS",
162 => "1HS",
163 => "1HS",
164 => "1HS",
165 => "1HS",
166 => "2HS",
167 => "1HP",
168 => "1HS",
169 => "2HB",
170 => "1HS",
171 => "1HS",
172 => "2HP",
173 => "2HS",
174 => "1HS",
175 => "1HS",
176 => "2HS",
177 => "1HB",
178 => "2HB",
179 => "1HB",
180 => "1HB",
181 => "1HS",
182 => "1HS",
183 => "1HS",
184 => "1HS",
185 => "1HB",
186 => "STAFF",
187 => "2HP",
188 => "1HS",
189 => "1HB",
190 => "2HS",
191 => "1HS",
192 => "1HS",
193 => "1HB",
194 => "1HP",
195 => "1HP",
196 => "1HS",
197 => "2HP",
198 => "BOW",
199 => "BOW",
200 => "SHIELD",
201 => "SHIELD",
202 => "SHIELD",
203 => "SHIELD",
204 => "SHIELD",
205 => "SHIELD",
206 => "SHIELD",
207 => "SHIELD",
208 => "SHIELD",
209 => "SHIELD",
210 => "SHIELD",
211 => "SHIELD",
212 => "SHIELD",
213 => "SHIELD",
214 => "SHIELD",
215 => "SHIELD",
216 => "SHIELD",
217 => "SHIELD",
218 => "SHIELD",
219 => "SHIELD",
220 => "SHIELD",
221 => "SHIELD",
222 => "SHIELD",
223 => "SHIELD",
224 => "SHIELD",
225 => "SHIELD",
226 => "SHIELD",
227 => "SHIELD",
228 => "SHIELD",
250 => "OTHER", #Lollipop
300 => "2HS",
301 => "1HS",
308 => "STAFF",
#END Velious Weapon Models
#BEGIN Luclin Weapon Models
10000 => "1HS",
10001 => "2HB",
10002 => "1HS",
10003 => "1HB",
10004 => "2HS",
10005 => "1HS",
10006 => "1HP",
10007 => "1HB",
10008 => "1HB",
10009 => "1HP",
10010 => "1HS",
10011 => "2HS",
10012 => "1HB",
10013 => "2HB",
10014 => "1HS",
10015 => "H2H", #EPIC
10016 => "1HP",
10017 => "1HS",
10018 => "1HS",
10019 => "1HS",
10020 => "1HB",
10021 => "1HB",
10022 => "1HS",
10023 => "1HS",
10024 => "1HS",
10025 => "2HS",
10026 => "1HS",
10027 => "1HS",
10028 => "2HP",
10029 => "H2H", #EPIC
10100 => "2HP",
10101 => "2HP",
10103 => "1HP",
10104 => "1HP",
10105 => "1HP",
10106 => "2HP",
10107 => "1HP",
10108 => "2HP",
10109 => "1HP",
10200 => "STAFF",
10201 => "STAFF",
10202 => "STAFF",
10203 => "STAFF",
10300 => "BOW",
10301 => "BARD",
#END Luclin Weapon Models
#BEGIN PoP Weapon Models
#BEGIN PoP Gods Weapons
10400 => "1HB",
10401 => "2HS",
10402 => "2HP",
10403 => "STAFF",
10404 => "1HS",
10405 => "2HS",
10406 => "STAFF",
10407 => "STAFF",
10408 => "2HB",
10409 => "1HB",
10410 => "STAFF",
#END PoP Gods Weapons
10411 => "1HS",
10412 => "BOW",
10413 => "2HS",
10501 => "1HB",
10502 => "CASTER",
10503 => "CASTER",
10504 => "CASTER",
10505 => "STAFF",
10506 => "STAFF",
10507 => "STAFF",
10508 => "2HP",
10509 => "H2H",
10510 => "H2H",
10511 => "H2H",
10512 => "H2H",
10513 => "1HS",
10514 => "1HP",
10515 => "1HS",
10516 => "H2H",
10517 => "1HB",
10518 => "1HB",
10519 => "1HB",
10520 => "STAFF",
10521 => "STAFF",
10522 => "1HB",
10523 => "STAFF",
10524 => "1HB",
10525 => "CASTER",
10526 => "1HP",
10527 => "1HP",
10528 => "1HP",
10545 => "1HS",
10600 => "BARD",
10601 => "BARD",
10602 => "BARD",
10603 => "BARD",
10604 => "1HB",
10605 => "1HB",
10606 => "1HB",
10607 => "1HB",
10608 => "1HB",
10609 => "1HB",
10610 => "1HP",
10611 => "OTHER", #Snowball
10612 => "2HP",
10613 => "2HP",
10614 => "BOW",
10615 => "2HS",
10616 => "1HS",
10617 => "1HS",
10618 => "1HP",
10619 => "1HS",
10620 => "1HS",
10621 => "1HP",
10622 => "2HS",
10623 => "1HS",
10624 => "1HP",
10625 => "2HS",
10626 => "1HS",
10627 => "1HP",
10628 => "2HS",
10629 => "1HS",
10630 => "1HP",
10631 => "2HS",
10632 => "1HS",
10633 => "1HP",
10634 => "2HB",
10635 => "1HB",
10636 => "2HB",
10637 => "1HB",
10638 => "2HB",
10639 => "2HB",
10640 => "2HS",
10641 => "BOW",
10642 => "CASTER",
10643 => "STAFF",
10644 => "2HP",
10645 => "CASTER",
10646 => "CASTER",
10647 => "1HB",
10648 => "1HS",
10649 => "1HS",
10650 => "1HP",
10651 => "2HS",
10652 => "1HS",
10653 => "1HP",
10654 => "2HS",
10655 => "1HS",
10656 => "1HP",
10657 => "2HS",
10658 => "1HS",
10659 => "1HP",
10660 => "2HS",
10661 => "1HS",
10662 => "1HS",
10663 => "CASTER",
#END PoP Weapon Models
#BEGIN LoY Weapon Models
10664 => "SHIELD",
10665 => "SHIELD",
10666 => "SHIELD",
10667 => "SHIELD",
10668 => "SHIELD",
10669 => "SHIELD",
10670 => "SHIELD",
10671 => "SHIELD",
10672 => "1HB",
10673 => "1HS",
10674 => "1HS",
10675 => "2HB",
10676 => "2HS",
10677 => "STAFF",
10678 => "1HS",
10679 => "1HP",
10680 => "1HP",
10681 => "1HB",
10682 => "1HS",
10683 => "STAFF",
10685 => "2HS",
10686 => "1HS",
10687 => "1HP",
10688 => "1HB",
10689 => "1HP",
10690 => "1HP",
10691 => "SHIELD",
10692 => "1HP",
10693 => "1HP",
10694 => "1HS",
10695 => "CASTER",
10696 => "1HS",
10697 => "CASTER",
#END LoY Weapon Models
#BEGIN LDoN Weapon Models
10700 => "1HS",
10701 => "1HP",
10702 => "1HS",
10703 => "1HB",
10704 => "1HS",
10705 => "1HS",
10706 => "1HB",
10707 => "1HB",
10708 => "1HS",
10709 => "1HP",
10710 => "1HS",
10711 => "1HP",
10712 => "1HP",
#END LDoN Weapon Models
#BEGIN GoD Weapon Models
10713 => "1HB",
10714 => "TRADESKILL", #Augment Pool
10715 => "1HS",
10716 => "1HB",
10717 => "BOW",
10718 => "1HB",
10719 => "1HS",
10720 => "2HS",
10722 => "1HP",
10723 => "STAFF",
10724 => "OTHER", #Small Rock
10725 => "OTHER", #Chinese Star
10726 => "1HS",
10727 => "2HS", #Epic 1.5
10728 => "1HS",
10729 => "SHIELD",
10730 => "SHIELD",
10731 => "1HB",
10732 => "1HP",
10733 => "CASTER",
#BEGIN Epic 2.0s
10735 => "1HS",
10736 => "1HB",
10737 => "2HS",
10738 => "SHIELD",
10739 => "STAFF",
10740 => "STAFF",
10741 => "STAFF",
10742 => "H2H",
10743 => "STAFF",
10744 => "2HS",
10745 => "1HS",
10746 => "1HP",
10747 => "2HS",
10748 => "1HB",
10749 => "1HS",
10750 => "STAFF",
#END Epic 2.0s
#BEGIN Epic 1.5s
10751 => "1HS",
10752 => "1HB",
10753 => "2HS",
10754 => "SHIELD",
10755 => "STAFF",
10756 => "STAFF",
10757 => "STAFF",
10758 => "H2H",
10759 => "STAFF",
10760 => "2HS",
10761 => "1HS",
10762 => "1HP",
10763 => "2HS",
10764 => "1HB",
10765 => "1HS",
10766 => "STAFF",
#END Epic 1.5s
#BEGIN OOW+ Weapon Models
10767 => "CASTER",
10768 => "1HB",
10769 => "1HP",
10770 => "1HS",
10771 => "1HS",
10772 => "SHIELD",
10773 => "2HS",
10774 => "STAFF",
10775 => "SHIELD",
10776 => "2HS",
10777 => "1HB",
10778 => "1HS",
10779 => "1HS",
10780 => "1HS",
10781 => "SHIELD",
10782 => "2HP",
10783 => "H2H",
10784 => "1HS",
10785 => "1HS",
10786 => "2HS",
10787 => "1HS",
10788 => "CASTER",
10789 => "BOW",
10790 => "SHIELD",
10791 => "1HS",
10792 => "2HS",
10793 => "1HP",
10794 => "STAFF",
10795 => "1HB",
10796 => "2HB",
10797 => "2HS",
10798 => "1HP",
10799 => "1HP",
10806 => "CASTER",
10807 => "CASTER",
10808 => "CASTER",
10810 => "2HS",
10811 => "1HS",
10812 => "2HS",
10813 => "1HP",
10814 => "1HP",
10815 => "1HP",
10816 => "1HP",
10817 => "1HB",
10818 => "2HB",
10819 => "CASTER",
10820 => "STAFF",
10821 => "1HS",
10822 => "CASTER",
10823 => "STAFF",
10824 => "1HP",
10825 => "1HS",
10826 => "SHIELD",
10827 => "SHIELD",
10828 => "STAFF",
10829 => "1HB",
10830 => "2HB",
10831 => "1HP",
10832 => "SHIELD",
10833 => "SHIELD",
10834 => "1HS",
10835 => "2HS",
10836 => "CASTER",
10837 => "CASTER",
10838 => "1HB",
10839 => "2HB",
10840 => "1HS",
10841 => "2HS",
10842 => "H2H",
#END TITANIUM Weapon Models
#BEGIN SoF Weapon Models
10843 => "OTHER", #Broom
10844 => "1HP",
10845 => "2HB",
10846 => "1HB",
10847 => "2HB",
10848 => "1HS",
10849 => "SHIELD",
10850 => "SHIELD",
10851 => "OTHER", #Shovel
10852 => "STAFF",
10853 => "STAFF",
10854 => "CASTER",
10855 => "1HS",
10856 => "2HS",
10857 => "SHIELD",
10858 => "SHIELD",
10859 => "1HB",
10860 => "1HS",
10861 => "OTHER", #Beer Mug
10862 => "STAFF",
10866 => "1HP",
10867 => "1HS",
10868 => "1HP",
10869 => "2HS",
10870 => "1HP",
10871 => "2HS",
10872 => "1HS",
10873 => "2HS",
10874 => "1HS",
10875 => "2HS",
10876 => "1HS",
10877 => "2HS",
10878 => "1HS",
10879 => "2HS",
10880 => "1HS",
10881 => "2HS",
10882 => "1HP",
10883 => "1HS",
10884 => "2HS",
10885 => "1HS",
10886 => "2HS",
10887 => "1HS",
10888 => "2HS",
10889 => "1HS",
10890 => "2HS",
10891 => "1HS",
10892 => "2HS",
10893 => "1HS",
10894 => "2HS",
10895 => "1HS",
10896 => "2HS",
10897 => "1HS",
10898 => "2HS",
10899 => "1HS",
10900 => "2HS",
10901 => "1HS",
10902 => "2HS",
10903 => "1HP",
10904 => "1HS",
10905 => "2HS",
10906 => "1HS",
10907 => "2HS",
10908 => "1HS",
10909 => "2HS",
10910 => "1HP",
10911 => "1HP",
10912 => "1HP",
10913 => "1HP",
10914 => "1HP",
10915 => "1HP",
10916 => "1HP",
10917 => "1HP",
10918 => "1HP",
10919 => "1HP",
10920 => "1HS",
10921 => "2HS",
10922 => "1HS",
10923 => "2HS",
10924 => "1HB",
10925 => "2HB",
10926 => "1HB",
10927 => "2HB",
10928 => "1HB",
10929 => "2HB",
10930 => "1HB",
10931 => "2HB",
10932 => "1HB",
10933 => "2HB",
10934 => "1HB",
10935 => "2HB",
10936 => "1HB",
10937 => "2HB",
10938 => "STAFF",
10939 => "CASTER",
10940 => "STAFF",
10941 => "STAFF",
10942 => "STAFF",
10943 => "1HB",
10944 => "STAFF",
10945 => "1HB",
10946 => "1HB",
10947 => "2HB",
10948 => "1HB",
10949 => "2HB",
10950 => "2HP",
10951 => "2HP",
10952 => "2HP",
10953 => "2HP",
10954 => "2HP",
10955 => "2HP",
10956 => "2HP",
10957 => "2HP",
10958 => "1HP",
10959 => "STAFF",
10960 => "SHIELD",
10961 => "SHIELD",
10962 => "SHIELD",
10963 => "SHIELD",
10964 => "SHIELD",
10965 => "SHIELD",
10966 => "SHIELD",
10967 => "SHIELD",
10968 => "SHIELD",
10969 => "SHIELD",
10970 => "SHIELD",
10971 => "SHIELD",
10972 => "SHIELD",
10973 => "SHIELD",
10974 => "SHIELD",
10975 => "SHIELD",
10976 => "SHIELD",
10977 => "SHIELD",
10978 => "SHIELD",
10979 => "SHIELD",
10980 => "SHIELD",
10981 => "SHIELD",
10982 => "SHIELD",
10983 => "SHIELD",
10984 => "SHIELD",
10985 => "SHIELD",
10986 => "SHIELD",
10987 => "SHIELD",
10988 => "SHIELD",
10989 => "SHIELD",
10990 => "SHIELD",
10991 => "SHIELD",
10992 => "SHIELD",
10993 => "SHIELD",
10994 => "SHIELD",
10995 => "SHIELD",
10996 => "SHIELD",
10997 => "BOW",
10998 => "BOW",
10999 => "1HB",
11001 => "SHIELD",
11002 => "SHIELD",
11003 => "SHIELD",
11013 => "SHIELD",
11017 => "SHIELD",
11018 => "SHIELD",
11019 => "SHIELD",
11020 => "SHIELD",
11031 => "OTHER", #Torch
11032 => "STAFF",
11033 => "OTHER", #Hoe
11034 => "OTHER", #Rake
11035 => "OTHER", #Pitch Fork
11036 => "OTHER", #Bucket full of Dirt
11037 => "OTHER", #Bucket full of Apples
11038 => "OTHER", #Bucket full of Rocks
11039 => "OTHER", #Bucket full of Gems
11040 => "OTHER", #Bucket full of Ash?
11041 => "1HP",
11042 => "1HS",
11043 => "2HS",
11044 => "1HB",
11045 => "2HB",
11046 => "1HS",
11047 => "2HS",
11048 => "SHIELD",
11049 => "SHIELD",
11050 => "H2H",
11051 => "H2H",
11052 => "1HB",
11053 => "1HS",
11054 => "OTHER", #Box
11055 => "OTHER", #Rock
11056 => "OTHER", #Bush
11057 => "OTHER", #Rock
11058 => "OTHER", #3 Bones
11059 => "OTHER", #3 Large Books
11060 => "OTHER", #Green Leaf
11061 => "OTHER", #Mushroom
11062 => "OTHER", #Box
11063 => "OTHER", #Box
11064 => "OTHER", #Rock
11065 => "OTHER", #Rock
11066 => "OTHER", #Bush
11067 => "OTHER", #Bush
11068 => "OTHER", #Rock
11069 => "OTHER", #Red Apple
11070 => "OTHER", #Green Apple
11071 => "OTHER", #Pumpkin
11072 => "OTHER", #3 Bones
11073 => "OTHER", #3 Large Books
11074 => "OTHER", #White Branch
11075 => "OTHER", #Palm Tree Leaf
11076 => "OTHER", #Bamboo
11077 => "OTHER", #Brown Branch
11078 => "OTHER", #Dead Branch
11079 => "OTHER", #Brown Leaf
11080 => "OTHER", #Red Maple Leaf
11081 => "OTHER", #Yellow Mushroom
11082 => "OTHER", #Green Mushroom
11083 => "OTHER", #Brown Mushroom
11084 => "OTHER", #Green Branch
11085 => "SHIELD",
11086 => "SHIELD",
11087 => "CASTER",
11088 => "1HS",
11089 => "1HS",
11090 => "1HS",
11091 => "1HP",
11092 => "2HP",
11093 => "1HP",
11094 => "1HS",
11095 => "1HP",
11096 => "OTHER", #Rolling Pin
11097 => "STAFF",
11098 => "CASTER",
11099 => "H2H",
11100 => "2HS",
11101 => "1HP",
11102 => "SHIELD",
11103 => "SHIELD",
11104 => "STAFF",
11105 => "1HS",
11106 => "1HB",
11107 => "2HB",
11108 => "1HS",
11109 => "2HS",
11110 => "SHIELD",
11111 => "SHIELD",
11112 => "1HP",
11113 => "1HS",
11114 => "1HP",
11115 => "1HS",
11116 => "1HS",
11117 => "STAFF",
11118 => "OTHER", #Fish
11119 => "2HP",
11120 => "H2H",
11121 => "OTHER", #Gold Coin
11122 => "OTHER", #Silver Coin
11123 => "OTHER", #Crystal
11124 => "OTHER", #Crystal
11129 => "1HS",
11130 => "2HB",
11131 => "1HP",
11132 => "2HS",
11133 => "2HB",
11139 => "H2H",
11140 => "SHIELD",
11144 => "SHIELD",
11154 => "OTHER", #Large Crystal
11155 => "OTHER", #Large Crystal
11156 => "OTHER", #Large Crystal
11157 => "OTHER", #Large Crystal
11158 => "OTHER", #Large Crystal
11159 => "OTHER", #Large Crystal
11160 => "OTHER", #Large Crystal
11161 => "OTHER", #Large Crystal
11162 => "OTHER", #Small Crystal
11163 => "OTHER", #Small Crystal
11164 => "OTHER", #Small Crystal
11165 => "OTHER", #Small Crystal
11166 => "OTHER", #Small Crystal
11167 => "OTHER", #Small Crystal
11168 => "OTHER", #Small Crystal
11169 => "OTHER" #Small Crystal
#END SoF Weapon Models
);
%ClassPrimaryTypes = (
1 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Warrior
2 => [ "1HB", "2HB", "STAFF", "CASTER" ], #Cleric
3 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Paladin
4 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Ranger
5 => [ "1HS", "2HS", "1HB", "2HB", "1HP", "2HP" ], #Shadow Knight
6 => [ "1HS", "1HB", "2HB", "STAFF", "CASTER" ], #Druid
7 => [ "1HB", "2HB", "H2H", "STAFF" ], #Monk
8 => [ "1HS", "1HB", "1HP", "BARD" ], #Bard
9 => [ "1HS", "1HB", "1HP" ], #Rogue
10 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Shaman
11 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Necromancer
12 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Wizard
13 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Mage
14 => [ "1HB", "2HB", "1HP", "STAFF", "CASTER" ], #Enchanter
15 => [ "1HB", "2HB", "1HP", "H2H", "STAFF" ], #Beastlord
16 => [ "2HS", "2HB", "2HP" ] #Berserker
);
%ClassSecondaryTypes = (
1 => [ "1HS", "1HB", "1HP", "SHIELD" ], #Warrior
2 => [ "CASTER", "SHIELD" ], #Cleric
3 => [ "SHIELD" ], #Paladin
4 => [ "1HS", "1HB", "1HP" ], #Ranger
5 => [ "SHIELD" ], #Shadow Knight
6 => [ "CASTER", "SHIELD" ], #Druid
7 => [ "1HB", "2HB", "H2H", "STAFF" ], #Monk
8 => [ "1HS", "1HB", "1HP" ], #Bard
9 => [ "1HS", "1HB", "1HP" ], #Rogue
10 => [ "CASTER", "SHIELD" ], #Shaman
11 => [ "CASTER", "SHIELD" ], #Necromancer
12 => [ "CASTER", "SHIELD" ], #Wizard
13 => [ "CASTER", "SHIELD" ], #Mage
14 => [ "CASTER", "SHIELD" ], #Enchanter
15 => [ "1HB", "1HP", "H2H" ], #Beastlord
16 => [ "NONE" ] #Berserker
);
%AttackTypes = (
"1HS" => 1,
"2HS" => 3,
"1HB" => 0,
"2HB" => 2,
"1HP" => 36,
"2HP" => 36,
"ARCHERY" => 7,
"THROWING" => 51,
"H2H" => 28,
"CASTER" => 28,
"SHIELD" => 28,
"BARD" => 28
);
my $RandChance = plugin::RandomRange(1, 100);
if($RandChance <= $MyChance || $MyChance == 0) {
if(!$IgnoreClass) {
my $NPCClass = $npc->GetClass();
my $PrimMax = $#{$ClassPrimaryTypes{$NPCClass}};
my $PrimTypeNum = plugin::RandomRange(0, $PrimMax + 1);
my $PrimType = $ClassPrimaryTypes{$NPCClass}[$PrimTypeNum];
my $SecMax = $#{$ClassSecondaryTypes{$NPCClass}};
my $SecTypeNum = plugin::RandomRange(0, $SecMax + 1);
my $SecType = $ClassSecondaryTypes{$NPCClass}[$SecTypeNum];
my @AvailPrims = (); #clear out the array of Available Primary Weapon Models
my @AvailSecs = (); #clear out the array of Available Secondary Weapon Models
foreach $k (keys (%WeaponModels)) {
if($k >= $MinModelNum && $k <= $MaxModelNum) {
if($WeaponModels{$k} eq $PrimType){
push(@AvailPrims, $k);
}
}
if($ClassSecondaryTypes{$NPCClass}[$SecType] eq "SHIELD" && $MinShieldNum && $MaxShieldNum) {
if($k >= $MinShieldNum && $k <= $MaxShieldNum) {
if($WeaponModels{$k} eq $SecType){
push(@AvailSecs, $k);
}
}
}
else {
if($k >= $MinModelNum && $k <= $MaxModelNum) {
if($WeaponModels{$k} eq $SecType){
push(@AvailSecs, $k);
}
}
}
}
my $TotalAvailPrims = @AvailPrims;
my $TotalAvailSecs = @AvailSecs;
if($TotalAvailPrims) {
my $PrimSelect = plugin::RandomRange(0, $TotalAvailPrims);
quest::wearchange(7, $AvailPrims[$PrimSelect]);
my $PrimSkill = $AttackTypes{$PrimType};
$npc->SetPrimSkill($PrimSkill);
my $chance = quest::ChooseRandom(1,2);
if(!$NoDualWield == 1 && $chance == 2 && $PrimType ne "2HS" && $PrimType ne "2HB" && $PrimType ne "2HP" && $PrimType ne "STAFF" && $PrimType ne "BARD" && $NPCClass != 16) {
my $SecSelect = plugin::RandomRange(0, $TotalAvailSecs);
quest::wearchange(8, $AvailSecs[$SecSelect]);
my $SecSkill = $AttackTypes{$SecType};
$npc->SetSecSkill($SecSkill);
}
}
}
else {
if ($MinModelNum && $MaxModelNum) {
my $PrimSelect = plugin::RandomRange($MinModelNum, $MaxModelNum);
quest::wearchange(7, $PrimSelect);
if(!$NoDualWield) {
my $chance2 = quest::ChooseRandom(1,2,3);
if ($chance2 == 1) { # if True, then choose a secondary weapon to use
my $SecSelect = plugin::RandomRange($MinModelNum, $MaxModelNum);
quest::wearchange(8, $SecSelect);
}
elsif ($chance2 == 2 && $MinShieldNum && $MaxShieldNum) { # if True, then choose a shield to use
my $SecSelect = plugin::RandomRange($MinShieldNum, $MaxShieldNum);
quest::wearchange(8, $SecSelect);
}
}
}
}
}
}
#Usage: plugin::SetWeapons(PrimaryModel, SecondaryModel, EnableRemoving? );
#Example: plugin::SetWeapons(11, 200);
sub SetWeapons {
my $npc = plugin::val('$npc');
my $PrimaryModel = $_[0];
my $SecondaryModel = $_[1];
my $EnableRemoving = $_[2];
%WeaponModels = (
#BEGIN Classic Weapon Models
1 => "1HS",
2 => "2HS",
3 => "1HS",
4 => "BOW",
5 => "1HP",
6 => "CASTER",
7 => "1HB",
8 => "2HB",
9 => "1HS",
10 => "OTHER", #Arrow
11 => "1HS", #SOE Fanfair Reward
12 => "STAFF", #SOE Fanfair Reward
13 => "STAFF", #SOE Fanfair Reward
14 => "1HB",
15 => "BARD",
16 => "1HP",
17 => "1HP",
18 => "1HB",
19 => "1HB",
20 => "1HP",
21 => "BARD",
22 => "1HS",
23 => "2HS",
24 => "2HB",
25 => "2HS",
26 => "1HS",
27 => "CASTER",
28 => "CASTER",
29 => "STAFF",
30 => "2HP",
31 => "1HB",
32 => "OTHER", #Broom
33 => "1HB",
34 => "1HS",
35 => "1HB",
36 => "OTHER", #Torch
37 => "1HB",
38 => "OTHER", #Fishing Pole
39 => "2HS",
40 => "1HS",
41 => "1HS",
42 => "1HS",
43 => "1HB",
44 => "1HS",
45 => "STAFF",
46 => "CASTER",
47 => "CASTER",
48 => "OTHER", #Lantern
49 => "1HB",
50 => "1HP",
51 => "1HB",
52 => "OTHER", #Shovel
53 => "2HS",
54 => "OTHER", #Cigar
55 => "OTHER", #Pipe
56 => "OTHER", #Mug
57 => "1HS",
58 => "1HS",
59 => "1HB",
60 => "1HS",
61 => "1HS",
62 => "1HS", #SoulFire
63 => "OTHER", #Small Bag
64 => "OTHER", #Large Bag
65 => "OTHER", #Scroll
66 => "TRADESKILL", #Forge
67 => "CASTER", #Voodoo Doll
68 => "H2H",
69 => "TRADESKILL", #Oven
70 => "TRADESKILL", #Brew Barrel
71 => "H2H",
72 => "CASTER",
73 => "TRADESKILL", #Kiln
74 => "TRADESKILL", #Pottery Wheel
75 => "STAFF",
76 => "2HS", #Luclin Weapn Model
78 => "OTHER", #Fire
79 => "2HP",
80 => "2HS",
81 => "1HS",
82 => "1HS",
83 => "2HS",
84 => "2HS",
85 => "1HS",
86 => "2HS",
87 => "1HS",
#END Classic Weapon Models
#BEGIN Kunark Weapon Models
88 => "2HS",
89 => "1HS",
90 => "1HS",
91 => "H2H",
92 => "2HP",
93 => "2HS",
94 => "H2H",
95 => "2HS",
96 => "CASTER", #Added for special quest later
97 => "1HS", #GM Sword
98 => "H2H",
99 => "1HS",
100 => "1HS",
101 => "2HB",
102 => "1HB",
103 => "2HP",
104 => "1HS",
105 => "1HS",
106 => "2HS",
107 => "1HS",
108 => "1HS",
109 => "1HS",
110 => "2HS",
111 => "2HB",
112 => "1HB",
113 => "1HS",
115 => "1HB",
117 => "2HB",
118 => "1HP",
119 => "1HP",
120 => "1HS",
121 => "1HS",
122 => "STAFF",
123 => "STAFF",
124 => "2HB",
125 => "STAFF",
126 => "STAFF",
127 => "STAFF",
128 => "TRADESKILL", #Loom
129 => "STAFF",
130 => "1HB",
131 => "1HS",
132 => "2HP",
133 => "CASTER",
134 => "CASTER",
135 => "H2H",
136 => "H2H",
137 => "BARD",
138 => "BARD",
139 => "1HP",
#BEGIN Epic 1.0s
140 => "1HP",
141 => "1HS",
142 => "1HS",
145 => "2HS",
146 => "2HS",
148 => "1HS",
149 => "1HS",
150 => "1HS",
151 => "CASTER",
153 => "STAFF",
154 => "2HP",
155 => "CASTER",
156 => "1HB",
157 => "CASTER",
160 => "2HS",
#END Epic 1.0s
#END Kunark Weapon Models
#BEGIN Velious Weapon Models
161 => "1HS",
162 => "1HS",
163 => "1HS",
164 => "1HS",
165 => "1HS",
166 => "2HS",
167 => "1HP",
168 => "1HS",
169 => "2HB",
170 => "1HS",
171 => "1HS",
172 => "2HP",
173 => "2HS",
174 => "1HS",
175 => "1HS",
176 => "2HS",
177 => "1HB",
178 => "2HB",
179 => "1HB",
180 => "1HB",
181 => "1HS",
182 => "1HS",
183 => "1HS",
184 => "1HS",
185 => "1HB",
186 => "STAFF",
187 => "2HP",
188 => "1HS",
189 => "1HB",
190 => "2HS",
191 => "1HS",
192 => "1HS",
193 => "1HB",
194 => "1HP",
195 => "1HP",
196 => "1HS",
197 => "2HP",
198 => "BOW",
199 => "BOW",
200 => "SHIELD",
201 => "SHIELD",
202 => "SHIELD",
203 => "SHIELD",
204 => "SHIELD",
205 => "SHIELD",
206 => "SHIELD",
207 => "SHIELD",
208 => "SHIELD",
209 => "SHIELD",
210 => "SHIELD",
211 => "SHIELD",
212 => "SHIELD",
213 => "SHIELD",
214 => "SHIELD",
215 => "SHIELD",
216 => "SHIELD",
217 => "SHIELD",
218 => "SHIELD",
219 => "SHIELD",
220 => "SHIELD",
221 => "SHIELD",
222 => "SHIELD",
223 => "SHIELD",
224 => "SHIELD",
225 => "SHIELD",
226 => "SHIELD",
227 => "SHIELD",
228 => "SHIELD",
250 => "OTHER", #Lollipop
300 => "2HS",
301 => "1HS",
308 => "STAFF",
#END Velious Weapon Models
#BEGIN Luclin Weapon Models
10000 => "1HS",
10001 => "2HB",
10002 => "1HS",
10003 => "1HB",
10004 => "2HS",
10005 => "1HS",
10006 => "1HP",
10007 => "1HB",
10008 => "1HB",
10009 => "1HP",
10010 => "1HS",
10011 => "2HS",
10012 => "1HB",
10013 => "2HB",
10014 => "1HS",
10015 => "H2H", #EPIC
10016 => "1HP",
10017 => "1HS",
10018 => "1HS",
10019 => "1HS",
10020 => "1HB",
10021 => "1HB",
10022 => "1HS",
10023 => "1HS",
10024 => "1HS",
10025 => "2HS",
10026 => "1HS",
10027 => "1HS",
10028 => "2HP",
10029 => "H2H", #EPIC
10100 => "2HP",
10101 => "2HP",
10103 => "1HP",
10104 => "1HP",
10105 => "1HP",
10106 => "2HP",
10107 => "1HP",
10108 => "2HP",
10109 => "1HP",
10200 => "STAFF",
10201 => "STAFF",
10202 => "STAFF",
10203 => "STAFF",
10300 => "BOW",
10301 => "BARD",
#END Luclin Weapon Models
#BEGIN PoP Weapon Models
#BEGIN PoP Gods Weapons
10400 => "1HB",
10401 => "2HS",
10402 => "2HP",
10403 => "STAFF",
10404 => "1HS",
10405 => "2HS",
10406 => "STAFF",
10407 => "STAFF",
10408 => "2HB",
10409 => "1HB",
10410 => "STAFF",
#END PoP Gods Weapons
10411 => "1HS",
10412 => "BOW",
10413 => "2HS",
10501 => "1HB",
10502 => "CASTER",
10503 => "CASTER",
10504 => "CASTER",
10505 => "STAFF",
10506 => "STAFF",
10507 => "STAFF",
10508 => "2HP",
10509 => "H2H",
10510 => "H2H",
10511 => "H2H",
10512 => "H2H",
10513 => "1HS",
10514 => "1HP",
10515 => "1HS",
10516 => "H2H",
10517 => "1HB",
10518 => "1HB",
10519 => "1HB",
10520 => "STAFF",
10521 => "STAFF",
10522 => "1HB",
10523 => "STAFF",
10524 => "1HB",
10525 => "CASTER",
10526 => "1HP",
10527 => "1HP",
10528 => "1HP",
10545 => "1HS",
10600 => "BARD",
10601 => "BARD",
10602 => "BARD",
10603 => "BARD",
10604 => "1HB",
10605 => "1HB",
10606 => "1HB",
10607 => "1HB",
10608 => "1HB",
10609 => "1HB",
10610 => "1HP",
10611 => "OTHER", #Snowball
10612 => "2HP",
10613 => "2HP",
10614 => "BOW",
10615 => "2HS",
10616 => "1HS",
10617 => "1HS",
10618 => "1HP",
10619 => "1HS",
10620 => "1HS",
10621 => "1HP",
10622 => "2HS",
10623 => "1HS",
10624 => "1HP",
10625 => "2HS",
10626 => "1HS",
10627 => "1HP",
10628 => "2HS",
10629 => "1HS",
10630 => "1HP",
10631 => "2HS",
10632 => "1HS",
10633 => "1HP",
10634 => "2HB",
10635 => "1HB",
10636 => "2HB",
10637 => "1HB",
10638 => "2HB",
10639 => "2HB",
10640 => "2HS",
10641 => "BOW",
10642 => "CASTER",
10643 => "STAFF",
10644 => "2HP",
10645 => "CASTER",
10646 => "CASTER",
10647 => "1HB",
10648 => "1HS",
10649 => "1HS",
10650 => "1HP",
10651 => "2HS",
10652 => "1HS",
10653 => "1HP",
10654 => "2HS",
10655 => "1HS",
10656 => "1HP",
10657 => "2HS",
10658 => "1HS",
10659 => "1HP",
10660 => "2HS",
10661 => "1HS",
10662 => "1HS",
10663 => "CASTER",
#END PoP Weapon Models
#BEGIN LoY Weapon Models
10664 => "SHIELD",
10665 => "SHIELD",
10666 => "SHIELD",
10667 => "SHIELD",
10668 => "SHIELD",
10669 => "SHIELD",
10670 => "SHIELD",
10671 => "SHIELD",
10672 => "1HB",
10673 => "1HS",
10674 => "1HS",
10675 => "2HB",
10676 => "2HS",
10677 => "STAFF",
10678 => "1HS",
10679 => "1HP",
10680 => "1HP",
10681 => "1HB",
10682 => "1HS",
10683 => "STAFF",
10685 => "2HS",
10686 => "1HS",
10687 => "1HP",
10688 => "1HB",
10689 => "1HP",
10690 => "1HP",
10691 => "SHIELD",
10692 => "1HP",
10693 => "1HP",
10694 => "1HS",
10695 => "CASTER",
10696 => "1HS",
10697 => "CASTER",
#END LoY Weapon Models
#BEGIN LDoN Weapon Models
10700 => "1HS",
10701 => "1HP",
10702 => "1HS",
10703 => "1HB",
10704 => "1HS",
10705 => "1HS",
10706 => "1HB",
10707 => "1HB",
10708 => "1HS",
10709 => "1HP",
10710 => "1HS",
10711 => "1HP",
10712 => "1HP",
#END LDoN Weapon Models
#BEGIN GoD Weapon Models
10713 => "1HB",
10714 => "TRADESKILL", #Augment Pool
10715 => "1HS",
10716 => "1HB",
10717 => "BOW",
10718 => "1HB",
10719 => "1HS",
10720 => "2HS",
10722 => "1HP",
10723 => "STAFF",
10724 => "OTHER", #Small Rock
10725 => "OTHER", #Chinese Star
10726 => "1HS",
10727 => "2HS", #Epic 1.5
10728 => "1HS",
10729 => "SHIELD",
10730 => "SHIELD",
10731 => "1HB",
10732 => "1HP",
10733 => "CASTER",
#BEGIN Epic 2.0s
10735 => "1HS",
10736 => "1HB",
10737 => "2HS",
10738 => "SHIELD",
10739 => "STAFF",
10740 => "STAFF",
10741 => "STAFF",
10742 => "H2H",
10743 => "STAFF",
10744 => "2HS",
10745 => "1HS",
10746 => "1HP",
10747 => "2HS",
10748 => "1HB",
10749 => "1HS",
10750 => "STAFF",
#END Epic 2.0s
#BEGIN Epic 1.5s
10751 => "1HS",
10752 => "1HB",
10753 => "2HS",
10754 => "SHIELD",
10755 => "STAFF",
10756 => "STAFF",
10757 => "STAFF",
10758 => "H2H",
10759 => "STAFF",
10760 => "2HS",
10761 => "1HS",
10762 => "1HP",
10763 => "2HS",
10764 => "1HB",
10765 => "1HS",
10766 => "STAFF",
#END Epic 1.5s
#BEGIN OOW+ Weapon Models
10767 => "CASTER",
10768 => "1HB",
10769 => "1HP",
10770 => "1HS",
10771 => "1HS",
10772 => "SHIELD",
10773 => "2HS",
10774 => "STAFF",
10775 => "SHIELD",
10776 => "2HS",
10777 => "1HB",
10778 => "1HS",
10779 => "1HS",
10780 => "1HS",
10781 => "SHIELD",
10782 => "2HP",
10783 => "H2H",
10784 => "1HS",
10785 => "1HS",
10786 => "2HS",
10787 => "1HS",
10788 => "CASTER",
10789 => "BOW",
10790 => "SHIELD",
10791 => "1HS",
10792 => "2HS",
10793 => "1HP",
10794 => "STAFF",
10795 => "1HB",
10796 => "2HB",
10797 => "2HS",
10798 => "1HP",
10799 => "1HP",
10806 => "CASTER",
10807 => "CASTER",
10808 => "CASTER",
10810 => "2HS",
10811 => "1HS",
10812 => "2HS",
10813 => "1HP",
10814 => "1HP",
10815 => "1HP",
10816 => "1HP",
10817 => "1HB",
10818 => "2HB",
10819 => "CASTER",
10820 => "STAFF",
10821 => "1HS",
10822 => "CASTER",
10823 => "STAFF",
10824 => "1HP",
10825 => "1HS",
10826 => "SHIELD",
10827 => "SHIELD",
10828 => "STAFF",
10829 => "1HB",
10830 => "2HB",
10831 => "1HP",
10832 => "SHIELD",
10833 => "SHIELD",
10834 => "1HS",
10835 => "2HS",
10836 => "CASTER",
10837 => "CASTER",
10838 => "1HB",
10839 => "2HB",
10840 => "1HS",
10841 => "2HS",
10842 => "H2H",
#END TITANIUM Weapon Models
#BEGIN SoF Weapon Models
10843 => "OTHER", #Broom
10844 => "1HP",
10845 => "2HB",
10846 => "1HB",
10847 => "2HB",
10848 => "1HS",
10849 => "SHIELD",
10850 => "SHIELD",
10851 => "OTHER", #Shovel
10852 => "STAFF",
10853 => "STAFF",
10854 => "CASTER",
10855 => "1HS",
10856 => "2HS",
10857 => "SHIELD",
10858 => "SHIELD",
10859 => "1HB",
10860 => "1HS",
10861 => "OTHER", #Beer Mug
10862 => "STAFF",
10866 => "1HP",
10867 => "1HS",
10868 => "1HP",
10869 => "2HS",
10870 => "1HP",
10871 => "2HS",
10872 => "1HS",
10873 => "2HS",
10874 => "1HS",
10875 => "2HS",
10876 => "1HS",
10877 => "2HS",
10878 => "1HS",
10879 => "2HS",
10880 => "1HS",
10881 => "2HS",
10882 => "1HP",
10883 => "1HS",
10884 => "2HS",
10885 => "1HS",
10886 => "2HS",
10887 => "1HS",
10888 => "2HS",
10889 => "1HS",
10890 => "2HS",
10891 => "1HS",
10892 => "2HS",
10893 => "1HS",
10894 => "2HS",
10895 => "1HS",
10896 => "2HS",
10897 => "1HS",
10898 => "2HS",
10899 => "1HS",
10900 => "2HS",
10901 => "1HS",
10902 => "2HS",
10903 => "1HP",
10904 => "1HS",
10905 => "2HS",
10906 => "1HS",
10907 => "2HS",
10908 => "1HS",
10909 => "2HS",
10910 => "1HP",
10911 => "1HP",
10912 => "1HP",
10913 => "1HP",
10914 => "1HP",
10915 => "1HP",
10916 => "1HP",
10917 => "1HP",
10918 => "1HP",
10919 => "1HP",
10920 => "1HS",
10921 => "2HS",
10922 => "1HS",
10923 => "2HS",
10924 => "1HB",
10925 => "2HB",
10926 => "1HB",
10927 => "2HB",
10928 => "1HB",
10929 => "2HB",
10930 => "1HB",
10931 => "2HB",
10932 => "1HB",
10933 => "2HB",
10934 => "1HB",
10935 => "2HB",
10936 => "1HB",
10937 => "2HB",
10938 => "STAFF",
10939 => "CASTER",
10940 => "STAFF",
10941 => "STAFF",
10942 => "STAFF",
10943 => "1HB",
10944 => "STAFF",
10945 => "1HB",
10946 => "1HB",
10947 => "2HB",
10948 => "1HB",
10949 => "2HB",
10950 => "2HP",
10951 => "2HP",
10952 => "2HP",
10953 => "2HP",
10954 => "2HP",
10955 => "2HP",
10956 => "2HP",
10957 => "2HP",
10958 => "1HP",
10959 => "STAFF",
10960 => "SHIELD",
10961 => "SHIELD",
10962 => "SHIELD",
10963 => "SHIELD",
10964 => "SHIELD",
10965 => "SHIELD",
10966 => "SHIELD",
10967 => "SHIELD",
10968 => "SHIELD",
10969 => "SHIELD",
10970 => "SHIELD",
10971 => "SHIELD",
10972 => "SHIELD",
10973 => "SHIELD",
10974 => "SHIELD",
10975 => "SHIELD",
10976 => "SHIELD",
10977 => "SHIELD",
10978 => "SHIELD",
10979 => "SHIELD",
10980 => "SHIELD",
10981 => "SHIELD",
10982 => "SHIELD",
10983 => "SHIELD",
10984 => "SHIELD",
10985 => "SHIELD",
10986 => "SHIELD",
10987 => "SHIELD",
10988 => "SHIELD",
10989 => "SHIELD",
10990 => "SHIELD",
10991 => "SHIELD",
10992 => "SHIELD",
10993 => "SHIELD",
10994 => "SHIELD",
10995 => "SHIELD",
10996 => "SHIELD",
10997 => "BOW",
10998 => "BOW",
10999 => "1HB",
11001 => "SHIELD",
11002 => "SHIELD",
11003 => "SHIELD",
11013 => "SHIELD",
11017 => "SHIELD",
11018 => "SHIELD",
11019 => "SHIELD",
11020 => "SHIELD",
11031 => "OTHER", #Torch
11032 => "STAFF",
11033 => "OTHER", #Hoe
11034 => "OTHER", #Rake
11035 => "OTHER", #Pitch Fork
11036 => "OTHER", #Bucket full of Dirt
11037 => "OTHER", #Bucket full of Apples
11038 => "OTHER", #Bucket full of Rocks
11039 => "OTHER", #Bucket full of Gems
11040 => "OTHER", #Bucket full of Ash?
11041 => "1HP",
11042 => "1HS",
11043 => "2HS",
11044 => "1HB",
11045 => "2HB",
11046 => "1HS",
11047 => "2HS",
11048 => "SHIELD",
11049 => "SHIELD",
11050 => "H2H",
11051 => "H2H",
11052 => "1HB",
11053 => "1HS",
11054 => "OTHER", #Box
11055 => "OTHER", #Rock
11056 => "OTHER", #Bush
11057 => "OTHER", #Rock
11058 => "OTHER", #3 Bones
11059 => "OTHER", #3 Large Books
11060 => "OTHER", #Green Leaf
11061 => "OTHER", #Mushroom
11062 => "OTHER", #Box
11063 => "OTHER", #Box
11064 => "OTHER", #Rock
11065 => "OTHER", #Rock
11066 => "OTHER", #Bush
11067 => "OTHER", #Bush
11068 => "OTHER", #Rock
11069 => "OTHER", #Red Apple
11070 => "OTHER", #Green Apple
11071 => "OTHER", #Pumpkin
11072 => "OTHER", #3 Bones
11073 => "OTHER", #3 Large Books
11074 => "OTHER", #White Branch
11075 => "OTHER", #Palm Tree Leaf
11076 => "OTHER", #Bamboo
11077 => "OTHER", #Brown Branch
11078 => "OTHER", #Dead Branch
11079 => "OTHER", #Brown Leaf
11080 => "OTHER", #Red Maple Leaf
11081 => "OTHER", #Yellow Mushroom
11082 => "OTHER", #Green Mushroom
11083 => "OTHER", #Brown Mushroom
11084 => "OTHER", #Green Branch
11085 => "SHIELD",
11086 => "SHIELD",
11087 => "CASTER",
11088 => "1HS",
11089 => "1HS",
11090 => "1HS",
11091 => "1HP",
11092 => "2HP",
11093 => "1HP",
11094 => "1HS",
11095 => "1HP",
11096 => "OTHER", #Rolling Pin
11097 => "STAFF",
11098 => "CASTER",
11099 => "H2H",
11100 => "2HS",
11101 => "1HP",
11102 => "SHIELD",
11103 => "SHIELD",
11104 => "STAFF",
11105 => "1HS",
11106 => "1HB",
11107 => "2HB",
11108 => "1HS",
11109 => "2HS",
11110 => "SHIELD",
11111 => "SHIELD",
11112 => "1HP",
11113 => "1HS",
11114 => "1HP",
11115 => "1HS",
11116 => "1HS",
11117 => "STAFF",
11118 => "OTHER", #Fish
11119 => "2HP",
11120 => "H2H",
11121 => "OTHER", #Gold Coin
11122 => "OTHER", #Silver Coin
11123 => "OTHER", #Crystal
11124 => "OTHER", #Crystal
11129 => "1HS",
11130 => "2HB",
11131 => "1HP",
11132 => "2HS",
11133 => "2HB",
11139 => "H2H",
11140 => "SHIELD",
11144 => "SHIELD",
11154 => "OTHER", #Large Crystal
11155 => "OTHER", #Large Crystal
11156 => "OTHER", #Large Crystal
11157 => "OTHER", #Large Crystal
11158 => "OTHER", #Large Crystal
11159 => "OTHER", #Large Crystal
11160 => "OTHER", #Large Crystal
11161 => "OTHER", #Large Crystal
11162 => "OTHER", #Small Crystal
11163 => "OTHER", #Small Crystal
11164 => "OTHER", #Small Crystal
11165 => "OTHER", #Small Crystal
11166 => "OTHER", #Small Crystal
11167 => "OTHER", #Small Crystal
11168 => "OTHER", #Small Crystal
11169 => "OTHER" #Small Crystal
#END SoF Weapon Models
);
%AttackTypes = (
"1HS" => 1,
"2HS" => 3,
"1HB" => 0,
"2HB" => 2,
"1HP" => 36,
"2HP" => 36,
"STAFF" => 2,
"ARCHERY" => 7,
"BOW" => 7,
"THROWING" => 51,
"H2H" => 28,
"CASTER" => 28,
"SHIELD" => 28,
"BARD" => 28,
"OTHER" => 28
);
if($EnableRemoving) {
quest::wearchange(7, $PrimaryModel);
quest::wearchange(8, $SecondaryModel);
if ($PrimaryModel) {
my $PrimSkill = $AttackTypes{$WeaponModels{$PrimaryModel}};
$npc->SetPrimSkill($PrimSkill);
}
else {
$npc->SetPrimSkill(28);
}
if($SecondaryModel) {
my $SecSkill = $AttackTypes{$WeaponModels{$SecondaryModel}};
$npc->SetSecSkill($SecSkill);
}
else {
$npc->SetSecSkill(28);
}
}
else {
if ($PrimaryModel) {
quest::wearchange(7, $PrimaryModel);
my $PrimSkill = $AttackTypes{$WeaponModels{$PrimaryModel}};
$npc->SetPrimSkill($PrimSkill);
}
if ($SecondaryModel) {
quest::wearchange(8, $SecondaryModel);
my $SecSkill = $AttackTypes{$WeaponModels{$SecondaryModel}};
$npc->SetSecSkill($SecSkill);
}
}
}
return 1; #Added because all other plugins have this, but it may not actually be required.
3. Save that file to your server /plugins/ folder and name it "weapon_tools.pl".
4. Do a #questreload and the new plugin should be ready for use
Here is an example script:
sub EVENT_SPAWN {
quest::settimer("WeaponChange", 5);
}
sub EVENT_TIMER {
if($timer eq "WeaponChange") {
quest::stoptimer("WeaponChange");
#Any random weapon and shield available through SoF
plugin::RandomWeapons(1, 11169, 50, 200, 230);
}
}
Note that in the example, I didn't set NoDualWield? and IgnoreClass?, because I wanted to show that they are just optional.
The hash of weapon types for every weapon model is something I have been wanting to do for a while. I finally wrote a simple script using saylinks that did most of the work for me while I just looked and clicked the type of weapon I saw. I am sure there are other good uses to having this weapon model type hash. I may adjust this script again, but for now I figured it was good enough to at least post.