summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorblackhole89 <blackhole89@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-07-11 15:58:40 +0000
committerblackhole89 <blackhole89@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-07-11 15:58:40 +0000
commit1e844abc3fa269a504ba6610ac83224d9660ce22 (patch)
treeb40b3f9560fe5d089f3e1ca51403db8f2c4f9938 /src/map
parent7732674c21858267c2911415f2e52c36d7f30b1b (diff)
downloadhercules-1e844abc3fa269a504ba6610ac83224d9660ce22.tar.gz
hercules-1e844abc3fa269a504ba6610ac83224d9660ce22.tar.bz2
hercules-1e844abc3fa269a504ba6610ac83224d9660ce22.tar.xz
hercules-1e844abc3fa269a504ba6610ac83224d9660ce22.zip
warpportal(x,y,"tmap",tx,ty) - Creates a skill warp portal on the map. battle_check_target modified to allow NPC-owned skill units to proceed.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7612 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/battle.c2
-rw-r--r--src/map/script.c39
2 files changed, 41 insertions, 0 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index bbe1e8279..25bacc337 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3176,6 +3176,8 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
}
case BL_SKILL: //Skill with no owner? Fishy, but let it through.
break;
+ case BL_NPC: // allows NPC-set skill units to proceed [blackhole89]
+ break;
default: //Invalid source of attack?
return 0;
}
diff --git a/src/map/script.c b/src/map/script.c
index 26ae86ee1..fdcc98c6e 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -438,6 +438,9 @@ int buildin_sleep(struct script_state *st);
int buildin_sleep2(struct script_state *st);
int buildin_awake(struct script_state *st);
int buildin_getvariableofnpc(struct script_state *st);
+// [blackhole89] -->
+int buildin_warpportal(struct script_state *st);
+// <-- [blackhole89]
void push_val(struct script_stack *stack,int type,int val);
int run_func(struct script_state *st);
@@ -779,6 +782,9 @@ struct {
{buildin_sleep2,"sleep2","i"},
{buildin_awake,"awake","s"},
{buildin_getvariableofnpc,"getvariableofnpc","is"},
+ // [blackhole89] -->
+ {buildin_warpportal,"warpportal","iisii"},
+ // <--- [blackhole89]
{NULL,NULL,NULL},
};
@@ -11011,6 +11017,39 @@ int buildin_getvariableofnpc(struct script_state *st)
}
return 0;
}
+
+// [blackhole89] --->
+
+// Set a warp portal.
+int buildin_warpportal(struct script_state *st){
+ struct skill_unit_group *group;
+ unsigned short mapindex;
+ long spx,spy,tpx,tpy;
+ struct block_list *bl=map_id2bl(st->oid);
+
+ nullpo_retr(0,bl);
+
+ spx=conv_num(st, & (st->stack->stack_data[st->start+2]));
+ spy=conv_num(st, & (st->stack->stack_data[st->start+3]));
+ mapindex = mapindex_name2id((char*)conv_str(st,& (st->stack->stack_data[st->start+4])));
+ printf("mapindex: %d\n",mapindex);
+ tpx=conv_num(st, & (st->stack->stack_data[st->start+5]));
+ tpy=conv_num(st, & (st->stack->stack_data[st->start+6]));
+
+ if(!mapindex) return 0;
+
+ if((group=skill_unitsetting(bl,AL_WARP,4,spx,spy,1))==NULL) {
+ return 0;
+ }
+
+ group->val2=(tpx<<16)|tpy;
+ group->val3 = mapindex;
+
+ return 0;
+}
+
+// <-- [blackhole89]
+
//
// ŽÀs•”main
//