diff options
Diffstat (limited to 'world/map/npc/052-1/channelling.txt')
-rw-r--r-- | world/map/npc/052-1/channelling.txt | 339 |
1 files changed, 0 insertions, 339 deletions
diff --git a/world/map/npc/052-1/channelling.txt b/world/map/npc/052-1/channelling.txt deleted file mode 100644 index 59628d0b..00000000 --- a/world/map/npc/052-1/channelling.txt +++ /dev/null @@ -1,339 +0,0 @@ -//----------------------------------------------------------------------------- -// Illia Island -// $@illia_progress = 4 -// -// Level progress: -// 0: Did not start the channelling, or previous channelling failed -// 1: Channelling started -// 2: Channelling completed -//----------------------------------------------------------------------------- - -052-1,25,44,0|script|#EnchantDoorTrigger|32767,3,4 -{ - set @step, 4; - if ($@illia_progress < @step) goto L_ShouldNotBeHere; - if (strcharinfo(0) == $@ILLIA_HERO$ && - $@illia_level_4_progress == 0) goto L_EnchantDoor; - end; - -L_EnchantDoor: - enablenpc "#Enchanted Door"; - end; - -L_ShouldNotBeHere: - heal -Hp, 0; - end; - -} - -052-1,57,29,0|script|#Enchanted Door|369,1,1 -{ - if ($@illia_level_4_progress != 2) goto L_PushBack; - end; - -L_PushBack: - warp "052-1", 58, 34; - heal ((MaxHp/100) * -20), 0; - message strcharinfo(0), "You are pushed back violently. There is probably some way to break this barrier."; - mes "You are pushed back violently."; - mes "There is probably some way to break this barrier."; - close; - -OnCommandDS: - areamonster "052-1", 56, 30, 60, 31, "", 1101, 2 + rand(3), "#Enchanted Door::OnSpawn"; - misceffect FX_EVIL_SUMMON; - end; - -OnSpawn: - end; - -} - -052-1,57,29,0|script|#Enchanted Door2|400,1,1 -{ - if ($@illia_level_4_progress == 2) goto L_Warp; - end; - -L_Warp: - warp "052-2", 33, 40; - end; - -OnCommandDestroy: - misceffect FX_ENCHANTED_DOOR_BROKEN; - end; - -} - -052-1,51,38,0|script|Engravings|400 -{ - mes "You can read some words engraved inside this rock, but some are erased by wind and time:"; - next; - mes "\".. can use this .. power..´. . .´. . . amplify a spell ..´."; - mes " . ´´. Don't let .. spell power .´..´ . .. fade away ..."; - mes "´ .Use lazurite stones ´..´. they will appear. ..´ .. drop them inside .. this circle."; - mes ". ´ power.. drains .. life..´. .´ focus . .not move at all´. .\""; - next; - mes "Below this strange writing, you notice a word still deeply engraved in the stone:"; - next; - mes "\"#catalazuli\""; - next; - mes "... that looks like an incantation or something."; - if ($@illia_level_4_progress == 0) - goto L_SuggestChannelling; - close; - -L_SuggestChannelling: - next; - mes "I think this blue circle right here can be helpful to break the enchantment that blocks the door of the Inn."; - next; - mes "Let's see how I can activate it..."; - mes "But I should probably get inside it, first."; - close; - -} - -function|script|StartChannelling -{ - if (isat("052-1",53,38) == 0) - goto L_Return; - if ($@illia_level_4_progress > 0) - goto L_Return; - set $@illia_level_4_progress, 1; - set $@illia_char_channelling$, strcharinfo(0); - - set @bonus, (Int+1) / 25; - // Lazurite Stones power, will also depend on the Int of the channelling character - setarray $@illia_lazurites_power, - 12 + @bonus, // small - 32 + @bonus, // regular - 65 + @bonus; // large - - // coordinates where stones will appear - setarray $@illia_small_lazurites, 50,41, 44,33, 61,42; - setarray $@illia_regular_lazurites, 68,29, 47,25, 38,45, 70,40; - setarray $@illia_large_lazurites, 21,40, 34,25; - - // amount of initial magic power - set $@illia_magic_power, 1811 + Int*2; - // Channelling required power depends on the base Int of the character - set $@illia_magic_power_required, 5707 - 2*Int; - // magic power loss depends also on Int - set $@illia_magic_power_loss, 53 - ((Int+1)*2)/10; - - // register the power status to display hints to the players - // Statuses: 0=critical(below 300), 1=neutral, 2=almost there (max-300) - set $@illia_magic_power_status, 1; - - message strcharinfo(0), "Ok, let's stay focused now!"; - donpcevent "#Power Circle::OnCommandSt"; - goto L_Return; - -L_Return: - return; -} - -052-1,53,38,0|script|#Power Circle|368 -{ - set @step, 4; - if ($@illia_progress < @step) - goto L_ShouldNotBeHere; - if (isat("052-1",53,38) == 0) - goto L_Hint; - end; - -OnCast: - callfunc "StartChannelling"; - end; - -OnCommandSt: - initnpctimer; - end; - -L_Hint: - mes "Magic seems to be flowing from this place. I should find out what it is."; - close; - -OnTimer2000: - callsub S_CheckChannelling; - end; - -OnTimer4000: - callsub S_CheckChannelling; - end; - -OnTimer6000: - // Spawn items at specific place - callsub S_ItemSpawn; - callsub S_CheckChannelling; - end; - -OnTimer8000: - callsub S_CheckChannelling; - end; - -OnTimer10000: - // Spawn items at specific place - callsub S_ItemSpawn; - callsub S_CheckChannelling; - end; - -OnTimer11000: - setnpctimer 0; - // Spawn monsters (demonic spirits) near the enchanted door - donpcevent "#Enchanted Door::OnCommandDS"; - end; - -S_ItemSpawn: - if (!(attachrid(getcharid(3, $@illia_char_channelling$)))) - goto L_Return; - // spawn items at random - set $@illia_item_spawn_i, rand(getarraysize($@illia_small_lazurites)/2); - set $@illia_item_spawn_x, $@illia_small_lazurites[$@illia_item_spawn_i*2]; - set $@illia_item_spawn_y, $@illia_small_lazurites[($@illia_item_spawn_i*2)+1]; - if (rand(10) > 0) - makeitem 873, rand(4,7), "052-1", $@illia_item_spawn_x, $@illia_item_spawn_y; - - set $@illia_item_spawn_i, rand(getarraysize($@illia_regular_lazurites)/2); - set $@illia_item_spawn_x, $@illia_regular_lazurites[$@illia_item_spawn_i*2]; - set $@illia_item_spawn_y, $@illia_regular_lazurites[($@illia_item_spawn_i*2)+1]; - if (rand(8) > 0) - makeitem 874, rand(3,4), "052-1", $@illia_item_spawn_x, $@illia_item_spawn_y; - - set $@illia_item_spawn_i, rand(getarraysize($@illia_large_lazurites)/2); - set $@illia_item_spawn_x, $@illia_large_lazurites[$@illia_item_spawn_i*2]; - set $@illia_item_spawn_y, $@illia_large_lazurites[($@illia_item_spawn_i*2)+1]; - if (rand(4) > 0) - makeitem 875, rand(1,2), "052-1", $@illia_item_spawn_x, $@illia_item_spawn_y; - - set $@illia_item_spawn_i, 0; - set $@illia_item_spawn_x, 0; - set $@illia_item_spawn_y, 0; - - detachrid; - goto L_Return; - -L_Return: - return; - -S_CheckChannelling: - // Remove stones inside the circle - set $@illia_magic_power, $@illia_magic_power + - getareadropitem("052-1", 52, 37, 54, 39, 873, 1)*$@illia_lazurites_power[0] + - getareadropitem("052-1", 52, 37, 54, 39, 874, 1)*$@illia_lazurites_power[1] + - getareadropitem("052-1", 52, 37, 54, 39, 875, 1)*$@illia_lazurites_power[2]; - - // magic power fades over time - set $@illia_magic_power, $@illia_magic_power - $@illia_magic_power_loss; - - set $@illia_magic_power_last_status, $@illia_magic_power_status; - set $@illia_magic_power_status, 1; - if ($@illia_magic_power < 300) - set $@illia_magic_power_status, 0; - if ($@illia_magic_power > $@illia_magic_power_required - 300) - set $@illia_magic_power_status, 2; - - // Player loses a part of his health while channelling - if (!(attachrid(getcharid(3, $@illia_char_channelling$)))) - goto L_ChannellingFail; - // Display an effect showing the drain - misceffect FX_CHANNELLING_RAISE; - heal ((MaxHp/100) * -4), 0; - - if (isdead()) - goto L_ChannellingDead; - if (isat("052-1",53,38) == 0) - goto L_ChannellingMoved; - // check the magic power - if ($@illia_magic_power <= 0) - goto L_ChPwrVanish; - if ($@illia_magic_power >= $@illia_magic_power_required) - goto L_ChannellingComplete; - - detachrid; - - set $@illia_channelling_status_msg$, ""; - - if ($@illia_magic_power_last_status == 0 && $@illia_magic_power_status == 1) - set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": I think I'm controlling the spell again now. Keep up!"; - if ($@illia_magic_power_last_status == 1 && $@illia_magic_power_status == 0) - set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": Guys I'm loosing it! Hurry up!"; - if ($@illia_magic_power_last_status == 1 && $@illia_magic_power_status == 2) - set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": I almost have the power to cast it! One last effort!"; - if ($@illia_magic_power_last_status == 2 && $@illia_magic_power_status == 1) - set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": Damn! It faded a little."; - - if ($@illia_channelling_status_msg$ != "") - areatimer 0, "052-1", 1, 1, 100, 80, 0, "#Power Circle::OnMPSC"; - - return; - -OnMPSC: - message strcharinfo(0), $@illia_channelling_status_msg$; - set $@illia_channelling_status_msg$, ""; - end; - -L_ChannellingComplete: - message strcharinfo(0), "You successfully cast the spell and broke the door's enchantment!"; - detachrid; - stopnpctimer; - setnpctimer 0; - set $@illia_magic_power, 0; - set $@illia_magic_power_required, 0; - set $@illia_magic_power_last_status, 0; - set $@illia_magic_power_status, 0; - set $@illia_magic_power_loss, 0; - set $@illia_char_channelling$, ""; - set $@illia_level_4_progress, 2; - set $@illia_progress, 5; - callfunc "UpdateIlliaProgress"; - set $@illia_max_time, $@illia_max_time + 600; - // Effect to display the disenchant is cast - misceffect FX_CHANNELLING_CAST; - // move away the enchanted door - donpcevent "#Enchanted Door2::OnCommandDestroy"; - disablenpc "#Enchanted Door"; - end; - -L_ChannellingDead: - misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); - goto L_ChannellingFail; - -L_ChannellingMoved: - // kill the player as part of the process: the magic process drained his life. - // But only if he is still in the island (otherwise, he probably got warped - // and does not need being killed) - if (isin("052-1",1,1,100,80) == 0) - goto L_ChannellingFail; - heal -Hp, 0; - misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); - message strcharinfo(0), "You moved out of the power circle. The magic power you accumulated backfires at you!"; - goto L_ChannellingFail; - -L_ChPwrVanish: - // kill the player as part of the process: the magic process drained his life. - heal -Hp, 0; - misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); - message strcharinfo(0), "The magic power vanished, and your spell backfires at you!"; - goto L_ChannellingFail; - -L_ChannellingFail: - detachrid; - stopnpctimer; - setnpctimer 0; - set $@illia_magic_power, 0; - set $@illia_magic_power_required, 0; - set $@illia_magic_power_last_status, 0; - set $@illia_magic_power_status, 0; - set $@illia_magic_power_loss, 0; - set $@illia_char_channelling$, ""; - set $@illia_level_4_progress, 0; - end; - -L_ShouldNotBeHere: - heal -Hp, 0; - end; - -OnInit: - registercmd "#catalazuli", strnpcinfo(0)+"::OnCast"; - end; -} |