Beispiel #1
0
 private int GetMaxCharges(TalismanType t)
 {
     switch (TalismanType)
     {
         case TalismanType.firewave:
             return 2;
         case TalismanType.massPush:
             return 1;
         case TalismanType.massFreez:
             return 2;
         case TalismanType.heal:
             return 1;
         case TalismanType.doubleDamage:
             return 1;
         case TalismanType.megaArmor:
             return  1;
         case TalismanType.chain:
             return  2;
         case TalismanType.trapDamage:
             return  3;
         case TalismanType.trapAOE:
             return  3;
         case TalismanType.trapFreez:
             return  3;
         case TalismanType.bloodDamage:
             return  2;
         case TalismanType.energyVamp:
             return  1;
         case TalismanType.splitter:
             return  2;
     }
     return 1;
 }
Beispiel #2
0
 public TalismanItem(float power1, float costShoot1, global::TalismanType type)
 {
     this.power = power1;
     this.costShoot = costShoot1;
     this.TalismanType = type;
     Slot = Slot.Talisman;
 }
Beispiel #3
0
 public TalismanItem(int totalPoints, TalismanType type)
 {
     this.power = totalPoints;
     this.TalismanType = type;
     costShoot = power*1.3f;
     Slot = Slot.Talisman;
    // Debug.Log("cost " + costShoot);
 }
Beispiel #4
0
 public TalismanItem(int points, TalismanType type)
 {
     Slot = Slot.Talisman;
     this.TalismanType = type;
     this.points = points;
     costShoot = GreatRandom.RandomizeValue(GetBaseCost(type)*Formuls.BASE_MOSTER_ENERGY)/2;
     IconSprite = DataBaseController.Instance.TalismanIcon(type);
     MaxCharges = GetMaxCharges(type);
     cost = Formuls.CostTalismanBypoints(points);
 }
Beispiel #5
0
 public TalismanItem(float power1, float costShoot1, TalismanType type,int enchant)
 {
     cost = Formuls.CostTalismanBypoints((int)power1);
     this.points = power1;
     this.costShoot = costShoot1;
     this.enchant = enchant;
     this.TalismanType = type;
     IconSprite = DataBaseController.Instance.TalismanIcon(type);
     Slot = Slot.Talisman;
     MaxCharges = GetMaxCharges(type);
 }
Beispiel #6
0
 public static string TalismanName(TalismanType type)
 {
     string name = "no name";
     switch (type)
     {
         case TalismanType.firewave:
             name = "Firewave";
             break;
         case TalismanType.massPush:
             name = "Round punch";
             break;
         case TalismanType.massFreez:
             name = "Freez field";
             break;
         case TalismanType.heal:
             name = "Heal";
             break;
         case TalismanType.doubleDamage:
             name = "Overcharge";
             break;
         case TalismanType.megaArmor:
             name = "Ice armor";
             break;
         case TalismanType.chain:
             name = "Chain strike";
             break;
         case TalismanType.trapDamage:
             name = "Shooting ward";
             break;
         case TalismanType.trapAOE:
             name = "Explosive ward";
             break;
         case TalismanType.trapFreez:
             name = "Freezing ward";
             break;
         case TalismanType.bloodDamage:
             name = "Rapture strike";
             break;
         case TalismanType.energyVamp:
             name = "Soul take";
             break;
         case TalismanType.splitter:
             name = "Equalizer";
             break;
     }
     return name;
 }
Beispiel #7
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 4:
                    {
                        m_MaxHitPoints = reader.ReadEncodedInt();
                        m_HitPoints = reader.ReadEncodedInt();

                        goto case 3;
                    }
                case 3:
                    {
                        m_Slayer = (SlayerName) reader.ReadInt();
                        m_Slayer2 = (SlayerName) reader.ReadInt();

                        goto case 2;
                    }
                case 2:
                    {
                        m_Ownable = (bool) reader.ReadBool();
                        m_Owner = (Mobile) reader.ReadMobile();
                        m_CraftBonusRegular = (CraftList) reader.ReadInt();
                        m_CraftBonusRegularValue = reader.ReadInt();
                        m_CraftBonusExcep = (CraftList) reader.ReadInt();
                        m_CraftBonusExcepValue = reader.ReadInt();
                        m_ProtectionEntry = (NPC_Name) reader.ReadInt();
                        m_ProtectionValue = reader.ReadInt();
                        m_KillersEntry = (NPC_Name) reader.ReadInt();
                        m_KillersValue = reader.ReadInt();
                        m_TalisSlayer = (TalisSlayerName) reader.ReadInt();
                        m_TalismanType = (TalismanType) reader.ReadInt();
                        m_Charges = reader.ReadInt();

                        goto case 1;
                    }
                case 1:
                    {
                        m_MagicalAttributes = new MagicalAttributes( this, reader );
                        m_AosResistances = new ElementAttributes( this, reader );
                        m_SkillBonuses = new SkillBonuses( this, reader );

                        if ( Parent is Mobile )
                        {
                            //-------- Charged Time Left -----------

                            m_isequiped = true;
                            InvalidateProperties();

                            //------ FIN Charged Time Left ---------
                            m_SkillBonuses.AddTo( (Mobile) Parent );
                        }

                        int strBonus = m_MagicalAttributes.BonusStr;
                        int dexBonus = m_MagicalAttributes.BonusDex;
                        int intBonus = m_MagicalAttributes.BonusInt;

                        if ( Parent is Mobile && ( strBonus != 0 || dexBonus != 0 || intBonus != 0 ) )
                        {
                            Mobile m = (Mobile) Parent;

                            string modName = Serial.ToString();

                            if ( strBonus != 0 )
                                m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );

                            if ( dexBonus != 0 )
                                m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );

                            if ( intBonus != 0 )
                                m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
                        }

                        if ( Parent is Mobile )
                            ( (Mobile) Parent ).CheckStatTimers();

                        break;
                    }
                case 0:
                    {
                        if ( Parent is Mobile )
                        {
                            //-------- Charged Time Left -----------

                            m_isequiped = true;
                            InvalidateProperties();

                            //------ FIN Charged Time Left ---------
                            m_SkillBonuses.AddTo( (Mobile) Parent );
                        }
                        m_MagicalAttributes = new MagicalAttributes( this );
                        m_AosResistances = new ElementAttributes( this );
                        m_SkillBonuses = new SkillBonuses( this );

                        break;
                    }
            }

            if ( version < 2 )
            {
                m_Ownable = (bool) reader.ReadBool();
                m_Owner = (Mobile) reader.ReadMobile();
                m_CraftBonusRegular = (CraftList) reader.ReadInt();
                m_CraftBonusRegularValue = reader.ReadInt();
                m_CraftBonusExcep = (CraftList) reader.ReadInt();
                m_CraftBonusExcepValue = reader.ReadInt();
                m_ProtectionEntry = (NPC_Name) reader.ReadInt();
                m_ProtectionValue = reader.ReadInt();
                m_KillersEntry = (NPC_Name) reader.ReadInt();
                m_KillersValue = reader.ReadInt();
                m_TalisSlayer = (TalisSlayerName) reader.ReadInt();
                m_TalismanType = (TalismanType) reader.ReadInt();
                m_Charges = reader.ReadInt();
            }
        }
Beispiel #8
0
        public override void OnDoubleClick(Mobile m)
        {
            if (m_TalismanType == TalismanType.None)
            {
                return;
            }

            if (this.Parent != m)
            {
                m.SendLocalizedMessage(502641);                   // You must equip this item to use it.
            }
            else if (m_ChargeTimeLeft > 0)
            {
                int tmptime = (m_ChargeTimeLeft2 - (DateTime.Now.Second - m_ChargeTimeLeft3.Second) + 1);

                if (tmptime > (m_ChargeTimeLeft2 + 1))
                {
                    tmptime -= 60;
                }
                if (tmptime > m_ChargeTimeLeft2)
                {
                    tmptime = m_ChargeTimeLeft2;
                }

                m.SendLocalizedMessage(1074882, tmptime.ToString());                   // You must wait ~1_val~ seconds for this to recharge.
            }
            else if (m_Charges == 0)
            {
                m.SendLocalizedMessage(501250);                   // This magic item is out of charges.
            }
            else
            {
                if ((int)m_TalismanType <= 4)
                {
                    //Removal
                    m.Target = new InternalTarget(this);
                }
                //Mana Phase
                else if (m_TalismanType == TalismanType.ManaPhase)
                {
                    ManaPhase.OnUse(m, this);
                }
                else if ((int)m_TalismanType >= 9)
                {
                    //Summon creature
                    BaseCreature bc = (BaseCreature)Activator.CreateInstance(SummonEntry.GetNPC(m_TalismanType));
                    if (BaseCreature.Summon(bc, m, m.Location, -1, TimeSpan.FromMinutes(10.0)))
                    {
                        bc.FixedParticles(0x3728, 1, 10, 9910, EffectLayer.Head);
                        bc.PlaySound(bc.GetIdleSound());
                        m_SummonedCreature = bc;
                        m_Charges--;
                        InvalidateProperties();
                        ChargeTimeLeft = 1800;
                        m_ChargeTimer  = new ChargeTimeLeftTimer(this);
                        m_ChargeTimer.Start();
                        m_ChargeTimeLeft3 = DateTime.Now;
                    }
                }
                else if (m_TalismanType == TalismanType.SummonRandom)
                {
                    //Summon Random
                    TalismanType tmpbc = SummonEntry.GetRandom();
                    BaseCreature bc    = (BaseCreature)Activator.CreateInstance(SummonEntry.GetNPC(tmpbc));
                    if (BaseCreature.Summon(bc, m, m.Location, -1, TimeSpan.FromMinutes(10.0)))
                    {
                        bc.FixedParticles(0x3728, 1, 10, 9910, EffectLayer.Head);
                        bc.PlaySound(bc.GetIdleSound());
                        m_SummonedCreature = bc;
                        m_Charges--;
                        InvalidateProperties();
                        ChargeTimeLeft = 1800;
                        m_ChargeTimer  = new ChargeTimeLeftTimer(this);
                        m_ChargeTimer.Start();
                        m_ChargeTimeLeft3 = DateTime.Now;
                    }
                }
                else
                {
                    Item summonitem;
                    int  message;

                    // Summon item
                    if (m_TalismanType == TalismanType.SummonBandage)
                    {
                        summonitem        = new Bandage(10);
                        summonitem.ItemID = 0x0EE9;
                        summonitem.Hue    = 0xA3;
                        message           = 1075002;               // You have been given some clean bandages.
                    }
                    else if (m_TalismanType == TalismanType.SummonBoard)
                    {
                        summonitem     = new Board(10);
                        summonitem.Hue = 0xA3;
                        message        = 1075000; // You have been given some wooden boards.
                    }
                    else                          // if ( m_TalismanType == TalismanType.SummonIngot )
                    {
                        summonitem     = new IronIngot(10);
                        summonitem.Hue = 0xA3;
                        message        = 1075001;                  // You have been given some ingots.
                    }

                    m.AddToBackpack(summonitem);
                    m.SendLocalizedMessage(message);

                    m_Charges--;
                    InvalidateProperties();
                    ChargeTimeLeft = 60;

                    m_ChargeTimer = new ChargeTimeLeftTimer(this);
                    m_ChargeTimer.Start();
                    m_ChargeTimeLeft3 = DateTime.Now;
                }
            }
        }
Beispiel #9
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 4:
            {
                m_MaxHitPoints = reader.ReadEncodedInt();
                m_HitPoints    = reader.ReadEncodedInt();

                goto case 3;
            }

            case 3:
            {
                m_Slayer  = (SlayerName)reader.ReadInt();
                m_Slayer2 = (SlayerName)reader.ReadInt();

                goto case 2;
            }

            case 2:
            {
                m_Ownable                = (bool)reader.ReadBool();
                m_Owner                  = (Mobile)reader.ReadMobile();
                m_CraftBonusRegular      = (CraftList)reader.ReadInt();
                m_CraftBonusRegularValue = reader.ReadInt();
                m_CraftBonusExcep        = (CraftList)reader.ReadInt();
                m_CraftBonusExcepValue   = reader.ReadInt();
                m_ProtectionEntry        = (NPC_Name)reader.ReadInt();
                m_ProtectionValue        = reader.ReadInt();
                m_KillersEntry           = (NPC_Name)reader.ReadInt();
                m_KillersValue           = reader.ReadInt();
                m_TalisSlayer            = (TalisSlayerName)reader.ReadInt();
                m_TalismanType           = (TalismanType)reader.ReadInt();
                m_Charges                = reader.ReadInt();

                goto case 1;
            }

            case 1:
            {
                m_MagicalAttributes = new MagicalAttributes(this, reader);
                m_AosResistances    = new ElementAttributes(this, reader);
                m_SkillBonuses      = new SkillBonuses(this, reader);

                if (Parent is Mobile)
                {
                    //-------- Charged Time Left -----------

                    m_isequiped = true;
                    InvalidateProperties();

                    //------ FIN Charged Time Left ---------
                    m_SkillBonuses.AddTo((Mobile)Parent);
                }

                int strBonus = m_MagicalAttributes.BonusStr;
                int dexBonus = m_MagicalAttributes.BonusDex;
                int intBonus = m_MagicalAttributes.BonusInt;

                if (Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0))
                {
                    Mobile m = (Mobile)Parent;

                    string modName = Serial.ToString();

                    if (strBonus != 0)
                    {
                        m.AddStatMod(new StatMod(StatType.Str, modName + "Str", strBonus, TimeSpan.Zero));
                    }

                    if (dexBonus != 0)
                    {
                        m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero));
                    }

                    if (intBonus != 0)
                    {
                        m.AddStatMod(new StatMod(StatType.Int, modName + "Int", intBonus, TimeSpan.Zero));
                    }
                }

                if (Parent is Mobile)
                {
                    ((Mobile)Parent).CheckStatTimers();
                }

                break;
            }

            case 0:
            {
                if (Parent is Mobile)
                {
                    //-------- Charged Time Left -----------

                    m_isequiped = true;
                    InvalidateProperties();

                    //------ FIN Charged Time Left ---------
                    m_SkillBonuses.AddTo((Mobile)Parent);
                }
                m_MagicalAttributes = new MagicalAttributes(this);
                m_AosResistances    = new ElementAttributes(this);
                m_SkillBonuses      = new SkillBonuses(this);

                break;
            }
            }

            if (version < 2)
            {
                m_Ownable                = (bool)reader.ReadBool();
                m_Owner                  = (Mobile)reader.ReadMobile();
                m_CraftBonusRegular      = (CraftList)reader.ReadInt();
                m_CraftBonusRegularValue = reader.ReadInt();
                m_CraftBonusExcep        = (CraftList)reader.ReadInt();
                m_CraftBonusExcepValue   = reader.ReadInt();
                m_ProtectionEntry        = (NPC_Name)reader.ReadInt();
                m_ProtectionValue        = reader.ReadInt();
                m_KillersEntry           = (NPC_Name)reader.ReadInt();
                m_KillersValue           = reader.ReadInt();
                m_TalisSlayer            = (TalisSlayerName)reader.ReadInt();
                m_TalismanType           = (TalismanType)reader.ReadInt();
                m_Charges                = reader.ReadInt();
            }
        }
Beispiel #10
0
 public static Type GetNPC(TalismanType name)
 {
     return(m_Table[((int)name - 9)].m_NPC);
 }
Beispiel #11
0
 public SummonEntry(TalismanType name, Type npc)
 {
     m_Name = name;
     m_NPC  = npc;
 }
Beispiel #12
0
 private int GetBaseCost(TalismanType t)
 {
     switch (TalismanType)
     {
         case TalismanType.firewave:
             return 6;
         case TalismanType.massPush:
             return 6;
         case TalismanType.massFreez:
             return 6;
         case TalismanType.heal:
             return 5;
         case TalismanType.doubleDamage:
             return 4;
         case TalismanType.megaArmor:
             return 4;
         case TalismanType.chain:
             return 6;
         case TalismanType.trapDamage:
             return 5;
         case TalismanType.trapAOE:
             return 7;
         case TalismanType.trapFreez:
             return 7;
         case TalismanType.bloodDamage:
             return 4;
         case TalismanType.energyVamp:
             return 5;
         case TalismanType.splitter:
             return 5;
     }
     return 1;
 }
Beispiel #13
0
 public SummonEntry( TalismanType name, Type npc )
 {
     m_Name = name;
     m_NPC = npc;
 }
Beispiel #14
0
 public static Type GetNPC( TalismanType name )
 {
     return m_Table[( (int) name - 9 )].m_NPC;
 }