summaryrefslogtreecommitdiff
path: root/npc/functions/spotlight.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/functions/spotlight.txt')
-rw-r--r--npc/functions/spotlight.txt92
1 files changed, 92 insertions, 0 deletions
diff --git a/npc/functions/spotlight.txt b/npc/functions/spotlight.txt
new file mode 100644
index 00000000..219d3a31
--- /dev/null
+++ b/npc/functions/spotlight.txt
@@ -0,0 +1,92 @@
+// Evol functions.
+// Author:
+// Jesusalva
+// Micksha
+// Description:
+// Update spotlight on caves
+// Variables:
+// 2 - the darkest mask
+// 4 - the average mask
+// 8 - the lightest mask
+
+// forced_update - if set to true, will ignore if the map is known as valid
+// (required for instance maps)
+// updateSpotlight ( {forced_update} )
+function script updateSpotlight {
+ // A small delay of 80 ms in case player is changing map
+ // It will be cast twice when switching caves. This sleep prevents obscure bugs.
+ sleep2(80);
+
+ getmapxy(.@m$, .@x, .@y, 0);
+
+ // Is your map valid (or is the check skipped)
+ if (!getarg(0,false))
+ {
+ if (strpos(getmapname(), "-3-") < 0)
+ return;
+ }
+
+ // Retrieve default map masks
+ .@ms=getmapmask(.@m$);
+
+ // Which equipments provide bonuses?
+ setarray .@b_head, CandleHelmet;
+ setarray .@b_weapon, ManaTorch, TrainingWand, Torch;
+
+ // Calc your lighting score (it should NOT start on zero)
+ .@score=1;
+ if (array_find(.@b_head, getequipid(EQI_HEAD_TOP)) >= 0)
+ .@score+=1;
+ if (array_find(.@b_weapon, getequipid(EQI_HAND_R)) >= 0)
+ .@score+=1;
+ // TODO: Lighting scrolls
+
+ //debugmes "Score: %d", .@score;
+ //debugmes "Equips: %d and %d", getequipid(EQI_HEAD_TOP), getequipid(EQI_HAND_R);
+ //debugmes "Headvalue: %d", .@b_head[0];
+ //debugmes "Weappnvalue: %d, %d, %d", .@b_weapon[0], .@b_weapon[1], .@b_weapon[2];
+ // Sanitize score
+ .@score=min(3, .@score);
+
+ // Calculate and send new map mask
+ .@ms=.@ms|(2**.@score);
+ sendmapmask(.@ms);
+ return;
+}
+
+// MAIN FUNCTION - DO NOT REMOVE
+// Every NPC will be duplicating this one
+001-3-0,0,0,0 script #SpotlightMaster NPC_HIDDEN,0,0,{
+OnTouch:
+ updateSpotlight(true);
+ end;
+}
+
+
+// I'm too lazy to do this in different files and in the right spot.....
+
+// npc/001-3-0/_warps.txt
+001-3-0,196,35,0 duplicate(#SpotlightMaster) #SPOT001-3-0_196_35 NPC_HIDDEN,2,2
+001-3-0,172,41,0 duplicate(#SpotlightMaster) #SPOT001-3-0_172_41 NPC_HIDDEN,2,2
+001-3-0,162,40,0 duplicate(#SpotlightMaster) #SPOT001-3-0_162_40 NPC_HIDDEN,2,2
+001-3-0,198,60,0 duplicate(#SpotlightMaster) #SPOT001-3-0_198_60 NPC_HIDDEN,2,2
+001-3-0,152,55,0 duplicate(#SpotlightMaster) #SPOT001-3-0_152_55 NPC_HIDDEN,2,2
+001-3-0,85,130,0 duplicate(#SpotlightMaster) #SPOT001-3-0_85_130 NPC_HIDDEN,2,2
+
+// npc/001-3-1/_warps.txt
+001-3-1,24,58,0 duplicate(#SpotlightMaster) #SPOT001-3-1_24_58 NPC_HIDDEN,2,2
+001-3-1,35,59,0 duplicate(#SpotlightMaster) #SPOT001-3-1_35_59 NPC_HIDDEN,2,2
+//001-3-1,30,19,0 duplicate(#SpotlightMaster) #SPOT001-3-1_30_19 NPC_HIDDEN,2,2
+
+// npc/001-3-2/_warps.txt
+001-3-2,30,117,0 duplicate(#SpotlightMaster) #SPOT001-3-2_30_117 NPC_HIDDEN,2,2
+
+// npc/008-3-0/_warps.txt
+008-3-0,130,113,0 duplicate(#SpotlightMaster) #SPOT008-3-0_130_113 NPC_HIDDEN,2,2
+
+// npc/008-3-1/_warps.txt
+008-3-1,34,34,0 duplicate(#SpotlightMaster) #SPOT008-3-1_34_34 NPC_HIDDEN,2,2
+
+// npc/008-3-2/_warps.txt
+008-3-2,175,18,0 duplicate(#SpotlightMaster) #SPOT008-3-2_175_18 NPC_HIDDEN,2,2
+