From d8c9ff3ba3ece0973d313847f43fc9a866868d3b Mon Sep 17 00:00:00 2001 From: gumi Date: Tue, 20 Aug 2019 23:14:12 -0400 Subject: avoid killing players in quest NPCs --- world/map/npc/002-5/sema.txt | 5 +++-- world/map/npc/007-2/witch.txt | 2 +- world/map/npc/008-1/hinnak.txt | 2 +- world/map/npc/009-2/nurse.txt | 3 ++- world/map/npc/009-4/torches.txt | 3 ++- world/map/npc/009-8/celestia.txt | 4 ++-- world/map/npc/011-1/oscar.txt | 5 +++-- world/map/npc/011-6/crastur.txt | 4 +++- world/map/npc/013-1/sagatha.txt | 2 +- world/map/npc/013-2/notes.txt | 3 ++- world/map/npc/015-3/katze.txt | 2 +- world/map/npc/017-1/flowerpentagram5.txt | 2 +- world/map/npc/017-4/orum.txt | 2 +- world/map/npc/017-4/waric.txt | 10 ++++----- world/map/npc/018-2/caul.txt | 6 +++--- world/map/npc/025-4/battlecaves.txt | 36 ++++++++++++++++++++------------ world/map/npc/026-1/mapflags.txt | 1 + world/map/npc/029-1/hasan.txt | 3 ++- world/map/npc/033-1/kimarr.txt | 3 ++- world/map/npc/034-1/yetiSpawn.txt | 3 ++- world/map/npc/048-2/slimes.txt | 21 ++++++++++++------- world/map/npc/051-1/desert.txt | 3 ++- world/map/npc/051-1/forest.txt | 7 ++++--- world/map/npc/051-3/ambush.txt | 21 +++++++++---------- world/map/npc/051-3/reinforcements.txt | 6 ++++-- world/map/npc/052-1/channelling.txt | 6 ++++-- world/map/npc/052-2/lobby.txt | 6 ++++-- world/map/npc/055-1/pumpkins.txt | 3 ++- world/map/npc/056-2/mirak.txt | 4 +++- world/map/npc/commands/_import.txt | 1 + world/map/npc/commands/python.txt | 6 +++++- world/map/npc/magic/_procedures.txt | 9 ++++++-- 32 files changed, 121 insertions(+), 73 deletions(-) diff --git a/world/map/npc/002-5/sema.txt b/world/map/npc/002-5/sema.txt index 32da7044..8da15c1a 100644 --- a/world/map/npc/002-5/sema.txt +++ b/world/map/npc/002-5/sema.txt @@ -49,8 +49,9 @@ L_Sema_TooMany: L_Sema_Not_Happy: set QL_MINEALL, 26; - heal -Hp, 0; - mes "A stone falls on your head."; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); + message strcharinfo(0), "A stone falls on your head."; goto L_Close; L_Sema_Done: diff --git a/world/map/npc/007-2/witch.txt b/world/map/npc/007-2/witch.txt index 360f2885..ed82aa49 100644 --- a/world/map/npc/007-2/witch.txt +++ b/world/map/npc/007-2/witch.txt @@ -666,7 +666,7 @@ OnTimer300000: goto L_EndQuest; L_KillHero: - heal -Hp, 0; + set Hp, 1; goto L_EndQuest; } diff --git a/world/map/npc/008-1/hinnak.txt b/world/map/npc/008-1/hinnak.txt index d16460c3..3c320549 100644 --- a/world/map/npc/008-1/hinnak.txt +++ b/world/map/npc/008-1/hinnak.txt @@ -29,7 +29,7 @@ L_No_NohMask: L_Intro_Hat: mes "The farmer lunges at you with a farming implement."; next; - heal -50, 0; + set Hp, max(1, Hp - 50); menu "I'm out of here.", L_Close, "Whoa, what are you doing?", L_Intro_Hat_Explain; diff --git a/world/map/npc/009-2/nurse.txt b/world/map/npc/009-2/nurse.txt index efad521a..95417198 100644 --- a/world/map/npc/009-2/nurse.txt +++ b/world/map/npc/009-2/nurse.txt @@ -390,7 +390,8 @@ L_hl_m_vn: next; mes "......."; // bye bye player! - heal -Hp, 0; + set Hp, 1; + warp "009-2", 149, 43; // close instead of telling how much stabilizer is needed goto L_Close; // goto L_check_st; diff --git a/world/map/npc/009-4/torches.txt b/world/map/npc/009-4/torches.txt index 0164acd4..e9aff9ff 100644 --- a/world/map/npc/009-4/torches.txt +++ b/world/map/npc/009-4/torches.txt @@ -254,7 +254,8 @@ L_Failed: misceffect 16; set @TorchIntensity, 0; callfunc "SetTorchIntensity"; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); close2; return; } diff --git a/world/map/npc/009-8/celestia.txt b/world/map/npc/009-8/celestia.txt index 3c199f74..65b72c3a 100644 --- a/world/map/npc/009-8/celestia.txt +++ b/world/map/npc/009-8/celestia.txt @@ -41,7 +41,7 @@ L_YetiMask: mes "You catch a glimpse of a black bow while some kind of dark mist quickly overcomes you."; next; mes "You feel a sharp pain in your heart and everything fades into darkness."; - heal -Hp + 1, 0; // set the current hp to 1 + set Hp, 1; set @scared_celestia, 1; // set a temporary variable (resets on log out) in the player scope (variable is stored in the player, not in the npc) warp "009-2", 148, 43; close; // terminate the script and require the player to press the "close" button @@ -332,7 +332,7 @@ OnPCLoginEvent: end; L_Stomp: - set Hp, 0; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } diff --git a/world/map/npc/011-1/oscar.txt b/world/map/npc/011-1/oscar.txt index ad088eff..1041c823 100644 --- a/world/map/npc/011-1/oscar.txt +++ b/world/map/npc/011-1/oscar.txt @@ -379,7 +379,7 @@ OnPD: set @discover_poisonous_pumpkin_again, 1; // Small damages misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0); - heal -10, 0; + set Hp, max(1, Hp - 10); sc_start sc_poison, 1, 3; // Spawn mobs or get items set @halloween_rand, rand(0,100); @@ -407,7 +407,8 @@ OnPDP: L_KillBadHunter: misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0); - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_PumpkinsRuined: diff --git a/world/map/npc/011-6/crastur.txt b/world/map/npc/011-6/crastur.txt index 52298863..f29216d5 100644 --- a/world/map/npc/011-6/crastur.txt +++ b/world/map/npc/011-6/crastur.txt @@ -151,11 +151,13 @@ L_Regular: L_Insult: npctalk strnpcinfo(0), "Crastur : Die " + strcharinfo(0) + "!"; - heal -10000, 0; + set Hp, 1; emotion EMOTE_VICIOUS; mes "[Crastur]"; mes ""; mes "\"Oh I am so sorry, my Dagger must have slipped\""; + close2; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); goto L_Close; L_Unsure: diff --git a/world/map/npc/013-1/sagatha.txt b/world/map/npc/013-1/sagatha.txt index fe2a4e6f..2900ec4c 100644 --- a/world/map/npc/013-1/sagatha.txt +++ b/world/map/npc/013-1/sagatha.txt @@ -136,7 +136,7 @@ L_hat_attack: mes "\"Let me show you...\""; misceffect sfx_magic_war, strcharinfo(0); misceffect sfx_magic_war; - heal -300, 0; + set Hp, max(1, Hp - 300); close; L_intro_name: diff --git a/world/map/npc/013-2/notes.txt b/world/map/npc/013-2/notes.txt index 99de40df..2ab0a653 100644 --- a/world/map/npc/013-2/notes.txt +++ b/world/map/npc/013-2/notes.txt @@ -197,7 +197,8 @@ L_Close: next; mes "You're losing control of your body... everything turns black... while slipping to the floor, you hear a faraway scream... suddenly, you see THE LIGHT!"; next; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); close; } diff --git a/world/map/npc/015-3/katze.txt b/world/map/npc/015-3/katze.txt index 15dea917..a9944750 100644 --- a/world/map/npc/015-3/katze.txt +++ b/world/map/npc/015-3/katze.txt @@ -43,7 +43,7 @@ L_NeedsMilk: L_ThrowStone: set @cat, 0; callsub S_Update_Katze; - heal ((MaxHp/100) * -30), 0; + heal max(1, ((MaxHp/100) * -30)), 0; warp "015-1", 60, 32; mes "\"GRAAUWL! Hissss...\""; mes "Yikes, the cat attacked you! Your whole body is scratched. Maybe throwing a stone wasn't such a great idea..."; diff --git a/world/map/npc/017-1/flowerpentagram5.txt b/world/map/npc/017-1/flowerpentagram5.txt index f8947dbd..44db161f 100644 --- a/world/map/npc/017-1/flowerpentagram5.txt +++ b/world/map/npc/017-1/flowerpentagram5.txt @@ -40,7 +40,7 @@ L_Place: mes "Nervous about what's going to happen, you take the last of the flowers and put it into its place."; next; mes "Tension builds up around you, much stronger than before. You can feel it compressing your head, and a liquid warmth spreads under your nose, leaving a metallic taste on your lips."; - heal -5, 0; + set Hp, max(1, Hp - 5); next; callfunc "FlowerPentagramCount"; if (($@Flower_Pentagram_Time > gettimetick(2) - 3600) && ($@Flower_Pentagram_Mobcount > 15)) diff --git a/world/map/npc/017-4/orum.txt b/world/map/npc/017-4/orum.txt index 213f14af..a6f9b785 100644 --- a/world/map/npc/017-4/orum.txt +++ b/world/map/npc/017-4/orum.txt @@ -656,7 +656,7 @@ L_Additive: mes "Orum agrees and starts mixing the powders. You're ready to pour in the additive once the mixture reached a high level of bubbling."; next; mes "The next dash of powder Orum adds causes the mixture to sputter and splash. Some of the hot liquid lands on the back of your hand!"; - heal -5, 0; + set Hp, max(1, Hp - 5); menu "Ouch!",L_Next24, "Aah!", L_Next24, diff --git a/world/map/npc/017-4/waric.txt b/world/map/npc/017-4/waric.txt index 7a8c4e68..9c641b11 100644 --- a/world/map/npc/017-4/waric.txt +++ b/world/map/npc/017-4/waric.txt @@ -215,8 +215,7 @@ L_Next3: set @SUP_lvl, 2; callfunc "SkillUp"; next; - heal MaxHp, 0; - heal ((MaxHp/100) * -99), 0; + set Hp, 1; mes "You feel completely exhausted."; set OrumQuest, 36; goto L_Close; @@ -224,8 +223,7 @@ L_Next3: L_NoOath: mes "Waric mumbles something. You guess it's a magic spell."; warp "005-3", 86 , 33; - heal MaxHp, 0; - heal ((MaxHp/100) * -50), 0; + set Hp, min(Hp, MaxHp / 2); set OrumQuest, OrumQuest + 1; goto L_Close; @@ -364,7 +362,9 @@ L_Banished: mes "The wizard looks at you with despise."; mes "[Waric]"; mes "\"How did you...\""; - heal -Hp, 0; + set Hp, 1; + close2; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); goto L_Close; L_NoItem: diff --git a/world/map/npc/018-2/caul.txt b/world/map/npc/018-2/caul.txt index 4709cfc9..2616d72f 100644 --- a/world/map/npc/018-2/caul.txt +++ b/world/map/npc/018-2/caul.txt @@ -463,7 +463,7 @@ L_mo_explode: goto L_mo_explode_dodge; mes "The burst of boiling monster brew hits you."; next; - heal (15 * rand(Vit)) - 1500, 0, 1; + heal max(0 - Hp + 1, (15 * rand(Vit)) - 1500), 0, 1; close; L_mo_explode_dodge: @@ -1022,10 +1022,10 @@ L_check_exp_nof: // in some cases it is not: // kabooom! close2; - heal -(Hp/2), 0; misceffect 5; misceffect 16; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_calc_dempo_color: diff --git a/world/map/npc/025-4/battlecaves.txt b/world/map/npc/025-4/battlecaves.txt index ffab9a05..808e0440 100644 --- a/world/map/npc/025-4/battlecaves.txt +++ b/world/map/npc/025-4/battlecaves.txt @@ -16,7 +16,8 @@ L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -108,7 +109,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -198,7 +200,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -289,7 +292,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -383,7 +387,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -477,7 +482,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -571,7 +577,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -667,7 +674,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -763,7 +771,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -854,7 +863,8 @@ L_Done: if ($@battlecave10 == 1 && cavefights & BATTLE_CAVE1 && cavefights & BATTLE_CAVE2 && cavefights & BATTLE_CAVE3 && cavefights & BATTLE_CAVE4 && cavefights & BATTLE_CAVE5 && cavefights & BATTLE_CAVE6 && cavefights & BATTLE_CAVE7 && cavefights & BATTLE_CAVE8 && cavefights & BATTLE_CAVE9 && Rossy_Quest == 15) goto L_Start; message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Start: @@ -981,7 +991,7 @@ L_Out: if (Rossy_Quest > 15) goto L_Done; message strcharinfo(0), "As you try to walk through, you bump into a strong magical barrier."; - heal ((MaxHp/100) * -10), 0; + set Hp, max(1, Hp - 100); end; L_Done: @@ -1003,7 +1013,8 @@ L_Done: L_Cheat: message strcharinfo(0), "You shouldn't be here, you cheater."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Done: @@ -1015,4 +1026,3 @@ L_Save: message strcharinfo(0), "You can't leave Julia here, all alone!"; end; } - diff --git a/world/map/npc/026-1/mapflags.txt b/world/map/npc/026-1/mapflags.txt index 1a059118..4d1e4d8b 100644 --- a/world/map/npc/026-1/mapflags.txt +++ b/world/map/npc/026-1/mapflags.txt @@ -1,2 +1,3 @@ 026-1|mapflag|resave|026-1,28,35 026-1|mapflag|outside +026-1|mapflag|pvp diff --git a/world/map/npc/029-1/hasan.txt b/world/map/npc/029-1/hasan.txt index 724db18c..01238526 100644 --- a/world/map/npc/029-1/hasan.txt +++ b/world/map/npc/029-1/hasan.txt @@ -164,7 +164,8 @@ L_Summon: L_SummonAgain: message strcharinfo(0), "Kaan is mad at you for your interference! He summons a rock above your head, then summons another scorpion near Hasan!"; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); goto L_Summon; OnTimer5000: diff --git a/world/map/npc/033-1/kimarr.txt b/world/map/npc/033-1/kimarr.txt index a0da1a9f..48ae9e47 100644 --- a/world/map/npc/033-1/kimarr.txt +++ b/world/map/npc/033-1/kimarr.txt @@ -330,7 +330,8 @@ L_Punish: areamonster "033-1", 79, 29, 88, 42, "", 1072, 1, "Kimarr::OnYetiDeath"; npctalk strnpcinfo(0), strcharinfo(0) + "! This hunt is for " + $@Fluffy_Fighter$ + " alone!"; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); set @MobID, 0; end; diff --git a/world/map/npc/034-1/yetiSpawn.txt b/world/map/npc/034-1/yetiSpawn.txt index c1f60312..b06d21b8 100644 --- a/world/map/npc/034-1/yetiSpawn.txt +++ b/world/map/npc/034-1/yetiSpawn.txt @@ -51,7 +51,8 @@ L_End: L_NonQuestKill: message strcharinfo(0), "The dying Yeti takes you along to the other side."; - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); goto L_End; S_Update_Mask: diff --git a/world/map/npc/048-2/slimes.txt b/world/map/npc/048-2/slimes.txt index b07420db..3b5be732 100644 --- a/world/map/npc/048-2/slimes.txt +++ b/world/map/npc/048-2/slimes.txt @@ -36,7 +36,8 @@ goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; @@ -125,7 +126,8 @@ L_ClearedPoint: goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; @@ -214,7 +216,8 @@ L_ClearedPoint: goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; @@ -303,7 +306,8 @@ L_ClearedPoint: goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; @@ -392,7 +396,8 @@ L_ClearedPoint: goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; @@ -481,7 +486,8 @@ L_ClearedPoint: goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; @@ -570,7 +576,8 @@ L_ClearedPoint: goto L_End; L_BlowUp: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt."; goto L_End; diff --git a/world/map/npc/051-1/desert.txt b/world/map/npc/051-1/desert.txt index 73dc7c9a..326113b0 100644 --- a/world/map/npc/051-1/desert.txt +++ b/world/map/npc/051-1/desert.txt @@ -50,7 +50,8 @@ OnTimer6500: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_HintToHelpers: diff --git a/world/map/npc/051-1/forest.txt b/world/map/npc/051-1/forest.txt index 870465c3..dbae2c26 100644 --- a/world/map/npc/051-1/forest.txt +++ b/world/map/npc/051-1/forest.txt @@ -22,7 +22,8 @@ end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_HandleHelper: @@ -71,7 +72,8 @@ L_TaskComplete: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_Blocked: @@ -86,4 +88,3 @@ L_Warp: warp "051-3", 24, 60; end; } - diff --git a/world/map/npc/051-3/ambush.txt b/world/map/npc/051-3/ambush.txt index 7d659710..13aa29d2 100644 --- a/world/map/npc/051-3/ambush.txt +++ b/world/map/npc/051-3/ambush.txt @@ -29,7 +29,8 @@ L_PrepareAmbush: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } @@ -47,8 +48,9 @@ L_MakeAmbush: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; message strcharinfo(0), "Your throat got cut by a sneaky bandit!"; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } @@ -92,7 +94,8 @@ OnA: if (strcharinfo(0) == $@ILLIA_HELPER3$) goto L_CaptureHelper3; // kill that player otherwise, since not part of the quest. - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_CaptureHero: @@ -100,8 +103,7 @@ L_CaptureHero: // Unequip all equipments nude; // put the health at 40%. - heal MaxHp, 0; - heal ((MaxHp/100) * -60), 0; + set Hp, (MaxHp / 100) * 40; warp "051-3", 69, 109; message strcharinfo(0), "Meh... Where am I?"; end; @@ -111,8 +113,7 @@ L_CaptureHelper1: // Unequip all equipments nude; // put the health at 40%. - heal MaxHp, 0; - heal ((MaxHp/100) * -60), 0; + set Hp, (MaxHp / 100) * 40; warp "051-3", 64, 102; message strcharinfo(0), "Meh... Where am I?"; end; @@ -122,8 +123,7 @@ L_CaptureHelper2: // Unequip all equipments nude; // put the health at 40%. - heal MaxHp, 0; - heal ((MaxHp/100) * -60), 0; + set Hp, (MaxHp / 100) * 40; warp "051-3", 62, 102; message strcharinfo(0), "Meh... Where am I?"; end; @@ -133,8 +133,7 @@ L_CaptureHelper3: // Unequip all equipments nude; // put the health at 40%. - heal MaxHp, 0; - heal ((MaxHp/100) * -60), 0; + set Hp, (MaxHp / 100) * 40; warp "051-3", 58, 102; message strcharinfo(0), "Meh... Where am I?"; end; diff --git a/world/map/npc/051-3/reinforcements.txt b/world/map/npc/051-3/reinforcements.txt index 5870671c..5184f173 100644 --- a/world/map/npc/051-3/reinforcements.txt +++ b/world/map/npc/051-3/reinforcements.txt @@ -10,7 +10,8 @@ L_CallReinforcements: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } @@ -24,7 +25,8 @@ L_ShouldNotBeHere: "Do nothing", L_Close; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; L_TryOpen: diff --git a/world/map/npc/052-1/channelling.txt b/world/map/npc/052-1/channelling.txt index 59628d0b..b2cc9636 100644 --- a/world/map/npc/052-1/channelling.txt +++ b/world/map/npc/052-1/channelling.txt @@ -21,7 +21,8 @@ L_EnchantDoor: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } @@ -330,7 +331,8 @@ L_ChannellingFail: end; L_ShouldNotBeHere: - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; OnInit: diff --git a/world/map/npc/052-2/lobby.txt b/world/map/npc/052-2/lobby.txt index 1b36d929..4777224e 100644 --- a/world/map/npc/052-2/lobby.txt +++ b/world/map/npc/052-2/lobby.txt @@ -28,7 +28,8 @@ L_Warp: end; L_ShouldNotBeHere: - heal -100, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } @@ -46,7 +47,8 @@ L_StartVoices: end; L_ShouldNotBeHere: - heal -100, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; } diff --git a/world/map/npc/055-1/pumpkins.txt b/world/map/npc/055-1/pumpkins.txt index 87dfca4c..69389fef 100644 --- a/world/map/npc/055-1/pumpkins.txt +++ b/world/map/npc/055-1/pumpkins.txt @@ -60,7 +60,8 @@ L_HeavyPoison1: L_HeavyPoison2: set @discover_poisonous_pumpkin, @discover_poisonous_pumpkin + 1; misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0); - heal -Hp, 0; + set Hp, 1; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); goto L_Destroy; OnAppear: diff --git a/world/map/npc/056-2/mirak.txt b/world/map/npc/056-2/mirak.txt index e1a37347..d7b53803 100644 --- a/world/map/npc/056-2/mirak.txt +++ b/world/map/npc/056-2/mirak.txt @@ -103,7 +103,7 @@ L_TooSoon: L_Kill: misceffect sfx_magic_war, strcharinfo(0); - heal -Hp, 0; + set Hp, 1; set @annoy, 0; callsub S_Update_Mask_Annoy; set Mirak_Bantime, gettimetick(2) + 86400; @@ -115,6 +115,8 @@ L_Kill: mes "I feel better now.\""; next; mes "The old man sits back down and continues to read."; + close2; + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); close; L_Trade: diff --git a/world/map/npc/commands/_import.txt b/world/map/npc/commands/_import.txt index 74fd8a1e..d57e7939 100644 --- a/world/map/npc/commands/_import.txt +++ b/world/map/npc/commands/_import.txt @@ -17,3 +17,4 @@ npc: npc/commands/python.txt npc: npc/commands/gm.txt npc: npc/commands/automod.txt npc: npc/commands/valentine.txt +npc: npc/commands/absolve.txt diff --git a/world/map/npc/commands/python.txt b/world/map/npc/commands/python.txt index 8924338c..c31cf424 100644 --- a/world/map/npc/commands/python.txt +++ b/world/map/npc/commands/python.txt @@ -14,7 +14,11 @@ OnKill: if (!(isloggedin(@python[0]))) end; gmlog "stomped " + if_then_else(@python[0] == BL_ID, "themselves", strcharinfo(0, @python[0])) + " with a giant foot!"; - set Hp, 0, @python[0]; + addtimer 0, strnpcinfo(0) + "::OnWarp", @python[0]; + end; + +OnWarp: + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); end; OnInit: diff --git a/world/map/npc/magic/_procedures.txt b/world/map/npc/magic/_procedures.txt index 6ba748a9..95958fcb 100644 --- a/world/map/npc/magic/_procedures.txt +++ b/world/map/npc/magic/_procedures.txt @@ -116,8 +116,13 @@ L_Escape: L_Backfire: message strcharinfo(0), "Magic : ##3##BYour spell backfires!"; - if (rand(110) < Luk) heal 0 - ((BaseLevel+1)*(BaseLevel+2)*(rand(28)+3)), 0; - else heal 0 - (BaseLevel + 1), 0; + if (rand(110) < Luk) heal max(0 - Hp + 1, 0 - ((BaseLevel+1)*(BaseLevel+2)*(rand(28)+3))), 0; + else heal max(0 - Hp + 1, 0 - (BaseLevel + 1)), 0; + if (Hp <= 2) goto L_Warp; + return; + +L_Warp: + warp getsavepoint(0), getsavepoint(1), getsavepoint(2); return; L_Perfect: -- cgit v1.2.3-60-g2f50