浏览代码

Core support for female character geometry.

JIV 15 年之前
父节点
当前提交
099aa0faab

+ 2 - 0
L2_GameServer/java/com/l2jserver/gameserver/datatables/CharTemplateTable.java

@@ -101,6 +101,8 @@ public class CharTemplateTable
 				
 				
 				set.set("collision_radius", rset.getDouble("m_col_r"));
 				set.set("collision_radius", rset.getDouble("m_col_r"));
 				set.set("collision_height", rset.getDouble("m_col_h"));
 				set.set("collision_height", rset.getDouble("m_col_h"));
+				set.set("collision_radius_female", rset.getDouble("f_col_r"));
+				set.set("collision_height_female", rset.getDouble("f_col_h"));
 				ct = new L2PcTemplate(set);
 				ct = new L2PcTemplate(set);
 				
 				
 				_templates.put(ct.classId.getId(), ct);
 				_templates.put(ct.classId.getId(), ct);

+ 2 - 2
L2_GameServer/java/com/l2jserver/gameserver/model/L2Transformation.java

@@ -103,7 +103,7 @@ public abstract class L2Transformation implements Cloneable, Runnable
 	public double getCollisionRadius()
 	public double getCollisionRadius()
 	{
 	{
 		if (isStance())
 		if (isStance())
-			return _player.getBaseTemplate().fCollisionRadius;
+			return _player.getCollisionRadius();
 		return _collisionRadius;
 		return _collisionRadius;
 	}
 	}
 
 
@@ -113,7 +113,7 @@ public abstract class L2Transformation implements Cloneable, Runnable
 	public double getCollisionHeight()
 	public double getCollisionHeight()
 	{
 	{
 		if (isStance())
 		if (isStance())
-			return _player.getBaseTemplate().fCollisionHeight;
+			return _player.getCollisionHeight();
 		return _collisionHeight;
 		return _collisionHeight;
 	}
 	}
 
 

+ 4 - 0
L2_GameServer/java/com/l2jserver/gameserver/model/actor/appearance/PcAppearance.java

@@ -148,6 +148,10 @@ public class PcAppearance
         _hairStyle = (byte) value;
         _hairStyle = (byte) value;
     }
     }
     
     
+    /**
+     * 
+     * @return true if char is female
+     */
     public final boolean getSex()
     public final boolean getSex()
     {
     {
         return _sex;
         return _sex;

+ 17 - 0
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -14588,4 +14588,21 @@ public final class L2PcInstance extends L2Playable
 			}
 			}
 		}
 		}
 	}
 	}
+
+	public double getCollisionRadius()
+	{
+		if (getAppearance().getSex())
+			return getTemplate().fCollisionRadius_female;
+		else
+			return getTemplate().fCollisionRadius;
+	}
+	
+	public double getCollisionHeight()
+	{
+		if (getAppearance().getSex())
+			return getTemplate().fCollisionHeight_female;
+		else
+			return getTemplate().fCollisionHeight;
+	}
+	
 }
 }

+ 2 - 2
L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/CharInfo.java

@@ -292,8 +292,8 @@ public class CharInfo extends L2GameServerPacket
             }
             }
             else
             else
             {
             {
-                writeF(_activeChar.getBaseTemplate().fCollisionRadius);
-                writeF(_activeChar.getBaseTemplate().fCollisionHeight);
+                writeF(_activeChar.getCollisionRadius());
+                writeF(_activeChar.getCollisionHeight());
             }
             }
             
             
 			writeD(_activeChar.getAppearance().getHairStyle());
 			writeD(_activeChar.getAppearance().getHairStyle());

+ 2 - 2
L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/GMViewCharacterInfo.java

@@ -217,8 +217,8 @@ public class GMViewCharacterInfo extends L2GameServerPacket
         writeD(_walkSpd);
         writeD(_walkSpd);
 		writeF(moveMultiplier);
 		writeF(moveMultiplier);
 		writeF(_activeChar.getAttackSpeedMultiplier()); //2.9);//
 		writeF(_activeChar.getAttackSpeedMultiplier()); //2.9);//
-		writeF(_activeChar.getTemplate().fCollisionRadius);  // scale
-		writeF(_activeChar.getTemplate().fCollisionHeight); // y offset ??!? fem dwarf 4033
+		writeF(_activeChar.getCollisionRadius());  // scale
+		writeF(_activeChar.getCollisionHeight()); // y offset ??!? fem dwarf 4033
 		writeD(_activeChar.getAppearance().getHairStyle());
 		writeD(_activeChar.getAppearance().getHairStyle());
 		writeD(_activeChar.getAppearance().getHairColor());
 		writeD(_activeChar.getAppearance().getHairColor());
 		writeD(_activeChar.getAppearance().getFace());
 		writeD(_activeChar.getAppearance().getFace());

+ 2 - 2
L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/UserInfo.java

@@ -250,8 +250,8 @@ public final class UserInfo extends L2GameServerPacket
         }
         }
         else
         else
         {
         {
-            writeF(_activeChar.getBaseTemplate().fCollisionRadius);
-            writeF(_activeChar.getBaseTemplate().fCollisionHeight);
+            writeF(_activeChar.getCollisionRadius());
+            writeF(_activeChar.getCollisionHeight());
         }
         }
 
 
         writeD(_activeChar.getAppearance().getHairStyle());
         writeD(_activeChar.getAppearance().getHairStyle());

+ 6 - 0
L2_GameServer/java/com/l2jserver/gameserver/templates/chars/L2PcTemplate.java

@@ -48,6 +48,9 @@ public class L2PcTemplate extends L2CharTemplate
 	public final float lvlMpAdd;
 	public final float lvlMpAdd;
 	public final float lvlMpMod;
 	public final float lvlMpMod;
 	
 	
+	public final double fCollisionHeight_female;
+	public final double fCollisionRadius_female;
+	
 	private List<PcTemplateItem> _items = new FastList<PcTemplateItem>();
 	private List<PcTemplateItem> _items = new FastList<PcTemplateItem>();
 	
 	
 	public L2PcTemplate(StatsSet set)
 	public L2PcTemplate(StatsSet set)
@@ -68,6 +71,9 @@ public class L2PcTemplate extends L2CharTemplate
 		lvlCpMod = set.getFloat("lvlCpMod");
 		lvlCpMod = set.getFloat("lvlCpMod");
 		lvlMpAdd = set.getFloat("lvlMpAdd");
 		lvlMpAdd = set.getFloat("lvlMpAdd");
 		lvlMpMod = set.getFloat("lvlMpMod");
 		lvlMpMod = set.getFloat("lvlMpMod");
+		
+		fCollisionRadius_female = set.getDouble("collision_radius_female");
+		fCollisionHeight_female = set.getDouble("collision_height_female");
 	}
 	}
 	
 	
 	/**
 	/**