! ! Default prisonner script.. ! ! (c) DC Software, 1992 ! !------------------------------------------------------------------------! :@TALK ! Talk to the character ! !------------------------------------------------------------------------! if player.hp = 0 then writeln( player.name, " is dead!" ); STOP; endif; if npc.picture >= 0 then viewpcx(npc); endif; ! First, say hello.. ! if NPC.V0 > 0 then if NPC.V1 > 0 goto AFTER; writeln( "You're back.. I thought you were going to leave me here.." ); else writeln( "Are you here to help me?" ); endif; ! Now, set some variables.. NPC.V0 = 1; ! From know on, remember we've been here :CHAT L3 = getstr("Name","Job","Join","Bye"); if L3 = -1 then writeln( "Don't leave me here.. Please.." ); goto CHAT; ! Pressed ESCape ! endif; ! Handle JOIN differently.. if L3 = 2 then if group.size = 6 then writeln( "Your party is full!" ); goto CHAT; endif; player.v1 = 1; ! 1 when I join the party, 2 if delivered to quester ! if NOT dotext( S0 ) then writeln( "The sooner the better.." ); endif; JOIN; goto XSTOP; endif; ! First, see if the keyword typed is in the character's text block ! if dotext( S0 ) goto CHAT; ! It didn't, so try the predefined ones.. on L3 goto CNAME, CJOB, CHAT, CSTOP; ! Nope, try a 'DEFAULT' line if not dotext( "DEFAULT" ) then writeln( "I don't know anything about that!" ); endif; goto CHAT; :CNAME writeln( "My name is ", NPC.name, "." ); GOTO CHAT; :CJOB writeln( "I am a ", npc.type ); GOTO CHAT; :CSTOP writeln( "Don't leave me here.. Please.." ); goto XSTOP; ! ! This is the script for AFTER I've been rescued ! ! :AFTER if npc.v1 = 1 then ! We JOINED, but were not delivered ! if NOT dotext( "DELIVER" ) then writeln( "I need your help to return home.." ); endif; goto CHAT; endif; :CHAT2 L3 = getstr("Name","Job","Join","Bye"); ! First, see if the keyword typed is in the character's text block ! if dotext( S0 ) goto CHAT2; ! It didn't, so try the predefined ones.. on L3 goto CNAME2, CJOB2, CJOIN2, CSTOP2; ! Nope, try a 'DEFAULT' line if not dotext( "DEFAULT" ) then writeln( "I don't know anything about that!" ); endif; goto CHAT2; :CNAME2 writeln( "My name is ", NPC.name, "." ); GOTO CHAT2; :CJOB2 writeln( "I am a ", npc.type ); GOTO CHAT2; :CJOIN2 writeln( "Sorry. I've had my fill of adventure.." ); GOTO CHAT2; :CSTOP2 writeln( "Nice talking to you.." ); goto XSTOP; !------------------------------------------------------------------------! ! :@DROP ! DROP a player from the group. ! ! !------------------------------------------------------------------------! ! ! Here, you can handle the 'vacate' action for the prisoner. Omit ! the CONTINUE command tells the system that even though we took some ! action, standard processing should be taken anyway. Change it to ! a 'STOP' if you do not want standard processing to take place. ! ! Note that execution starts with the '@DROP' tag, so no graphics ! has been displayed. A graphics is displayed when you '@TALK' only. CONTINUE; !-----------------------------------------------------------------! ! All STOPs now lead here so the screen can be restored if needed ! !-----------------------------------------------------------------! :XSTOP if npc.picture >= 0 then paint(window); ! Assumes the picture fits in the window ! endif; STOP;