/* $Id$ * EOSERV is released under the zlib license. * See LICENSE.txt for more info. */ const int WISEMAN_NPC_ID = 166; void karma_menu(Character &character, int param) { Dialog @dialog = new Dialog("Karma Quest"); dialog.AddText("What shall i do to your karma?"); dialog.AddLink("Take 10 Karma", "do_karma", -10); dialog.AddLink("Take 100 Karma", "do_karma", -100); dialog.AddLink("Give 10 Karma", "do_karma", 10); dialog.AddLink("Give 100 Karma", "do_karma", 100); character.OpenDialog(dialog); } void do_karma(Character &character, int param) { character.karma = character.karma + param; } void class_menu(Character &character, int param) { Dialog @dialog = new Dialog("Karma Quest"); dialog.AddText("This is a temporary menu to set your class thru the quest-engine, will be better later on."); for (PtrVector_Iterator<ECF_Data> i(character.world.ecf.data); i.InRange(); i.Forward()) { ECF_Data @class = i.Dereference(); dialog.AddLink("Make me " + class.name, "do_class", class.id); } character.OpenDialog(dialog); } void do_class(Character &character, int param) { character.clas = param; } bool npc_click(CharacterEvent &e) { if (e.target_npc.id == WISEMAN_NPC_ID) { Dialog @dialog = new Dialog("Karma Quest"); dialog.AddText("Hellow stranger, what can i do for you"); dialog.AddLink("Karma menu", "karma_menu", 0); dialog.AddLink("Class menu", "class_menu", 0); e.character.OpenDialog(dialog); return true; } return false; } bool install(HookManager @hookmanager) { if (enf.Get(WISEMAN_NPC_ID).type != ENF::Quest) { Wrn("wiseman script not installed: WISEMAN_NPC_ID not set or not quest NPC"); return false; } hookmanager.Register("character/npc/click", "npc_click"); return true; }