diff options
m--------- | client-data | 0 | ||||
-rwxr-xr-x | tools/news.py | 4 | ||||
-rwxr-xr-x | tools/tmx_converter.py | 16 | ||||
-rw-r--r-- | world/map/data/056-1.wlk | bin | 11256 -> 11256 bytes | |||
-rw-r--r-- | world/map/db/const.txt | 225 | ||||
-rw-r--r-- | world/map/db/mob_skill_db.txt | 61 | ||||
-rw-r--r-- | world/map/news.d/12-manaplus.txt | 37 | ||||
-rw-r--r-- | world/map/news.html | 43 | ||||
-rw-r--r-- | world/map/news.txt | 51 | ||||
-rw-r--r-- | world/map/npc/052-2/lobby.txt | 47 | ||||
-rwxr-xr-x | world/map/npc/functions/debug.txt | 20 | ||||
-rw-r--r-- | world/map/npc/functions/mob_points.txt | 2 |
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 Binary files differindex e95f1baa..768fe6b3 100644 --- a/world/map/data/056-1.wlk +++ b/world/map/data/056-1.wlk 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; |