| 
   | 
   | 
  
 
    | 
    | 
    | 
  
 
    | 
   | 
    | 
  
 
    | 
   | 
    | 
  
 
    | 
   | 
    | 
  
 
   | 
  
	
		
   
   
      | Development::Tools 3rd Party Tools for EQEMu (DB management tools, front ends, etc...) | 
    
    
   
   
   
   
   
   
   
   
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				07-15-2013, 03:12 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		So the changes to npcspecialattks kind of broke part of the peqeditor and since I use this tool more then any other I thought I would attempt to fix it on my end. 
This is all probably wrong in terms of how the peq team would do it but it does work. 
Here is a patch file against current svn revision:
 
	Code: 
	Index: lib/data.php
===================================================================
--- lib/data.php    (revision 370)
+++ lib/data.php    (working copy)
@@ -890,41 +890,41 @@
 );
 
 $specialattacks = array(
- "S" => "Summon",
- "E" => "Enrage",
- "R" => "Rampage",
- "r" => "AE Rampage",
- "F" => "Flurry",
- "T" => "Triple Attack",
- "Q" => "Quad Attack",
- "m" => "Magic Attack",
- "b" => "Bane Attack",
- "U" => "Unslowable",
- "M" => "Unmezable",
- "C" => "Uncharmable",
- "N" => "Unstunable",
- "I" => "Unsnareable",
- "D" => "Unfearable",
- "p" => "Unpacifiable",
- "A" => "Immune to Melee",
- "B" => "Immune to Magic",
- "f" => "Immune to Fleeing",
- "W" => "Immune to non-Magical Melee",
- "O" => "Immune to non-Bane Melee",
- "H" => "Will Not Aggro",
- "g" => "Resist Ranged Spells",
- "d" => "See through Feign Death",
- "L" => "Dual Wield",
- "G" => "Immune to Aggro",
- "Y" => "Ranged Attack",
- "t" => "Tunnel Vision",
- "i" => "Immune to Taunt",
- "n" => "Does NOT buff/heal friends",
- "j" => "Tethered",
- "J" => "Leashed",
- "o" => "Destructible Object",
- "Z" => "No Harm from Players",
- "K" => "Immune to Dispell"
+ "1,1^" => "Summon",
+ "2,1^" => "Enrage",
+ "3,1^" => "Rampage",
+ "4,1^" => "AE Rampage",
+ "5,1^" => "Flurry",
+ "6,1^" => "Triple Attack",
+ "7,1^" => "Quad Attack",
+ "10,1^" => "Magic Attack",
+ "9,1^" => "Bane Attack",
+ "12,1^" => "Unslowable",
+ "13,1^" => "Unmezable",
+ "14,1^" => "Uncharmable",
+ "15,1^" => "Unstunable",
+ "16,1^" => "Unsnareable",
+ "17,1^" => "Unfearable",
+ "31,1^" => "Unpacifiable",
+ "19,1^" => "Immune to Melee",
+ "20,1^" => "Immune to Magic",
+ "21,1^" => "Immune to Fleeing",
+ "23,1^" => "Immune to non-Magical Melee",
+ "22,1^" => "Immune to non-Bane Melee",
+ "24,1^" => "Will Not Aggro",
+ "26,1^" => "Resist Ranged Spells",
+ "27,1^" => "See through Feign Death",
+ "8,1^" => "Dual Wield",
+ "25,1^" => "Immune to Aggro",
+ "11,1^" => "Ranged Attack",
+ "29,1^" => "Tunnel Vision",
+ "28,1^" => "Immune to Taunt",
+ "30,1^" => "Does NOT buff/heal friends",
+ "33,1^" => "Tethered",
+ "32,1^" => "Leashed",
+ "34,1^" => "Destructible Object",
+ "35,1^" => "No Harm from Players",
+ "18,1^" => "Immune to Dispell"
 );
 
 $tradeskills = array(
Index: lib/npc.php
===================================================================
--- lib/npc.php    (revision 370)
+++ lib/npc.php    (working copy)
@@ -1162,7 +1162,7 @@
       $new_specialattks .= $_POST["$k"];
     }
   }
-  if ($npcspecialattks != $new_specialattks) {
+  if ($special_abilities != $new_specialattks) {
     $flag = 1;
   }
 
@@ -1189,7 +1189,7 @@
   if ($mindmg != $_POST['mindmg']) $fields .= "mindmg=\"" . $_POST['mindmg'] . "\", ";
   if ($maxdmg != $_POST['maxdmg']) $fields .= "maxdmg=\"" . $_POST['maxdmg'] . "\", ";
   if ($attack_count != $_POST['attack_count']) $fields .= "attack_count=\"" . $_POST['attack_count'] . "\", ";
-  if ($flag == 1) $fields .= "npcspecialattks=\"$new_specialattks\", ";
+  if ($flag == 1) $fields .= "special_abilities=\"$new_specialattks\", ";
   if ($aggroradius != $_POST['aggroradius']) $fields .= "aggroradius=\"" . $_POST['aggroradius'] . "\", ";
   if ($face != $_POST['face']) $fields .= "face=\"" . $_POST['face'] . "\", ";
   if ($luclin_hairstyle != $_POST['luclin_hairstyle']) $fields .= "luclin_hairstyle=\"" . $_POST['luclin_hairstyle'] . "\", ";
@@ -1253,7 +1253,9 @@
 
   if ($fields != '') {
     $query = "UPDATE npc_types SET $fields WHERE id=$npcid";
+    $query2 = "UPDATE npc_types SET special_abilities = TRIM(TRAILING '^' FROM special_abilities)";
     $mysql->query_no_result($query);
+    $mysql->query_no_result($query2);
   }
 }
 
@@ -1272,7 +1274,7 @@
   if ($_POST['isquest'] != 1) $_POST['isquest'] = 0;
 
   foreach ($specialattacks as $k => $v) {
-    if (isset($_POST["$k"])) $npcspecialattks .= $_POST["$k"];
+    if (isset($_POST["$k"])) $special_abilities .= $_POST["$k"];
   }
 
   $fields = "id=\"" . $_POST['id']. "\", ";
@@ -1296,7 +1298,7 @@
   $fields .= "mindmg=\"" . $_POST['mindmg'] . "\", ";
   $fields .= "maxdmg=\"" . $_POST['maxdmg'] . "\", ";
   $fields .= "attack_count=\"" . $_POST['attack_count'] . "\", ";
-  $fields .= "npcspecialattks=\"$npcspecialattks\", ";
+  $fields .= "special_abilities=\"$special_abilities\", ";
   $fields .= "aggroradius=\"" . $_POST['aggroradius'] . "\", ";
   $fields .= "face=\"" . $_POST['face'] . "\", ";
   $fields .= "luclin_hairstyle=\"" . $_POST['luclin_hairstyle'] . "\", ";
@@ -1359,7 +1361,9 @@
 
   if ($fields != '') {
     $query = "INSERT INTO npc_types SET $fields";
+    $query2 = "UPDATE npc_types SET special_abilities = TRIM(TRAILING '^' FROM special_abilities)";
     $mysql->query_no_result($query);
+    $mysql->query_no_result($query2);
   }
 }
 
@@ -1390,7 +1394,7 @@
 $fields .= "mindmg=\"" . $_POST['mindmg'] . "\", ";
 $fields .= "maxdmg=\"" . $_POST['maxdmg'] . "\", ";
 $fields .= "attack_count=\"" . $_POST['attack_count'] . "\", ";
-$fields .= "npcspecialattks=\"" . $_POST['npcspecialattks'] . "\", ";
+$fields .= "special_abilities=\"" . $_POST['special_abilities'] . "\", ";
 $fields .= "aggroradius=\"" . $_POST['aggroradius'] . "\", ";
 $fields .= "face=\"" . $_POST['face'] . "\", ";
 $fields .= "luclin_hairstyle=\"" . $_POST['luclin_hairstyle'] . "\", ";
@@ -1455,7 +1459,9 @@
 
   if ($fields != '') {
     $query = "INSERT INTO npc_types SET $fields";
+    $query2 = "UPDATE npc_types SET special_abilities = TRIM(TRAILING '^' FROM special_abilities)";
     $mysql->query_no_result($query);
+    $mysql->query_no_result($query2);
   }
 }
 
Index: templates/npc/npc.edit.tmpl.php
===================================================================
--- templates/npc/npc.edit.tmpl.php    (revision 370)
+++ templates/npc/npc.edit.tmpl.php    (working copy)
@@ -150,45 +150,45 @@
             <table cellpadding="20px">
               <tr>
                 <td valign="top" align="left">
-                  <input type="checkbox" name="S" value="S"<?echo (strpos($npcspecialattks,"S") === false) ? "" : " checked"?>> Summon<br>
-                  <input type="checkbox" name="E" value="E"<?echo (strpos($npcspecialattks,"E") === false) ? "" : " checked"?>> Enrage<br>
-                  <input type="checkbox" name="R" value="R"<?echo (strpos($npcspecialattks,"R") === false) ? "" : " checked"?>> Rampage<br>
-                  <input type="checkbox" name="r" value="r"<?echo (strpos($npcspecialattks,"r") === false) ? "" : " checked"?>> AE Rampage<br>
-                  <input type="checkbox" name="F" value="F"<?echo (strpos($npcspecialattks,"F") === false) ? "" : " checked"?>> Flurry<br>
-                  <input type="checkbox" name="T" value="T"<?echo (strpos($npcspecialattks,"T") === false) ? "" : " checked"?>> Triple Attack<br>
-                  <input type="checkbox" name="Q" value="Q"<?echo (strpos($npcspecialattks,"Q") === false) ? "" : " checked"?>> Quad Attack<br>
-                  <input type="checkbox" name="m" value="m"<?echo (strpos($npcspecialattks,"m") === false) ? "" : " checked"?>> Magic Attack<br>
-                  <input type="checkbox" name="b" value="b"<?echo (strpos($npcspecialattks,"b") === false) ? "" : " checked"?>> Bane Attack<br>
-                  <input type="checkbox" name="L" value="L"<?echo (strpos($npcspecialattks,"L") === false) ? "" : " checked"?>> Dual Wield<br>
-                  <input type="checkbox" name="Y" value="Y"<?echo (strpos($npcspecialattks,"Y") === false) ? "" : " checked"?>> Ranged Attack<br>
+                  <input type="checkbox" name="1,1^" value="1,1^"<?echo (strpos($special_abilities,"1,1^") === false) ? "" : " checked"?>> Summon<br>
+                  <input type="checkbox" name="2,1^" value="2,1^"<?echo (strpos($special_abilities,"2,1^") === false) ? "" : " checked"?>> Enrage<br>
+                  <input type="checkbox" name="3,1^" value="3,1^"<?echo (strpos($special_abilities,"3,1^") === false) ? "" : " checked"?>> Rampage<br>
+                  <input type="checkbox" name="4,1^" value="4,1^"<?echo (strpos($special_abilities,"4,1^") === false) ? "" : " checked"?>> AE Rampage<br>
+                  <input type="checkbox" name="5,1^" value="5,1^"<?echo (strpos($special_abilities,"5,1^") === false) ? "" : " checked"?>> Flurry<br>
+                  <input type="checkbox" name="6,1^" value="6,1^"<?echo (strpos($special_abilities,"6,1^") === false) ? "" : " checked"?>> Triple Attack<br>
+                  <input type="checkbox" name="7,1^" value="7,1^"<?echo (strpos($special_abilities,"7,1^") === false) ? "" : " checked"?>> Quad Attack<br>
+                  <input type="checkbox" name="10,1^" value="10,1^"<?echo (strpos($special_abilities,"10,1^") === false) ? "" : " checked"?>> Magic Attack<br>
+                  <input type="checkbox" name="9,1^" value="9,1^"<?echo (strpos($special_abilities,"9,1^") === false) ? "" : " checked"?>> Bane Attack<br>
+                  <input type="checkbox" name="8,1^" value="8,1^"<?echo (strpos($special_abilities,"8,1^") === false) ? "" : " checked"?>> Dual Wield<br>
+                  <input type="checkbox" name="11,1^" value="11,1^"<?echo (strpos($special_abilities,"11,1^") === false) ? "" : " checked"?>> Ranged Attack<br>
                 </td>
                 <td valign="top" align="left">
-                  <input type="checkbox" name="U" value="U"<?echo (strpos($npcspecialattks,"U") === false) ? "" : " checked"?>> Unslowable<br>
-                  <input type="checkbox" name="M" value="M"<?echo (strpos($npcspecialattks,"M") === false) ? "" : " checked"?>> Unmezable<br>
-                  <input type="checkbox" name="C" value="C"<?echo (strpos($npcspecialattks,"C") === false) ? "" : " checked"?>> Uncharmable<br>
-                  <input type="checkbox" name="N" value="N"<?echo (strpos($npcspecialattks,"N") === false) ? "" : " checked"?>> Unstunable<br>
-                  <input type="checkbox" name="I" value="I"<?echo (strpos($npcspecialattks,"I") === false) ? "" : " checked"?>> Unsnareable<br>
-                  <input type="checkbox" name="D" value="D"<?echo (strpos($npcspecialattks,"D") === false) ? "" : " checked"?>> Unfearable<br>
-                  <input type="checkbox" name="p" value="p"<?echo (strpos($npcspecialattks,"p") === false) ? "" : " checked"?>> Unpacifiable<br>
-                  <input type="checkbox" name="K" value="K"<?echo (strpos($npcspecialattks,"K") === false) ? "" : " checked"?>> Immune to Dispell<br>
-                  <input type="checkbox" name="Z" value="Z"<?echo (strpos($npcspecialattks,"Z") === false) ? "" : " checked"?>> No Harm from Players<br>
-                  <input type="checkbox" name="g" value="g"<?echo (strpos($npcspecialattks,"g") === false) ? "" : " checked"?>> Resist Ranged Spells<br>
-                  <input type="checkbox" name="t" value="t"<?echo (strpos($npcspecialattks,"t") === false) ? "" : " checked"?>> Tunnel Vision<br>
-                  <input type="checkbox" name="i" value="i"<?echo (strpos($npcspecialattks,"i") === false) ? "" : " checked"?>> Immune to Taunt<br>
+                  <input type="checkbox" name="12,1^" value="12,1^"<?echo (strpos($special_abilities,"12,1^") === false) ? "" : " checked"?>> Unslowable<br>
+                  <input type="checkbox" name="13,1^" value="13,1^"<?echo (strpos($special_abilities,"13,1^") === false) ? "" : " checked"?>> Unmezable<br>
+                  <input type="checkbox" name="14,1^" value="14,1^"<?echo (strpos($special_abilities,"14,1^") === false) ? "" : " checked"?>> Uncharmable<br>
+                  <input type="checkbox" name="15,1^" value="15,1^"<?echo (strpos($special_abilities,"15,1^") === false) ? "" : " checked"?>> Unstunable<br>
+                  <input type="checkbox" name="16,1^" value="16,1^"<?echo (strpos($special_abilities,"16,1^") === false) ? "" : " checked"?>> Unsnareable<br>
+                  <input type="checkbox" name="17,1^" value="17,1^"<?echo (strpos($special_abilities,"17,1^") === false) ? "" : " checked"?>> Unfearable<br>
+                  <input type="checkbox" name="31,1^" value="31,1^"<?echo (strpos($special_abilities,"31,1^") === false) ? "" : " checked"?>> Unpacifiable<br>
+                  <input type="checkbox" name="18,1^" value="18,1^"<?echo (strpos($special_abilities,"18,1^") === false) ? "" : " checked"?>> Immune to Dispell<br>
+                  <input type="checkbox" name="35,1^" value="35,1^"<?echo (strpos($special_abilities,"35,1^") === false) ? "" : " checked"?>> No Harm from Players<br>
+                  <input type="checkbox" name="26,1^" value="26,1^"<?echo (strpos($special_abilities,"26,1^") === false) ? "" : " checked"?>> Resist Ranged Spells<br>
+                  <input type="checkbox" name="29,1^" value="29,1^"<?echo (strpos($special_abilities,"29,1^") === false) ? "" : " checked"?>> Tunnel Vision<br>
+                  <input type="checkbox" name="28,1^" value="28,1^"<?echo (strpos($special_abilities,"28,1^") === false) ? "" : " checked"?>> Immune to Taunt<br>
                 </td>
                 <td valign="top" align="left">
-                  <input type="checkbox" name="A" value="A"<?echo (strpos($npcspecialattks,"A") === false) ? "" : " checked"?>> Immune to Melee<br>
-                  <input type="checkbox" name="B" value="B"<?echo (strpos($npcspecialattks,"B") === false) ? "" : " checked"?>> Immune to Magic<br>
-                  <input type="checkbox" name="f" value="f"<?echo (strpos($npcspecialattks,"f") === false) ? "" : " checked"?>> Immune to Fleeing<br>
-                  <input type="checkbox" name="W" value="W"<?echo (strpos($npcspecialattks,"W") === false) ? "" : " checked"?>> Immune to non-Magical Melee<br>
-                  <input type="checkbox" name="O" value="O"<?echo (strpos($npcspecialattks,"O") === false) ? "" : " checked"?>> Immune to non-Bane Melee<br>
-                  <input type="checkbox" name="H" value="H"<?echo (strpos($npcspecialattks,"H") === false) ? "" : " checked"?>> Will Not Aggro<br>
-                  <input type="checkbox" name="G" value="G"<?echo (strpos($npcspecialattks,"G") === false) ? "" : " checked"?>> Immune to Aggro<br>
-                  <input type="checkbox" name="d" value="d"<?echo (strpos($npcspecialattks,"d") === false) ? "" : " checked"?>> See through Feign Death<br>
+                  <input type="checkbox" name="19,1^" value="19,1^"<?echo (strpos($special_abilities,"19,1^") === false) ? "" : " checked"?>> Immune to Melee<br>
+                  <input type="checkbox" name="20,1^" value="20,1^"<?echo (strpos($special_abilities,"20,1^") === false) ? "" : " checked"?>> Immune to Magic<br>
+                  <input type="checkbox" name="21,1^" value="21,1^"<?echo (strpos($special_abilities,"21,1^") === false) ? "" : " checked"?>> Immune to Fleeing<br>
+                  <input type="checkbox" name="23,1^" value="23,1^"<?echo (strpos($special_abilities,"23,1^") === false) ? "" : " checked"?>> Immune to non-Magical Melee<br>
+                  <input type="checkbox" name="22,1^" value="22,1^"<?echo (strpos($special_abilities,"22,1^") === false) ? "" : " checked"?>> Immune to non-Bane Melee<br>
+                  <input type="checkbox" name="24,1^" value="24,1^"<?echo (strpos($special_abilities,"24,1^") === false) ? "" : " checked"?>> Will Not Aggro<br>
+                  <input type="checkbox" name="25,1^" value="25,1^"<?echo (strpos($special_abilities,"25,1^") === false) ? "" : " checked"?>> Immune to Aggro<br>
+                  <input type="checkbox" name="27,1^" value="27,1^"<?echo (strpos($special_abilities,"27,1^") === false) ? "" : " checked"?>> See through Feign Death<br>
                   <input type="checkbox" name="npc_aggro" value="1"<?echo ($npc_aggro == 1) ? "checked" : "";?>> Can Aggro NPCs<br>
-                  <input type="checkbox" name="n" value="n"<?echo (strpos($npcspecialattks,"n") === false) ? "" : " checked"?>> Does NOT buff/heal friends<br>
-                  <input type="checkbox" name="j" value="j" onClick="sanityCheck();"<?echo (strpos($npcspecialattks,"j") === false) ? "" : " checked"?>> Tethered<br>
-                  <input type="checkbox" name="J" value="J" onClick="sanityCheck();"<?echo (strpos($npcspecialattks,"J") === false) ? "" : " checked"?>> Leashed<br>
+                  <input type="checkbox" name="30,1^" value="30,1^"<?echo (strpos($special_abilities,"30,1^") === false) ? "" : " checked"?>> Does NOT buff/heal friends<br>
+                  <input type="checkbox" name="33,1^" value="33,1^" onClick="sanityCheck();"<?echo (strpos($special_abilities,"33,1^") === false) ? "" : " checked"?>> Tethered<br>
+                  <input type="checkbox" name="32,1^" value="32,1^" onClick="sanityCheck();"<?echo (strpos($special_abilities,"32,1^") === false) ? "" : " checked"?>> Leashed<br>
                 </td>
               </tr>
             </table>
@@ -272,7 +272,7 @@
                 </td>
                 <td valign="top" align="left">
                   <input type="checkbox" name="underwater" value="1"<?echo ($underwater == 1) ? " checked" : "";?>> Underwater NPC<br>
-                  <input type="checkbox" name="o" value="o"<?echo (strpos($npcspecialattks,"o") === false) ? "" : " checked"?>> Destructible Object<br>
+                  <input type="checkbox" name="34,1^" value="34,1^"<?echo (strpos($special_abilities,"34,1^") === false) ? "" : " checked"?>> Destructible Object<br>
                   <input type="checkbox" name="isquest" value="1"<?echo ($isquest == 1) ? " checked" : "";?>> Has Quest File<br/>
                 </td>
               </tr>
Index: templates/npc/npc.editlevel.tmpl.php
===================================================================
--- templates/npc/npc.editlevel.tmpl.php    (revision 370)
+++ templates/npc/npc.editlevel.tmpl.php    (working copy)
@@ -145,34 +145,34 @@
             <table cellpadding="20px">
               <tr>
                 <td valign="top" align="left">
-                  <input type="checkbox" name="S" value="S"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "S") ? "checked" : "";}}?>> Summon<br>
-                  <input type="checkbox" name="E" value="E"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "E") ? "checked" : "";}}?>> Enrage<br>
-                  <input type="checkbox" name="R" value="R"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "R") ? "checked" : "";}}?>> Rampage<br>
-                  <input type="checkbox" name="r" value="r"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "r") ? "checked" : "";}}?>> AE Rampage<br>
-                  <input type="checkbox" name="F" value="F"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "F") ? "checked" : "";}}?>> Flurry<br>
-                  <input type="checkbox" name="T" value="T"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "T") ? "checked" : "";}}?>> Triple Attack<br>
-                  <input type="checkbox" name="Q" value="Q"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "Q") ? "checked" : "";}}?>> Quad Attack<br>
-                  <input type="checkbox" name="m" value="m"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "m") ? "checked" : "";}}?>> Magic Attack<br>
-                  <input type="checkbox" name="b" value="b"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "b") ? "checked" : "";}}?>> Bane Attack<br>
+                  <input type="checkbox" name="1,1^" value="1,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "1,1^") ? "checked" : "";}}?>> Summon<br>
+                  <input type="checkbox" name="2,1^" value="2,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "2,1^") ? "checked" : "";}}?>> Enrage<br>
+                  <input type="checkbox" name="3,1^" value="3,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "3,1^") ? "checked" : "";}}?>> Rampage<br>
+                  <input type="checkbox" name="4,1^" value="4,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "4,1^") ? "checked" : "";}}?>> AE Rampage<br>
+                  <input type="checkbox" name="5,1^" value="5,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "5,1^") ? "checked" : "";}}?>> Flurry<br>
+                  <input type="checkbox" name="6,1^" value="6,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "6,1^") ? "checked" : "";}}?>> Triple Attack<br>
+                  <input type="checkbox" name="7,1^" value="7,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "7,1^") ? "checked" : "";}}?>> Quad Attack<br>
+                  <input type="checkbox" name="10,1^" value="10,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "10,1^") ? "checked" : "";}}?>> Magic Attack<br>
+                  <input type="checkbox" name="9,1^" value="9,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "9,1^") ? "checked" : "";}}?>> Bane Attack<br>
                  </td>
                 <td valign="top" align="left">
-                  <input type="checkbox" name="U" value="U"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "U") ? "checked" : "";}}?>> Unslowable<br>
-                  <input type="checkbox" name="M" value="M"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "M") ? "checked" : "";}}?>> Unmezable<br>
-                  <input type="checkbox" name="C" value="C"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "C") ? "checked" : "";}}?>> Uncharmable<br>
-                  <input type="checkbox" name="N" value="N"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "N") ? "checked" : "";}}?>> Unstunable<br>
-                  <input type="checkbox" name="I" value="I"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "I") ? "checked" : "";}}?>> Unsnareable<br>
-                  <input type="checkbox" name="D" value="D"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "D") ? "checked" : "";}}?>> Unfearable<br>
-                  <input type="checkbox" name="K" value="K"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "K") ? "checked" : "";}}?>> Immune to Dispell<br>
-                  <input type="checkbox" name="g" value="g"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "g") ? "checked" : "";}}?>> Resist ranged spells<br>
+                  <input type="checkbox" name="12,1^" value="12,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "12,1^") ? "checked" : "";}}?>> Unslowable<br>
+                  <input type="checkbox" name="13,1^" value="13,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "13,1^") ? "checked" : "";}}?>> Unmezable<br>
+                  <input type="checkbox" name="14,1^" value="14,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "14,1^") ? "checked" : "";}}?>> Uncharmable<br>
+                  <input type="checkbox" name="15,1^" value="15,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "15,1^") ? "checked" : "";}}?>> Unstunable<br>
+                  <input type="checkbox" name="16,1^" value="16,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "16,1^") ? "checked" : "";}}?>> Unsnareable<br>
+                  <input type="checkbox" name="17,1^" value="17,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "17,1^") ? "checked" : "";}}?>> Unfearable<br>
+                  <input type="checkbox" name="18,1^" value="18,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "18,1^") ? "checked" : "";}}?>> Immune to Dispell<br>
+                  <input type="checkbox" name="26,1^" value="26,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "26,1^") ? "checked" : "";}}?>> Resist ranged spells<br>
                 </td>
                 <td valign="top" align="left">
-                  <input type="checkbox" name="A" value="A"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "A") ? "checked" : "";}}?>> Immune to Melee<br>
-                  <input type="checkbox" name="B" value="B"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "B") ? "checked" : "";}}?>> Immune to Magic<br>
-                  <input type="checkbox" name="f" value="f"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "f") ? "checked" : "";}}?>> Immune to Fleeing<br>
-                  <input type="checkbox" name="W" value="W"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "W") ? "checked" : "";}}?>> Immune to non-Magical Melee<br>
-                  <input type="checkbox" name="O" value="O"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "O") ? "checked" : "";}}?>> Immune to non-Bane Melee<br>
-                  <input type="checkbox" name="H" value="H"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "H") ? "checked" : "";}}?>> Will Not Aggro<br>
-                  <input type="checkbox" name="d" value="d"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "d") ? "checked" : "";}}?>> See through Feign Death<br>
+                  <input type="checkbox" name="19,1^" value="19,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "19,1^") ? "checked" : "";}}?>> Immune to Melee<br>
+                  <input type="checkbox" name="20,1^" value="20,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "20,1^") ? "checked" : "";}}?>> Immune to Magic<br>
+                  <input type="checkbox" name="21,1^" value="21,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "21,1^") ? "checked" : "";}}?>> Immune to Fleeing<br>
+                  <input type="checkbox" name="23,1^" value="23,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "23,1^") ? "checked" : "";}}?>> Immune to non-Magical Melee<br>
+                  <input type="checkbox" name="22,1^" value="22,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "22,1^") ? "checked" : "";}}?>> Immune to non-Bane Melee<br>
+                  <input type="checkbox" name="24,1^" value="24,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "24,1^") ? "checked" : "";}}?>> Will Not Aggro<br>
+                  <input type="checkbox" name="27,1^" value="27,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "27,1^") ? "checked" : "";}}?>> See through Feign Death<br>
                   <input type="checkbox" name="npc_aggro" value="1"<?echo ($npc_aggro == 1) ? "checked" : "";?>> Can Aggro NPCs<br>
                        
                </td>
@@ -258,7 +258,7 @@
                </td>
            <td valign="top" align="left">
             <input type="checkbox" name="underwater" value="1"<?echo ($underwater == 1) ? "checked" : "";?>> Underwater NPC<br> 
-           <input type="checkbox" name="o" value="o"<?if ($npcspecialattks != '') {for ($x=0; $x<strlen($npcspecialattks); $x++) { echo ($npcspecialattks[$x] == "o") ? "checked" : "";}}?>> Destructible Object<br>
+           <input type="checkbox" name="34,1^" value="34,1^"<?if ($special_abilities != '') {for ($x=0; $x<strlen($special_abilities); $x++) { echo ($special_abilities[$x] == "34,1^") ? "checked" : "";}}?>> Destructible Object<br>
                </td>
               </tr>
             </table>
Index: templates/npc/npc.tmpl.php
===================================================================
--- templates/npc/npc.tmpl.php    (revision 370)
+++ templates/npc/npc.tmpl.php    (working copy)
@@ -177,7 +177,7 @@
                   <tr>
                     <td align="left" width="33%">Aggro: <?=$aggroradius?></td>
                     <td align="left" width="33%">Atk Speed: <?=$attack_speed?>%</td>
-                    <td align="left" width="34%">Special Atks: <?echo ($npcspecialattks) ? $npcspecialattks : "None";?></td>
+                    <td align="left" width="34%">Special Atks: <?echo ($special_abilities) ? $special_abilities : "None";?></td>
                   </tr>
                   <tr>
                     <td align="left" width="33%">Slow Mit: <?=$slow_mitigation?> (<?=$slotmit?>%)</td>
@@ -327,7 +327,7 @@
         <input type="hidden" name="adventure_template_id" value="<?=$adventure_template_id?>">
         <input type="hidden" name="trap_template" value="<?=$trap_template?>">
         <input type="hidden" name="armortint_id" value="<?=$armortint_id?>">
-        <input type="hidden" name="npcspecialattks" value="<?=$npcspecialattks?>">
+        <input type="hidden" name="special_abilities" value="<?=$special_abilities?>">
         <input type="hidden" name="slow_mitigation" value="<?=$slow_mitigation?>">
         <input type="hidden" name="maxlevel" value="<?=$maxlevel?>">
         <input type="hidden" name="scalerate" value="<?=$scalerate?>">
  
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-20-2013, 04:16 AM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Administrator 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Sep 2006 
					
					
					
						Posts: 1,348
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Cavedude has been busy lately but I'll see what we can do about getting official support for the new special abilities system. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-20-2013, 05:35 AM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		
	Quote: 
	
	
		
			
				
					Originally Posted by  KLS
					 
				 
				Cavedude has been busy lately but I'll see what we can do about getting official support for the new special abilities system. 
			
		 | 
	 
	 
 If you use that patch I forgot to modify destructible object or it didnt work when I did and also as written you can create a npc but on creation it wont set special_abilities. Have to edit it after creation. I figured I would just throw that up for others to use and the smart people that maintain the editor would either figure a better way to do it or figure a better way to do it.    
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-20-2013, 08:20 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Administrator 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Sep 2006 
					
					
					
						Posts: 1,348
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Yeah I think your patch is a nice stopgap but we need better support across the board cause we need to support the params.  Also this is basically the reason PEQ is actually behind versions -.- 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 11:16 AM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		When you click on loot, select the zone and npc. 
LootDrops associated with this LootTable: 3   
Click on add and in this example lets say I am adding a new lootdrop and I want to set probability to 50. 
It would save as 0 and I would have to then click on that 0 value which brings up the edit page and enter it there and then it would save.
 
Minor issue but I noticed it earlier when populating loot in a custom zone and wanted to fix it.
 
Personal preference is all. 
I also changed my copy so when I add items to a loot drop I can set everything on that screen instead of adding a item then having to go in and change stuff like minlvl maxlvl charges and chance.
 
edit: I probably should be pulling from your daily dump more often but its not like anything is really broken and generating patches seems best off the svn revision.  
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 12:13 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 The PEQ Dude 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Apr 2003 
					Location: - 
					
					
						Posts: 1,988
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Hmm, the only option I see broken is when adding an existing lootdrop from search. The options to create a new lootdrop or add an existing one by ID both work fine for me. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 11:59 AM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2010 
					
					
					
						Posts: 965
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		The daily dump is best for starting new. or never changing. the SVN is good when you have existing and want to see what changed. Also posting diff for changes = awesome 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 12:02 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		
	Quote: 
	
	
		
			
				
					Originally Posted by  sorvani
					 
				 
				The daily dump is best for starting new. or never changing. the SVN is good when you have existing and want to see what changed. Also posting diff for changes = awesome 
			
		 | 
	 
	 
 Better then going "I changed XYZ and broke it can you fix it for me." 
I've been guilty of that in the past    
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 12:49 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Hmm looking at lootdrop.add.tmpl.php I see how it is written for default values of 0,0,1,100. 
I wonder if by putting anything into those fields instead of leaving them blank was what caused it to create lootdrops with 0,0,0,0 in the fields. 
Since that patch works I'm going to be lazy and not revert and check but that might be why I was seeing zero across the board. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 01:14 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 The PEQ Dude 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Apr 2003 
					Location: - 
					
					
						Posts: 1,988
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Oh, I wanted to mention that. Your changes to lootdrop.add.tmpl.php should be reverted. You replaced the default values (which exist only to save on typing for the user) to variables that aren't even defined yet. The input field itself is what creates those variables, so it's referencing a variable it hasn't even submitted yet. PHP is very forgiving of course, but another language like C++ wouldn't like that too much and crash.  
 
This change creates NULLs for the input boxes (since the variable doesn't exist yet), so if you clicked submit without filling out all the boxes the DB would fill with default values, which are 0s. If that's not the problem, then there may be something else going on for you else where. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				07-29-2013, 01:32 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		
	Quote: 
	
	
		
			
				
					Originally Posted by  cavedude
					 
				 
				Oh, I wanted to mention that. Your changes to lootdrop.add.tmpl.php should be reverted. You replaced the default values (which exist only to save on typing for the user) to variables that aren't even defined yet. The input field itself is what creates those variables, so it's referencing a variable it hasn't even submitted yet. PHP is very forgiving of course, but another language like C++ wouldn't like that too much and crash.  
 
This change creates NULLs for the input boxes (since the variable doesn't exist yet), so if you clicked submit without filling out all the boxes the DB would fill with default values, which are 0s. If that's not the problem, then there may be something else going on for you else where. 
			
		 | 
	 
	 
 Ok I am tracking with that. Myself I am in the habit of filling in all the fields with something so I'm not sure if that would be an issue. I'll revert later today and check if not inputing anything would generate a default value (0,0,1,100). -- if so I might just remove the ability to even input anything since every time I do put something in the fields it generates the lootdrop as mindrop through probability with value of 0.
 
I did take a look at \lib\loot.php and saw in function assign_lootdrop that droplimit, mindrop, multiplier and probability are defined which is why I made the changes to lootdrop.add.tmpl.php  
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				07-29-2013, 01:39 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 The PEQ Dude 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Apr 2003 
					Location: - 
					
					
						Posts: 1,988
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Yep, lootdrop.add.tmpl.php creates those variables and sends them to loot.php for use in assign_lootdrop(). 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				07-30-2013, 01:41 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		Well I feel stupid to an extent. When I woke up today I deleted every file with a change date that did not match up with the SVN, then reapplied my custom changes for misc stuff like website integration and everything works like it should. 
So at some point in time I changed one of the pages and was not careful with copying from SVN to my web folder and that would explain when I was adding loot drops mindrop,droplimit,multiplier,probability were zero and also I just checked adding items and noticed that I was not careful in the past because the current revision from svn when I add items now I do have the option to change percent. 
 
So thanks cavedude for suffering my posts. It was still nice to take a few min and look at how everything is setup and play with it. 
I was able to make some personalized changes to aspects of the tool yesterday and get an idea for how it should look based on the current templates. 
 
Anyways, thanks as always to you and everyone else from peq that keep this tool up to date. 
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				07-31-2013, 09:15 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Discordant 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2005 
					
					
					
						Posts: 435
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		Reference:  http://www.peqtgc.com/phpBB3/viewtopic.php?f=29&t=14068
I think this is a good idea and decided to go mucking around inside the editor... again. 
This time I am going to include some pictures of the table I tested against.
  
Then what the new option you clicked on brings up. I used one of the 13x13 icons included with the editor for this test.
  
And what the result ended up being after choosing the copy option.
  
You can either choose move (move and delete from old) or copy (move and retain original). 
Here is a patch and I'm pretty sure I did not fubar up this time but its probably not the best way to handle it. Either way you cut it, it does work and can be made pretty as needed. IE I created a new template page but was that really the best method?
 
	Code: 
	Index: lib/loot.php
===================================================================
--- lib/loot.php    (revision 374)
+++ lib/loot.php    (working copy)
@@ -341,6 +341,25 @@
     enable_lootdrop_item();
     header("Location: index.php?editor=loot&z=$z&zoneid=$zoneid&npcid=$npcid");
     exit;
+  case 46:  //Move Lootdrop Item page
+    check_authorization();
+    $body = new Template("templates/loot/lootdrop.move.item.tmpl.php");
+    $body->set('currzone', $z);
+    $body->set('currzoneid', $zoneid);
+    $body->set('npcid', $npcid);
+    $body->set('ldid', $_GET['ldid']);
+    $body->set('itemid', $_GET['itemid']);
+    $body->set('ldname', getLootdropName($_GET['ldid']));
+    $vars = lootdrop_info();
+    foreach ($vars as $key=>$value) {
+      $body->set($key, $value);
+    }
+    break;
+  case 47:  // Move lootdrop item
+    check_authorization();
+    move_copy_lootdrop_item();
+    header("Location: index.php?editor=loot&z=$z&zoneid=$zoneid&npcid=$npcid");
+    exit;
 }
 
 function loottable_info () {
@@ -860,4 +879,30 @@
   $mysql->query_no_result($query);
 }
 
+function move_copy_lootdrop_item() {
+  check_authorization();
+  global $mysql;
+  $ldid = $_GET['ldid'];
+  $itemid = $_GET['itemid'];
+  $equip = $_POST['equip_item'];
+  $charges = $_POST['charges'];
+  $chance = $_POST['chance'];
+  $minlevel = $_POST['minlevel'];
+  $maxlevel = $_POST['maxlevel'];
+  $multiplier = $_POST['multiplier'];
+  $new_ldid = $_POST['movetolootdrop'];
+  $move_copy_item = $_POST['move_copy_item'];
+  if ($move_copy_item == 0) {
+    $query1 = "DELETE FROM lootdrop_entries WHERE lootdrop_id='$ldid' AND item_id='$itemid'";
+    $mysql->query_no_result($query1);
+    
+    $query2 = "INSERT INTO lootdrop_entries SET lootdrop_id=$new_ldid, item_id=$itemid, equip_item=$equip, item_charges=$charges, chance=$chance, minlevel=$minlevel, maxlevel=$maxlevel, multiplier=$multiplier";
+    $mysql->query_no_result($query2);
+  }
+  if ($move_copy_item == 1) {
+    $query = "INSERT INTO lootdrop_entries SET lootdrop_id=$new_ldid, item_id=$itemid, equip_item=$equip, item_charges=$charges, chance=$chance, minlevel=$minlevel, maxlevel=$maxlevel, multiplier=$multiplier";
+    $mysql->query_no_result($query);
+  }
+}
+
 ?>
\ No newline at end of file
Index: templates/loot/lootdrop.move.item.tmpl.php
===================================================================
--- templates/loot/lootdrop.move.item.tmpl.php    (revision 0)
+++ templates/loot/lootdrop.move.item.tmpl.php    (working copy)
@@ -0,0 +1,35 @@
+      <table class="edit_form">
+        <tr>
+          <td class="edit_form_header">
+            <?=$ldname?>
+          </td>
+        </tr>
+        <tr>
+          <td class="edit_form_content">
+          <form name="item" method="post" action="index.php?editor=loot&z=<?=$currzone?>&zoneid=<?=$currzoneid?>&action=47&npcid=<?=$npcid?>&ldid=<?=$ldid?>&itemid=<?=$itemid?>">
+            <strong>Lootdrop:</strong> <?=$ldid?><br>
+            <strong>Item:</strong> <?=$itemid?><br><br>
+            <strong>Move to Lootdrop:</strong></br>
+            <input type="radio" name="move_copy_item" value="0"<?echo ($move_copy_item == 0) ? " checked" : ""?>>Move Item<br>
+            <input type="radio" name="move_copy_item" value="1"<?echo ($move_copy_item == 1) ? " checked" : ""?>>Copy Item<br>
+            <input class="indented" type="text" size="5" name="movetolootdrop" value="<?=$new_ldid?>"><br><br>
+            <strong>Equipped:</strong><br>
+            <input type="radio" name="equip_item" value="0"<?echo ($equip_item == 0) ? " checked" : ""?>>no<br>
+            <input type="radio" name="equip_item" value="1"<?echo ($equip_item == 1) ? " checked" : ""?>>yes<br><br>
+            <strong>Item Charges:</strong> <br>
+            <input class="indented" type="text" size="5" name="charges" value="<?=$item_charges?>"><br><br>
+            <strong>Min Level:</strong> <br>
+            <input class="indented" type="text" size="5" name="minlevel" value="<?=$minlevel?>"><br><br>
+            <strong>Max Level:</strong> <br>
+            <input class="indented" type="text" size="5" name="maxlevel" value="<?=$maxlevel?>"><br><br>
+            <strong>Multiplier:</strong> <br>
+            <input class="indented" type="text" size="5" name="multiplier" value="<?=$multiplier?>"><br><br>
+            <strong>Chance:</strong> <br>
+            <input class="indented" type="text" size="5" name="chance" value="<?=$chance?>">%<br><br>
+            <center>
+              <input type="submit" name="submit" value="Submit Changes">
+            </center>
+          </form>
+          </td>
+        </tr>
+      </table>
Index: templates/loot/loottable.tmpl.php
===================================================================
--- templates/loot/loottable.tmpl.php    (revision 374)
+++ templates/loot/loottable.tmpl.php    (working copy)
@@ -104,11 +104,11 @@
 <?php if(isset($lootdrop['items']) && $lootdrop['items']): $x=0;?>
         <tr>
           <th align="center" width="8%">Item ID</th>
-          <th align="center" width="35%">Item Name</th>
-          <th align="center" width="8%">Equipped?</th>
-          <th align="center" width="8%">Charges</th>
-       <th align="center" width="8%">MinLevel</th>
-       <th align="center" width="8%">MaxLevel</th>
+          <th align="center" width="36%">Item Name</th>
+          <th align="center" width="7%">Equipped?</th>
+          <th align="center" width="7%">Charges</th>
+       <th align="center" width="7%">MinLevel</th>
+       <th align="center" width="7%">MaxLevel</th>
        <th align="center" width="8%">Multiplier</th>
           <th align="center" width="8%">Chance</th>
           <th width="13%"></th>
@@ -145,6 +145,7 @@
          <?=$chance?>%
        </td>
           <td align="right">
+          <a href="index.php?editor=loot&z=<?=$currzone?>&zoneid=<?=$currzoneid?>&npcid=<?=$npcid?>&ldid=<?=$lootdrop['id']?>&itemid=<?=$item_id?>&action=46"><img src="images/minus.gif" border="0" title="Move Lootdrop Item"></a>
             <a href="index.php?editor=loot&z=<?=$currzone?>&zoneid=<?=$currzoneid?>&npcid=<?=$npcid?>&ldid=<?=$lootdrop['id']?>&itemid=<?=$item_id?>&action=5"><img src="images/edit2.gif" border="0" title="Edit Lootdrop Item"></a>
        <?php if($disabled_chance == 0 && $chance > 0):?>  
          <a <?=$lootdrop['id']?>?');" href="index.php?editor=loot&z=<?=$currzone?>&zoneid=<?=$currzoneid?>&npcid=<?=$npcid?>&ldid=<?=$lootdrop['id']?>&itemid=<?=$item_id?>&chance=<?=$chance?>&action=44"><img src="images/downgrade.gif" border="0" title="Disable Item"></a>
  
		
	
		
		
		
		
		
		
			
				__________________ 
				 
			 
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				08-01-2013, 01:45 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 The PEQ Dude 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Apr 2003 
					Location: - 
					
					
						Posts: 1,988
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Thanks for that! I'll be merging it into the next commit, it's very well done. The only thing I changed was I made copy the default option. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Posting Rules
	 | 
 
	
		
		You may not post new threads 
		You may not post replies 
		You may not post attachments 
		You may not edit your posts 
		 
		
		
		
		
		HTML code is Off 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
All times are GMT -4. The time now is 08:30 AM. 
 
		 
	 
 
 
     | 
     | 
    
   
      | 
     | 
      | 
    
   
     | 
      | 
     | 
    
   
       | 
      | 
       | 
     
    
    
  | 
   |