Thread: safe fall
View Single Post
  #1  
Old 04-14-2009, 12:07 PM
realityincarnate
Developer
 
Join Date: Dec 2007
Posts: 122
Default safe fall

Currently, safe fall skill ups are only checked when fall damage is actually taken. I changed it so that the server makes a check whenever it receives the safe fall opcode from the client. It looks like the SOF opcode is already in place, so this should work fine there too.

Code:
Index: utils/patch_Titanium.conf
===================================================================
--- utils/patch_Titanium.conf	(revision 432)
+++ utils/patch_Titanium.conf	(working copy)
@@ -324,7 +324,7 @@
 OP_RezzComplete=0x4b05
 OP_RezzRequest=0x1035
 OP_RezzAnswer=0x6219
-OP_SafeFallSuccess=0x0000
+OP_SafeFallSuccess=0x3b21
 OP_Shielding=0x3fe6
 OP_TestBuff=0x6ab0		#/testbuff
 OP_Track=0x5d11			# ShowEQ 10/27/05
Index: zone/client_packet.cpp
===================================================================
--- zone/client_packet.cpp	(revision 432)
+++ zone/client_packet.cpp	(working copy)
@@ -5764,9 +5808,7 @@
 	int damage = ed->damage;
 
 	if (ed->dmgtype == 252) {
-		if(HasSkill(SAFE_FALL)) //safe fall is done client side, we don't reduce dmg here
-			CheckIncreaseSkill(SAFE_FALL); //but we do check to see if we get a skill up
-
+		
 		switch(GetAA(aaAcrobatics)) { //Don't know what acrobatics effect is yet but it should be done client side via aa effect.. till then
 		case 1:
 			damage = damage * 95 / 100;
@@ -6516,8 +6588,10 @@
 {
 }
 
-void Client::Handle_OP_SafeFallSuccess(const EQApplicationPacket *app)
+void Client::Handle_OP_SafeFallSuccess(const EQApplicationPacket *app)	// bit of a misnomer, sent whenever safe fall is used (success of fail)
 {
+	if(HasSkill(SAFE_FALL)) //this should only get called if the client has safe fall, but just in case...
+		CheckIncreaseSkill(SAFE_FALL); //check for skill up
 }
 
 void Client::Handle_OP_Heartbeat(const EQApplicationPacket *app)
Reply With Quote