summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-12-24 07:14:20 -0300
committerJesusaves <cpntb1@ymail.com>2021-12-24 07:14:20 -0300
commite90014e862ca97244f73c5c3ebbfa3b9c8373de4 (patch)
tree839c4260f65939be92ed83fcb46b93e607b7b2aa /npc
parente6494d1ef2fd3e34f4c71a03a5ad9b7802c5b461 (diff)
downloadserverdata-e90014e862ca97244f73c5c3ebbfa3b9c8373de4.tar.gz
serverdata-e90014e862ca97244f73c5c3ebbfa3b9c8373de4.tar.bz2
serverdata-e90014e862ca97244f73c5c3ebbfa3b9c8373de4.tar.xz
serverdata-e90014e862ca97244f73c5c3ebbfa3b9c8373de4.zip
Add summoning scrolls (untested)
Diffstat (limited to 'npc')
-rw-r--r--npc/config/magic.txt1
-rw-r--r--npc/functions/hub.txt10
-rw-r--r--npc/magic/scrolls.txt36
-rw-r--r--npc/scripts.conf1
4 files changed, 46 insertions, 2 deletions
diff --git a/npc/config/magic.txt b/npc/config/magic.txt
index 87a9bc65c..ff3785147 100644
--- a/npc/config/magic.txt
+++ b/npc/config/magic.txt
@@ -245,6 +245,7 @@ function script alignment_cansummon {
if (!@hatesummon) {
dispbottom l("Nature itself express hate against you!");
getmapxy(.@m$, .@x, .@y, 0);
+ // FIXME: .@mob is or may be undefined
.@opo=monster(.@m$, .@x, .@y, "Failed summon", .@mob, 1);
unitattack(.@opo, getcharid(3));
@hatesummon=true;
diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt
index 5c926ccb5..8441436ac 100644
--- a/npc/functions/hub.txt
+++ b/npc/functions/hub.txt
@@ -386,8 +386,14 @@ function script HUB_SkillInvoke {
// TODO: Detect what was script-cast and what was player-case. Then, readd RB_IRCBROADCAST
// If you can't do this: You can't do this
- if (getskilllv(@skillId) < @skillLv && @skillId != BS_GREED)
- Exception("System ERROR, HSI."+@skillId+" INVALID CAST (got "+@skillLv+" expected "+getskilllv(@skillId)+", sub-LC."+(getcharid(3)-2000000)+")", RB_DEBUGMES|RB_ISFATAL);
+ if (getskilllv(@skillId) < @skillLv && @skillId != BS_GREED) {
+ // Is this ignorable?
+ if (@scriptsk) {
+ @scriptsk=false;
+ } else {
+ Exception("System ERROR, HSI."+@skillId+" INVALID CAST (got "+@skillLv+" expected "+getskilllv(@skillId)+", sub-LC."+(getcharid(3)-2000000)+")", RB_DEBUGMES|RB_ISFATAL);
+ }
+ }
// You are AFK for over 3 minutes, that's crazy, disregard
if (checkidle() > 180)
return;
diff --git a/npc/magic/scrolls.txt b/npc/magic/scrolls.txt
new file mode 100644
index 000000000..39672db54
--- /dev/null
+++ b/npc/magic/scrolls.txt
@@ -0,0 +1,36 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+// Description:
+// Scroll System
+
+// SummonScroll(mob, life, {mob2, minlv})
+function script SummonScroll {
+ .@mob = getarg(0);
+ .@tim = getarg(1, 60);
+ .@mbb = getarg(2, 0);
+ .@blv = getarg(3, 0);
+
+ // Depending on alignment status, invoke superior form
+ if (alignment_cansummon() && BaseLevel > .@blv && .@mbb) {
+ .@mids = summon("Summoned Monster", .@mbb, .@tim);
+ } else {
+ .@mids = summon("Summoned Monster", .@mob, .@tim);
+ }
+
+ // Reconfigure monster modes
+ .@opt=getunitdata(.@mids, UDT_MODE);
+ // Disable looting
+ if (.@opt & MD_LOOTER)
+ .@opt=.@opt^MD_LOOTER;
+ // All summons can suffer knockback
+ if (.@opt & MD_NOKNOCKBACK)
+ .@opt=.@opt^MD_NOKNOCKBACK;
+ // Strip summons from BOSS mode and immunity
+ if (.@opt & MD_BOSS)
+ .@opt=.@opt^MD_BOSS;
+ // Save new options
+ setunitdata(.@mids, UDT_MODE, .@opt);
+ return;
+}
+
diff --git a/npc/scripts.conf b/npc/scripts.conf
index e4ea674cf..98bb5639e 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -136,6 +136,7 @@
"npc/magic/revive.txt",
"npc/magic/study.txt",
"npc/magic/transmigration.txt",
+"npc/magic/scrolls.txt",
// These are to be proccessed later
"npc/functions/clientversion.txt",