View Single Post
  #1  
Old 02-21-2010, 11:50 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default Plugin::RandomWeapons()

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:

Code:
#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:
Code:
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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 02-27-2010 at 07:10 AM..
Reply With Quote