plls21
°¡ÀÔÀÏ: 2008³â 09¿ù 26ÀÏ
°Ô½Ã¹°: 1
|
±Û ÀÛ¼º½Ã°£ : 2011-09-23 ±Ý 3:04 am Á¦¸ñ: ¹«±â¿¡ slayer ¿É¼Ç ¼öÁ¤ ¶Ç´Â Ãß°¡ ¹æ¹ý Á» ¾Ë·ÁÁÖ¼¼¿ä |
|
|
runuo 2.2¸¦ »ç¿ëÇϰí nerun's distro rev52¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù
¼¹ö¸¦ ±¸µ¿ÇϱäÇߴµ¥ ÀÌ°Í Àú°Í »ý°¢ÇÏ´ø Áß¿¡ ¿¹Àü ¾î´À ¼¹ö¿¡¼ º¸¾Ò´ø
slayer°¡ »ý°¢³ª¼ ¼öÁ¤ ÇÏ´øÁß µµÀúÈ÷ ¹æ¹ýÀ» Àß ¸ð¸£°Ú¾î¼ Áú¹® ÇÕ´Ï´Ù
µ¿¹°·ù(µ¿¹°, µå·¡°ï, µîµî)ÀÇ °¡Á×À» ¹þ±â¸é °¡Á×¹«´õ±â(hides)°¡ ½Ãü¿¡ ³Ö¾îÁö°í ±×°É °¡À§·Î ÀÚ¸£¸é °¡Á×Á¶°¢(leather)ÀÌ µÇ¾î ½Ãü¿¡ ³²½À´Ï´Ù.
¹°·Ð °¡Á×¹«´õ±â¸¦ °¡¹æ¿¡ ³Ö°í °¡À§·Î ÀÚ¸£¸é °¡¹æ¿¡ °¡Á×Á¶°¢µéÀÌ ³²±äÇÏÁÒ
±Ùµ¥ ¾î´À ¼¹ö¿¡¼´Â °¡Á× ½½·¹ÀÌ¾î´ø°¡ ÇÏ´Â ¿É¼ÇÀÌ ¹«±â¿¡ ºÙ¾î¼ ¸÷ÀÇ ½Ãü¿¡ ±× ¹«±â¸¦ »ç¿ëÇϸé(´õºíŬ¸¯ ÈÄ ½Ãü Ŭ¸¯) °ð¹Ù·Î °¡Á×Á¶°¢(Leather)µéÀÌ ³» °¡¹æ¿¡ µé¾î¿À´Â °ÍÀ» »ç¿ëÇÑ ÀûÀÌ ÀÖ½À´Ï´Ù.
ÀÌ ¿É¼ÇÀ» Á¦°¡ ±¸µ¿ÇÑ ¼¹ö¿¡¼µµ Àû¿ëÇÏ°í ½ÍÀºµ¥ ¾îµð¸¦ ¾î¶»°Ô ¼öÁ¤ÇؾßÇÒÁö ¸ð¸£°Ú¾î¿ä
ÈȾ °Ç Scripts\Items\Weapons\slayergroup.cs¿Í Scripts\Items\Weapons\slayerentry.cs, ±×¸®°í Scripts\Items\Weapons\slayername.cs ÀÔ´Ï´Ù.
±âÁ¸ÀÇ ½½·¹À̾ ¼öÁ¤Çصµ »ó°ü¾ø°í, ±×°Ô Á» º¹ÀâÇÏ¸é °¡Á×½½·¹À̾ Ãß°¡ÇÏ°í ½Í½À´Ï´Ù
¸¹Àº °í¼ö´ÔµéÀÇ µµ¿ò ºÎŹ µå¸³´Ï´Ù.
Scripts\Items\Weapons\slayergroup.cs
ÄÚµå :
using System;
using Server;
using Server.Mobiles;
namespace Server.Items
{
public class SlayerGroup
{
private static SlayerEntry[] m_TotalEntries;
private static SlayerGroup[] m_Groups;
public static SlayerEntry[] TotalEntries
{
get{ return m_TotalEntries; }
}
public static SlayerGroup[] Groups
{
get{ return m_Groups; }
}
public static SlayerEntry GetEntryByName( SlayerName name )
{
int v = (int)name;
if ( v >= 0 && v < m_TotalEntries.Length )
return m_TotalEntries[v];
return null;
}
public static SlayerName GetLootSlayerType( Type type )
{
for ( int i = 0; i < m_Groups.Length; ++i )
{
SlayerGroup group = m_Groups[i];
Type[] foundOn = group.FoundOn;
bool inGroup = false;
for ( int j = 0; foundOn != null && !inGroup && j < foundOn.Length; ++j )
inGroup = ( foundOn[j] == type );
if ( inGroup )
{
int index = Utility.Random( 1 + group.Entries.Length );
if ( index == 0 )
return group.m_Super.Name;
return group.Entries[index - 1].Name;
}
}
return SlayerName.Silver;
}
static SlayerGroup()
{
SlayerGroup humanoid = new SlayerGroup();
SlayerGroup undead = new SlayerGroup();
SlayerGroup elemental = new SlayerGroup();
SlayerGroup abyss = new SlayerGroup();
SlayerGroup arachnid = new SlayerGroup();
SlayerGroup reptilian = new SlayerGroup();
SlayerGroup fey = new SlayerGroup();
humanoid.Opposition = new SlayerGroup[]{ undead };
humanoid.FoundOn = new Type[]{ typeof( BoneKnight ), typeof( Lich ), typeof( LichLord ) };
humanoid.Super = new SlayerEntry( SlayerName.Repond, typeof( ArcticOgreLord ), typeof( Cyclops ), typeof( Ettin ), typeof( EvilMage ), typeof( EvilMageLord ), typeof( FrostTroll ), typeof( MeerCaptain ), typeof( MeerEternal ), typeof( MeerMage ), typeof( MeerWarrior ), typeof( Ogre ), typeof( OgreLord ), typeof( Orc ), typeof( OrcBomber ), typeof( OrcBrute ), typeof( OrcCaptain ), /*typeof( OrcChopper ), typeof( OrcScout ),*/ typeof( OrcishLord ), typeof( OrcishMage ), typeof( Ratman ), typeof( RatmanArcher ), typeof( RatmanMage ), typeof( SavageRider ), typeof( SavageShaman ), typeof( Savage ), typeof( Titan ), typeof( Troll ) );
humanoid.Entries = new SlayerEntry[]
{
new SlayerEntry( SlayerName.OgreTrashing, typeof( Ogre ), typeof( OgreLord ), typeof( ArcticOgreLord ) ),
new SlayerEntry( SlayerName.OrcSlaying, typeof( Orc ), typeof( OrcBomber ), typeof( OrcBrute ), typeof( OrcCaptain ),/* typeof( OrcChopper ), typeof( OrcScout ),*/ typeof( OrcishLord ), typeof( OrcishMage ) ),
new SlayerEntry( SlayerName.TrollSlaughter, typeof( Troll ), typeof( FrostTroll ) )
};
undead.Opposition = new SlayerGroup[]{ humanoid };
undead.Super = new SlayerEntry( SlayerName.Silver, typeof( AncientLich ), typeof( Bogle ), typeof( BoneKnight ), typeof( BoneMagi ),/* typeof( DarkGuardian ), */typeof( DarknightCreeper ), typeof( FleshGolem ), typeof( Ghoul ), typeof( GoreFiend ), typeof( HellSteed ), typeof( LadyOfTheSnow ), typeof( Lich ), typeof( LichLord ), typeof( Mummy ), typeof( PestilentBandage ), typeof( Revenant ), typeof( RevenantLion ), typeof( RottingCorpse ), typeof( Shade ), typeof( ShadowKnight ), typeof( SkeletalKnight ), typeof( SkeletalMage ), typeof( SkeletalMount ), typeof( Skeleton ), typeof( Spectre ), typeof( Wraith ), typeof( Zombie ) );
undead.Entries = new SlayerEntry[0];
fey.Opposition = new SlayerGroup[]{ abyss };
fey.Super = new SlayerEntry( SlayerName.Fey, typeof( Centaur ), typeof( EtherealWarrior ), typeof( Kirin ), typeof( LordOaks ), typeof( Pixie ), typeof( Silvani ), typeof( Treefellow ), typeof( Unicorn ), typeof( Wisp ), typeof( MLDryad ), typeof( Satyr ) );
fey.Entries = new SlayerEntry[0];
elemental.Opposition = new SlayerGroup[]{ abyss };
elemental.FoundOn = new Type[]{ typeof( Balron ), typeof( Daemon ) };
elemental.Super = new SlayerEntry( SlayerName.ElementalBan, typeof( ToxicElemental ), typeof( AgapiteElemental ), typeof( AirElemental ), typeof( SummonedAirElemental ), typeof( BloodElemental ), typeof( BronzeElemental ), typeof( CopperElemental ), typeof( CrystalElemental ), typeof( DullCopperElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( Efreet ), typeof( FireElemental ), typeof( SummonedFireElemental ), typeof( GoldenElemental ), typeof( IceElemental ), typeof( KazeKemono ), typeof( PoisonElemental ), typeof( RaiJu ), typeof( SandVortex ), typeof( ShadowIronElemental ), typeof( SnowElemental ), typeof( ValoriteElemental ), typeof( VeriteElemental ), typeof( WaterElemental ), typeof( SummonedWaterElemental ) );
elemental.Entries = new SlayerEntry[]
{
new SlayerEntry( SlayerName.BloodDrinking, typeof( BloodElemental ) ),
new SlayerEntry( SlayerName.EarthShatter, typeof( AgapiteElemental ), typeof( BronzeElemental ), typeof( CopperElemental ), typeof( DullCopperElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( GoldenElemental ), typeof( ShadowIronElemental ), typeof( ValoriteElemental ), typeof( VeriteElemental ) ),
new SlayerEntry( SlayerName.ElementalHealth, typeof( PoisonElemental ) ),
new SlayerEntry( SlayerName.FlameDousing, typeof( FireElemental ), typeof( SummonedFireElemental ) ),
new SlayerEntry( SlayerName.SummerWind, typeof( SnowElemental ), typeof( IceElemental ) ),
new SlayerEntry( SlayerName.Vacuum, typeof( AirElemental ), typeof( SummonedAirElemental ) ),
new SlayerEntry( SlayerName.WaterDissipation, typeof( WaterElemental ), typeof( SummonedWaterElemental ) )
};
abyss.Opposition = new SlayerGroup[]{ elemental, fey };
abyss.FoundOn = new Type[]{ typeof( BloodElemental ) };
if( Core.AOS )
{
abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( AbysmalHorror ), typeof( ArcaneDaemon ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( EnslavedGargoyle ), typeof( FanDancer ), typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( Gibberling ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Impaler ), typeof( Moloch ), typeof( Oni ), typeof( Ravager ), typeof( Semidar ), typeof( StoneGargoyle ), typeof( Succubus ), typeof( TsukiWolf ) );
abyss.Entries = new SlayerEntry[]
{
// Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI.
new SlayerEntry( SlayerName.GargoylesFoe, typeof( EnslavedGargoyle ), typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( StoneGargoyle ) ),
};
}
else
{
abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( AbysmalHorror ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( Gargoyle ), typeof( FireGargoyle ), typeof( Gibberling ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Impaler ), typeof( Ravager ), typeof( StoneGargoyle ), typeof( ArcaneDaemon ), typeof( EnslavedGargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( Moloch ) );
abyss.Entries = new SlayerEntry[]
{
new SlayerEntry( SlayerName.DaemonDismissal, typeof( AbysmalHorror ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( Gibberling ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Impaler ), typeof( Ravager ), typeof( ArcaneDaemon ), typeof( Moloch ) ),
new SlayerEntry( SlayerName.GargoylesFoe, typeof( FireGargoyle ), typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( EnslavedGargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ) ),
new SlayerEntry( SlayerName.BalronDamnation, typeof( Balron ) )
};
}
arachnid.Opposition = new SlayerGroup[]{ reptilian };
arachnid.FoundOn = new Type[]{ typeof( AncientWyrm ), typeof( GreaterDragon ), typeof( Dragon ), typeof( OphidianMatriarch ), typeof( ShadowWyrm ) };
arachnid.Super = new SlayerEntry( SlayerName.ArachnidDoom, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ), typeof( Mephitis ), typeof( Scorpion ), typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) );
arachnid.Entries = new SlayerEntry[]
{
new SlayerEntry( SlayerName.ScorpionsBane, typeof( Scorpion ) ),
new SlayerEntry( SlayerName.SpidersDeath, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ), typeof( Mephitis ) ),
new SlayerEntry( SlayerName.Terathan, typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) )
};
reptilian.Opposition = new SlayerGroup[]{ arachnid };
reptilian.FoundOn = new Type[]{ typeof( TerathanAvenger ), typeof( TerathanMatriarch ) };
reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath, typeof( AncientWyrm ), typeof( DeepSeaSerpent ), typeof( GreaterDragon ), typeof( Dragon ), typeof( Drake ), typeof( GiantIceWorm ), typeof( IceSerpent ), typeof( GiantSerpent ), typeof( Hiryu ), typeof( IceSnake ), typeof( JukaLord ), typeof( JukaMage ), typeof( JukaWarrior ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( LesserHiryu ), typeof( Lizardman ), typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ), typeof( SeaSerpent ), typeof( Serado ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SilverSerpent ), typeof( SkeletalDragon ), typeof( Snake ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ), typeof( Yamandon ) );
reptilian.Entries = new SlayerEntry[]
{
new SlayerEntry( SlayerName.DragonSlaying, typeof( AncientWyrm ), typeof( GreaterDragon ), typeof( Dragon ), typeof( Drake ), typeof( Hiryu ), typeof( LesserHiryu ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SkeletalDragon ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ) ),
new SlayerEntry( SlayerName.LizardmanSlaughter, typeof( Lizardman ) ),
new SlayerEntry( SlayerName.Ophidian, typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ) ),
new SlayerEntry( SlayerName.SnakesBane, typeof( DeepSeaSerpent ), typeof( GiantIceWorm ), typeof( GiantSerpent ), typeof( IceSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( SeaSerpent ), typeof( Serado ), typeof( SilverSerpent ), typeof( Snake ), typeof( Yamandon ) )
};
m_Groups = new SlayerGroup[]
{
humanoid,
undead,
elemental,
abyss,
arachnid,
reptilian,
fey
};
m_TotalEntries = CompileEntries( m_Groups );
}
private static SlayerEntry[] CompileEntries( SlayerGroup[] groups )
{
SlayerEntry[] entries = new SlayerEntry[28];
for ( int i = 0; i < groups.Length; ++i )
{
SlayerGroup g = groups[i];
g.Super.Group = g;
entries[(int)g.Super.Name] = g.Super;
for ( int j = 0; j < g.Entries.Length; ++j )
{
g.Entries[j].Group = g;
entries[(int)g.Entries[j].Name] = g.Entries[j];
}
}
return entries;
}
private SlayerGroup[] m_Opposition;
private SlayerEntry m_Super;
private SlayerEntry[] m_Entries;
private Type[] m_FoundOn;
public SlayerGroup[] Opposition{ get{ return m_Opposition; } set{ m_Opposition = value; } }
public SlayerEntry Super{ get{ return m_Super; } set{ m_Super = value; } }
public SlayerEntry[] Entries{ get{ return m_Entries; } set{ m_Entries = value; } }
public Type[] FoundOn{ get{ return m_FoundOn; } set{ m_FoundOn = value; } }
public bool OppositionSuperSlays( Mobile m )
{
for( int i = 0; i < Opposition.Length; i++ )
{
if ( Opposition[i].Super.Slays( m ) )
return true;
}
return false;
}
public SlayerGroup()
{
}
}
}
Scripts\Items\Weapons\slayerentry.cs
ÄÚµå :
using System;
using Server;
using Server.Mobiles;
namespace Server.Items
{
public class SlayerEntry
{
private SlayerGroup m_Group;
private SlayerName m_Name;
private Type[] m_Types;
public SlayerGroup Group{ get{ return m_Group; } set{ m_Group = value; } }
public SlayerName Name{ get{ return m_Name; } }
public Type[] Types{ get{ return m_Types; } }
private static int[] m_AosTitles = new int[]
{
1060479, // undead slayer
1060470, // orc slayer
1060480, // troll slayer
1060468, // ogre slayer
1060472, // repond slayer
1060462, // dragon slayer
1060478, // terathan slayer
1060475, // snake slayer
1060467, // lizardman slayer
1060473, // reptile slayer
1060460, // demon slayer
1060466, // gargoyle slayer
1017396, // Balron Damnation
1060461, // demon slayer
1060469, // ophidian slayer
1060477, // spider slayer
1060474, // scorpion slayer
1060458, // arachnid slayer
1060465, // fire elemental slayer
1060481, // water elemental slayer
1060457, // air elemental slayer
1060471, // poison elemental slayer
1060463, // earth elemental slayer
1060459, // blood elemental slayer
1060476, // snow elemental slayer
1060464, // elemental slayer
1070855 // fey slayer
};
private static int[] m_OldTitles = new int[]
{
1017384, // Silver
1017385, // Orc Slaying
1017386, // Troll Slaughter
1017387, // Ogre Thrashing
1017388, // Repond
1017389, // Dragon Slaying
1017390, // Terathan
1017391, // Snake's Bane
1017392, // Lizardman Slaughter
1017393, // Reptilian Death
1017394, // Daemon Dismissal
1017395, // Gargoyle's Foe
1017396, // Balron Damnation
1017397, // Exorcism
1017398, // Ophidian
1017399, // Spider's Death
1017400, // Scorpion's Bane
1017401, // Arachnid Doom
1017402, // Flame Dousing
1017403, // Water Dissipation
1017404, // Vacuum
1017405, // Elemental Health
1017406, // Earth Shatter
1017407, // Blood Drinking
1017408, // Summer Wind
1017409, // Elemental Ban
1070855 // fey slayer
};
public int Title
{
get
{
int[] titles = ( Core.AOS ? m_AosTitles : m_OldTitles );
return titles[(int)m_Name - 1];
}
}
public SlayerEntry( SlayerName name, params Type[] types )
{
m_Name = name;
m_Types = types;
}
public bool Slays( Mobile m )
{
Type t = m.GetType();
for ( int i = 0; i < m_Types.Length; ++i )
{
if ( m_Types[i] == t )
return true;
}
return false;
}
}
}
Scripts\Items\Weapons\slayername.cs
ÄÚµå :
using System;
namespace Server.Items
{
public enum SlayerName
{
None,
Silver,
OrcSlaying,
TrollSlaughter,
OgreTrashing,
Repond,
DragonSlaying,
Terathan,
SnakesBane,
LizardmanSlaughter,
ReptilianDeath,
DaemonDismissal,
GargoylesFoe,
BalronDamnation,
Exorcism,
Ophidian,
SpidersDeath,
ScorpionsBane,
ArachnidDoom,
FlameDousing,
WaterDissipation,
Vacuum,
ElementalHealth,
EarthShatter,
BloodDrinking,
SummerWind,
ElementalBan, // Bane?
Fey
}
}
|
|