summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------client-data0
-rwxr-xr-xtools/news.py4
-rwxr-xr-xtools/tmx_converter.py16
-rw-r--r--world/map/data/056-1.wlkbin11256 -> 11256 bytes
-rw-r--r--world/map/db/const.txt225
-rw-r--r--world/map/db/mob_skill_db.txt61
-rw-r--r--world/map/news.d/12-manaplus.txt37
-rw-r--r--world/map/news.html43
-rw-r--r--world/map/news.txt51
-rw-r--r--world/map/npc/052-2/lobby.txt47
-rwxr-xr-xworld/map/npc/functions/debug.txt20
-rw-r--r--world/map/npc/functions/mob_points.txt2
12 files changed, 325 insertions, 181 deletions
diff --git a/client-data b/client-data
-Subproject 16d216ebed85ceaa82403761788318162f02ee4
+Subproject 15ff3ba1a4d1480acb1b97630dc811d8f14d08f
diff --git a/tools/news.py b/tools/news.py
index 53350ace..43917140 100755
--- a/tools/news.py
+++ b/tools/news.py
@@ -55,7 +55,7 @@ class HtmlWriter(BasicWriter):
pass
def put(self, entry):
- self.stream.write('<div>\n')
+ self.stream.write('<div>\n<p/>\n')
entry = entry.replace('\n\n', '\n<p/>\n')
entry = entry.format(**colors.make_html_colors_dict())
self.stream.write(entry)
@@ -73,7 +73,7 @@ class TxtWriter(BasicWriter):
entry = entry.replace('\n\n', '\n \n')
entry = entry.format(**colors.make_txt_colors_dict())
self.stream.write(entry)
- self.stream.write('\n\n')
+ self.stream.write(' \n \n')
def finish(self):
# DO NOT REMOVE
#self.stream.write('Did you really read down this far?\n')
diff --git a/tools/tmx_converter.py b/tools/tmx_converter.py
index 4d4f36e7..a9dc9294 100755
--- a/tools/tmx_converter.py
+++ b/tools/tmx_converter.py
@@ -34,12 +34,12 @@ import zlib
dump_all = False # wall of text
# lower case versions of everything except 'spawn' and 'warp'
-other_object_types = {
+other_object_types = set([
'particle_effect',
'npc', # not interpreted by client
'script', # for ManaServ
'fixme', # flag for things that didn't have a type before
-}
+])
# Somebody has put ManaServ fields in our data!
other_spawn_fields = (
@@ -117,7 +117,7 @@ class ContentHandler(xml.sax.ContentHandler):
self.locator = None
self.out = open(out, 'w')
self.state = State.INITIAL
- self.tilesets = {0} # consider the null tile as its own tileset
+ self.tilesets = set([0]) # consider the null tile as its own tileset
self.buffer = bytearray()
self.encoding = None
self.compression = None
@@ -268,7 +268,7 @@ class ContentHandler(xml.sax.ContentHandler):
for x in self.buffer.split(','):
self.out.write(chr(int(x) not in self.tilesets))
elif self.encoding == u'base64':
- data=base64.b64decode(self.buffer)
+ data = base64.b64decode(str(self.buffer))
if self.compression == u'zlib':
data = zlib.decompress(data)
elif self.compression == u'gzip':
@@ -314,10 +314,10 @@ def main(argv):
this_map_npc_dir = posixpath.join(npc_dir, base)
os.path.isdir(this_map_npc_dir) or os.mkdir(this_map_npc_dir)
print('Converting %s to %s' % (tmx, wlk))
- with open(posixpath.join(this_map_npc_dir, NPC_MOBS), 'w') as mobs, \
- open(posixpath.join(this_map_npc_dir, NPC_WARPS), 'w') as warps, \
- open(posixpath.join(this_map_npc_dir, NPC_IMPORTS), 'w') as imports:
- xml.sax.parse(tmx, ContentHandler(wlk, this_map_npc_dir, mobs, warps, imports))
+ with open(posixpath.join(this_map_npc_dir, NPC_MOBS), 'w') as mobs:
+ with open(posixpath.join(this_map_npc_dir, NPC_WARPS), 'w') as warps:
+ with open(posixpath.join(this_map_npc_dir, NPC_IMPORTS), 'w') as imports:
+ xml.sax.parse(tmx, ContentHandler(wlk, this_map_npc_dir, mobs, warps, imports))
npc_master.append('import: %s\n' % posixpath.join(SERVER_NPCS, base, NPC_IMPORTS))
with open(posixpath.join(npc_dir, NPC_MASTER_IMPORTS), 'w') as out:
diff --git a/world/map/data/056-1.wlk b/world/map/data/056-1.wlk
index e95f1baa..768fe6b3 100644
--- a/world/map/data/056-1.wlk
+++ b/world/map/data/056-1.wlk
Binary files differ
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
index dbb821ba..e50dfb24 100644
--- a/world/map/db/const.txt
+++ b/world/map/db/const.txt
@@ -3,37 +3,64 @@
debug 1
-mf_nomemo 0
-mf_noteleport 1
-mf_nosave 2
-mf_nobranch 3
-mf_nopenalty 4
-mf_pvp 5
-mf_pvp_noparty 6
-mf_pvp_noguild 7
-mf_gvg 8
-mf_gvg_noparty 9
-mf_nozenypenalty 10
-
-StatusPoint 9 1
+// BEFORE UNCOMMENTING ANYTHING, TALK TO o11c!
+//MF_NOMEMO 0
+//MF_NOTELEPORT 1
+MF_NOSAVE 2
+//MF_NOBRANCH 3
+//MF_NOPENALTY 4
+//MF_NOZENYPENALTY 5
+MF_PVP 6
+//MF_PVP_NOPARTY 7
+//MF_PVP_NOGUILD 8
+//MF_GVG 9
+//MF_GVG_NOPARTY 10
+//MF_NOTRADE 11
+//MF_NOSKILL 12
+MF_NOWARP 13
+MF_NOPVP 14
+//MF_NOICEWALL 15
+//MF_SNOW 16
+//MF_FOG 17
+//MF_SAKURA 18
+//MF_LEAVES 19
+//MF_RAIN 20
+// Map flags with no assigned value (inaccessible in scripts,
+// can only be set initially by mapflag):
+// nowarpto,
+// noreturn,
+// monster_noteleport,
+// pvp_nightmaredrop,
+// pvp_nocalcrank,
+// no_player_drops,
+// town,
+
+// Note: the type-1 constants and the bWhatever are actually
+// the same type internally, but they must be used differently.
+// A *few* can be used for both ...
+// TODO resolve that last, and change the names to match SP_*
+
+// BEFORE UNCOMMENTING ANYTHING, TALK TO o11c!
+//BaseExp 1 1
+//JobExp 2 1
+Hp 5 1
+MaxHp 6 1
+Sp 7 1
+MaxSp 8 1
+//StatusPoint 9 1
BaseLevel 11 1
-SkillPoint 12 1
-Class 19 1
-Upper 56 1
+//SkillPoint 12 1
+//Class 19 1
Zeny 20 1
Sex 21 1
+//NextBaseExp 22 1
+//NextJobExp 23 1
Weight 24 1
MaxWeight 25 1
-JobLevel 55 1
-BaseExp 1 1
-JobExp 2 1
-NextBaseExp 22 1
-NextJobExp 23 1
-Hp 5 1
-MaxHp 6 1
-Sp 7 1
-MaxSp 8 1
+//JobLevel 55 1
+//Upper 56 1
+// BEFORE UNCOMMENTING ANYTHING, TALK TO o11c!
bMaxHP 6
bMaxSP 8
bStr 13
@@ -42,18 +69,18 @@ bVit 15
bInt 16
bDex 17
bLuk 18
-bAtk 41
-bAtk2 42
-bMatk1 43
-bMatk2 44
-bDef 45
+//bAtk 41
+//bAtk2 42
+//bMatk1 43
+//bMatk2 44
+//bDef 45
bMdef 47
-bMdef2 48
+//bMdef2 48
bHit 49
bFlee 50
-bFlee2 51
+//bFlee2 51
bCritical 52
-bAspd 53
+//bAspd 53
bDeaf 70
// Elements:
@@ -102,80 +129,82 @@ bDeaf 70
// Those which can be used with the arrow are only bCritical, bAtkEle, bHit, bAddEle, bAddRace, bAddSize and bAddEff. The other bonuses are ignored.
// For more information, have a look here: http://code.google.com/p/eathena/source/browse/trunk/doc/item_bonus.txt
+// BEFORE UNCOMMENTING ANYTHING, TALK TO o11c!
+
bAtkRange 1000 // A range bonus of n (bAtkRange,n;).
-bAtkEle 1001 // Gives the player's attacks a n element (bAtkEle,n;).
-bDefEle 1002 // Gives the player's defense a n element (bDefEle,n;).
-bCastrate 1003 // Adjusts casting time of skill n by x% (bCastrate,n,x;).
+//bAtkEle 1001 // Gives the player's attacks a n element (bAtkEle,n;).
+//bDefEle 1002 // Gives the player's defense a n element (bDefEle,n;).
+//bCastrate 1003 // Adjusts casting time of skill n by x% (bCastrate,n,x;).
bMaxHPrate 1004 // A max HP bonus of n (bMaxHPrate,n;).
-bMaxSPrate 1005 // A max SP bonus of n (bMaxSPrate,n;).
-bUseSPrate 1006 // Increases the consumption of SP by n% (bUseSPrate,n;).
-bAddEle 1007 // +x% physical damage against a n element (bAddEle,n,x;).
-bAddRace 1008 // +x% physical damage against a n race (bAddRace,n,x;).
-bAddSize 1009 // +x% physical damage against a n size (bAddSize,n,x;).
-bSubEle 1010 // +x% damage reduction against a n element (bSubEle,n,x;).
-bSubRace 1011 // +x% damage reduction against race n (bSubRace,n,x;).
-bAddEff 1012 // Adds a 1/100x% chance to cause effect e to the target when attacking (bAddEff,e,x;).
-bResEff 1013 // Adds a 1/100x% tolerance to an effect (bResEff,e,x;).
-bBaseAtk 1014 // A n bonus to the basic attack power (bBaseAtk,n;).
+//bMaxSPrate 1005 // A max SP bonus of n (bMaxSPrate,n;).
+//bUseSPrate 1006 // Increases the consumption of SP by n% (bUseSPrate,n;).
+//bAddEle 1007 // +x% physical damage against a n element (bAddEle,n,x;).
+//bAddRace 1008 // +x% physical damage against a n race (bAddRace,n,x;).
+//bAddSize 1009 // +x% physical damage against a n size (bAddSize,n,x;).
+//bSubEle 1010 // +x% damage reduction against a n element (bSubEle,n,x;).
+//bSubRace 1011 // +x% damage reduction against race n (bSubRace,n,x;).
+//bAddEff 1012 // Adds a 1/100x% chance to cause effect e to the target when attacking (bAddEff,e,x;).
+//bResEff 1013 // Adds a 1/100x% tolerance to an effect (bResEff,e,x;).
+//bBaseAtk 1014 // A n bonus to the basic attack power (bBaseAtk,n;).
bAspdRate 1015 // +n% attack speed (bAspdRate,n;).
bHPrecovRate 1016 // Natural HP recovery ratio increased of n% (bHPrecovRate,n;).
-bSPrecovRate 1017 // Natural SP recovery ratio increased of n% (bSPrecovRate,n;).
-bSpeedRate 1018 // Moving speed increased of n% and only the highest among all is applied (bSpeedRate,n;).
-bCriticalDef 1019 // Decreases the chance of being hit by critical hits of n% (bCriticalDef,n;).
-bNearAtkDef 1020 // Adds n% damage reduction against melee physical attacks (bNearAtkDef,n;).
-bLongAtkDef 1021 // Adds n% damage reduction against ranged physical attacks (bLongAtkDef,n;).
-bDoubleRate 1022 // Adds a n% probability of doing a double attack (bDoubleRate,n;).
+//bSPrecovRate 1017 // Natural SP recovery ratio increased of n% (bSPrecovRate,n;).
+//bSpeedRate 1018 // Moving speed increased of n% and only the highest among all is applied (bSpeedRate,n;).
+//bCriticalDef 1019 // Decreases the chance of being hit by critical hits of n% (bCriticalDef,n;).
+//bNearAtkDef 1020 // Adds n% damage reduction against melee physical attacks (bNearAtkDef,n;).
+//bLongAtkDef 1021 // Adds n% damage reduction against ranged physical attacks (bLongAtkDef,n;).
+//bDoubleRate 1022 // Adds a n% probability of doing a double attack (bDoubleRate,n;).
bDoubleAddRate 1023 // Adds another +n% probability of doing a double attack (bDoubleAddRate,n;).
-bMatk 1024 // Adds a magical attack bonus of n (bMatk,n;).
-bMatkRate 1025 // Adds a magical attack bonus percentage n% (bMatkRate,n;).
-bIgnoreDefEle 1026 // Disregards defense against enemies of a n element (bIgnoreDefEle,n;).
-bIgnoreDefRace 1027 // Disregards defense against enemies of a n race (bIgnoreDefRace,n;).
-bAtkRate 1028 // Adds an attack bonus of n% (bAtkRate,n;).
+//bMatk 1024 // Adds a magical attack bonus of n (bMatk,n;).
+//bMatkRate 1025 // Adds a magical attack bonus percentage n% (bMatkRate,n;).
+//bIgnoreDefEle 1026 // Disregards defense against enemies of a n element (bIgnoreDefEle,n;).
+//bIgnoreDefRace 1027 // Disregards defense against enemies of a n race (bIgnoreDefRace,n;).
+//bAtkRate 1028 // Adds an attack bonus of n% (bAtkRate,n;).
bSpeedAddRate 1029 // Adds a n% of walking speed (bSpeedAddRate,n;).
-bAspdAddRate 1030 // Adds a n% of attack speed (bAspdAddRate,n;).
-bMagicAtkDef 1031 // Adds a n% damage reduction against magical attacks (bMagicAtkDef,n;).
-bMiscAtkDef 1032 // Adds a n% damage reduction against miscellaneous attacks (traps, falcon, ...) (bMiscAtkDef,n;).
-bIgnoreMdefEle 1033 // Disregards magical defense against enemies of a n element (bIgnoreMdefEle,n;).
-bIgnoreMdefRace 1034 // Disregards magical defense against enemies of a n race (bIgnoreMdefRace,n;).
-bMagicAddEle 1035 // Adds x% of magical damage against a n element (bMagicAddEle,n,x;).
-bMagicAddRace 1036 // Adds x% of magical damage against a n race (bMagicAddRace,n,x;).
-bMagicSubRace 1037 // Removes a x% of magical damage against a n race (bMagicSubRace,n,x;).
-bPerfectHitRate 1038 // On-target impact attack probability n% and only the highest among all is applied (bPerfectHitRate,n;).
-bPerfectHitAddRate 1039 // A n% bonus of an on-target impact (bPerfectHitAddRate,n;).
-bCriticalRate 1040 // Add a n% to the critical hits percentage (bCriticalRate,n;).
-bGetZenyNum 1041 // When killing a monster, there is a x% chance of gaining about n zeny (bGetZenyNum,n;).
-bAddGetZenyNum 1042 // Same as bGetZenyNum, but the rates and zeny to gain stack (bAddGetZenyNum,n,x;).
-bAddDamageClass 1043 // +x% of extra physical damage against monsters of class n, against players n is their job id (bAddDamageClass,n,x;).
-bAddMagicDamageClass 1044 // +x% of extra magical damage against monsters of class n, against players n is their job id (bAddDamageClass,n,x;).
-bAddDefClass 1045 // +x% physical damage reduction against monsters of class n, against players n is their job id (bAddDefClass,n,x;)
-bAddMdefClass 1046 // +x% magical damage reduction against monsters of class n, against players n is their job id (bAddDefClass,n,x;)
-bAddMonsterDropItem 1047 // Adds a x/100% chance for a n item to be dropped, when killing any monster (bAddMonsterDropItem,n,x;)
-bDefRatioAtkEle 1048 // Does more damage depending on the monster's defense against a n element (bDefRatioAtkEle,n;).
-bDefRatioAtkRace 1049 // Does more damage depending on the monster's defense against a n race (bDefRatioAtkRace,n;).
-bAddSpeed 1050 // Adds a n speed to the player (bAddSpeed,n;).
-bHitRate 1051 // Adds a n% rate to hit (bHitRate,n;).
-bFleeRate 1052 // Adds a n% to flee a monster's attack (bFleeRate,n;).
-bFlee2Rate 1053 // Adds a n% to dodge a monster's attack (bFleeRate,n;).
+//bAspdAddRate 1030 // Adds a n% of attack speed (bAspdAddRate,n;).
+//bMagicAtkDef 1031 // Adds a n% damage reduction against magical attacks (bMagicAtkDef,n;).
+//bMiscAtkDef 1032 // Adds a n% damage reduction against miscellaneous attacks (traps, falcon, ...) (bMiscAtkDef,n;).
+//bIgnoreMdefEle 1033 // Disregards magical defense against enemies of a n element (bIgnoreMdefEle,n;).
+//bIgnoreMdefRace 1034 // Disregards magical defense against enemies of a n race (bIgnoreMdefRace,n;).
+//bMagicAddEle 1035 // Adds x% of magical damage against a n element (bMagicAddEle,n,x;).
+//bMagicAddRace 1036 // Adds x% of magical damage against a n race (bMagicAddRace,n,x;).
+//bMagicSubRace 1037 // Removes a x% of magical damage against a n race (bMagicSubRace,n,x;).
+//bPerfectHitRate 1038 // On-target impact attack probability n% and only the highest among all is applied (bPerfectHitRate,n;).
+//bPerfectHitAddRate 1039 // A n% bonus of an on-target impact (bPerfectHitAddRate,n;).
+//bCriticalRate 1040 // Add a n% to the critical hits percentage (bCriticalRate,n;).
+//bGetZenyNum 1041 // When killing a monster, there is a x% chance of gaining about n zeny (bGetZenyNum,n;).
+//bAddGetZenyNum 1042 // Same as bGetZenyNum, but the rates and zeny to gain stack (bAddGetZenyNum,n,x;).
+//bAddDamageClass 1043 // +x% of extra physical damage against monsters of class n, against players n is their job id (bAddDamageClass,n,x;).
+//bAddMagicDamageClass 1044 // +x% of extra magical damage against monsters of class n, against players n is their job id (bAddDamageClass,n,x;).
+//bAddDefClass 1045 // +x% physical damage reduction against monsters of class n, against players n is their job id (bAddDefClass,n,x;)
+//bAddMdefClass 1046 // +x% magical damage reduction against monsters of class n, against players n is their job id (bAddDefClass,n,x;)
+//bAddMonsterDropItem 1047 // Adds a x/100% chance for a n item to be dropped, when killing any monster (bAddMonsterDropItem,n,x;)
+//bDefRatioAtkEle 1048 // Does more damage depending on the monster's defense against a n element (bDefRatioAtkEle,n;).
+//bDefRatioAtkRace 1049 // Does more damage depending on the monster's defense against a n race (bDefRatioAtkRace,n;).
+//bAddSpeed 1050 // Adds a n speed to the player (bAddSpeed,n;).
+//bHitRate 1051 // Adds a n% rate to hit (bHitRate,n;).
+//bFleeRate 1052 // Adds a n% to flee a monster's attack (bFleeRate,n;).
+//bFlee2Rate 1053 // Adds a n% to dodge a monster's attack (bFleeRate,n;).
bDefRate 1054 // Adds a n% of defense to the equipment (bDefRate,n;).
bDef2Rate 1055 // Adds a n% of defense based on the vitality to the equipment (bDef2Rate,n;).
-bMdefRate 1056 // Adds a n% of magical defense to the equipment (bMdefRate,n;).
-bMdef2Rate 1057 // Adds a n% of magical defense based on the vitality to the equipment (bMdef2Rate,n;).
-bSplashRange 1058 // Adds n to the splash attack radius and only the highest among all is applied (bSplashRange,n;).
-bSplashAddRange 1059 // Adds n to the splash attack radius (bSplashRange,n;).
-bAutoSpell 1060 // Auto Spell casting on attack of spell n at level x with a y/10% chance (bAutoSpell,n,x,y;).
+//bMdefRate 1056 // Adds a n% of magical defense to the equipment (bMdefRate,n;).
+//bMdef2Rate 1057 // Adds a n% of magical defense based on the vitality to the equipment (bMdef2Rate,n;).
+//bSplashRange 1058 // Adds n to the splash attack radius and only the highest among all is applied (bSplashRange,n;).
+//bSplashAddRange 1059 // Adds n to the splash attack radius (bSplashRange,n;).
+//bAutoSpell 1060 // Auto Spell casting on attack of spell n at level x with a y/10% chance (bAutoSpell,n,x,y;).
bHPDrainRate 1061 // Adds a n/10% chance to receive x% of dealed damage as HP from a monster of race r with normal attack (bHPDrainRateRace,r,n,x;).
-bSPDrainRate 1062 // Adds a n/10% chance to receive x% of dealed damage as SP from a monster of race r with normal attack (bSPDrainRateRace,r,n,x;).
-bShortWeaponDamageReturn 1063 // Reflects n% of received melee damage back to the enemy that caused it (bShortWeaponDamageReturn,n;).
-bLongWeaponDamageReturn 1064 // Reflects n% of received ranged damage back to the enemy that caused it (bShortWeaponDamageReturn,n;).
-bWeaponComaEle 1065 // Adds a n/100% chance to cause coma when attacking a monster of a x element with a normal attack (bWeaponComaEle,x,n;).
-bWeaponComaRace 1066 // Adds a n/100% chance to cause coma when attacking a monster of a x race with a normal attack (bWeaponComaEle,x,n;).
-bAddEff2 1067 // Adds a n/100% chance to cause status change x on self when attacking (bAddEff2,x,n;).
-bMagicDamageReturn 1068 // Adds a n% chance to reflect targetted magic spells back to the enemy that caused it (bMagicDamageReturn,n;).
-bRandomAttackIncrease 1069 // Adds a n% chance to inflict x% additional damage to the enemy with normal attack (bRandomAttackIncrease,x,n;).
-bAllStats 1070 // Adds a n number in Strengh, Agility, Vitality, Intelligence, Dexterity and Luck (bAllStats,n;).
-bAgiVit 1071 // Adds a n number in Agility and Vitality (bAgiVit,n;).
-bAgiDexStr 1072 // Adds a n number in Agility, Dexterity and Strengh (bAgiDexStr,n;).
-bPerfectHide 1073 // A hidden character is no longer detected by monsters with 'detector' mode (bPerfectHide,1;).
+//bSPDrainRate 1062 // Adds a n/10% chance to receive x% of dealed damage as SP from a monster of race r with normal attack (bSPDrainRateRace,r,n,x;).
+//bShortWeaponDamageReturn 1063 // Reflects n% of received melee damage back to the enemy that caused it (bShortWeaponDamageReturn,n;).
+//bLongWeaponDamageReturn 1064 // Reflects n% of received ranged damage back to the enemy that caused it (bShortWeaponDamageReturn,n;).
+//bWeaponComaEle 1065 // Adds a n/100% chance to cause coma when attacking a monster of a x element with a normal attack (bWeaponComaEle,x,n;).
+//bWeaponComaRace 1066 // Adds a n/100% chance to cause coma when attacking a monster of a x race with a normal attack (bWeaponComaEle,x,n;).
+//bAddEff2 1067 // Adds a n/100% chance to cause status change x on self when attacking (bAddEff2,x,n;).
+//bMagicDamageReturn 1068 // Adds a n% chance to reflect targetted magic spells back to the enemy that caused it (bMagicDamageReturn,n;).
+//bRandomAttackIncrease 1069 // Adds a n% chance to inflict x% additional damage to the enemy with normal attack (bRandomAttackIncrease,x,n;).
+//bAllStats 1070 // Adds a n number in Strengh, Agility, Vitality, Intelligence, Dexterity and Luck (bAllStats,n;).
+//bAgiVit 1071 // Adds a n number in Agility and Vitality (bAgiVit,n;).
+//bAgiDexStr 1072 // Adds a n number in Agility, Dexterity and Strengh (bAgiDexStr,n;).
+//bPerfectHide 1073 // A hidden character is no longer detected by monsters with 'detector' mode (bPerfectHide,1;).
equip_head 1
equip_shield 2
diff --git a/world/map/db/mob_skill_db.txt b/world/map/db/mob_skill_db.txt
index 0ba38bff..192af21a 100644
--- a/world/map/db/mob_skill_db.txt
+++ b/world/map/db/mob_skill_db.txt
@@ -1,6 +1,6 @@
// Aegis zone 8.5 -> eAthena conversion by Komurka
// + Mob Skills for Einbroch+ by Lupus
-//MOB_ID, a unused dummy character sequence (for information only), STATE, SKILL_ID, SKILL_LV,
+//MOB_ID, a mostly unused character sequence (for information), STATE, SKILL_ID, SKILL_LV,
// rate (10000 = 100%), casttime, delay, cancelable, a target, a condition type, a condition value,
// a value 1, a value 2, a value 3, a value 4, a value 5, emotion
//Example
@@ -10,53 +10,23 @@
//delay is the time in milliseconds that has to be pass before recasting the same skill.
//
//STATE:
-// any / idle (in standby) / walk (in movement) / dead (on killed) / loot /
-// attack / angry (like attack, except player has not attacked mob yet) /
-// chase (following target, after being attacked) / follow (following
-// target, without being attacked)
+// any / idle (in standby) / walk (in movement) / attack
//
-//target: The target of the skill can be: target (when a PC is targetted) / self / friend / master
-// (the following are for ground-skills, a random target tile is selected from
-// the specified area):
-// around1 (3x3 area around self) / around2 (5x5 area around self) /
-// around3 (7x7 area around self) / around4 (9x9 area around self) /
-// around5 (3x3 area around target) / around6 (5x5 area around target) /
-// around7 (7x7 area around target) / around8 (9x9 area around target) /
-// around (11x11 area around self)
+//target: The target of the skill can be: target (when a PC is targetted) / self
//
//conditions: (condition type) (value which specifies a condition value)
// always uncondtional
// myhpltmaxrate when the mob's hp drops to a certain %
-// mystatuson If the mob has any abnormalities in status (condition value),
-// mystatusoff If the mob has ended any abnormalities in status (condition value),
-// friendhpltmaxrate when the mobs' friend's hp drops to a certain %
-// friendstatuson If the friend has any abnormalities in status (condition value),
-// friendstatusoff If the friend has ended any abnormalities in status (condition value),
-// attackpcgt Attack PC becomes more than the number of specification
-// attackpcge Attack PC becomes equal or more than the number of specification.
+// notintown map does not have "town" mapflag
// slavelt when the number of slaves is lower than the original number of specification.
// slavele when the number of slaves is lower or equal than the original number of specification.
-// closedattacked when melee attacked (close range attack)
-// longrangeattacked when long ranged attacked (like bows and far range weapons)
-// skillused when a skill is used on the mob
-// afterskill after the mob used certain skill.
-// casttargeted when a target is in cast range.
-// rudeattacked when a target is rude attacked
-// hiding *not implemented yet* when a target is hidden
-//
-// The character's state which can be specified to be a condition value by the statuson/statusoff system
-// anybad any type of state change
-// stone condition of being in stone state
-// freeze condition of being in frozen state
-// stan condition of being in stunned state
-// sleep condition of being in sleep state
-// poison condition of being in poisoned state
-// curse condition of being in cursed state
-// silence condition of being in silenced state
-// confusion condition of being in confusion state
-// blind condition of being in blind state
-// hiding condition of being in hidden state
-// sight condition of being in unhidden state
+
+// The only supported skills are:
+// NPC_SELFDESTRUCTION
+// NPC_SUMMONSLAVE
+// NPC_EMOTION
+// NPC_POISON
+
// Slime Monster Skills
1092,SlimeBlast@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,notintown,0,30,,,,,
1091,BlueSlime@NPC_SUMMONSLAVE_blastX1,any,198,1,8000,1000,5000,no,self,slavelt,1,1092,,,,,
@@ -79,20 +49,12 @@
1026,MountainSnake@NPC_POISON,attack,178,60,100,0,300,yes,target,always,0,,10,,,,
1034,GrassSnake@NPC_POISON,attack,178,45,200,0,200,yes,target,always,0,,10,,,,
1024,PoisonSkull@NPC_POISON,attack,178,50,500,0,400,yes,target,always,0,,10,,,,
-//-- 1026,MountainSnake@NPC_POISONATTACK,attack,190,5,10000,0,500,yes,target,always,1,,,,,,
-//-- 1010,Snake@TF_POISON,attack,54,3,10000,0,500,yes,target,always,1,,,,,,
1014,PinkFlower@NPC_SUMMONSLAVE,attack,198,1,200,2000,0,no,self,myhpltmaxrate,99,1049,,,,,
1049,Bee@NPC_POISON,attack,178,20,1000,0,500,yes,target,always,0,,10,,,,
1049,Bee@NPC_SELFDESTRUCTION,attack,175,1,1000,0,500,yes,self,notintown,0,30,,,,,
// Reaper Quest mob abilities
-//1067,Reaper@NPC_SUMMONSLAVE_scytheX1,attack,198,1,5000,1000,10000,no,self,slavelt,1,1069,,,,,
-//1067,Reaper@NPC_SUMMONSLAVE_scytheX2,attack,198,2,3000,1000,15000,no,self,slavelt,3,1069,,,,,
-//1067,Reaper@NPC_SUMMONSLAVE_scytheX4,attack,198,4,1000,1000,20000,no,self,myhpltmaxrate,50,1069,,,,,
1067,Reaper@NPC_SUMMONSLAVE_ballX1,any,198,1,8000,1000,5000,no,self,slavelt,5,1070,,,,,
-//1067,Reaper@NPC_SUMMONSLAVE_ballX3,any,198,3,6000,1000,10000,no,self,myhpltmaxrate,60,1070,,,,,
-//1067,Reaper@NPC_SUMMONSLAVE_ballX9,any,198,9,4000,1000,15000,no,self,myhpltmaxrate,20,1070,,,,,
-//1067,Reaper@AL_TELEPORT,attack,28,2,3500,500,5000,yes,self,always,,,,,,,
1070,BallLightning@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,notintown,0,30,,,,,
1086,FeyElement@NPC_SUMMONSLAVE_earthspiderX1,any,198,1,5000,100,500,no,self,slavelt,6,1083,,,,,
1086,FeyElement@NPC_SUMMONSLAVE_earthscorpionX1,any,198,1,5000,100,500,no,self,slavelt,6,1084,,,,,
@@ -102,4 +64,3 @@
1102,Luvia@NPC_SUMMONSLAVE_witchguardX1,any,198,1,10000,1000,60000,no,self,always,0,1103,,,,,
1102,Luvia@NPC_SUMMONSLAVE_demonicspiritX2,any,198,2,10000,10,5000,no,self,slavelt,7,1101,,,,,
1102,Luvia@NPC_SUMMONSLAVE_demonicspiritX1,any,198,1,10000,10,20000,no,self,always,0,1101,,,,,
-1102,Luvia@SC_SPLASHER,any,189,1,10000,0,10000,no,target,always,0,,,,,,
diff --git a/world/map/news.d/12-manaplus.txt b/world/map/news.d/12-manaplus.txt
new file mode 100644
index 00000000..b420cfcf
--- /dev/null
+++ b/world/map/news.d/12-manaplus.txt
@@ -0,0 +1,37 @@
+{date:2013-01-31}
+
+ManaPlus Support
+
+We have decided to support ManaPlus as an
+official client alongside Mana. In fact, since
+there will likely be no more releases of the
+Mana client that supports TMWA (this server),
+there will inevitably be a time when ManaPlus
+becomes the only supported client.
+
+Mana 0.6.1 will continue to receive some
+support until October 2013. We have no plans
+to specifically break compatibility with Mana,
+but new features may not be available.
+
+For older clients (whether Mana or ManaPlus),
+there will be different levels of attempted
+support, depending on exactly how old it is:
+
+* Less than 6 months old: will not crash or
+ behave erratically.
+* Less than 2 months old: will behave
+ expectedly, but might not support all features.
+* Last 2 releases: will do everything,
+ correctly, on the main server.
+* Last release, or even git, may be required
+ on the test server.
+
+Of course, if a particular client release is
+buggy, we may not be able to support it at all.
+
+For more details, see {link:http://forums.themanaworld.org/viewtopic.php?f=4&t=16867}.
+
+ManaPlus is available at {link:http://manaplus.evolonline.org/}
+
+{author:o11c}
diff --git a/world/map/news.html b/world/map/news.html
index c8fd4776..b07b5801 100644
--- a/world/map/news.html
+++ b/world/map/news.html
@@ -1,5 +1,46 @@
<!-- Generated by tools/news.py for index.php -->
<div>
+<p/>
+<font color="#0000ff">2013-01-31</font>
+<p/>
+ManaPlus Support
+<p/>
+We have decided to support ManaPlus as an
+official client alongside Mana. In fact, since
+there will likely be no more releases of the
+Mana client that supports TMWA (this server),
+there will inevitably be a time when ManaPlus
+becomes the only supported client.
+<p/>
+Mana 0.6.1 will continue to receive some
+support until October 2013. We have no plans
+to specifically break compatibility with Mana,
+but new features may not be available.
+<p/>
+For older clients (whether Mana or ManaPlus),
+there will be different levels of attempted
+support, depending on exactly how old it is:
+<p/>
+* Less than 6 months old: will not crash or
+ behave erratically.
+* Less than 2 months old: will behave
+ expectedly, but might not support all features.
+* Last 2 releases: will do everything,
+ correctly, on the main server.
+* Last release, or even git, may be required
+ on the test server.
+<p/>
+Of course, if a particular client release is
+buggy, we may not be able to support it at all.
+<p/>
+For more details, see <a href="http://forums.themanaworld.org/viewtopic.php?f=4&t=16867">http://forums.themanaworld.org/viewtopic.php?f=4&t=16867</a>.
+<p/>
+ManaPlus is available at <a href="http://manaplus.evolonline.org/">http://manaplus.evolonline.org/</a>
+<p/>
+-<font color="#009000">o11c</font>
+</div>
+<div>
+<p/>
<font color="#0000ff">2013-01-26</font>
<p/>
Content Release January 2013
@@ -18,6 +59,7 @@ lamps in his room wear off after a while.
-<font color="#009000">Jenalya</font>
</div>
<div>
+<p/>
<font color="#0000ff">2013-01-23</font>
<p/>
News feed is finally generated from the same
@@ -26,6 +68,7 @@ source for both the game and the website.
-<font color="#009000">o11c</font>
</div>
<div>
+<p/>
<font color="#0000ff">December 2012 again</font>
<p/>
A new peninsula has magically raised from the depths,
diff --git a/world/map/news.txt b/world/map/news.txt
index cb3a4a7d..a8e9b0ce 100644
--- a/world/map/news.txt
+++ b/world/map/news.txt
@@ -1,3 +1,42 @@
+##32013-01-31##0
+
+ManaPlus Support
+
+We have decided to support ManaPlus as an
+official client alongside Mana. In fact, since
+there will likely be no more releases of the
+Mana client that supports TMWA (this server),
+there will inevitably be a time when ManaPlus
+becomes the only supported client.
+
+Mana 0.6.1 will continue to receive some
+support until October 2013. We have no plans
+to specifically break compatibility with Mana,
+but new features may not be available.
+
+For older clients (whether Mana or ManaPlus),
+there will be different levels of attempted
+support, depending on exactly how old it is:
+
+* Less than 6 months old: will not crash or
+ behave erratically.
+* Less than 2 months old: will behave
+ expectedly, but might not support all features.
+* Last 2 releases: will do everything,
+ correctly, on the main server.
+* Last release, or even git, may be required
+ on the test server.
+
+Of course, if a particular client release is
+buggy, we may not be able to support it at all.
+
+For more details, see ##3http://forums.themanaworld.org/viewtopic.php?f=4&t=16867##0.
+
+ManaPlus is available at ##3http://manaplus.evolonline.org/##0
+
+-##2o11c##0
+
+
##32013-01-26##0
Content Release January 2013
@@ -14,16 +53,16 @@ and Doug in Dimond's Cove discovered that the
lamps in his room wear off after a while.
-##2Jenalya##0
-
-
+
+
##32013-01-23##0
News feed is finally generated from the same
source for both the game and the website.
-##2o11c##0
-
-
+
+
##3December 2012 again##0
A new peninsula has magically raised from the depths,
@@ -417,5 +456,5 @@ More news updates will follow once we've
investigated further; we're doing what we can...
-##2Freeyorp##0
-
-
+
+
diff --git a/world/map/npc/052-2/lobby.txt b/world/map/npc/052-2/lobby.txt
index 53de723c..6eb56e72 100644
--- a/world/map/npc/052-2/lobby.txt
+++ b/world/map/npc/052-2/lobby.txt
@@ -229,7 +229,9 @@ OnTimer24500:
end;
npctalk "Demonotis!";
misceffect FX_EVIL_SUMMON;
- areamonster "052-2.gat", 20, 23, 47, 41, "", 1101, 20 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::onDSDeath";
+ callsub S_GetHeroRect;
+ areamonster "052-2.gat", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 20 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::onDSDeath";
+ callsub S_ClearHeroRect;
end;
OnTimer44000:
@@ -237,7 +239,9 @@ OnTimer44000:
end;
npctalk "Demonotis!";
misceffect FX_EVIL_SUMMON;
- areamonster "052-2.gat", 20, 23, 47, 41, "", 1101, 28 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::onDSDeath";
+ callsub S_GetHeroRect;
+ areamonster "052-2.gat", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 28 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::onDSDeath";
+ callsub S_ClearHeroRect;
end;
OnTimer77000:
@@ -245,7 +249,9 @@ OnTimer77000:
end;
npctalk "Demonotis!";
misceffect FX_EVIL_SUMMON;
- areamonster "052-2.gat", 20, 23, 47, 41, "", 1101, 42 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::onDSDeath";
+ callsub S_GetHeroRect;
+ areamonster "052-2.gat", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 42 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::onDSDeath";
+ callsub S_ClearHeroRect;
// That was the last spawn: reset the timer to start the CheckInvoke loop.
set $@illia_level_5_progress, 5;
setnpctimer 0;
@@ -276,7 +282,9 @@ OnTimer18500:
npctalk "Demonotis Major!";
misceffect FX_EVIL_SUMMON;
misceffect FX_MAGIC_DARK_EXPLOSION;
- areamonster "052-2.gat", 20, 23, 47, 41, "", 1103, 8 + (16 - 480/(30+$Illia_Luvia_Harvest))/3, "Luvia?::onWGDeath";
+ callsub S_GetHeroRect;
+ areamonster "052-2.gat", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1103, 8 + (16 - 480/(30+$Illia_Luvia_Harvest))/3, "Luvia?::onWGDeath";
+ callsub S_ClearHeroRect;
end;
OnTimer20000:
@@ -327,6 +335,37 @@ L_ChaseLuvia:
areatimer "052-2.gat", 19, 18, 48, 43, 2000, "#LuviaShadow::OnNN";
end;
+S_GetHeroRect:
+ if (isloggedin($@ILLIA_HERO_ID) == 0)
+ goto L_Clear;
+ attachrid($@ILLIA_HERO_ID);
+ set $@illia_lobby_x, getx();
+ set $@illia_lobby_y, gety();
+
+ set $@illia_lobby_x1, $@illia_lobby_x - 12;
+ set $@illia_lobby_y1, $@illia_lobby_y - 8;
+ set $@illia_lobby_x2, $@illia_lobby_x + 12;
+ set $@illia_lobby_y2, $@illia_lobby_y + 8;
+
+ if ($@illia_lobby_x1 < 20)
+ set $@illia_lobby_x1, 20;
+ if ($@illia_lobby_y1 < 19)
+ set $@illia_lobby_y1, 19;
+ if ($@illia_lobby_x2 > 47)
+ set $@illia_lobby_x2, 47;
+ if ($@illia_lobby_y2 > 42)
+ set $@illia_lobby_y2, 42;
+
+ detachrid;
+ return;
+
+S_ClearHeroRect:
+ set $@illia_lobby_x1, 0;
+ set $@illia_lobby_y1, 0;
+ set $@illia_lobby_x2, 0;
+ set $@illia_lobby_y2, 0;
+ return;
+
onDSDeath:
end;
diff --git a/world/map/npc/functions/debug.txt b/world/map/npc/functions/debug.txt
index f9989b74..83a41060 100755
--- a/world/map/npc/functions/debug.txt
+++ b/world/map/npc/functions/debug.txt
@@ -576,22 +576,17 @@ L_MagicExperience:
&& @nature == 0
&& @astral == 0)
goto L_NoMagicSkills;
- if (@general == 2
- || @life == 2
- || @war == 2
- || @trans == 2
- || @nature == 2
- || @astral == 2)
- goto L_ChangeMagicExperience;
+
+ goto L_ChangeMagicExperience;
L_NoMagicSkills:
mes "You can't have magic experience, since you have no magic skills yet.";
goto L_MagicSkills;
L_ChangeMagicExperience:
- mes "Set the desired magic experience (min: 100 - max: 8000).";
+ mes "Set the desired magic experience (min: 0 - max: 8000).";
input @value;
- if (@value < 100 || @value > 8000)
+ if (@value < 0 || @value > 8000)
goto L_WrongMagicExperience;
set @mexp, @value;
callsub S_Update_Mask;
@@ -606,7 +601,7 @@ L_ChangeMagicSkills:
menu
"General Magic.", L_ChangeGeneralMagicSkill,
"Life Magic.", L_ChangeLifeMagicSkill,
- "War Magic.", L_ChangeWarMagicskill,
+ "War Magic.", L_ChangeWarMagicSkill,
"Transmutation Magic.", L_ChangeTransmutationMagicSkill,
"Nature Magic.", L_ChangeNatureMagicSkill,
"Astral Magic.", L_ChangeAstralMagicSkill,
@@ -765,7 +760,7 @@ L_ChangeAstralMagicSkill1:
setskill SKILL_MAGIC_ASTRAL, 1;
mes "Astral Magic skill changed to level 1.";
next;
- goto L_Magic;
+ goto L_MagicSkills;
L_ChangeAstralMagicSkill2:
setskill SKILL_MAGIC_ASTRAL, 2;
@@ -774,7 +769,7 @@ L_ChangeAstralMagicSkill2:
callsub S_Update_Mask;
mes "Astral Magic skill changed to level 2.";
next;
- goto L_Magic;
+ goto L_MagicSkills;
S_Update_Mask:
set MAGIC_EXPERIENCE,
@@ -855,6 +850,7 @@ L_ResetAll:
setskill SKILL_MAGIC_NATURE, 0;
setskill SKILL_MAGIC_ASTRAL, 0;
set @mexp, 0;
+ callsub S_Update_Mask;
resetstatus;
set BaseLevel, 1;
mes "All skills removed.";
diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt
index 081aeb65..2f89010e 100644
--- a/world/map/npc/functions/mob_points.txt
+++ b/world/map/npc/functions/mob_points.txt
@@ -116,7 +116,7 @@ function|script|MobPoints|{
// Scorpion, Red Scorpion, Black Scorpion, Angry Scorpion
if ((@mobID == 1003)
|| (@mobID == 1004)
- || (@mobID == 1008)
+ || (@mobID == 1009)
|| (@mobID == 1057))
goto L_good;