summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-01-10 10:16:06 +0000
committercelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-01-10 10:16:06 +0000
commit7536331ae203d5576166cd50a3243b735cd30f75 (patch)
tree2cf87c8b716d5ce273c5d21de1320c2509124124
parent31840066c4795124a887cd12996cf7dc13fcef25 (diff)
downloadhercules-7536331ae203d5576166cd50a3243b735cd30f75.tar.gz
hercules-7536331ae203d5576166cd50a3243b735cd30f75.tar.bz2
hercules-7536331ae203d5576166cd50a3243b735cd30f75.tar.xz
hercules-7536331ae203d5576166cd50a3243b735cd30f75.zip
* Fixed some typos and exploits in the Blacksmith and Hunter job quest
* Modified 'wedding' script command to work with "OnTimer" scripts * Added 'attachnpctimer' and 'detachnpctimer' script command git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@944 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--Changelog.txt21
-rw-r--r--npc/Changelog.txt3
-rw-r--r--npc/jobs/2-1/blacksmith.txt9
-rw-r--r--npc/jobs/2-1/hunter.txt7
-rw-r--r--npc/sample/npc_test_npctimer2.txt16
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/npc.c3
-rw-r--r--src/map/pc.c5
-rw-r--r--src/map/script.c53
9 files changed, 104 insertions, 15 deletions
diff --git a/Changelog.txt b/Changelog.txt
index ac9cb0c5a..ae556d9d8 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,11 +1,30 @@
Date Added
-01/0
+01/10
+ * Added Shinomori and orn's fix for the skill tree to only check the first
+ required skill in the DB and skipping the rest [celest]
+ * Modified 'wedding' script command to work with "OnTimer" scripts even without
+ doing 'attachnpctimer' (The 'player not attached' error will still display,
+ but the effect will appear *over the NPC* instead of the player...
+ at least it won't fail ^^) [celest]
+ * Added 'attachnpctimer' script command for attaching the player to the current
+ npc's timer in "OnTimerxxxx" scripts, thanks to Wallex for the idea. [celest]
+ Syntax:
+ attachnpctimer;
+ attachnpctimer "<Player Name">;
+
+ Check /npc/sample/npc_test_npctimer2.txt for example.
+ * Added 'detachnpctimer' script command for detaching players from the npc's
+ timer. [celest] Syntax:
+ detachnpctimer;
+ detachnpctimer "<NPC Name">;
+
* Added 'OnInterIfInitOnce' for WoE scripts & modified the WoE scripts as well [Ajarn & Codemaster] [Thanks to FREYA] [SVN 943]
* Added the @sound command and the NPC command of soundeffectall
- works just like soundeffect, but plays for everyone in the area [Codemaster] [SVN 942]
* Don't allow Pets to attack Guardians outside of WoE [Codemaster] [SVN 940]
* Require 15% of HP or more for WE_MALE skill [Codemaster] [SVN 940]
* Require 15% of SP or more for WE_FEMALE skill [Codemaster] [SVN 940]
+
01/07
* Upon changing to high novice 100 stat points should be given, not 88 [celest]
* Give high novices First Aid and Trick Dead upon job changing [celest]
diff --git a/npc/Changelog.txt b/npc/Changelog.txt
index a8f61beae..586cc52b8 100644
--- a/npc/Changelog.txt
+++ b/npc/Changelog.txt
@@ -34,6 +34,9 @@ Other Ppl
Date Added
======
+01/10
+ * Fixed some typos and exploits in the Blacksmith and Hunter job quest,
+ thanks to Riotblade and nonox
01/09/05
* Modified guild war scripts to fix a bug for duplicate guild storages. [Codemaster & Ajarn]
8/1
diff --git a/npc/jobs/2-1/blacksmith.txt b/npc/jobs/2-1/blacksmith.txt
index 0f1b71eb4..100bbc4da 100644
--- a/npc/jobs/2-1/blacksmith.txt
+++ b/npc/jobs/2-1/blacksmith.txt
@@ -7,7 +7,7 @@
//= Optimized and further edited by kobra_k88.
//= Further bugfixed and tested by Lupus
//===== Current Version: =====================================
-//= 1.0
+//= 1.1
//===== Compatible With: =====================================
//= eAthena 0.5.2 +
//===== Description: =========================================
@@ -17,6 +17,7 @@
//= names and labels. Edited some text.[kobra_k88]
//= Removed "if(JobLevel > 48) goto higher". It was a left over line.
//= Thx to "Decker".[kobra_k88]
+//= Fixed some typos, thanks to Riotblade [celest]
==============================================================
@@ -461,7 +462,7 @@ L_result:
mes "Good!";
next;
mes "[Geshupenschte]";
- mes "Lets see....your score is ^5533FF"+@score+"."^000000;
+ mes "Lets see....your score is ^5533FF"+@score+".^000000";
if (@score == 100) goto L_perfect;
mes ".............";
next;
@@ -485,7 +486,7 @@ L_result2:
mes "Great!";
next;
mes "[Geshupenschte]";
- mes "Lets see....your score is ^5533FF"+@score+"."^000000;
+ mes "Lets see....your score is ^5533FF"+@score+".^000000";
if (@score > 80) goto L_pass;
mes ".............";
next;
@@ -1160,7 +1161,7 @@ comodo.gat,158,342,4 script Bismarck 118,{
if (BSMITH_Q == 3) goto L_Start;
mes "[Bismarck]";
- mes "......Ughï....";
+ mes "......Ugh?...";
mes ".....When's that delivery coming......";
next;
mes "[Bismarck]";
diff --git a/npc/jobs/2-1/hunter.txt b/npc/jobs/2-1/hunter.txt
index b65b78720..bd8f830a5 100644
--- a/npc/jobs/2-1/hunter.txt
+++ b/npc/jobs/2-1/hunter.txt
@@ -6,7 +6,7 @@
//= Converted by kobra_k88
//= Further bugfixed and tested by Lupus
//===== Current Version: =====================================
-//= 1.7
+//= 1.8
//===== Compatible With: =====================================
//= eAthena 1.0
//===== Description: =========================================
@@ -19,6 +19,7 @@
//= v1.5 Fixed items quest fork bug [Lupus]
//= v1.6 Fixed items quest bug: added extra condition [Lupus]
//= v1.7 Fixed skillpoints check bug [Lupus]
+//= v1.8 Fixed an exploit, thanks to nonox [celest]
//============================================================
@@ -721,8 +722,7 @@ OnMyMobDead1:
stopnpctimer "TimerHnt";
killmonsterall "job_hunte.gat";
enablenpc "SwitchHnt";
- areaannounce "job_hunte.gat", 50, 64, 123, 143, "[Test Guide]: Great job! Go use the switch now!",8;
- set HNTR_Q2, 2;
+ areaannounce "job_hunte.gat", 50, 64, 123, 143, "[Test Guide]: Great job! Go use the switch now!",8;
end;
}
@@ -843,6 +843,7 @@ job_hunte.gat,93,101,1 script SwitchHnt 723,{
job_hunte.gat,89,139,1 script ExitHnt 45,2,2,{
deltimer "TimerHnt::OnTimer196000";
+ set HNTR_Q2, 2;
warp "payon_in02.gat", 16, 26;
killmonsterall "job_hunte.gat";
donpcevent "HntTG::OnStart";
diff --git a/npc/sample/npc_test_npctimer2.txt b/npc/sample/npc_test_npctimer2.txt
new file mode 100644
index 000000000..de9895f3c
--- /dev/null
+++ b/npc/sample/npc_test_npctimer2.txt
@@ -0,0 +1,16 @@
+prontera.gat,156,183,0 script NPCtimerƒeƒXƒg::npctimerX0000 116,{
+L_INIT:
+ mes "What would you like to know?";
+ menu "Tell me my level",L_WAIT;
+
+L_WAIT:
+ mes "I need time to think...";
+ initnpctimer;
+ attachnpctimer;
+ close;
+
+OnTimer5000:
+ mes "Ah, your level is " + readparam(11);
+ detachnpctimer;
+ close;
+} \ No newline at end of file
diff --git a/src/map/map.h b/src/map/map.h
index 99e4b5285..15de79d01 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -376,7 +376,7 @@ struct npc_data {
char *script;
short xs,ys;
int guild_id;
- int timer,timerid,timeramount,nexttimer;
+ int timer,timerid,timeramount,nexttimer,timerrid;
unsigned int timertick;
struct npc_timerevent_list *timer_event;
int label_list_num;
diff --git a/src/map/npc.c b/src/map/npc.c
index 4ef38ff52..d2379e5a8 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -589,7 +589,7 @@ int npc_timerevent(int tid,unsigned int tick,int id,int data)
nd->u.scr.timerid = add_timer(tick+next,npc_timerevent,id,next);
}
- run_script(nd->u.scr.script,te->pos,0,nd->bl.id);
+ run_script(nd->u.scr.script,te->pos,nd->u.scr.timerrid,nd->bl.id);
return 0;
}
/*==========================================
@@ -612,6 +612,7 @@ int npc_timerevent_start(struct npc_data *nd)
}
nd->u.scr.nexttimer=j;
nd->u.scr.timertick=gettick();
+ nd->u.scr.timerrid=0; // no players attached by default [celest]
if(j>=n)
return 0;
diff --git a/src/map/pc.c b/src/map/pc.c
index 417ca0272..4aa2e7342 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1048,9 +1048,10 @@ int pc_calc_skilltree(struct map_session_data *sd)
for(j=0;j<5;j++) {
if( skill_tree[s][c][i].need[j].id &&
pc_checkskill(sd,skill_tree[s][c][i].need[j].id) <
- skill_tree[s][c][i].need[j].lv)
+ skill_tree[s][c][i].need[j].lv) {
f=0;
- break;
+ break;
+ }
}
}
if(f && sd->status.skill[id].id==0 ){
diff --git a/src/map/script.c b/src/map/script.c
index 31c10d809..c2369d024 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -193,6 +193,8 @@ int buildin_stopnpctimer(struct script_state *st);
int buildin_startnpctimer(struct script_state *st);
int buildin_setnpctimer(struct script_state *st);
int buildin_getnpctimer(struct script_state *st);
+int buildin_attachnpctimer(struct script_state *st); // [celest]
+int buildin_detachnpctimer(struct script_state *st); // [celest]
int buildin_announce(struct script_state *st);
int buildin_mapannounce(struct script_state *st);
int buildin_areaannounce(struct script_state *st);
@@ -414,6 +416,8 @@ struct {
{buildin_startnpctimer,"startnpctimer","*"},
{buildin_setnpctimer,"setnpctimer","*"},
{buildin_getnpctimer,"getnpctimer","i*"},
+ {buildin_attachnpctimer,"attachnpctimer","*"}, // attached the player id to the npc timer [Celest]
+ {buildin_detachnpctimer,"detachnpctimer","*"}, // detached the player id from the npc timer [Celest]
{buildin_announce,"announce","si"},
{buildin_mapannounce,"mapannounce","ssi"},
{buildin_areaannounce,"areaannounce","siiiisi"},
@@ -3968,6 +3972,46 @@ int buildin_setnpctimer(struct script_state *st)
}
/*==========================================
+ * attaches the player rid to the timer [Celest]
+ *------------------------------------------
+ */
+int buildin_attachnpctimer(struct script_state *st)
+{
+ struct map_session_data *sd;
+ struct npc_data *nd;
+
+ nd=(struct npc_data *)map_id2bl(st->oid);
+ if( st->end > st->start+2 ) {
+ char *name = conv_str(st,& (st->stack->stack_data[st->start+2]));
+ sd=map_nick2sd(name);
+ } else {
+ sd = script_rid2sd(st);
+ }
+
+ if (sd==NULL)
+ return 0;
+
+ nd->u.scr.timerrid = sd->bl.id;
+ return 0;
+}
+
+/*==========================================
+ * detaches a player rid from the timer [Celest]
+ *------------------------------------------
+ */
+int buildin_detachnpctimer(struct script_state *st)
+{
+ struct npc_data *nd;
+ if( st->end > st->start+2 )
+ nd=npc_name2id(conv_str(st,& (st->stack->stack_data[st->start+2])));
+ else
+ nd=(struct npc_data *)map_id2bl(st->oid);
+
+ nd->u.scr.timerrid = 0;
+ return 0;
+}
+
+/*==========================================
* “V‚̺ƒAƒiƒEƒ“ƒX
*------------------------------------------
*/
@@ -5445,10 +5489,13 @@ int buildin_marriage(struct script_state *st)
int buildin_wedding_effect(struct script_state *st)
{
struct map_session_data *sd=script_rid2sd(st);
+ struct block_list *bl;
- if(sd==NULL)
- return 0;
- clif_wedding_effect(&sd->bl);
+ if(sd==NULL) {
+ bl=map_id2bl(st->oid);
+ } else
+ bl=&sd->bl;
+ clif_wedding_effect(bl);
return 0;
}
int buildin_divorce(struct script_state *st)