- Changed the npc_id mismatch warning to be more informative.
- Modified @monster command to use map_search_freecell (prevents mobs spawning on non-walkable tiles) - Modified @nuke to invoke skill_cast_nodamage_id instead of the damage_id version (fixes sprite and splash damage for the skill) - Corrected Venom Knife's requiring two knives per use. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6124 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
b6558a82ae
commit
e5ee6b1fc0
@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||
|
||||
2006/04/16
|
||||
* Modified @monster command to use map_search_freecell (prevents mobs
|
||||
spawning on non-walkable tiles) [Skotlex]
|
||||
* Modified @nuke to invoke skill_cast_nodamage_id instead of the damage_id
|
||||
version (fixes sprite and splash damage for the skill) [Skotlex]
|
||||
* Fixed char-sql server still reading the old lanconfig format rather than
|
||||
the new one. [Skotlex]
|
||||
* Removed water_height.txt reading (since it is always done from the rsw
|
||||
|
@ -27,6 +27,7 @@
|
||||
|
||||
=========================
|
||||
04/16
|
||||
* Corrected Venom Knife's requiring two knives per use. [Skotlex]
|
||||
* Adjusted more delays/speed of Lighthalzen mobs thanks to Tharis [Playtester]
|
||||
* Fixed Job_Equip values for all one-handed-swords thanks to Haplo [Playtester]
|
||||
* Fixed wrong effect 4175,Poisonous_Toad_Card [Lupus]
|
||||
|
@ -434,7 +434,7 @@
|
||||
|
||||
1001,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //KN_CHARGEATK#ƒ`ƒƒ?[ƒWƒAƒ^ƒbƒN#
|
||||
1002,0,0,15,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CR_SHRINK#ƒVƒ…ƒŠƒ“ƒN#
|
||||
1004,0,0,15,0,0,0,99,2,1,none,0,1771,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AS_VENOMKNIFE#ベナムナイフ#
|
||||
1004,0,0,15,0,0,0,99,2,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AS_VENOMKNIFE#ベナムナイフ#
|
||||
1005,0,0,25,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RG_CLOSECONFINE#ƒNƒ??[ƒYƒRƒ“ƒtƒ@ƒCƒ“#
|
||||
1006,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTBLASTER#ƒTƒCƒgƒuƒ‰ƒXƒ^?[#
|
||||
1007,0,0,30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_CREATECON#ƒGƒ‹ƒŒƒ?ƒ“ƒ^ƒ‹ƒRƒ“ƒo?[ƒ^?»‘¢#
|
||||
|
@ -3386,10 +3386,9 @@ int atcommand_monster(
|
||||
char monster[NAME_LENGTH];
|
||||
int mob_id;
|
||||
int number = 0;
|
||||
int x = 0, y = 0;
|
||||
int count;
|
||||
int i, j, k;
|
||||
int mx, my, range;
|
||||
int i, k, range;
|
||||
short mx, my;
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
memset(name, '\0', sizeof(name));
|
||||
@ -3400,14 +3399,14 @@ int atcommand_monster(
|
||||
clif_displaymessage(fd, msg_table[80]); // Give a display name and monster name/id please.
|
||||
return -1;
|
||||
}
|
||||
if (sscanf(message, "\"%23[^\"]\" %23s %d %d %d", name, monster, &number, &x, &y) > 1 ||
|
||||
sscanf(message, "%23s \"%23[^\"]\" %d %d %d", monster, name, &number, &x, &y) > 1) {
|
||||
if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 ||
|
||||
sscanf(message, "%23s \"%23[^\"]\" %d", monster, name, &number) > 1) {
|
||||
//All data can be left as it is.
|
||||
} else if ((count=sscanf(message, "%23s %d %23s %d %d", monster, &number, name, &x, &y)) > 1) {
|
||||
} else if ((count=sscanf(message, "%23s %d %23s", monster, &number, name)) > 1) {
|
||||
//Here, it is possible name was not given and we are using monster for it.
|
||||
if (count < 3) //Blank mob's name.
|
||||
name[0] = '\0';
|
||||
} else if (sscanf(message, "%23s %23s %d %d %d", name, monster, &number, &x, &y) > 1) {
|
||||
} else if (sscanf(message, "%23s %23s %d", name, monster, &number) > 1) {
|
||||
//All data can be left as it is.
|
||||
} else if (sscanf(message, "%23s", monster) > 0) {
|
||||
//As before, name may be already filled.
|
||||
@ -3437,29 +3436,17 @@ int atcommand_monster(
|
||||
strcpy(name, "--ja--");
|
||||
|
||||
// If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive
|
||||
if (battle_config.atc_spawn_quantity_limit >= 1 && number > battle_config.atc_spawn_quantity_limit)
|
||||
if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit)
|
||||
number = battle_config.atc_spawn_quantity_limit;
|
||||
|
||||
if (battle_config.etc_log)
|
||||
ShowInfo("%s monster='%s' name='%s' id=%d count=%d (%d,%d)\n", command, monster, name, mob_id, number, x, y);
|
||||
ShowInfo("%s monster='%s' name='%s' id=%d count=%d (%d,%d)\n", command, monster, name, mob_id, number, sd->bl.x, sd->bl.y);
|
||||
|
||||
count = 0;
|
||||
range = (int)sqrt(number) / 2;
|
||||
range = range * 2 + 5; // calculation of an odd number (+ 4 area around)
|
||||
range = (int)sqrt(number) +2; // calculation of an odd number (+ 4 area around)
|
||||
for (i = 0; i < number; i++) {
|
||||
j = 0;
|
||||
k = 0;
|
||||
while(j++ < 8 && k == 0) { // try 8 times to spawn the monster (needed for close area)
|
||||
if (x <= 0)
|
||||
mx = sd->bl.x + (rand() % range - (range / 2));
|
||||
else
|
||||
mx = x;
|
||||
if (y <= 0)
|
||||
my = sd->bl.y + (rand() % range - (range / 2));
|
||||
else
|
||||
my = y;
|
||||
k = mob_once_spawn((struct map_session_data*)sd, "this", mx, my, name, mob_id, 1, "");
|
||||
}
|
||||
map_search_freecell(&sd->bl, 0, &mx, &my, range, range, 0);
|
||||
k = mob_once_spawn(sd, "this", mx, my, name, mob_id, 1, "");
|
||||
count += (k != 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
@ -6005,8 +5992,7 @@ int atcommand_nuke(
|
||||
|
||||
if ((pl_sd = map_nick2sd(atcmd_player_name)) != NULL) {
|
||||
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can kill only lower or same GM level
|
||||
clif_skill_nodamage(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, -1, 1);
|
||||
skill_castend_damage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, gettick(), 0);
|
||||
skill_castend_nodamage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, gettick(), 0);
|
||||
clif_displaymessage(fd, msg_table[109]); // Player has been nuked!
|
||||
} else {
|
||||
clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player.
|
||||
|
@ -1072,7 +1072,7 @@ int npc_scriptcont(struct map_session_data *sd,int id)
|
||||
nullpo_retr(1, sd);
|
||||
|
||||
if (id!=sd->npc_id){
|
||||
ShowWarning("npc_scriptcont: sd->npc_id is not id.\n");
|
||||
ShowWarning("npc_scriptcont: sd->npc_id (%d) is not id (%d).\n", sd->npc_id, id);
|
||||
return 1;
|
||||
}
|
||||
if (npc_checknear(sd,id)){
|
||||
|
Loading…
x
Reference in New Issue
Block a user