Untitled

 avatar
unknown
plain_text
8 days ago
3.3 kB
3
Indexable
package l2e.scripts.custom;

import l2e.commons.apache.ArrayUtils;
import l2e.gameserver.model.actor.Npc;
import l2e.gameserver.model.actor.Player;
import l2e.scripts.ai.AbstractNpcAI;

public class MonumentOfHeroes extends AbstractNpcAI {
    private static final int[] MONUMENTS = {
            31690, 31769, 31770, 31771, 31772
    };

    private static final int WINGS_OF_DESTINY_CIRCLET = 6842;
    private static final int[] WEAPONS = {
            6611, 6612, 6613, 6614, 6615, 6616, 6617, 6618, 6619, 6620, 6621, 9388, 9389, 9390,
    };

    private static final int HERO_CLOAK = 9999; // **REPLACE 9999 WITH THE ACTUAL CLOAK ID**

    private MonumentOfHeroes(String name, String descr) {
        super(name, descr);

        addStartNpc(MONUMENTS);
        addTalkId(MONUMENTS);
        addFirstTalkId(MONUMENTS);
    }

    @Override
    public String onAdvEvent(String event, Npc npc, Player player) {
        String htmltext = "";
        switch (event) {
            case "HeroWeapon":
                if (!player.isHero()) {
                    htmltext = "no_hero_weapon.htm";
                } else if (hasAtLeastOneQuestItem(player, WEAPONS)) {
                    htmltext = "already_have_weapon.htm";
                } else {
                    htmltext = "weapon_list.htm";
                }
                break;
            case "HeroCirclet":
                if (!player.isHero()) {
                    htmltext = "no_hero_circlet.htm";
                } else if (hasQuestItems(player, WINGS_OF_DESTINY_CIRCLET)) {
                    htmltext = "already_have_circlet.htm";
                } else {
                    giveItems(player, WINGS_OF_DESTINY_CIRCLET, 1);
                    htmltext = "circlet_given.htm";
                }
                break;
            case "HeroCloak":
                if (!player.isHero()) {
                    htmltext = "no_hero_cloak.htm";
                } else if (hasQuestItems(player, HERO_CLOAK)) {
                    htmltext = "already_have_cloak.htm";
                } else {
                    giveItems(player, HERO_CLOAK, 1);
                    htmltext = "cloak_given.htm";
                }
                break;
            default:
                try {
                    int weaponId = Integer.parseInt(event);
                    if (ArrayUtils.contains(WEAPONS, weaponId)) {
                        giveItems(player, weaponId, 1);
                        htmltext = "weapon_given.htm";
                    } else {
                        htmltext = "invalid_weapon.htm";
                    }
                } catch (NumberFormatException e) {
                    htmltext = "invalid_weapon.htm";
                }
                break;
        }
        return htmltext;
    }

        @Override
    public String onTalk(Npc npc, Player player) {
        return getHtmlPath(player, npc);
    }

    @Override
    public String onFirstTalk(Npc npc, Player player) {
        return getHtmlPath(player, npc);
    }

    private String getHtmlPath(Player player, Npc npc) {
        if (!player.isHero()) {
            return "no_hero.htm";
        }
        return "monument.htm";
    }


    public static void main(String[] args) {
        new MonumentOfHeroes(MonumentOfHeroes.class.getSimpleName(), "custom");
    }
}
Leave a Comment