! Chest script
! By AbyssDragon
! abyssdragon@juno.com
! http://www.geocities.com/TimesSquare/2795
! Copyright (c)1998 AbyssWare
!
! YOU CAN USE/MODIFY/ABUSE THIS SCRIPT IN ANY WAY YOU
! PLEASE, AS LONG AS YOU GIVE ME CREDIT.
!
! BE SURE TO HAVE A NPC.TYPE AS CHEST IN THE DCCTOKEN.DAT FILE
!
! Allows for NPCs to be chests, that hold items the player can get.
! Also, lets you easily add traps to chests, by altering their v1 values
! when being placed through DCWorld. It will only activate traps the first
! time the chest it opened.
! Traps (the number represents the v1 value):
! 1)Spike 2)Poison 3)Dart 4)Destruction
! 5)Blade 6)Rock 7)Weight
! You can easily add more.
!------------------------------------------------------------------------!
:@TALK ! Talk to the character !
!------------------------------------------------------------------------!
if npc.count = 0 then
L0 = msgbox( ERROR, 1, "Ok", "ERROR: NPC Script called with no NPC selected!" );
STOP;
endif;
timeck(5);
inc(npc.block);
if npc.v0 = 1 then
if group.size > 1 then
L0 = select(group);
endif;
goto TAKE;
endif;
:TRAP
if group.size > 1 then
L0 = select(group);
S1 = swriteln("Do you want ",player.name," to search for traps?");
L0 = msgbox(EXCLAMATION,2,"Yes","No",S1);
if L0 = 1 goto TRAP;
endif;
if npc.v1 = 1 then
if random(player.dex) > npc.dex then
S1 = swriteln("Spike trap found and disarmed!");
else
L1 = random(npc.level);
S1 = swriteln("Spike trap does ",L1," damage to ",player.name,"!");
dec(player.hp,L1);
endif;
elsif npc.v1 = 2 then
if random(player.dex) > npc.dex then
S1 = swriteln("Poison trap found and disarmed!");
else
L1 = random(npc.level);
S1 = swriteln("Poison trap does ",L1," damage to ",player.name,"!");
dec(player.hp,L1);
inc(player.poisoned, 3);
endif;
elsif npc.v1 = 3 then
if random(player.dex) > npc.dex then
S1 = swriteln("Dart trap found and disarmed!");
else
L1 = random(npc.level - player.dex);
S1 = swriteln("Dart trap does ",L1," damage to ",player.name,"!");
dec(player.hp,L1);
endif;
elsif npc.v1 = 4 then
if random(player.dex) > npc.dex then
S1 = swriteln("Destruction trap found and disarmed!");
else
S1 = swriteln("Destruction trap causes the chest to dissolve!");
npc.block = 1024;
npc.x = 0;
npc.y = 0;
npc.count = 0;
L0 = msgbox(EXCLAMATION,1,"Okay",S1);
goto XSTOP;
endif;
elsif npc.v1 = 5 then
if random(player.dex) > npc.dex then
S1 = swriteln("Blade trap found and disarmed!");
else
S1 = swriteln("Blade trap kills ", player.name,".");
player.hp = 0;
L0 = msgbox(EXCLAMATION,1,"Okay",S1);
if group.size = 0 goto XSTOP;
endif;
elsif npc.v1 = 6 then
if random(player.dex) > npc.dex then
S1 = swriteln("Rock trap found and disarmed!");
else
S1 = swriteln("Rock trap strikes ",player.name,"!");
player.hp = 1;
endif;
elsif npc.v1 = 7 then
if random(player.dex) > npc.dex then
S1 = swriteln("Weight trap found and disarmed!");
else
S1 = swriteln("Weight trap injures ",player.name,"!");
dec(player.str);
dec(player.dex);
endif;
else
S1 = swriteln("No traps were put on the chest.");
endif;
L0 = msgbox(EXCLAMATION,1,"Okay",S1);
if player.hp < 1 then
player.hp = 1;
endif;
if group.size > 1 then
L0 = select(group);
endif;
:TAKE
L0 = select("Take Something","Leave");
if L0 = 1 goto XSTOP;
L3 = select( NPC );
if L3 < 0 then
L0 = msgbox(EXCLAMATION,1,"Okay","EMPTY!");
goto XSTOP;
endif;
if L3 < 0 goto XSTOP;
if npc.bp.type = FOOD and npc.bp.class = NONE then
L10 = 255 - group.food; ! Max food we can carry !
if L10 < npc.bp.count then
L11 = npc.bp.count - L10;
S1 = swriteln( "{You have to carry ", L11, " in your backpack}" );
L0 = msgbox( EXCLAMATION, 1, "Okay", S1);
inc( group.food, L10 );
move( npc.bp, player, L11 ); ! Put L11 foods in the backpack !
else
inc( group.food, npc.bp.count );
npc.bp.count = 0;
endif;
else
L12 = npc.bp.count;
move( NPC.BP, PLAYER );
if failure then
S1 = swriteln("You couldn't hold it!");
L0 = msgbox(EXCLAMATION,1,"Okay",S1);
endif;
endif;
goto TAKE;
:XSTOP
timeck(5);
if npc.count then
dec(npc.block);
npc.v0 = 1;
endif;
group.current = 0;
paint( large );
STOP;
               (
geocities.com/timessquare)