Skip to content

doriyan13/NpcScriptAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

❤ Dori NPC Script API ❤

This is my take on NPC scripting, i wanted to make fluent low overhead scripting ability that also let you debug in run-time the code and still have the hotswap ability, in addition wanted to have auto complete ability with a chaining style writing.

Enjoy ~

Example -

public class Henesys {
    private static MenuOption addTaxiMoveOption(ScriptApi script,
                                        MapleChar chr,
                                        int mapId,
                                        boolean beginner,
                                        int cost) {
        int finalCost = beginner ? cost / 10 : cost;
        String mapName = NpcMessageUtils.mapName(mapId);
        return script.addMenuOption( mapName + "(" + (finalCost) + " mesos)", () -> {
            script.askYesNo("You don't have anything else to do here, huh? Do you really want to go to "
                    + NpcMessageUtils.bold(mapName) + "? It'll cost you " + NpcMessageUtils.bold(finalCost) + " mesos.", response -> {
                if (response) {
                    if (chr.getMeso() - finalCost >= 0) {
                        chr.modifyMeso(-finalCost);
                        chr.warp(mapId);
                    } else {
                        script.sayOK("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab.");
                    }
                } else {
                    script.sayOK("There's a lot to see in this town, too. Come back and find us when you need to go to a different town.");
                }
            });
        });
    }
    
    // Town ID - 100000000
    @NpcScript(id = 1012000)
    public static ScriptApi handleTaxi(MapleChar chr) {

        ScriptApi script = new ScriptApi();
        boolean beginner = chr.getJob() == Beginner.getId();
        script.sayNext("Hello, I drive the Regular Cab. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price.");
        if (beginner) {
            script.askMenu("We have a special 90% discount for beginners.",
                            NpcScriptUtils.addTaxiMoveOption(script,chr,104000000,chr.getJob() == 0, 1000),
                            NpcScriptUtils.addTaxiMoveOption(script,chr,102000000,chr.getJob() == 0, 1000),
                            NpcScriptUtils.addTaxiMoveOption(script,chr,101000000,chr.getJob() == 0, 800),
                            NpcScriptUtils.addTaxiMoveOption(script,chr,103000000,chr.getJob() == 0, 1000),
                            NpcScriptUtils.addTaxiMoveOption(script,chr,120000000,chr.getJob() == 0, 800)
                            );
        }
        return script;
    }
}

About

Java based NPC scripting API ~

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages