mirror of
https://github.com/tbamud/tbamud.git
synced 2025-12-28 04:58:48 +01:00
803 lines
15 KiB
Text
803 lines
15 KiB
Text
#1400
|
|
free~
|
|
0 g 100
|
|
~
|
|
* we don't want him to tell this to mobs.
|
|
if %actor.is_pc%
|
|
* only greet players coming from the south.
|
|
if %direction% == south
|
|
*wait 1 second, always give the player time before you start sending text.
|
|
wait 1 sec
|
|
say Can you help me, %actor.name%?
|
|
wait 1 sec
|
|
say An apprehensive ogre has something of mine.
|
|
wait 1 sec
|
|
say If you slay him I'll give you all the coins I can spare.
|
|
wait 1 sec
|
|
say Please, bring me the apprehension he has stolen.
|
|
wait 2 sec
|
|
emote looks to the east.
|
|
end
|
|
end
|
|
~
|
|
#1401
|
|
free~
|
|
0 f 100
|
|
~
|
|
say you got the best of me %actor.name%.
|
|
* load some apprehension
|
|
%load% obj 1300
|
|
* reload the mob for the next questor
|
|
%load% mob 1311
|
|
~
|
|
#1402
|
|
free~
|
|
0 j 100
|
|
~
|
|
* check if this was indeed the right object
|
|
if %object.vnum% == 1300
|
|
wait 1 sec
|
|
say Thank you, %actor.name%
|
|
%send% %actor% %self.name% gives you a gold piece.
|
|
%echoaround% %actor% %actor.name% is rewarded for his valor.
|
|
nop %actor.gold(1)%
|
|
wait 5 sec
|
|
%purge% %object%
|
|
else
|
|
* this wasn't the right object - don't accept it
|
|
say I don't want that - bring me back my apprehension.
|
|
return 0
|
|
end
|
|
~
|
|
#1403
|
|
free~
|
|
0 n 100
|
|
~
|
|
wait 3 sec
|
|
say I'm back. Did you really think you could kill me so easily?
|
|
~
|
|
#1404
|
|
free~
|
|
0 g 100
|
|
~
|
|
if %direction% == south
|
|
wait 1 sec
|
|
emote snaps to attention as you approach.
|
|
wait 1 sec
|
|
say Admittance to the city is 10 coins.
|
|
end
|
|
~
|
|
#1405
|
|
free~
|
|
0 m 1
|
|
~
|
|
* This is a comment. Always use amplifying comment to explain your Triggers!
|
|
* If actor gives 10 coins or more
|
|
if %amount% >= 10
|
|
* if actor gives more than 10 then give them change
|
|
if %amount% > 10
|
|
eval change %amount% - 10
|
|
give %change% coin %actor.name%
|
|
end
|
|
* otherwise they must have given exactly 10 coins, open the gate.
|
|
say thank you.
|
|
wait 1 sec
|
|
unlock gate
|
|
wait 1 sec
|
|
open gate
|
|
wait 10 sec
|
|
close gate
|
|
wait 1 sec
|
|
lock gate
|
|
* else they gave too few! be nice and refund them
|
|
else
|
|
say only %amount% coins, I require 10.
|
|
give %amount% coin %actor.name%
|
|
end
|
|
~
|
|
#1406
|
|
free~
|
|
0 m 1
|
|
~
|
|
* No Script
|
|
~
|
|
#1407
|
|
free~
|
|
0 e 0
|
|
The gate is opened from~
|
|
wait 5 sec
|
|
close gate
|
|
wait 1 sec
|
|
lock gate
|
|
~
|
|
#1408
|
|
free~
|
|
0 e 0
|
|
leaves north.~
|
|
wait 1 sec
|
|
close gate
|
|
wait 1 sec
|
|
lock gate
|
|
~
|
|
#1409
|
|
free~
|
|
0 g 100
|
|
~
|
|
if %direction% == south
|
|
if %actor.varexists(solved_example_quest_zone_0)%
|
|
wait 1 sec
|
|
say you have already completed this quest.
|
|
halt
|
|
else
|
|
wait 1 sec
|
|
say Hello, %actor.name%. Could you find me the magic eight ball?
|
|
say Please say yes, %actor.name%.
|
|
end
|
|
end
|
|
~
|
|
#1410
|
|
free~
|
|
0 d 1
|
|
yes~
|
|
if %actor.varexists(solved_example_quest_zone_0)%
|
|
halt
|
|
else
|
|
wait 1 sec
|
|
say Perfect, %actor.name%. I'll make this easy. It is to the east.
|
|
wait 3 sec
|
|
say I'd go get it myself, but I'm lazy and you need the exercise.
|
|
wait 1 sec
|
|
end
|
|
~
|
|
#1411
|
|
free~
|
|
0 j 100
|
|
~
|
|
if %actor.varexists(solved_example_quest_zone_0)%
|
|
say you already solved this quest, keep it.
|
|
return 0
|
|
end
|
|
*
|
|
wait 1 sec
|
|
if (%object.vnum% == 47)
|
|
dance
|
|
wait 1 sec
|
|
say Thank you, %actor.name%. Here is a few experience points and some gold.
|
|
nop %actor.exp(50)%
|
|
nop %actor.gold(50)%
|
|
say Finally, now I can get some answers.
|
|
wait 1 sec
|
|
emote shakes the magic eight ball vigorously.
|
|
wait 1 sec
|
|
emote does not seem too pleased with his answer.
|
|
set solved_example_quest_zone_0 1
|
|
remote solved_example_quest_zone_0 %actor.id%
|
|
%purge% %object%
|
|
else
|
|
say I don't want that!
|
|
junk %object.name%
|
|
end
|
|
~
|
|
#1412
|
|
free~
|
|
2 g 100
|
|
~
|
|
wait 2 sec
|
|
%echoaround% %actor.name% A magic eight ball drops from the sky striking %actor.name% on the head.
|
|
%send% %actor% A magic eight ball drops from the sky striking you on the head.
|
|
%load% obj 47
|
|
%damage% %actor% %random.5%
|
|
~
|
|
#1413
|
|
Obj Command Restorative Comfy Bed Sleep - 1401~
|
|
1 c 4
|
|
sl~
|
|
* does not work for level 32 and above.
|
|
if %cmd.mudcommand% == sleep && bed /= %arg%
|
|
%force% %actor% sleep
|
|
set laying_in_comfy_bed_14 1
|
|
remote laying_in_comfy_bed_14 %actor.id%
|
|
%send% %actor% The bed is extremely comfortable.
|
|
else
|
|
return 0
|
|
end
|
|
~
|
|
#1414
|
|
Obj Random Restorative Comfy Bed - 1401~
|
|
1 b 100
|
|
~
|
|
if %random.char%
|
|
set actor %random.char%
|
|
if %actor.varexists(laying_in_comfy_bed_14)%
|
|
%damage% %actor% -10
|
|
%echoaround% %actor% %actor.name% seems refreshed from sleeping in the comfy bed.
|
|
%send% %actor% You dream peacefully and seem magically refreshed.
|
|
end
|
|
end
|
|
~
|
|
#1415
|
|
Obj Command Restorative Comfy Bed Wake - 1401~
|
|
1 c 4
|
|
wa~
|
|
* does not work for level 32 and above.
|
|
if %cmd.mudcommand% == wake && %actor.varexists(laying_in_comfy_bed_14)%
|
|
%force% %actor% wake
|
|
rdelete laying_in_comfy_bed_14 %actor.id%
|
|
%send% %actor% You sit on the edge of the bed feeling much better.
|
|
%echoaround% %actor% %actor.name% sits up on the edge of the bed looking refreshed.
|
|
else
|
|
return 0
|
|
end
|
|
~
|
|
#1416
|
|
free~
|
|
0 q 100
|
|
~
|
|
* Check to see if the person is not carrying the magic eight ball
|
|
if !%actor.has_item(47)%
|
|
* They are not carrying it. So stop them and give them one.
|
|
* Return 0 ignores their command to go west. They stay in the room.
|
|
return 0
|
|
wait 1 sec
|
|
say You forgot your magic eight ball. Take this one.
|
|
* Loads the object to the actors inventory.
|
|
%load% obj 47 %actor%
|
|
%send% %actor% %self.name% gives you the magic eight ball.
|
|
end
|
|
~
|
|
#1417
|
|
Attach Example~
|
|
2 b 100
|
|
~
|
|
%echo% This trigger commandlist is not complete!
|
|
%at% 1233 %echo% %self.vnum% %self.id%
|
|
%echo% %self.vnum% %self.id%
|
|
~
|
|
#1418
|
|
Command Draw~
|
|
1 c 100
|
|
draw~
|
|
* this trigger is meant for a card table or something similiar
|
|
set CARDOBJ 700
|
|
eval inroom %self.room%
|
|
* find what room the object is in.
|
|
eval obj %inroom.contents%
|
|
* find the first object in the room
|
|
while %obj%
|
|
* while an object is in the room
|
|
if %obj.vnum% == %CARDOBJ%
|
|
set CARDISHERE 1
|
|
* if the object is here, remember!
|
|
end
|
|
if %CARDISHERE%
|
|
%send% %actor% There is already a face up Adventure card here!
|
|
halt
|
|
* if its here stop the trig and let the player know
|
|
else
|
|
%send% %actor% You reach into the Adventure deck and select the top card...
|
|
%echoaround% %actor% %actor.name% reaches into the Adventure deck and selects the top card...
|
|
%load% obj %CARDOBJ%
|
|
* if it isn't here load one
|
|
end
|
|
set next_obj %obj.next_in_list%
|
|
* find the next object for the while to loop
|
|
set obj %next_obj%
|
|
done
|
|
~
|
|
#1450
|
|
Room Global Random Example~
|
|
2 ab 100
|
|
~
|
|
* Fires whether a player is in the room or not.
|
|
%echo% The trigger fires now!
|
|
~
|
|
#1451
|
|
Room Random Example~
|
|
2 b 100
|
|
~
|
|
* Fires only when a player is in the room.
|
|
%echo% The trigger fires now!
|
|
* Example by Snowlock
|
|
* %echo% The pungent fumes burn your lungs!
|
|
* set target_char %self.people%
|
|
* while %target_char%
|
|
* set tmp_target %target_char.next_in_room%
|
|
* %damage% %target_char% 3
|
|
* set target_char %tmp_target%
|
|
* done
|
|
~
|
|
#1452
|
|
Room Command Example~
|
|
2 c 100
|
|
l~
|
|
* does not work for level 32 and above.
|
|
if %cmd.mudcommand% == look && test /= %arg%
|
|
%echo% The trigger works!
|
|
%force% %actor% applaud
|
|
else
|
|
%send% %actor% Look at what?
|
|
end
|
|
* Portal example with arguments: enter
|
|
* if portal /= %arg%
|
|
* %send %actor% You enter the portal.
|
|
* %echoaround %actor.name% %actor.name% bravely steps into the portal.
|
|
* %teleport% %actor% 3001
|
|
* %force% %actor% look
|
|
* %echoaround% %actor% %actor.name% steps through a portal.
|
|
* else
|
|
* %send% %actor% Enter what?!
|
|
* end
|
|
~
|
|
#1453
|
|
Room Speech Example~
|
|
2 d 100
|
|
test~
|
|
%echo% The trigger fires now!
|
|
~
|
|
#1454
|
|
Room Zone Reset Example~
|
|
2 f 100
|
|
~
|
|
%echo% The trigger fires now!
|
|
~
|
|
#1455
|
|
Room Enter Example~
|
|
2 g 100
|
|
~
|
|
%echo% The trigger fires now!
|
|
~
|
|
#1456
|
|
Room Drop Example~
|
|
2 h 100
|
|
~
|
|
%echo% %actor.name% tries to drop object type: %object.type%
|
|
if %object.type% == TRA
|
|
%echo% No Littering!
|
|
return 0
|
|
end
|
|
~
|
|
#1457
|
|
Room Cast Example~
|
|
2 p 100
|
|
~
|
|
%echo% %actor.name% tried to cast spellnumber: %spell%: %spellname% on %vict.name% %obj.name%.
|
|
return 0
|
|
~
|
|
#1458
|
|
Room Leave Example~
|
|
2 q 100
|
|
~
|
|
%echo% %actor.name% tries to leave to the %direction%.
|
|
return 0
|
|
~
|
|
#1459
|
|
Room Door Example~
|
|
2 r 100
|
|
~
|
|
if %cmd% == open
|
|
%echoaround% %actor% As %actor.name% tries to %cmd% the door to the %direction% a bucket of water dumps on his head.
|
|
%send% %actor% Splash!!
|
|
%send% %actor% A bucket of water drops on top of your head as you open the door.
|
|
%damage% %actor% 10
|
|
%echo% The door slams shut again.
|
|
detach 1459 %self.id%
|
|
return 0
|
|
end
|
|
~
|
|
#1460
|
|
Mob Global Random Example~
|
|
0 ab 100
|
|
~
|
|
say The trigger fires now!
|
|
~
|
|
#1461
|
|
Mob Random Example~
|
|
0 b 100
|
|
~
|
|
* No Script
|
|
* This I just threw in because it is a random trig and does not normally have an actor.
|
|
set actor %random.char%
|
|
*
|
|
wait 1 sec
|
|
say Hey! You don't belong here!
|
|
emote mumbles, 'Now what was that spell...'
|
|
wait 1 sec
|
|
switch %random.3%
|
|
case 1
|
|
dg_cast 'harm' %actor%
|
|
break
|
|
case 2
|
|
dg_cast 'magic missle' %actor%
|
|
break
|
|
default
|
|
say That wasn't right...
|
|
mecho A failed spell backfires on the mage!
|
|
mdamage %self% 10
|
|
break
|
|
done
|
|
~
|
|
#1462
|
|
Mob Command Example~
|
|
0 c 100
|
|
test~
|
|
* does not work for level 32 and above.
|
|
say The trigger fires now!
|
|
say triggered by %actor.name%
|
|
~
|
|
#1463
|
|
Mob Speech Example~
|
|
0 d 0
|
|
test~
|
|
say speech: %speech%
|
|
say car: %speech.car%
|
|
say cdr: %speech.cdr%
|
|
eval text %speech.car%
|
|
say %text%
|
|
~
|
|
#1464
|
|
Mob Action Example~
|
|
0 e 0
|
|
has entered the game.~
|
|
eval inroom %self.room%
|
|
%zoneecho% %inroom.vnum% %self.name% shouts, 'HELP!! Someone please rescue me!!'
|
|
~
|
|
#1465
|
|
Mob Death Example~
|
|
0 f 100
|
|
~
|
|
%echo% %self.name% curses %actor.name% before drawing %self.hisher% final breath.
|
|
~
|
|
#1466
|
|
Mob Greet Example~
|
|
0 g 100
|
|
~
|
|
* To make a trigger fire only on players use:
|
|
if %actor.is_pc%
|
|
say Hello, and welcome, %actor.name%
|
|
end
|
|
* Check what direction they came from.
|
|
if %direction%
|
|
say Hello, %actor.name%, how are things to the %direction%?
|
|
else
|
|
* If the character popped in (word of recall, etc) this will be hit
|
|
say Where did YOU come from, %actor.name%?
|
|
end
|
|
~
|
|
#1467
|
|
Mob Greet-All Example~
|
|
0 h 100
|
|
~
|
|
say Hello, and welcome, %actor.name%
|
|
~
|
|
#1468
|
|
Mob Entry Example~
|
|
0 i 100
|
|
~
|
|
* first find the room the mob is in and put the value in %inroom%
|
|
eval inroom %self.room%
|
|
* then check on the rooms vnum
|
|
if (%inroom.vnum% == 1233)
|
|
say I, %self.name%, declare this room Rumble's.
|
|
end
|
|
~
|
|
#1469
|
|
Mob Receive Example~
|
|
0 j 100
|
|
~
|
|
if (%object.vnum% == 1300)
|
|
%purge% %object%
|
|
say thanks!
|
|
nop %actor.gold(1)%
|
|
else
|
|
say I don't want that!
|
|
return 0
|
|
end
|
|
~
|
|
#1470
|
|
Mob Fight Example~
|
|
0 k 100
|
|
~
|
|
context %self.id%
|
|
if (%already_fighting%)
|
|
wait 10
|
|
unset already_fighting
|
|
else
|
|
dg_cast 'magic missile' %actor.name%
|
|
set already_fighting 1
|
|
global already_fighting
|
|
end
|
|
~
|
|
#1471
|
|
Mob Hitprcnt Example~
|
|
0 l 50
|
|
~
|
|
context %self.id%
|
|
if (%have_shouted%)
|
|
return 0
|
|
halt
|
|
else
|
|
%echo% %self.name% shouts 'HELP! I'm under ATTACK! HELP!'
|
|
set have_shouted 1
|
|
global have_shouted
|
|
end
|
|
~
|
|
#1472
|
|
Mob Bribe Example~
|
|
0 m 1
|
|
~
|
|
say thank you, step inside.
|
|
wait 2 sec
|
|
%echoaround% %actor% %self.name% pushes %actor.name% through a concealed door.
|
|
%send% %actor% %self.name% helps you through a concealed door.
|
|
%teleport% %actor% 1300
|
|
~
|
|
#1473
|
|
Mob Load Example~
|
|
0 n 100
|
|
~
|
|
switch %random.5%
|
|
case 1
|
|
%load% obj 3010
|
|
wield dagger
|
|
break
|
|
case 2
|
|
%load% obj 3011
|
|
wield sword
|
|
break
|
|
case 3
|
|
%load% obj 3012
|
|
wield club
|
|
break
|
|
case 4
|
|
%load% obj 3013
|
|
wield mace
|
|
break
|
|
case 5
|
|
%load% obj 3014
|
|
wield sword
|
|
break
|
|
default
|
|
* this should be here, even if it's never reached
|
|
break
|
|
done
|
|
~
|
|
#1474
|
|
Mob Memory Example Part 1~
|
|
0 g 100
|
|
~
|
|
* This must be set by another trigger first before the mem trigger can be used.
|
|
mremember %actor.name%
|
|
say I'll remember you now, %actor.name%
|
|
~
|
|
#1475
|
|
Mob Memory Example Part 2~
|
|
0 o 100
|
|
~
|
|
wait 4 s
|
|
poke %actor.name%
|
|
say i've seen you before, %actor.name%.
|
|
mforget %actor.name%
|
|
~
|
|
#1476
|
|
Mob Cast Example~
|
|
0 p 100
|
|
~
|
|
if (%spellname%==magic missile)
|
|
%echo% %self.name% is protected by a shield spell negating %actor.name%s Magic Missile.
|
|
return 0
|
|
else
|
|
%echo% %self.name%s shield spell doesn't protect %self.himher% from %actor.name%s magic.
|
|
return 1
|
|
end
|
|
~
|
|
#1477
|
|
Mob Leave Example~
|
|
0 q 100
|
|
~
|
|
if (%actor.level% > 10)
|
|
say You may not leave here, %actor.name%.
|
|
%send% %actor.name% %self.name% prevents you from leaving the room.
|
|
%echoaround% %actor.name% As %actor.name% tries to leave the room, %self.name% stops %actor.himher%.
|
|
return 0
|
|
end
|
|
~
|
|
#1478
|
|
Mob Door Example~
|
|
0 r 100
|
|
~
|
|
say %actor.name% do not try to %cmd% the door to the %direction% again. Or else!
|
|
return 0
|
|
~
|
|
#1479
|
|
Obj Global Random Example~
|
|
1 ab 100
|
|
~
|
|
%echo% The trigger fires now!
|
|
~
|
|
#1480
|
|
Obj Random Example~
|
|
1 b 100
|
|
~
|
|
%echo% The trigger fires now!
|
|
eval actor %self.worn_by%
|
|
if !%actor%
|
|
halt
|
|
endif
|
|
%send% %actor% Ichiban's blade thirsts for blood.
|
|
~
|
|
#1481
|
|
Obj Command Example~
|
|
1 c 7
|
|
open~
|
|
* Numeric Arg: 7 means obj can be worn, carried, or in room.
|
|
* does not work for level 32 and above.
|
|
if ("%arg%" == "closet")
|
|
%load% mob 1307
|
|
else
|
|
%send% %actor% Open What?
|
|
end
|
|
~
|
|
#1482
|
|
Obj Timer Example~
|
|
1 f 100
|
|
~
|
|
* %echo% The trigger fires now!
|
|
* otimer 3
|
|
%echo% The ice cream melts away.
|
|
%purge% %self%
|
|
~
|
|
#1483
|
|
Obj Get Example~
|
|
1 g 100
|
|
~
|
|
if (%actor.level% < 31)
|
|
%transform% 1398
|
|
return 0
|
|
else
|
|
%echo% You hear, 'Please put me down, %actor.name%'
|
|
end
|
|
~
|
|
#1484
|
|
Obj Drop Example~
|
|
1 h 100
|
|
~
|
|
if (%actor.level% < 31)
|
|
return 0
|
|
end
|
|
~
|
|
#1485
|
|
Obj Give Example~
|
|
1 0 100
|
|
~
|
|
if (%actor.level% < 31)
|
|
return 0
|
|
end
|
|
~
|
|
#1486
|
|
Obj Wear Example~
|
|
1 j 100
|
|
~
|
|
if (%actor.str% < 17)
|
|
return 0
|
|
end
|
|
%send% %actor% send to actor.
|
|
%echoaround% %actor% %actor.name% echoaround actor
|
|
%damage% %actor% 100
|
|
~
|
|
#1487
|
|
Obj Remove Example~
|
|
1 l 90
|
|
~
|
|
return 0
|
|
~
|
|
#1488
|
|
Obj Load Example~
|
|
1 n 100
|
|
~
|
|
%echo% %self.name% appears out of nowhere.
|
|
~
|
|
#1489
|
|
Obj Leave Example~
|
|
1 q 100
|
|
~
|
|
%echo% My trigger commandlist is not complete!
|
|
~
|
|
#1490
|
|
Nested If Example~
|
|
0 q 100
|
|
~
|
|
* In this nested if example anyone leaving north will be checked for passage.
|
|
if %direction% == NORTH
|
|
* If it is a male over 18 let them pass.
|
|
if %actor.sex% == MALE
|
|
if %actor.age% > 18
|
|
say Welcome.
|
|
else
|
|
say let me see your ID.
|
|
return 0
|
|
end
|
|
* If a female over 18 or less than 18 but charisma above 16 let them pass.
|
|
elseif %actor.sex% == FEMALE
|
|
if %actor.age% > 18
|
|
say welcome.
|
|
else
|
|
if %actor.cha% > 16
|
|
say don't tell anyone I let you in.
|
|
else
|
|
say let me see your ID.
|
|
return 0
|
|
end
|
|
end
|
|
* Don't let nuetrals pass
|
|
elseif %actor.sex% == NUETRAL
|
|
say what the heck are you?
|
|
return 0
|
|
end
|
|
end
|
|
~
|
|
#1491
|
|
Room Global Example~
|
|
2 d 100
|
|
*~
|
|
set global_example_actor %actor.name%
|
|
global global_example_actor
|
|
set global_example_speech %speech%
|
|
global global_example_speech
|
|
%echo% saving globals
|
|
~
|
|
#1492
|
|
Room Global Example II~
|
|
2 b 100
|
|
~
|
|
%echo% %global_example_actor% said: %global_example_speech%
|
|
~
|
|
#1493
|
|
mob load test~
|
|
0 c 100
|
|
load~
|
|
%load% mob 1300
|
|
~
|
|
#1498
|
|
Object Command Parser~
|
|
1 c 3
|
|
*~
|
|
*Ideally we need an object speech trig. This is the workaround.
|
|
if %cmd% == say || %cmd% == gossip
|
|
* evaluate the first word
|
|
eval word %arg.car%
|
|
* evaluate the rest of the string
|
|
eval rest %arg.cdr%
|
|
* while there is a first word keep going
|
|
while %word%
|
|
%echo% the first word is: %word%
|
|
%echo% the remaining text is: %rest%
|
|
eval word %rest.car%
|
|
eval rest %rest.cdr%
|
|
done
|
|
else
|
|
return 0
|
|
end
|
|
~
|
|
#1499
|
|
new trigger~
|
|
0 g 100
|
|
~
|
|
if %arg% == delete
|
|
say Deleted all quest flags!
|
|
rdelete found_treasure %actor.id%
|
|
rdelete worthy_oceana %actor.id%
|
|
rdelete receive_oceana %actor.id%
|
|
rdelete aloha_welcome %actor.id%
|
|
elseif %arg% == add
|
|
say Added quest flags!
|
|
set receive_oceana 1
|
|
remote receive_oceana %actor.id%
|
|
set found_treasure 1
|
|
remote found_treasure %actor.id%
|
|
set worthy_oceana 1
|
|
remote worthy_oceana %actor.id%
|
|
else
|
|
say Invalid command! Please Add or delete?
|
|
end
|
|
~
|
|
$~
|