summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/item_db.conf51
-rw-r--r--npc/functions/hub.txt30
2 files changed, 77 insertions, 4 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index cfc7180ba..a92b7c2f0 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -7374,6 +7374,57 @@ item_db: (
addtoskill(TMW2_SPEECH, 1, 2);
">
},
+{
+ Id: 1340
+ AegisName: "MirrorLakeArmor"
+ Name: "Mirror Lake Armor"
+ Type: "IT_ARMOR"
+ Buy: 0
+ Sell: 0
+ Weight: 0
+ Def: 0
+ Loc: "EQP_HEAD_MID"
+ EquipLv: 0
+ Refine: false
+ AllowPickup: false
+ Trade: {
+ nodrop: true
+ notrade: true
+ partneroverride: false
+ noselltonpc: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ .@slv = callfunc("get_byte", ##00_INFO, 0) + 1;
+
+ // Bonus
+ bonus bMaxHP, .@slv*100;
+ bonus bMaxSP, .@slv*20;
+ bonus bAllStats, .@slv*5;
+ bonus bDef2, .@slv*10;
+ bonus bDef, .@slv*10;
+ bonus bFlee, .@slv*10;
+ bonus bHitRate, .@slv*10;
+ bonus bAddMaxWeight, .@slv*25;
+
+ // Penalties
+ bonus bAtkRate,-100;
+ bonus bMatkRate,-100;
+ bonus bBaseAtk,-300;
+ bonus bCriticalRate,-100;
+ bonus bCastrate, -500;
+ bonus bDelayrate, 50;
+
+ // Neutral
+ bonus bAtkEle, Ele_Ghost;
+ bonus bDefEle, Ele_Ghost;
+ ">
+ OnUnequipScript: <" equip(1340); ">
+},
// Boots
{
diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt
index f9987f9b5..382fb21d7 100644
--- a/npc/functions/hub.txt
+++ b/npc/functions/hub.txt
@@ -26,17 +26,29 @@ function script HUB_Login {
if (getvaultid()) {
.@gto=get_byte(##00_INFO, 3);
.@mlp=get_nibble(##00_INFO, 5);
- if (.@gto == $WID) {
+ // Work only on new chars, or chars which cleared Tulimshar.
+ if (.@gto == $WID &&
+ (!getq(General_Narrator) ||
+ (getq(General_Narrator) && BaseLevel > 20)))
+ {
// Warp to the proper Mirror Lake
switch (.@mlp) {
- case 1: warp "018-7-1", 90, 47; break;
- default: warp "014-4", 28, 31; break;
+ case 1: warp "018-7-1", 90, 47; LOCATION$ = "LoF"; break;
+ default: warp "014-4", 28, 31; LOCATION$ = "LoF"; break;
}
// Send debug information
debugmes("Vault User %d moved to lake %d.", getvaultid(), .@mlp);
- // FIXME: Handle new user (non-native) accounts
+ // Handle new user (non-native) accounts
+ if (!getq(General_Narrator)) {
+ getitembound MirrorLakeArmor, 1, 4;
+ equip(MirrorLakeArmor);
+ TUTORIAL=true;
+ //BaseLevel = get_byte(##00_INFO, 0) + 1;
+ // TODO: Display quick tutorial
+ dispbottom l("Mirror Lake : Obtain help with %s.", b("@info"));
+ }
// Unset the target lake/world
set_byte(##00_INFO, 0, 3);
@@ -261,6 +273,16 @@ function script HUB_Logout {
"MLTO", 0);
##VAULT_EXP=0;
api_send(API_FLUSHVAULT, .@api$);
+ // Destroy temporary characters
+ if (countitem(MirrorLakeArmor)) {
+ delitem MirrorLakeArmor, countitem(MirrorLakeArmor);
+ clearitem();
+ resetlvl(2);
+ resetstatus();
+ resetskill();
+ warp "000-0", 22, 24;
+ debugmes("Vault User %d reset!", getvaultid());
+ }
}
}