• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в оценке работ на конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык
    Ссылка на тему с работами участников- тык

Кольцо Моргана: замещение бонуса, вместо сложения

Диккен

Участник форума
Регистрация
12 Июн 2004
Сообщения
470
Благодарности
127
Баллы
210
Альтернативный вариант кольца, для повышение сложности игры для стандартного развития героя "воин с одноручным мечом". Изменение двух скриптов: MissionItems_Addon.d и Einhand_EquipBonus.d

MissionItems_Addon.d
Daedalus:
instance ItRi_Addon_MorgansRing_Mission(C_Item)

{
    text[2] = NAME_ADDON_BONUS_1H;
    text[3] = "Принцип работы: замещает модификатор оружия";
};

Daedalus:
func void Equip_MorgansRing()
{
    var int talent;
    var int talentbonus;
    HERO_1H_TALENTBONUS = TRUE;
    if(Npc_IsPlayer(self))
    {
        talent = self.aivar[REAL_TALENT_1H];
        self.HitChance[NPC_TALENT_1H] = talent;
        //B_AddFightSkill(self,NPC_TALENT_1H,10);
        if((self.HitChance[NPC_TALENT_1H] + Waffenbonus_10) > 100)
        {
            talentbonus = 100 - self.HitChance[NPC_TALENT_1H];
            B_AddFightSkill(self,NPC_TALENT_1H,talentbonus);
        }
        else
        {
            B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_10);
        };
    };
};

func void UnEquip_MorgansRing()
{
    var C_Item meleeWeapon;
    var int talent;
    HERO_1H_TALENTBONUS = FALSE;
    if(Npc_IsPlayer(self))
    {
        talent = self.aivar[REAL_TALENT_1H];
        self.HitChance[NPC_TALENT_1H] = talent;
        if(talent < 60)
        {
            B_AddFightSkill(self,NPC_TALENT_1H,0); //нужно сбросить текущую модель анимации, при переходе с 60% до 50% или с 30% до 20%.
        };
    if(Npc_HasEquippedMeleeWeapon(self))
    {
        meleeWeapon = Npc_GetEquippedMeleeWeapon(self);
        if(Hlp_StrCmp(meleeWeapon.text[4],NAME_ADDON_BONUS_1H))
        {
            if(meleeWeapon.count[4] == 10)
            {
                Equip_1H_10();
            }
            else if(meleeWeapon.count[4] == 9)
            {
                Equip_1H_09();
            }
            else if(meleeWeapon.count[4] == 8)
            {
                Equip_1H_08();
            }
            else if(meleeWeapon.count[4] == 7)
            {
                Equip_1H_07();
            }
            else if(meleeWeapon.count[4] == 6)
            {
                Equip_1H_06();
            }
            else if(meleeWeapon.count[4] == 5)
            {
                Equip_1H_05();
            }
            else if(meleeWeapon.count[4] == 4)
            {
                Equip_1H_04();
            }
            else if(meleeWeapon.count[4] == 3)
            {
                Equip_1H_03();
            }
            else if(meleeWeapon.count[4] == 2)
            {
                Equip_1H_02();
            };
        };
    };
    };
};

MissionItems_Addon.d (кольцо из мода "UNnamed v1.53 (Unofficial Update)")
Daedalus:
var int hero_morganring_1h_max_bonus;

instance ItRi_Addon_MorgansRing_Mission(C_Item)
{
    name = "Кольцо Моргана";
    mainflag = ITEM_KAT_MAGIC;
    flags = ITEM_RING | ITEM_MISSION;
    value = 500;
    visual = "ItRi_Prot_Total_02.3DS";
    material = MAT_METAL;
    on_equip = Equip_MorgansRing;
    on_unequip = UnEquip_MorgansRing;
    wear = WEAR_EFFECT;
    effect = "SPELLFX_ITEMGLIMMER";
    description = name;
    text[1] = "На кольце выгравированы изящные руны.";
    text[2] = NAME_ADDON_BONUS_1H;
    count[2] = 10;
    text[5] = NAME_Value;
    count[5] = value;
    inv_zbias = INVCAM_ENTF_RING_STANDARD;
    inv_rotz = INVCAM_Z_RING_STANDARD;
    inv_rotx = INVCAM_X_RING_STANDARD;
};

func void Equip_MorgansRing()
{
    if(self.voice == 15)
    {
        if(self.HitChance[NPC_TALENT_1H] <= 90)
        {
            B_AddFightSkill(self,NPC_TALENT_1H,10);
        }
        else
        {
            HERO_MORGANRING_1H_MAX_BONUS = 100 - self.HitChance[NPC_TALENT_1H];
            B_AddFightSkill(self,NPC_TALENT_1H,HERO_MORGANRING_1H_MAX_BONUS);
        };
    };
};

func void UnEquip_MorgansRing()
{
    if(self.voice == 15)
    {
        if(self.HitChance[NPC_TALENT_1H] <= 90)
        {
            B_AddFightSkill(self,NPC_TALENT_1H,-10);
        }
        else
        {
            B_AddFightSkill(self,NPC_TALENT_1H,-HERO_MORGANRING_1H_MAX_BONUS);
        };
    };
};

Einhand_EquipBonus.d (на базе мода "Gothic II - L'HIVER Edition")
Daedalus:
var int hero_1h_max_bonus; //переменная для контроля пограничного значения навыка свыше 100.
var int hero_1h_talentbonus; //переменная для кольца, значения TRUE или FALSE.

func void Equip_1H_02()
{
    if(Npc_IsPlayer(self))
    {
        if(HERO_1H_TALENTBONUS == TRUE)
        {
            return;
        };
        if((self.HitChance[NPC_TALENT_1H] + Waffenbonus_02) > 100)
        {
            HERO_1H_MAX_BONUS = 100 - self.HitChance[NPC_TALENT_1H];
            B_AddFightSkill(self,NPC_TALENT_1H,HERO_1H_MAX_BONUS);
        }
        else
        {
            HERO_1H_MAX_BONUS = -1;
            B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_02);
        };
    };
};

func void UnEquip_1H_02()
{
    if(Npc_IsPlayer(self))
    {
        if(HERO_1H_TALENTBONUS == TRUE)
        {
            return;
        };
        if(HERO_1H_MAX_BONUS < 0)
        {
            B_AddFightSkill(self,NPC_TALENT_1H,-Waffenbonus_02);
        }
        else
        {
            B_AddFightSkill(self,NPC_TALENT_1H,-HERO_1H_MAX_BONUS);
        };
    };
};

Einhand_EquipBonus.d (на базе мода "UNnamed v1.53 (Unofficial Update)")
Daedalus:
var int hero_1h_max_bonus; //переменная для контроля пограничного значения навыка свыше 100.
var int hero_1h_talentbonus; //переменная для кольца, значения TRUE или FALSE.

func void Equip_1H_02()
{
    if(self.voice == 15)
    {
        if(HERO_1H_TALENTBONUS == TRUE)
        {
            return;
        };
        if(self.HitChance[NPC_TALENT_1H] <= 98)
        {
            B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_02);
        }
        else
        {
            HERO_1H_MAX_BONUS = 100 - self.HitChance[NPC_TALENT_1H];
            B_AddFightSkill(self,NPC_TALENT_1H,HERO_1H_MAX_BONUS);
        };
    };
};

func void UnEquip_1H_02()
{
    if(self.voice == 15)
    {
        if(HERO_1H_TALENTBONUS == TRUE)
        {
            return;
        };
        if(self.HitChance[NPC_TALENT_1H] <= 98)
        {
            B_AddFightSkill(self,NPC_TALENT_1H,-Waffenbonus_02);
        }
        else
        {
            B_AddFightSkill(self,NPC_TALENT_1H,-HERO_1H_MAX_BONUS);
        };
    };
};

Выражаю благодарность авторам модов "Gothic II - L'HIVER Edition" и "UNnamed v1.53 (Unofficial Update)" за идею и исходный код для моддинга.
 
Последнее редактирование:
Сверху Снизу