Ok I am releasing the Super Rebirth NPC for UnholyMs. This is a little different but it basically does a Super Rebirth!
It costs 100 Rebirths and it sets your character to default but gives you earings with +30k to all stats.
Your characters will lose their Keyboard settings, It sets their RB's to 0, Sets there stats to 4 and gives 16 AP and changes the job.
I MAY HAVE MISSED SOMETHING! Just let me know
Add to maplecharacter.java
PHP Code:
public void setKeymap(Map<Integer,MapleKeyBinding> k) {
keymap = k;
}
public Map<Integer,MapleKeyBinding> getKeymap () {
return keymap;
}
In MapleInventoryManipulator.java replace the set functions with these:
PHP Code:
public static int editEquipById(MapleCharacter chr, int max, int itemid, String stat, int newval) {
return editEquipById(chr,max,itemid,stat,(short)newval);
}
public static int editEquipById(MapleCharacter chr, int max, int itemid, String stat, short newval) {
// Is it an equip?
if (!MapleItemInformationProvider.getInstance().isEquip(itemid)) {
return -1;
}
// Get List
List<IItem> equips = chr.getInventory(MapleInventoryType.EQUIP).listById(itemid);
List<IItem> equipped = chr.getInventory(MapleInventoryType.EQUIPPED).listById(itemid);
// Do you have any?
if (equips.size() == 0 && equipped.size() == 0) {
return 0;
}
int edited = 0;
// edit items
for(IItem itm : equips) {
Equip e = (Equip)itm;
if (edited >= max) {
break;
}
edited++;
if (stat.equals("str")) {
e.setStr(newval);
} else if (stat.equals("dex")) {
e.setDex(newval);
} else if (stat.equals("int")) {
e.setInt(newval);
} else if (stat.equals("luk")) {
e.setLuk(newval);
} else {
return -2;
}
}
for(IItem itm : equipped) {
Equip e = (Equip)itm;
if (edited >= max) {
break;
}
edited++;
if (stat.equals("str")) {
e.setStr(newval);
} else if (stat.equals("dex")) {
e.setDex(newval);
} else if (stat.equals("int")) {
e.setInt(newval);
} else if (stat.equals("luk")) {
e.setLuk(newval);
} else {
return -2;
}
}
// Return items edited
return (edited);
}
The NPC
PHP Code:
importPackage(net.sf.odinms.server);
var status = 0;
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
}else if (mode == 0){
cm.sendOk("Ok, talk to me when your sure you want to #bSuper Rebirth#k.");
cm.dispose();
}else{
if (mode == 1)
status++;
else
status--;
if (status == 0) {
cm.sendYesNo("Welcome, Unholy hero. Would you like to Super Rebirth? What will happen is that you Character will be reset and you will be given an item with Max Stats on it. It costs 100 Rebirths! So, do you want to Super Rebirth?");
}else if (status == 1) {
if(cm.getPlayer().getReborns() < 100) {
cm.sendOk("Sorry, You need to have Rebirthed 100 or more times.");
cm.dispose();
} else {
if (!cm.hasInventorySpace(cm.getPlayer(), net.sf.odinms.client.MapleInventoryType.EQUIP)) {
cm.sendOk("#bGood-Job#k, you have qualified for a #eSuper Rebirth#n.");
} else {
cm.sendOk("You do not have enough space in your inventory. Please have at least 24 open slots.");
cm.dispose();
}
}
}else if (status == 2) {
// Give item
cm.gainItem(1032033, 1);
// Meow
cm.unequipEverything();
// Reset to default
cm.getPlayer().changeJob(net.sf.odinms.client.MapleJob.BEGINNER);
cm.getPlayer().setDex(4);
cm.getPlayer().setInt(4);
cm.getPlayer().setLuk(4);
cm.getPlayer().setStr(4);
cm.getPlayer().setHp(50);
cm.getPlayer().setMp(50);
cm.getPlayer().setMaxHp(50);
cm.getPlayer().setMaxMp(50);
cm.getPlayer().setRemainingAp(16);
cm.getPlayer().setExp(0);
cm.getPlayer().setLevel(2);
cm.getPlayer().setReborns(0);
cm.getPlayer().setKeymap(net.sf.odinms.client.MapleCharacter.getDefault(cm.getPlayer().getClient()).getKeymap());
// Edit Item stats
net.sf.odinms.server.MapleInventoryManipulator.editEquipById(cm.getPlayer(), 1, 1032033, "str", 30000);
net.sf.odinms.server.MapleInventoryManipulator.editEquipById(cm.getPlayer(), 1, 1032033, "dex", 30000);
net.sf.odinms.server.MapleInventoryManipulator.editEquipById(cm.getPlayer(), 1, 1032033, "luk", 30000);
net.sf.odinms.server.MapleInventoryManipulator.editEquipById(cm.getPlayer(), 1, 1032033, "int", 30000);
// Clean up
cm.getPlayer().getClient().getSession().close();
cm.dispose();
}
}
}
This works on my server if there is something that I did miss let me know and I will add it
Credits:
Shy from UnholyMs for coding
Ambiguous for the idea