From: Mario <mario@smbclan.net>
Date: Sun, 19 Jun 2016 17:40:18 +0000 (+1000)
Subject: Purge other from blocked
X-Git-Tag: xonotic-v0.8.2~700^2~128^2~1
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=17b2adabf26ae062a323bb0d2016bf2eea6aea14;p=xonotic%2Fxonotic-data.pk3dir.git

Purge other from blocked
---

diff --git a/qcsrc/common/physics/movetypes/movetypes.qh b/qcsrc/common/physics/movetypes/movetypes.qh
index 764b993805..09b6e4d96d 100644
--- a/qcsrc/common/physics/movetypes/movetypes.qh
+++ b/qcsrc/common/physics/movetypes/movetypes.qh
@@ -8,7 +8,7 @@
 .float move_ltime;
 .void(entity this) move_think;
 .float move_nextthink;
-.void(entity this) move_blocked;
+.void(entity this, entity blocker) move_blocked;
 
 .float move_movetype;
 .float move_time;
diff --git a/qcsrc/common/triggers/func/button.qc b/qcsrc/common/triggers/func/button.qc
index f419553b3f..b186066e60 100644
--- a/qcsrc/common/triggers/func/button.qc
+++ b/qcsrc/common/triggers/func/button.qc
@@ -28,7 +28,7 @@ void button_return(entity this)
 }
 
 
-void button_blocked(entity this)
+void button_blocked(entity this, entity blocker)
 {
 	// do nothing, just don't come all the way back out
 }
diff --git a/qcsrc/common/triggers/func/door.qc b/qcsrc/common/triggers/func/door.qc
index 25c1a27b39..2b3decf64f 100644
--- a/qcsrc/common/triggers/func/door.qc
+++ b/qcsrc/common/triggers/func/door.qc
@@ -23,33 +23,33 @@ THINK FUNCTIONS
 void door_go_down(entity this);
 void door_go_up(entity this);
 void door_rotating_go_down(entity this);
-void door_rotating_go_up(entity this);
+void door_rotating_go_up(entity this, entity oth);
 
-void door_blocked(entity this)
+void door_blocked(entity this, entity blocker)
 {
 	if((this.spawnflags & 8)
 #ifdef SVQC
-		&& (other.takedamage != DAMAGE_NO)
+		&& (blocker.takedamage != DAMAGE_NO)
 #elif defined(CSQC)
-		&& !IS_DEAD(other)
+		&& !IS_DEAD(blocker)
 #endif
 	)
 	{ // KIll Kill Kill!!
 #ifdef SVQC
-		Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+		Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 #endif
 	}
 	else
 	{
 #ifdef SVQC
-		if((this.dmg) && (other.takedamage == DAMAGE_YES))    // Shall we bite?
-			Damage (other, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+		if((this.dmg) && (blocker.takedamage == DAMAGE_YES))    // Shall we bite?
+			Damage (blocker, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 #endif
 
 		 // don't change direction for dead or dying stuff
-		if(IS_DEAD(other)
+		if(IS_DEAD(blocker)
 #ifdef SVQC
-			&& (other.takedamage == DAMAGE_NO)
+			&& (blocker.takedamage == DAMAGE_NO)
 #endif
 		)
 		{
@@ -61,7 +61,7 @@ void door_blocked(entity this)
 				door_go_up (this);
 			} else
 			{
-				door_rotating_go_up (this);
+				door_rotating_go_up(this, blocker);
 			}
 				else
 			if (this.classname == "door")
@@ -77,8 +77,8 @@ void door_blocked(entity this)
 		else
 		{
 			//gib dying stuff just to make sure
-			if((this.dmg) && (other.takedamage != DAMAGE_NO))    // Shall we bite?
-				Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+			if((this.dmg) && (blocker.takedamage != DAMAGE_NO))    // Shall we bite?
+				Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 		}
 #endif
 	}
@@ -235,15 +235,15 @@ void door_fire(entity this, entity actor, entity trigger)
 			door_go_up(e);
 		} else {
 			// if the BIDIR spawnflag (==2) is set and the trigger has set trigger_reverse, reverse the opening direction
-			if ((e.spawnflags & 2) && other.trigger_reverse!=0 && e.lip != 666 && e.state == STATE_BOTTOM) {
+			if ((e.spawnflags & 2) && trigger.trigger_reverse!=0 && e.lip != 666 && e.state == STATE_BOTTOM) {
 				e.lip = 666; // e.lip is used to remember reverse opening direction for door_rotating
 				e.pos2 = '0 0 0' - e.pos2;
 			}
 			// if BIDIR_IN_DOWN (==8) is set, prevent the door from reoping during closing if it is triggered from the wrong side
 			if (!((e.spawnflags & 2) &&  (e.spawnflags & 8) && e.state == STATE_DOWN
-				&& (((e.lip == 666) && (other.trigger_reverse == 0)) || ((e.lip != 666) && (other.trigger_reverse != 0)))))
+				&& (((e.lip == 666) && (trigger.trigger_reverse == 0)) || ((e.lip != 666) && (trigger.trigger_reverse != 0)))))
 			{
-				door_rotating_go_up(e);
+				door_rotating_go_up(e, trigger);
 			}
 		}
 		e = e.enemy;
@@ -308,28 +308,28 @@ void door_touch(entity this, entity toucher)
 #endif
 }
 
-void door_generic_plat_blocked(entity this)
+void door_generic_plat_blocked(entity this, entity blocker)
 {
-	if((this.spawnflags & 8) && (other.takedamage != DAMAGE_NO)) { // Kill Kill Kill!!
+	if((this.spawnflags & 8) && (blocker.takedamage != DAMAGE_NO)) { // Kill Kill Kill!!
 #ifdef SVQC
-		Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+		Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 #endif
 	}
 	else
 	{
 
 #ifdef SVQC
-		if((this.dmg) && (other.takedamage == DAMAGE_YES))    // Shall we bite?
-			Damage (other, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+		if((this.dmg) && (blocker.takedamage == DAMAGE_YES))    // Shall we bite?
+			Damage (blocker, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 #endif
 
 		 //Dont chamge direction for dead or dying stuff
-		if(IS_DEAD(other) && (other.takedamage == DAMAGE_NO))
+		if(IS_DEAD(blocker) && (blocker.takedamage == DAMAGE_NO))
 		{
 			if (this.wait >= 0)
 			{
 				if (this.state == STATE_DOWN)
-					door_rotating_go_up (this);
+					door_rotating_go_up (this, blocker);
 				else
 					door_rotating_go_down (this);
 			}
@@ -338,8 +338,8 @@ void door_generic_plat_blocked(entity this)
 		else
 		{
 			//gib dying stuff just to make sure
-			if((this.dmg) && (other.takedamage != DAMAGE_NO))    // Shall we bite?
-				Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+			if((this.dmg) && (blocker.takedamage != DAMAGE_NO))    // Shall we bite?
+				Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 		}
 #endif
 	}
@@ -382,7 +382,7 @@ void door_rotating_go_down(entity this)
 	SUB_CalcAngleMove (this, this.pos1, TSPEED_LINEAR, this.speed, door_rotating_hit_bottom);
 }
 
-void door_rotating_go_up(entity this)
+void door_rotating_go_up(entity this, entity oth)
 {
 	if (this.state == STATE_UP)
 		return;		// already going up
@@ -400,7 +400,7 @@ void door_rotating_go_up(entity this)
 	string oldmessage;
 	oldmessage = this.message;
 	this.message = "";
-	SUB_UseTargets(this, NULL, other); // TODO: is other needed here?
+	SUB_UseTargets(this, NULL, oth); // TODO: is oth needed here?
 	this.message = oldmessage;
 }
 
diff --git a/qcsrc/common/triggers/func/door_secret.qc b/qcsrc/common/triggers/func/door_secret.qc
index 3ae918fac9..600949fe5c 100644
--- a/qcsrc/common/triggers/func/door_secret.qc
+++ b/qcsrc/common/triggers/func/door_secret.qc
@@ -135,7 +135,7 @@ void fd_secret_done(entity this)
 
 .float door_finished;
 
-void secret_blocked(entity this)
+void secret_blocked(entity this, entity blocker)
 {
 	if (time < this.door_finished)
 		return;
diff --git a/qcsrc/common/triggers/platforms.qc b/qcsrc/common/triggers/platforms.qc
index 93a57941b6..c1f481f8af 100644
--- a/qcsrc/common/triggers/platforms.qc
+++ b/qcsrc/common/triggers/platforms.qc
@@ -1,17 +1,17 @@
-void generic_plat_blocked(entity this)
+void generic_plat_blocked(entity this, entity blocker)
 {
 #ifdef SVQC
-	if(this.dmg && other.takedamage != DAMAGE_NO)
+	if(this.dmg && blocker.takedamage != DAMAGE_NO)
 	{
 		if(this.dmgtime2 < time)
 		{
-			Damage (other, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+			Damage (blocker, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 			this.dmgtime2 = time + this.dmgtime;
 		}
 
 		// Gib dead/dying stuff
-		if(IS_DEAD(other))
-			Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+		if(IS_DEAD(blocker))
+			Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 	}
 #endif
 }
@@ -139,23 +139,23 @@ void plat_trigger_use(entity this, entity actor, entity trigger)
 }
 
 
-void plat_crush(entity this)
+void plat_crush(entity this, entity blocker)
 {
-	if((this.spawnflags & 4) && (other.takedamage != DAMAGE_NO))
+	if((this.spawnflags & 4) && (blocker.takedamage != DAMAGE_NO))
 	{ // KIll Kill Kill!!
 #ifdef SVQC
-		Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+		Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 #endif
 	}
 	else
 	{
 #ifdef SVQC
-		if((this.dmg) && (other.takedamage != DAMAGE_NO))
+		if((this.dmg) && (blocker.takedamage != DAMAGE_NO))
 		{   // Shall we bite?
-			Damage (other, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+			Damage (blocker, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 			// Gib dead/dying stuff
-			if(IS_DEAD(other))
-				Damage (other, this, this, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0');
+			if(IS_DEAD(blocker))
+				Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, blocker.origin, '0 0 0');
 		}
 #endif
 
diff --git a/qcsrc/common/triggers/platforms.qh b/qcsrc/common/triggers/platforms.qh
index c728be596d..f0727be3ca 100644
--- a/qcsrc/common/triggers/platforms.qh
+++ b/qcsrc/common/triggers/platforms.qh
@@ -8,7 +8,7 @@ void plat_outside_touch(entity this, entity toucher);
 void plat_trigger_use(entity this, entity actor, entity trigger);
 void plat_go_up(entity this);
 void plat_go_down(entity this);
-void plat_crush(entity this);
+void plat_crush(entity this, entity blocker);
 const float PLAT_LOW_TRIGGER = 1;
 
 .float dmg;
diff --git a/qcsrc/common/weapons/weapon/crylink.qc b/qcsrc/common/weapons/weapon/crylink.qc
index 938b5e3988..d1f2522abb 100644
--- a/qcsrc/common/weapons/weapon/crylink.qc
+++ b/qcsrc/common/weapons/weapon/crylink.qc
@@ -135,7 +135,7 @@ void W_Crylink_LinkExplode(entity e, entity e2, entity directhitentity)
 	RadiusDamage(e, e.realowner, WEP_CVAR_BOTH(crylink, isprimary, damage) * a, WEP_CVAR_BOTH(crylink, isprimary, edgedamage) * a, WEP_CVAR_BOTH(crylink, isprimary, radius), 
 				NULL, NULL, WEP_CVAR_BOTH(crylink, isprimary, force) * a, e.projectiledeathtype, directhitentity);
 
-	W_Crylink_LinkExplode(e.queuenext, e2);
+	W_Crylink_LinkExplode(e.queuenext, e2, directhitentity);
 
 	e.classname = "spike_oktoremove";
 	remove(e);
diff --git a/qcsrc/lib/self.qh b/qcsrc/lib/self.qh
index 1eb5767fd1..5d42bdccd7 100644
--- a/qcsrc/lib/self.qh
+++ b/qcsrc/lib/self.qh
@@ -72,9 +72,11 @@ SELFWRAP(touch, void, (), (entity this, entity toucher), (this, other))
 #define gettouch(e) SELFWRAP_GET(touch, e)
 #endif
 
-SELFWRAP(blocked, void, (), (entity this), (this))
+#ifndef MENUQC
+SELFWRAP(blocked, void, (), (entity this, entity blocker), (this, other))
 #define setblocked(e, f) SELFWRAP_SET(blocked, e, f)
 #define blocked stopusingthis
+#endif
 
 SELFWRAP(predraw, void, (), (entity this), (this))
 #define setpredraw(e, f) SELFWRAP_SET(predraw, e, f)