From 11eca31d2f8882b62517c0a6367e102dd5721d0d Mon Sep 17 00:00:00 2001
From: Jesusaves <cpntb1@ymail.com>
Date: Sun, 6 Sep 2020 14:56:28 -0300
Subject: Disable looting mode from summons. Also ensure all summons can suffer
 from knockback. There are other stuff I could do, but for now, it is not
 necessary

---
 db/constants.conf         | 21 +++++++++++++++++++++
 npc/config/magic.txt      | 10 ++++++++++
 npc/functions/filters.txt |  3 +--
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/db/constants.conf b/db/constants.conf
index 5b564ef61..a048d65d6 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -71,6 +71,27 @@ constants_db: {
 	bc_blue:   16
 	bc_woe:    32
 
+	comment__: "Monster Modes"
+	MD_NONE:                0
+	MD_CANMOVE:             1
+	MD_LOOTER:              2
+	MD_AGGRESSIVE:          4
+	MD_ASSIST:              8
+	MD_CASTSENSOR_IDLE:     16
+	MD_BOSS:                32
+	MD_PLANT:               64
+	MD_CANATTACK:           128
+	MD_DETECTOR:            256
+	MD_CASTSENSOR_CHASE:    512
+	MD_CHANGECHASE:         1024
+	MD_ANGRY:               2048
+	MD_CHANGETARGET_MELEE:  4096
+	MD_CHANGETARGET_CHASE:  8192
+	MD_TARGETWEAK:          16384
+	MD_NOKNOCKBACK:         32768
+	MD_RANDOMTARGET:        65536
+	//MD_MASK:                0
+
 	comment__: "Mapflags"
 	mf_nomemo:              0
 	mf_noteleport:          1
diff --git a/npc/config/magic.txt b/npc/config/magic.txt
index e843be6f5..77c14a43e 100644
--- a/npc/config/magic.txt
+++ b/npc/config/magic.txt
@@ -123,6 +123,16 @@ function	script	SummonMagic	{
         .@lvx = .@lvx * (80 + abizit() * rand2(5,10)) / 100;
         setunitdata(.@mids, UDT_MAXHP,    .@bhp+.@lvx);
         setunitdata(.@mids, UDT_HP,       .@bhp+.@lvx);
+        // Reconfigure monster modes
+        .@opt=getunitdata(.@mids, UDT_MODE);
+        // Disable looting
+        if (.@opt & MD_LOOTER)
+            .@opt=.@opt^MD_LOOTER;
+        // All summons can suffer knockback
+        if (.@opt & MD_NOKNOCKBACK)
+            .@opt=.@opt^MD_NOKNOCKBACK;
+        // Save new options
+        setunitdata(.@mods, UDT_MODE, .@opt);
     }
     dispbottom l("All monsters summoned!");
     return;
diff --git a/npc/functions/filters.txt b/npc/functions/filters.txt
index fd9928647..01e3a8569 100644
--- a/npc/functions/filters.txt
+++ b/npc/functions/filters.txt
@@ -121,7 +121,6 @@ function	script	filter_friendly	{
 
 // filter_notboss( id )
 function	script	filter_notboss	{
-    // 32 = MD_BOSS
-    return (!(getunitdata(getarg(0), UDT_MODE) & 32));
+    return (!(getunitdata(getarg(0), UDT_MODE) & MD_BOSS));
 }
 
-- 
cgit v1.2.3-70-g09d2