summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-08-31 15:03:45 -0300
committerJesusaves <cpntb1@ymail.com>2019-08-31 15:03:45 -0300
commit63256388cb5b9ef7bc1a4afbd0270c135882d622 (patch)
tree7519f7aa64fd56f71038ad59ee747ba2c761082f
parent5dab87b522e5ff18b6a62e86c369ac3295c1817f (diff)
parent4de339bf2c92af5f74cdb28b0eb62e8ca66993c4 (diff)
downloadserverdata-testserver.tar.gz
serverdata-testserver.tar.bz2
serverdata-testserver.tar.xz
serverdata-testserver.zip
Merge branch 'master' into testservertestserver
-rw-r--r--conf/map/maps.conf2
-rw-r--r--db/item_options.conf7
-rw-r--r--db/map_index.txt100
-rw-r--r--db/re/exp_guild.txt4
-rw-r--r--db/re/item_db.conf13
-rw-r--r--db/re/map_zone_db.conf4
-rw-r--r--db/re/mob_db.conf6
-rw-r--r--db/re/skill_db.conf219
-rw-r--r--maps/re/017-1.mcachebin4239 -> 4242 bytes
-rw-r--r--maps/re/018-6-2.mcachebin0 -> 543 bytes
-rw-r--r--maps/re/018-6-3.mcachebin0 -> 612 bytes
-rw-r--r--npc/003-0/colin.txt8
-rw-r--r--npc/003-0/luca.txt2
-rw-r--r--npc/003-0/trickmaster.txt13
-rw-r--r--npc/003-1/tinris.txt30
-rw-r--r--npc/004-1/anwar.txt4
-rw-r--r--npc/012-1/shoppakep.txt4
-rw-r--r--npc/014-2/mouboo.txt1
-rw-r--r--npc/014-5-1/sagratha.txt4
-rw-r--r--npc/015-8-1/_import.txt2
-rw-r--r--npc/017-1/townhall.txt30
-rw-r--r--npc/017-4/refine.txt12
-rw-r--r--npc/018-6-0/_import.txt1
-rw-r--r--npc/018-6-0/ctrl29
-rw-r--r--npc/018-6-0/main.txt122
-rw-r--r--npc/018-6-1/_import.txt1
-rw-r--r--npc/018-6-1/main.txt115
-rw-r--r--npc/018-6-2/_import.txt3
-rw-r--r--npc/018-6-2/main.txt48
-rw-r--r--npc/018-6-3/_import.txt2
-rw-r--r--npc/_import.txt2
-rw-r--r--npc/craft/options.txt4
-rw-r--r--npc/functions/clientversion.txt42
-rw-r--r--npc/functions/game-rules.txt4
-rw-r--r--npc/functions/refine.txt2
-rw-r--r--npc/items/teleporter.txt6
36 files changed, 631 insertions, 215 deletions
diff --git a/conf/map/maps.conf b/conf/map/maps.conf
index 733e5f357..5abef6ff7 100644
--- a/conf/map/maps.conf
+++ b/conf/map/maps.conf
@@ -129,6 +129,8 @@ map_list: (
"018-5",
"018-6-0",
"018-6-1",
+ "018-6-2",
+ "018-6-3",
"019-1-1",
"019-1",
"019-2",
diff --git a/db/item_options.conf b/db/item_options.conf
index 9eabad237..cce2306f2 100644
--- a/db/item_options.conf
+++ b/db/item_options.conf
@@ -1050,7 +1050,7 @@ item_options_db: (
{
Id: 187
Name: "IOPT_SPLASHDAMAGE"
- Script: <" bonus(bSplashRange, getequippedoptioninfo(IT_OPT_VALUE)); ">
+ Script: <" bonus(bSplashAddRange, getequippedoptioninfo(IT_OPT_VALUE)); ">
},
{
Id: 188
@@ -1111,6 +1111,11 @@ item_options_db: (
Id: 199
Name: "IOPT_CRITDMG"
Script: <" bonus(bCritAtkRate, getequippedoptioninfo(IT_OPT_VALUE)); ">
+},
+{
+ Id: 200
+ Name: "IOPT_RICHNESS"
+ Script: <" bonus2(bAddGetZenyNum, -1, getequippedoptioninfo(IT_OPT_VALUE)); ">
}
diff --git a/db/map_index.txt b/db/map_index.txt
index 3cf92e99f..2dc2bd3ea 100644
--- a/db/map_index.txt
+++ b/db/map_index.txt
@@ -126,52 +126,54 @@
018-5 126
018-6-0 127
018-6-1 128
-019-1-1 129
-019-1 130
-019-2 131
-019-3 132
-019-4-1 133
-019-4 134
-020-1 135
-020-2 136
-020-3 137
-020-4 138
-020-5 139
-020-6 140
-020-7-1 141
-020-7-2 142
-020-7 143
-021-1 144
-021-2 145
-021-3 146
-021-4 147
-022-1 148
-023-1 149
-023-2 150
-023-3-1 151
-023-3-2 152
-023-3 153
-024-1 154
-024-10 155
-024-11 156
-024-12 157
-024-13 158
-024-14 159
-024-15 160
-024-16 161
-024-2 162
-024-3 163
-024-4 164
-024-5 165
-024-6 166
-024-7 167
-024-8 168
-024-9 169
-boss 170
-botcheck 171
-guilds 172
-sec_pri 173
-soren-2 174
-soren 175
-test 176
-testbg 177
+018-6-2 129
+018-6-3 130
+019-1-1 131
+019-1 132
+019-2 133
+019-3 134
+019-4-1 135
+019-4 136
+020-1 137
+020-2 138
+020-3 139
+020-4 140
+020-5 141
+020-6 142
+020-7-1 143
+020-7-2 144
+020-7 145
+021-1 146
+021-2 147
+021-3 148
+021-4 149
+022-1 150
+023-1 151
+023-2 152
+023-3-1 153
+023-3-2 154
+023-3 155
+024-1 156
+024-10 157
+024-11 158
+024-12 159
+024-13 160
+024-14 161
+024-15 162
+024-16 163
+024-2 164
+024-3 165
+024-4 166
+024-5 167
+024-6 168
+024-7 169
+024-8 170
+024-9 171
+boss 172
+botcheck 173
+guilds 174
+sec_pri 175
+soren-2 176
+soren 177
+test 178
+testbg 179
diff --git a/db/re/exp_guild.txt b/db/re/exp_guild.txt
index 928047600..cecf66632 100644
--- a/db/re/exp_guild.txt
+++ b/db/re/exp_guild.txt
@@ -1,4 +1,8 @@
// Guild LvUp experience value table
+// Exp needed for level 5: 5.500.000 Exp
+// Exp needed for level 10: 38.500.000 Exp
+// Exp needed for level 25: 552.500.000 Exp
+// Exp needed for level 50: 4.292.500.000 Exp
100000
400000
900000
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index d035bc5f4..48aeffd17 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -2281,7 +2281,7 @@ item_db: (
{
Id: 615
AegisName: "HerbalTea"
- Name: "Herbal Tea"
+ Name: "Nightshade Tea"
Type: "IT_USABLE"
Buy: 1240
Sell: 480
@@ -2291,7 +2291,8 @@ item_db: (
UseEffect: "EFFECT_HEAL"
Script: <"
sc_start SC_ATTHASTE_POTION1, 30000, 60;
- sc_start SC_POISON, 40000, 0;
+ if (rand(10000) < 6000)
+ sc_start callfunc("any", SC_POISON, SC_SILENCE, SC_POISON, SC_CONFUSE, SC_POISON, SC_POISON), rand(20000, 40000), 0;
itemheal 0, rand(10,200);
">
},
@@ -5522,8 +5523,8 @@ item_db: (
},
{
Id: 912
- AegisName: "Wurtizite"
- Name: "Wurtizite Ore"
+ AegisName: "Wurtzite"
+ Name: "Wurtzite Ore"
Type: "IT_ETC"
Buy: 5000
Sell: 500
@@ -8118,8 +8119,8 @@ item_db: (
AegisName: "CottonTrousers"
Name: "Cotton Trousers"
Type: "IT_ARMOR"
- Buy: 1200
- Sell: 250
+ Buy: 12000
+ Sell: 2500
Weight: 25
Def: 22
Slots: 1
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf
index 871e8b228..95455f729 100644
--- a/db/re/map_zone_db.conf
+++ b/db/re/map_zone_db.conf
@@ -609,5 +609,9 @@ zones: (
disabled_items: {
}
+
+ disabled_commands: {
+ pvpon: 100
+ }
}
)
diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf
index b49f0af72..4a5d19db2 100644
--- a/db/re/mob_db.conf
+++ b/db/re/mob_db.conf
@@ -8844,7 +8844,7 @@ mob_db: (
Drops: {
Coal: 200
CopperOre: 100
- Wurtizite: 100
+ Wurtzite: 100
LeadOre: 40
Graphene: 25
LightGreenDiamond: 1
@@ -8870,7 +8870,7 @@ mob_db: (
Drops: {
Coal: 300
CopperOre: 200
- Wurtizite: 200
+ Wurtzite: 200
LeadOre: 80
Graphene: 45
LightGreenDiamond: 2
@@ -8896,7 +8896,7 @@ mob_db: (
Drops: {
Coal: 500
CopperOre: 300
- Wurtizite: 300
+ Wurtzite: 290
LeadOre: 120
Graphene: 65
LightGreenDiamond: 3
diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf
index a1fd3221f..8cbbc7ab5 100644
--- a/db/re/skill_db.conf
+++ b/db/re/skill_db.conf
@@ -751,33 +751,44 @@ skill_db: (
AttackType: "Magic"
Element: "Ele_Water"
InterruptCast: true
- CastTime: 640
- AfterCastActDelay: 1500
+ CastTime: {
+ Lv1: 640
+ Lv2: 600
+ Lv3: 555
+ Lv4: 500
+ Lv5: 450
+ Lv6: 400
+ Lv7: 384
+ Lv8: 384
+ Lv9: 384
+ Lv10: 384
+ }
+ AfterCastActDelay: 300
SkillData2: {
- Lv1: 3000
- Lv2: 3500
- Lv3: 4000
- Lv4: 4500
- Lv5: 5000
- Lv6: 5500
- Lv7: 6000
- Lv8: 6500
- Lv9: 7000
- Lv10: 7500
+ Lv1: 4000
+ Lv2: 4500
+ Lv3: 5000
+ Lv4: 5500
+ Lv5: 6000
+ Lv6: 7000
+ Lv7: 8000
+ Lv8: 9000
+ Lv9: 10000
+ Lv10: 10500
}
FixedCastTime: 160
Requirements: {
SPCost: {
- Lv1: 200
- Lv2: 210
- Lv3: 220
- Lv4: 230
- Lv5: 240
- Lv6: 250
- Lv7: 260
- Lv8: 270
- Lv9: 280
- Lv10: 290
+ Lv1: 100
+ Lv2: 120
+ Lv3: 140
+ Lv4: 160
+ Lv5: 180
+ Lv6: 200
+ Lv7: 220
+ Lv8: 240
+ Lv9: 260
+ Lv10: 280
}
}
},
@@ -927,7 +938,7 @@ skill_db: (
Lv10: 360
}
SkillData1: {
- Lv1: 7500
+ Lv1: 8500
Lv2: 10000
Lv3: 12000
Lv4: 14000
@@ -1761,7 +1772,7 @@ skill_db: (
Id: 43
Name: "AC_OWL"
Description: "Owl's Eye"
- MaxLevel: 20
+ MaxLevel: 10
NumberOfHits: 0
SkillInfo: {
Quest: true
@@ -3425,13 +3436,13 @@ skill_db: (
InterruptCast: true
CastTime: {
Lv1: 640
- Lv2: 640
- Lv3: 576
- Lv4: 576
- Lv5: 512
- Lv6: 512
- Lv7: 448
- Lv8: 448
+ Lv2: 576
+ Lv3: 412
+ Lv4: 448
+ Lv5: 384
+ Lv6: 384
+ Lv7: 384
+ Lv8: 384
Lv9: 384
Lv10: 384
}
@@ -3450,27 +3461,27 @@ skill_db: (
}
FixedCastTime: {
Lv1: 160
- Lv2: 160
- Lv3: 144
- Lv4: 144
- Lv5: 128
- Lv6: 128
- Lv7: 112
- Lv8: 112
+ Lv2: 144
+ Lv3: 128
+ Lv4: 112
+ Lv5: 96
+ Lv6: 96
+ Lv7: 96
+ Lv8: 96
Lv9: 96
Lv10: 96
}
Requirements: {
SPCost: {
- Lv1: 140
- Lv2: 160
- Lv3: 180
- Lv4: 200
- Lv5: 220
- Lv6: 240
- Lv7: 260
- Lv8: 280
- Lv9: 290
+ Lv1: 120
+ Lv2: 140
+ Lv3: 160
+ Lv4: 180
+ Lv5: 200
+ Lv6: 220
+ Lv7: 240
+ Lv8: 260
+ Lv9: 280
Lv10: 300
}
}
@@ -12387,12 +12398,12 @@ skill_db: (
CastTime: 350
AfterCastActDelay: 500
SkillData2: {
- Lv1: 10000
+ Lv1: 15000
Lv2: 20000
- Lv3: 30000
- Lv4: 40000
- Lv5: 50000
- Lv6: 60000
+ Lv3: 25000
+ Lv4: 30000
+ Lv5: 35000
+ Lv6: 40000
Lv7: 70000
Lv8: 80000
Lv9: 90000
@@ -12402,15 +12413,15 @@ skill_db: (
Requirements: {
SPCost: {
Lv1: 95
- Lv2: 100
- Lv3: 110
- Lv4: 120
- Lv5: 130
- Lv6: 140
- Lv7: 150
- Lv8: 160
- Lv9: 170
- Lv10: 180
+ Lv2: 120
+ Lv3: 145
+ Lv4: 170
+ Lv5: 200
+ Lv6: 200
+ Lv7: 200
+ Lv8: 200
+ Lv9: 200
+ Lv10: 200
}
}
},
@@ -19422,36 +19433,38 @@ skill_db: (
MaxLevel: 5
Range: {
Lv1: 5
- Lv2: 6
- Lv3: 7
- Lv4: 8
- Lv5: 9
+ Lv2: 7
+ Lv3: 9
+ Lv4: 10
+ Lv5: 10
Lv6: 10
- Lv7: 11
- Lv8: 12
- Lv9: 13
- Lv10: 14
+ Lv7: 10
+ Lv8: 10
+ Lv9: 10
+ Lv10: 10
}
Hit: "BDT_SKILL"
SkillType: {
Enemy: true
}
+ DamageType: {
+ IgnoreFlee: true
+ }
AttackType: "Weapon"
Element: "Ele_Weapon"
- AfterCastActDelay: 1500
- FixedCastTime: -1
+ FixedCastTime: 100
Requirements: {
SPCost: {
- Lv1: 120
- Lv2: 125
- Lv3: 130
- Lv4: 135
- Lv5: 140
- Lv6: 145
- Lv7: 150
- Lv8: 155
- Lv9: 160
- Lv10: 165
+ Lv1: 110
+ Lv2: 115
+ Lv3: 120
+ Lv4: 125
+ Lv5: 130
+ Lv6: 135
+ Lv7: 140
+ Lv8: 145
+ Lv9: 150
+ Lv10: 155
}
}
},
@@ -28096,16 +28109,16 @@ skill_db: (
Element: "Ele_Fire"
InterruptCast: true
SkillInstances: {
- Lv1: 8
- Lv2: 10
- Lv3: 12
- Lv4: 14
- Lv5: 16
- Lv6: 18
- Lv7: 20
- Lv8: 22
- Lv9: 24
- Lv10: 26
+ Lv1: 7
+ Lv2: 9
+ Lv3: 11
+ Lv4: 13
+ Lv5: 15
+ Lv6: 17
+ Lv7: 19
+ Lv8: 21
+ Lv9: 23
+ Lv10: 25
}
CastTime: 1000
CoolDown: {
@@ -28121,25 +28134,25 @@ skill_db: (
Lv10: 20000
}
AfterCastActDelay: 1000
- SkillData1: 12000
- FixedCastTime: -1
+ SkillData1: 9000
+ FixedCastTime: 300
Requirements: {
SPCost: {
Lv1: 130
- Lv2: 134
- Lv3: 138
- Lv4: 142
- Lv5: 146
- Lv6: 150
- Lv7: 154
- Lv8: 158
- Lv9: 162
- Lv10: 166
+ Lv2: 150
+ Lv3: 180
+ Lv4: 220
+ Lv5: 250
+ Lv6: 250
+ Lv7: 250
+ Lv8: 250
+ Lv9: 250
+ Lv10: 250
}
}
Unit: {
Id: 0xdc
- Interval: 500
+ Interval: 750
Target: "Enemy"
Flag: {
UF_NOREITERATION: true
diff --git a/maps/re/017-1.mcache b/maps/re/017-1.mcache
index 8e0460974..291b35397 100644
--- a/maps/re/017-1.mcache
+++ b/maps/re/017-1.mcache
Binary files differ
diff --git a/maps/re/018-6-2.mcache b/maps/re/018-6-2.mcache
new file mode 100644
index 000000000..f72c6cf46
--- /dev/null
+++ b/maps/re/018-6-2.mcache
Binary files differ
diff --git a/maps/re/018-6-3.mcache b/maps/re/018-6-3.mcache
new file mode 100644
index 000000000..8adaa3869
--- /dev/null
+++ b/maps/re/018-6-3.mcache
Binary files differ
diff --git a/npc/003-0/colin.txt b/npc/003-0/colin.txt
index 7d8bbf77b..720afcbc1 100644
--- a/npc/003-0/colin.txt
+++ b/npc/003-0/colin.txt
@@ -20,6 +20,7 @@
mesc l("Napalm Beat - Spammable AoE Skill");
mesc l("Frost Diver - Attempt to freeze an enemy, dealing damage");
+ mesc l("Fire Walk - Creates a trail of fire, harming any pursuer");
mesc l("Frost Nova - Freeze everything in a range");
mesc l("Note: You can exchange 1 @@ for 3 @@", getitemlink(GemPowder), getitemlink(Quill)), 1;
@@ -29,6 +30,7 @@
l("Magic Strike"), MG_SOULSTRIKE,
l("Napalm Beat"), MG_NAPALMBEAT,
l("Frost Diver"), MG_FROSTDIVER,
+ l("Fire Walk"), SO_FIREWALK,
l("Frost Nova"), WZ_FROSTNOVA,
rif(countitem(GemPowder), l("Exchange Gempowder for Quill")), -1,
l("Cancel"), 0;
@@ -60,8 +62,12 @@
if (!mlearn(MG_FROSTDIVER, 7, 2, Quill, 1))
mesc l("You do not meet all requisites for this skill."), 1;
break;
+ case SO_FIREWALK:
+ if (!mlearn(SO_FIREWALK, 2, 2, Lockpicks, 1))
+ mesc l("You do not meet all requisites for this skill."), 1;
+ break;
case WZ_FROSTNOVA:
- if (!mlearn(WZ_FROSTNOVA, 7, 3, Quill, 1))
+ if (!mlearn(WZ_FROSTNOVA, 4, 3, Quill, 1))
mesc l("You do not meet all requisites for this skill."), 1;
break;
default:
diff --git a/npc/003-0/luca.txt b/npc/003-0/luca.txt
index dc5720ebd..677f223c6 100644
--- a/npc/003-0/luca.txt
+++ b/npc/003-0/luca.txt
@@ -50,7 +50,7 @@
mesc l("You do not meet all requisites for this skill."), 1;
break;
case ASC_METEORASSAULT:
- if (!mlearn(ASC_METEORASSAULT, 5, 2, FluoPowder, 3))
+ if (!mlearn(ASC_METEORASSAULT, 3, 2, FluoPowder, 3))
mesc l("You do not meet all requisites for this skill."), 1;
break;
case SN_SHARPSHOOTING:
diff --git a/npc/003-0/trickmaster.txt b/npc/003-0/trickmaster.txt
index e35312606..3a111e4a3 100644
--- a/npc/003-0/trickmaster.txt
+++ b/npc/003-0/trickmaster.txt
@@ -19,11 +19,10 @@
"freecast", SA_FREECAST,
"backslide", TF_BACKSLIDING,
"firewall", MG_FIREWALL,
- //"inccarry", ALL_INCCARRY,
+ "vulture", AC_VULTURE,
"fullthrottle", ALL_FULL_THROTTLE,
"darkillusion", GC_DARKILLUSION,
"trickdead", NV_TRICKDEAD,
- "firewalk", SO_FIREWALK,
"Cancel", 0;
mes "";
setskin "";
@@ -41,8 +40,8 @@
if (!mlearn(MG_FIREWALL, 10, 1, Lockpicks, 1))
mesc l("You do not meet all requisites for this skill."), 1;
break;
- case ALL_INCCARRY:
- if (!mlearn(ALL_INCCARRY, 2, 1, Lockpicks, 1))
+ case AC_VULTURE:
+ if (!mlearn(AC_VULTURE, 1, 1, Lockpicks, 1))
mesc l("You do not meet all requisites for this skill."), 1;
break;
case ALL_FULL_THROTTLE:
@@ -50,17 +49,13 @@
mesc l("You do not meet all requisites for this skill."), 1;
break;
case GC_DARKILLUSION:
- if (!mlearn(GC_DARKILLUSION, 1, 2, Lockpicks, 1))
+ if (!mlearn(GC_DARKILLUSION, 3, 2, Lockpicks, 1))
mesc l("You do not meet all requisites for this skill."), 1;
break;
case NV_TRICKDEAD:
if (!mlearn(NV_TRICKDEAD, 1, 2, Lockpicks, 1))
mesc l("You do not meet all requisites for this skill."), 1;
break;
- case SO_FIREWALK:
- if (!mlearn(SO_FIREWALK, 2, 2, Lockpicks, 1))
- mesc l("You do not meet all requisites for this skill."), 1;
- break;
default:
if (@menuret)
Exception("ERROR skill not implemented", RB_DEFAULT|RB_SPEECH);
diff --git a/npc/003-1/tinris.txt b/npc/003-1/tinris.txt
index ce759981f..92404daef 100644
--- a/npc/003-1/tinris.txt
+++ b/npc/003-1/tinris.txt
@@ -109,7 +109,35 @@ L_Fail:
else
getexp 90, 0;
mesn;
- mesq l("Well, that could fail, I said. Here is some experience.");
+ switch (.@q2) {
+ case 1:
+ mesq l("Well, that could fail, I said. Here is some experience.");
+ break;
+ case 2:
+ mesq l("Don't worry, third time is the charm. Here is some experience. Let's try again.");
+ break;
+ case 3:
+ mesq l("Okay, here is some experience, and forgot what I've said before. We can try again.");
+ break;
+ case 4:
+ mesq l("Don't worry, I've tweaked my formula this time. Here is some experience and let's try again!");
+ break;
+ case 5:
+ mesq l("I'm sorry, I just... Maybe if...? Aha! Here's the EXP, ready for a next go?");
+ break;
+ case 6:
+ mesq l("Uhm, maybe I mashed the Plushroom too hard this time. Here's EXP as usual, let's try again?");
+ break;
+ case 7:
+ mesq l("I shall not fail any further, I think my new formula is perfect! Here's the EXP, but I need material to use it!");
+ break;
+ case 8:
+ mesq l("I never knew you could fail THAT hard. I've took Saulc's Fertilizer's recipe, success chance is of 100% if you want to try again.");
+ break;
+ default:
+ mesq l("Well, that could fail, I said. Here is some experience.");
+ break;
+ }
next;
if (countitem(Plushroom) >= 3 &&
countitem(MaggotSlime) >= 9)
diff --git a/npc/004-1/anwar.txt b/npc/004-1/anwar.txt
index 036131c6e..47ca64255 100644
--- a/npc/004-1/anwar.txt
+++ b/npc/004-1/anwar.txt
@@ -62,8 +62,8 @@ L_TryIt:
next;
setq2 TulimsharQuest_AnwarField, .@q2+1;
- // Fail chances are 100% - 12% per attempt
- if (rand(0,100) < 100-(.@q2*12)) {
+ // Fail chances are 100% - 13% per attempt
+ if (rand2(0,100) < 100-(.@q2*13)) {
setq1 TulimsharQuest_AnwarField, 6;
mesc l("Nothing happens.");
next;
diff --git a/npc/012-1/shoppakep.txt b/npc/012-1/shoppakep.txt
index 2ee13acc2..a55e36554 100644
--- a/npc/012-1/shoppakep.txt
+++ b/npc/012-1/shoppakep.txt
@@ -35,7 +35,7 @@ OnInit:
sellitem CottonSkirt, 100000, 1;
sellitem MiniSkirt, 100000, 1;
sellitem ShortTankTop, 100000, 1;
- sellitem CottonTrousers, 90000, 1;
+ sellitem CottonTrousers, 80000, 1;
sellitem CottonGloves, 20000, 1;
sellitem CottonBoots, 10000, 1;
@@ -56,7 +56,7 @@ OnClock0546:
restoreshopitem CottonSkirt, 100000, 1;
restoreshopitem MiniSkirt, 100000, 1;
restoreshopitem ShortTankTop, 100000, 1;
- restoreshopitem CottonTrousers, 90000, 1;
+ restoreshopitem CottonTrousers, 80000, 1;
restoreshopitem CottonGloves, 20000, 1;
restoreshopitem CottonBoots, 10000, 1;
diff --git a/npc/014-2/mouboo.txt b/npc/014-2/mouboo.txt
index 038f0aec0..99534db10 100644
--- a/npc/014-2/mouboo.txt
+++ b/npc/014-2/mouboo.txt
@@ -93,6 +93,7 @@ L_Begin:
itemeffect(.@id); // As a bonus, you'll be healed too, because I need to retrieve @max value
// You need about 9.000 HP-worth healing items, and you can't use Mouboo Steak
+ @val1*=rand2(3,5); // Average delay
if (.@id == ElixirOfLife)
setq2 HurnscaldQuest_InjuriedMouboo, 9999;
else
diff --git a/npc/014-5-1/sagratha.txt b/npc/014-5-1/sagratha.txt
index e5f31475c..81ac6b0bb 100644
--- a/npc/014-5-1/sagratha.txt
+++ b/npc/014-5-1/sagratha.txt
@@ -57,8 +57,6 @@ function script SaggyMobCount {
function requireHelp;
if (array_find(.SaggyHats, getequipid(EQI_HEAD_TOP)) >= 0)
goto L_HatAttack;
- if (SAGRATHA_SCORE < 0)
- goto L_Unhappy;
.@q=getq(HurnscaldQuest_Sagratha);
.@m=getq(HurnscaldQuest_InjuriedMouboo);
@@ -86,6 +84,8 @@ function script SaggyMobCount {
goto L_Reward;
if (.@q == 6)
goto L_Finish;
+ if (SAGRATHA_SCORE < 0)
+ goto L_Unhappy;
do
{
diff --git a/npc/015-8-1/_import.txt b/npc/015-8-1/_import.txt
index d2ae0e8bb..016ede10f 100644
--- a/npc/015-8-1/_import.txt
+++ b/npc/015-8-1/_import.txt
@@ -1,4 +1,4 @@
-// Map 015-8-1: Cave Of Trials
+// Map 015-8-1: Abandoned Ruins
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/015-8-1/campaign.txt",
"npc/015-8-1/puzzle.txt",
diff --git a/npc/017-1/townhall.txt b/npc/017-1/townhall.txt
index 61df25334..772688eed 100644
--- a/npc/017-1/townhall.txt
+++ b/npc/017-1/townhall.txt
@@ -4,7 +4,7 @@
// Description:
// LoF Townhall Access Control
-017-1,180,20,0 script #LoF_Townhall01 NPC_HIDDEN,{
+017-1,180,20,0 script #LoF_Townhall01 NPC_NO_SPRITE,0,0,{
end;
OnTouch:
@@ -14,13 +14,10 @@ OnTouch:
warp "017-10", 56, 78;
}
end;
-OnInit:
- .distance=1;
- end;
}
-017-1,182,20,0 script #LoF_Townhall02 NPC_HIDDEN,{
+017-1,182,20,0 script #LoF_Townhall02 NPC_NO_SPRITE,0,0,{
end;
OnTouch:
@@ -30,12 +27,9 @@ OnTouch:
warp "017-10", 60, 78;
}
end;
-OnInit:
- .distance=1;
- end;
}
-017-1,171,20,0 script #LoF_Townhall03 NPC_HIDDEN,{
+017-1,171,20,0 script #LoF_Townhall03 NPC_NO_SPRITE,0,0,{
end;
OnTouch:
@@ -45,12 +39,9 @@ OnTouch:
warp "017-10", 36, 78;
}
end;
-OnInit:
- .distance=1;
- end;
}
-017-1,190,20,0 script #LoF_Townhall04 NPC_HIDDEN,{
+017-1,190,20,0 script #LoF_Townhall04 NPC_NO_SPRITE,0,0,{
end;
OnTouch:
@@ -60,9 +51,6 @@ OnTouch:
warp "017-10", 80, 78;
}
end;
-OnInit:
- .distance=1;
- end;
}
/////////////////////////////
// Main Quest 6
@@ -85,8 +73,8 @@ function script BarbaraInstCheck {
.@inst = instance_create("Forgotten Shrine "+getcharid(0), getcharid(3), IOT_CHAR);
instance_attachmap("018-6-0", .@inst, false, .@map0$);
instance_attachmap("018-6-1", .@inst, false, .@map1$);
- //instance_attachmap("018-6-2", .@inst, false, .@map2$);
- //instance_attachmap("018-6-3", .@inst, false, .@map3$);
+ instance_attachmap("018-6-2", .@inst, false, .@map2$);
+ instance_attachmap("018-6-3", .@inst, false, .@map3$);
// Instance lasts two hours
instance_set_timeout(7200, 7200, .@inst);
instance_init(.@inst);
@@ -104,11 +92,10 @@ function script BarbaraInstCheck {
return getd(".@map"+.@house+"$");
}
-017-1,32,44,0 script #LoF_EleniumMines NPC_HIDDEN,{
+017-1,32,44,0 script #LoF_EleniumMines NPC_NO_SPRITE,0,0,{
end;
OnTouch:
- // TODO: OnQuest: Instance
.@q=getq(LoFQuest_Barbara);
if (.@q >= 1) {
warp BarbaraInstCheck(1), 80, 199;
@@ -116,8 +103,5 @@ OnTouch:
warp "018-6-1", 80, 199;
}
end;
-OnInit:
- .distance=1;
- end;
}
diff --git a/npc/017-4/refine.txt b/npc/017-4/refine.txt
index 4c3e472d7..2bed9cee8 100644
--- a/npc/017-4/refine.txt
+++ b/npc/017-4/refine.txt
@@ -35,12 +35,12 @@ OnInit:
L_Fusus:
inventoryplace Iten, 1;
mesn;
- mesq l("I can fuse an @@ and 20 @@, besides @@ GP, into 3~5 @@.", getitemlink(CopperIngot), getitemlink(SilkCocoon), 500, getitemlink(Wurtizite));
- mesc l("5 @@ can be fused in a @@", getitemlink(Wurtizite), getitemlink(Graphene));
+ mesq l("I can fuse an @@ and 20 @@, besides @@ GP, into 3~5 @@.", getitemlink(CopperIngot), getitemlink(SilkCocoon), 500, getitemlink(Wurtzite));
+ mesc l("5 @@ can be fused in a @@", getitemlink(Wurtzite), getitemlink(Graphene));
mesc l("5 @@ can be fused in a @@", getitemlink(Graphene), getitemlink(Arcanum));
select
- rif(Zeny >= 500, l("I want the Wurtizite")),
- rif(countitem(Wurtizite) >= 5, l("I want Graphene")),
+ rif(Zeny >= 500, l("I want the Wurtzite")),
+ rif(countitem(Wurtzite) >= 5, l("I want Graphene")),
rif(countitem(Graphene) >= 5, l("I want Arcanum")),
l("Do nothing");
mes "";
@@ -51,10 +51,10 @@ L_Fusus:
if (!transcheck(CopperIngot, 1, SilkCocoon, 20))
close;
Zeny -= 500;
- getitem Wurtizite, any(3,3,4,4,4,5); // 3: ~33%. 4: =50%. 5: ~17%. AVG: 3.8
+ getitem Wurtzite, any(3,3,4,4,4,5); // 3: ~33%. 4: =50%. 5: ~17%. AVG: 3.8
break;
case 2:
- delitem Wurtizite, 5;
+ delitem Wurtzite, 5;
getitem Graphene, 1;
break;
case 3:
diff --git a/npc/018-6-0/_import.txt b/npc/018-6-0/_import.txt
index 45be6bdab..0e2c16f0e 100644
--- a/npc/018-6-0/_import.txt
+++ b/npc/018-6-0/_import.txt
@@ -1,2 +1,3 @@
// Map 018-6-0: Sanctuary - Forgotten Chamber
// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/018-6-0/main.txt",
diff --git a/npc/018-6-0/ctrl b/npc/018-6-0/ctrl
new file mode 100644
index 000000000..e1f7f6140
--- /dev/null
+++ b/npc/018-6-0/ctrl
@@ -0,0 +1,29 @@
+LoFQuest_Barbara
+q1
+ q3
+
+--------------------------
+0 Quest not assigned
+1 Quest was assigned
+ 0 No cutscene seen
+ 1 The wounded soldier seen
+ 2 The footprints seen
+2 Forgotten Chamber Puzzle is in progress (warp on)
+ 0 No puzzle solved
+ 1 West puzzle solved (&) (west lever)
+ 2 East puzzle solved (&) (east lever)
+ 3 South puzzle unlocked (w/e lever)
+ 4 South puzzle node (e/w lever)
+ 5 South puzzle solved, access to shrine granted
+3 Forgotten Shrine has been allowed (warp on / remember to reenable NPCs on resume)
+ Bitwise boss fights:
+ 1, 2, 4, 8, 16, 32, 64, 128, 256 (enable warps as win)
+ → Once the main shrine was reached: set to 511, Mana Stone story
+ & 512 => Boss defeated, cutscene ended, magic apple now visible
+4 Ambush finished, return to elenium mines
+5 Barbara captured
+6 Reward claimed, Barbara Arrested
+7 Reward claimed, Barbara NOT Arrested
+
+Field 2: Instance ID
+
diff --git a/npc/018-6-0/main.txt b/npc/018-6-0/main.txt
new file mode 100644
index 000000000..40827f383
--- /dev/null
+++ b/npc/018-6-0/main.txt
@@ -0,0 +1,122 @@
+// TMW2 Scripts
+// Author:
+// Jesusalva
+// Description:
+// Controls Forgotten Chamber
+
+/////////////////////////////
+018-6-0,90,67,0 script #ToForgottenShrine NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It looks dangerous.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ if (.@q >= 2) {
+ warp BarbaraInstCheck(3), 31, 151;
+ //warp BarbaraInstCheck(0), 90+any(-1, 1), 90+any(-1,1);
+ } else {
+ Exception("ERROR, YOU SHOULD NOT BEEN SEEING THIS. 018-6-1.TFC");
+ }
+ end;
+
+
+OnInit:
+ disablenpc .name$;
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(.name$);
+ end;
+}
+
+/////////////////////////////
+018-6-0,90,90,0 script #FromEleniumMines NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It should bring me back.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ if (.@q < 10) {
+ warp BarbaraInstCheck(1), 83, 28;
+ //warp BarbaraInstCheck(0), 90+any(-1, 1), 90+any(-1,1);
+ } else {
+ warp "018-6-1", 83, 28;
+ }
+ end;
+}
+
+
+
+
+
+/////////////////////////////
+018-6-0,90,113,0 script #ToSouthHall NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It looks dangerous.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ .@q2=getq2(LoFQuest_Barbara);
+ .@q3=getq3(LoFQuest_Barbara);
+ if (.@q == 2 && .@q3 >= 3) {
+ warp BarbaraInstCheck(2), 90, 32;
+ //warp BarbaraInstCheck(0), 90+any(-1, 1), 90+any(-1,1);
+ } else {
+ dispbottom l("I already visited this warp.");
+ }
+ end;
+
+
+OnInit:
+ disablenpc .name$;
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(.name$);
+ end;
+}
+
+/////////////////////////////
+018-6-0,67,90,0 script #ToWestHall NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It looks dangerous.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ .@q2=getq2(LoFQuest_Barbara);
+ .@q3=getq3(LoFQuest_Barbara);
+ if (.@q == 2 && !(.@q3 & 1)) {
+ warp BarbaraInstCheck(2), 70, 150;
+ } else {
+ dispbottom l("I already visited this warp.");
+ }
+ end;
+
+
+OnInit:
+ disablenpc .name$;
+ end;
+}
+
+
+/////////////////////////////
+018-6-0,113,90,0 script #ToEastHall NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It looks dangerous.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ .@q2=getq2(LoFQuest_Barbara);
+ .@q3=getq3(LoFQuest_Barbara);
+ if (.@q == 2 && !(.@q3 & 2)) {
+ warp BarbaraInstCheck(2), 103, 156;
+ } else {
+ dispbottom l("I already visited this warp.");
+ }
+ end;
+
+
+OnInit:
+ disablenpc .name$;
+ end;
+}
+
+
diff --git a/npc/018-6-1/_import.txt b/npc/018-6-1/_import.txt
index de446a263..2770c1ae4 100644
--- a/npc/018-6-1/_import.txt
+++ b/npc/018-6-1/_import.txt
@@ -2,3 +2,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/018-6-1/_mobs.txt",
"npc/018-6-1/_warps.txt",
+"npc/018-6-1/main.txt",
diff --git a/npc/018-6-1/main.txt b/npc/018-6-1/main.txt
new file mode 100644
index 000000000..5a1331aaf
--- /dev/null
+++ b/npc/018-6-1/main.txt
@@ -0,0 +1,115 @@
+// TMW2 Scripts
+// Author:
+// Jesusalva
+// Description:
+// Controls Elenium Mines, specially the instances
+
+// Main Controller for Instanced maps
+018-6-1,0,0,0 script #01861_InstCtrl NPC_HIDDEN,{
+ end;
+
+// Map, x, y, width, height, mob, amount
+function AreaMonsterB {
+ .@m$=getarg(0);
+ .@x1=getarg(1);
+ .@x2=.@x1+getarg(3);
+ .@y1=getarg(2);
+ .@y2=.@y1+getarg(4);
+ .@mi=getarg(5);
+ .@am=getarg(6);
+ areamonster(.@m$, .@x1, .@y1, .@x2, .@y2, strmobinfo(1, .@mi), .@mi, .@am, instance_npcname(.name$)+"::OnKill"+.@mi);
+ return;
+}
+
+// (var, value)
+function SetIfVoid {
+ if (!getarg(0))
+ return getarg(1);
+ return 0;
+}
+
+// Bifs won't respawn
+OnKill1226:
+OnKill1227:
+OnKill1228:
+ end;
+
+// Others: Wait 30 seconds and respawn
+OnKill1178:
+ .@mi=SetIfVoid(.@mi, 1178);
+OnKill1051:
+ .@mi=SetIfVoid(.@mi, 1051);
+OnKill1074:
+ .@mi=SetIfVoid(.@mi, 1074);
+OnKill1123:
+ .@mi=SetIfVoid(.@mi, 1123);
+OnKill1176:
+ .@mi=SetIfVoid(.@mi, 1176);
+OnKill1026:
+ .@mi=SetIfVoid(.@mi, 1026);
+
+ // Common utils
+ getmapxy(.@m$, .@x, .@y, 0);
+ sleep(30000);
+ AreaMonsterB(.@m$, .@x-2, .@y-2, 4, 4, .@mi, 1);
+ end;
+
+OnInstanceInit:
+ // Generate map ID
+ getmapxy(.@m$, .@x, .@y, UNITTYPE_NPC);
+
+ // Bif monsters
+ AreaMonsterB(.@m$, 40, 49, 7, 8, BigEleniumBif, 5);
+ AreaMonsterB(.@m$, 95, 51, 7, 8, BigEleniumBif, 5);
+ AreaMonsterB(.@m$, 145, 83, 6, 5, EleniumBif, 5);
+ AreaMonsterB(.@m$, 62, 86, 6, 5, EleniumBif, 5);
+ AreaMonsterB(.@m$, 65, 130, 6, 5, EleniumBif, 5);
+ AreaMonsterB(.@m$, 125, 158, 6, 5, SmallEleniumBif, 4);
+ AreaMonsterB(.@m$, 129, 183, 6, 5, SmallEleniumBif, 4);
+ AreaMonsterB(.@m$, 34, 181, 5, 5, SmallEleniumBif, 4);
+
+ // Common Monsters
+ AreaMonsterB(.@m$, 80, 172, 54, 25, BlackSlime, 16);
+ AreaMonsterB(.@m$, 89, 167, 54, 25, DarkLizard, 8);
+ AreaMonsterB(.@m$, 96, 103, 56, 29, BlackScorpion, 18);
+ AreaMonsterB(.@m$, 101, 105, 54, 25, MountainSnake, 10);
+ AreaMonsterB(.@m$, 70, 45, 44, 25, WickedMushroom, 14);
+ AreaMonsterB(.@m$, 68, 45, 31, 21, Archant, 7);
+ end;
+
+}
+/////////////////////////////
+018-6-1,83,26,0 script #ToForgottenChamber NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It looks dangerous.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ .@q2=getq2(LoFQuest_Barbara);
+ .@q3=getq3(LoFQuest_Barbara);
+ if (.@q >= 1) {
+ warp BarbaraInstCheck(0), 90, 91;
+ // Complete the first arc if possible
+ if (.@q == 1) {
+ setq1 LoFQuest_Barbara, 2;
+ setq3 LoFQuest_Barbara, 0;
+ }
+ // Update M0 NPCs based on quest state
+ if (.@q3 == 5)
+ enablenpc instance_npcname("#ToForgottenShrine", .@q2);
+
+ } else {
+ Exception("ERROR, YOU SHOULD NOT BEEN SEEING THIS. 018-6-1.TFC");
+ }
+ end;
+
+OnInit:
+ disablenpc .name$;
+ end;
+
+}
+
+///////////////////////////// Minievents
+
+
+
diff --git a/npc/018-6-2/_import.txt b/npc/018-6-2/_import.txt
new file mode 100644
index 000000000..2291a778c
--- /dev/null
+++ b/npc/018-6-2/_import.txt
@@ -0,0 +1,3 @@
+// Map 018-6-2: Forgotten Hall
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/018-6-2/main.txt",
diff --git a/npc/018-6-2/main.txt b/npc/018-6-2/main.txt
new file mode 100644
index 000000000..a1ffd51fa
--- /dev/null
+++ b/npc/018-6-2/main.txt
@@ -0,0 +1,48 @@
+// TMW2 Scripts
+// Author:
+// Jesusalva
+// Description:
+// Controls Forgotten Chamber
+
+/////////////////////////////
+018-6-2,90,31,0 script #FromSouthHall NPC_SUMMONING_CIRC,0,0,{
+ dispbottom l("It looks dangerous.");
+ end;
+
+OnTouch:
+ .@q=getq(LoFQuest_Barbara);
+ .@q2=getq2(LoFQuest_Barbara);
+ .@q3=getq3(LoFQuest_Barbara);
+ if (.@q == 2) {
+ // 1 - West Puzzle
+ if (!(.@q3 & 1)) {
+ warp BarbaraInstCheck(0), 68, 90;
+ setq3 LoFQuest_Barbara, .@q3|1;
+ }
+ // 2 - East Puzzle
+ else if (!(.@q3 & 2)) {
+ warp BarbaraInstCheck(0), 112, 90;
+ setq3 LoFQuest_Barbara, .@q3|2;
+ }
+ // Wut
+ else {
+ Exception("ERROR, YOU SHOULD NOT BEEN SEEING THIS. 018-6-2.FSH", RB_DEFAULT|RB_ISFATAL);
+ }
+ // Active the quest
+ if (.@q3 == 3)
+ enablenpc instance_npcname("#ToSouthHall", .@q2);
+ } else {
+ Exception("ERROR, YOU SHOULD NOT BEEN SEEING THIS. 018-6-2.FSH.MQ");
+ }
+ end;
+
+OnInit:
+ disablenpc .name$;
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(.name$);
+ end;
+
+}
+
+
diff --git a/npc/018-6-3/_import.txt b/npc/018-6-3/_import.txt
new file mode 100644
index 000000000..31f003015
--- /dev/null
+++ b/npc/018-6-3/_import.txt
@@ -0,0 +1,2 @@
+// Map 018-6-3: Forgotten Shrine
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/_import.txt b/npc/_import.txt
index c877bae5d..e5596800e 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -128,6 +128,8 @@
@include "npc/018-5/_import.txt"
@include "npc/018-6-0/_import.txt"
@include "npc/018-6-1/_import.txt"
+@include "npc/018-6-2/_import.txt"
+@include "npc/018-6-3/_import.txt"
@include "npc/019-1-1/_import.txt"
@include "npc/019-1/_import.txt"
@include "npc/019-2/_import.txt"
diff --git a/npc/craft/options.txt b/npc/craft/options.txt
index c0ad5c8b7..db844d179 100644
--- a/npc/craft/options.txt
+++ b/npc/craft/options.txt
@@ -276,6 +276,9 @@ function script csys_Generate {
array_push(@csys_attr, IOPT_EXPGAIN);
}
if (.@lvl >= 3) {
+ array_push(@csys_attr, IOPT_RICHNESS);
+ }
+ if (.@lvl >= 5) {
array_push(@csys_attr, IOPT_SPLASHDAMAGE);
}
array_push(@csys_penalty, IOPT_WALKSPEED);
@@ -345,6 +348,7 @@ function script csys_Multiplier {
case IOPT_SPLASHDAMAGE:
return 0;
case IOPT_WALKSPEED:
+ case IOPT_RICHNESS:
return 2;
case VAR_AGIAMOUNT:
case VAR_LUKAMOUNT:
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index b264b6b09..9c9308d56 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -12,8 +12,22 @@ function script clientupdater {
if (getmap() ~= "000-0*") {
UPDATE=gettimetick(2);
}
+ // If you're in Jail, show a minor message
+ if (getmap() == "sec_pri") {
+ dispbottom l("You seem to be jailed. We cannot unjail offline players, so please don't logout.");
+ dispbottom l("You have the right to defend yourself if you believe we were wrong. If we find out it's true, you'll receive an apology gift.");
+ dispbottom l("Note: Unless you were doing something REALLY bad which is harmful to player community (eg. scamming, hacking, DDoS'ing, etc.)");
+ dispbottom l("Please contact a GM as soon as possible so we can make out a compromise. You should be liberated even if found guilty.");
+ }
.@dg=0;
+ // ERROR fixing
+ if (UPDATE == 1565039378 && #UPDATE < 1565039378) {
+ getitem MysteriousFruit, 1;
+ UPDATE+=1;
+ #UPDATE=1565039378;
+ dispbottom l("Received one @@ as August daily login bug Token of Apology!", getitemlink(MysteriousFruit));
+ }
// Update handler (use `date +%s` for this)
// Current UPDATE value: Qui Jun 7 08:10:55 -03 2018
if (Lang > 5 && UPDATE < 1528369855) {
@@ -574,6 +588,34 @@ function script clientupdater {
}
// Update Crafting Score
CRAFTING_SCORE_COMPLETE=CRAFTING_SCORE*39;
+ // Water bug
+ if (strcharinfo(0) == "JulieWarhawk") {
+ .@dg=true;
+
+ // Sell Bottles
+ if (countitem(BottleOfWoodlandWater) > 1) {
+ delitem BottleOfWoodlandWater, (countitem(BottleOfWoodlandWater)/2)+1;
+ }
+ if (countitem(EmptyBottle)) {
+ delitem EmptyBottle, countitem(EmptyBottle);
+ }
+ if (countitem(IcedBottle)) {
+ delitem IcedBottle, countitem(IcedBottle);
+ }
+ getitem ArcmageBoxset, 1;
+
+ // Unjail player
+ atcommand "@unjail "+strcharinfo(0);
+ mesn "Jesusalva";
+ mesq l("You're right, you never sold any Water Bottle ever. I'm unjailing you.");
+ mesc l("As an Apology Token, you're also receiving one @@.", getitemlink(ArcmageBoxset));
+ next;
+ }
+
+ // Bug reward (FF)
+ if (strcharinfo(0) == "seeds") {
+ getitembound LegendaryMouboo, 1, 1;
+ }
}
// Test Server Updates
diff --git a/npc/functions/game-rules.txt b/npc/functions/game-rules.txt
index cd528e333..baa60f14c 100644
--- a/npc/functions/game-rules.txt
+++ b/npc/functions/game-rules.txt
@@ -27,7 +27,9 @@ function script GameRules {
l("6. ##BDo not create multi accounts.##b A person may only hold one account and as many chars as allowed by the server/client. Staff members with special privileges in-game may have a second account without those privileges."),
l("7. ##BAs long as you have an account, you agree with the [@@https://tmw2.org/legal|Terms Of Service@@]##b. Shall any rule conflict with these terms, the Terms Of Service provided on that link shall prevail."),
l("8. ##BThe use of real money is prohibited##b for ingame stuff, except by sponsoring."),
- l("9. ##BAdmit when you're wrong.##b Users trying to lie to or fool GMs will get no pity from them.");
+ l("9. ##BAdmit when you're wrong.##b Users trying to lie to or fool GMs will get no pity from them."),
+ l("10. ##BDo not logout##b at Botcheck area or at Jail. We cannot unjail an offline player. The opposite of rule 9: If you believe you're right, keep your ground and explain calmly what happened. We'll calmly analyse the situation. If you were jailed without guilt, an apology will be sent to you, provided this rule is not broken."),
+ l("11. If you believe you are Not Guilty, but the GM deemed you guilty, request a ##BCouncil Trial##b. It's your right. In a Council Trial, we'll have multiple people giving the veredict. Any player may be called to compose the council. All admins shall take part in it. An arragment relative to time, date, and number of counsellors is to be made.");
return;
}
diff --git a/npc/functions/refine.txt b/npc/functions/refine.txt
index 48535f91d..6275c042c 100644
--- a/npc/functions/refine.txt
+++ b/npc/functions/refine.txt
@@ -76,7 +76,7 @@ function script refineMaster {
case 1:
case 2:
case 3:
- .@rg=Wurtizite; break;
+ .@rg=Wurtzite; break;
case 4:
case 5:
case 6:
diff --git a/npc/items/teleporter.txt b/npc/items/teleporter.txt
index 40bf61821..592817a75 100644
--- a/npc/items/teleporter.txt
+++ b/npc/items/teleporter.txt
@@ -31,10 +31,10 @@ OnUse:
}
// TODO: Are you already at target point?
- // It have at least 30% chance to break
+ // It have at least 20% chance to break
// Chances begin at 100%, and lower in 0.01% each second
- // It will never be below 30%, which happens after 7000 seconds
- .@adj_breakrate=max(3000, 10000-(gettimetick(2)-TELEPORTER_TIME) );
+ // It will never be below 20%, which happens after 8000 seconds
+ .@adj_breakrate=max(2000, 10000-(gettimetick(2)-TELEPORTER_TIME) );
//debugmes "Adjusted break ratio: %d", .@adj_breakrate;
if (rand(0,10000) > .@adj_breakrate)
getitem @itemid, 1;