mixster

mixster

Jun 11th, 2010
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.50 KB | None | 0 0
  1. program Parser;
  2.  
  3. function GetLevel(skill: string): string;
  4. begin
  5.   case skill of
  6.     'ATTACK': Result := 'player''s attack';
  7.     'STRENGTH': Result := 'player''s strength';
  8.     // etc
  9.   else
  10.     Result := ''
  11.   end;
  12. end;
  13.  
  14. function Parse(input: string): string;
  15. var
  16.   s, r, tmp: string;
  17.   t: Integer;
  18.   skills: TStringArray;
  19.   all: Boolean;
  20. begin
  21.   repeat
  22.     s := Between('{LVL_', '}', input);
  23.     if s = '' then
  24.       Break;
  25.  
  26.     all := True;
  27.     if (Pos('+', s) <> 0) then
  28.       skills := Explode('+', s)
  29.     else if (Pos('-', s) <> 0) then
  30.     begin
  31.       skills := Explode('-', s);
  32.       all := False;
  33.     end
  34.     else
  35.       skills := [s];
  36.  
  37.     tmp := '';
  38.  
  39.     if all then
  40.     begin
  41.       for t := 0 to High(skills) do
  42.         tmp := tmp + GetLevel(skills[t]) + ' ';
  43.     end
  44.     else
  45.       tmp := GetLevel(skills[Random(Length(skills))]) + ' ';
  46.  
  47.     t := Pos('{LVL_', input);
  48.     input := Copy(input, 1, t - 1) + tmp + Copy(input, Pos('}', input) + 1, Length(input));
  49.   until False;
  50.  
  51.   repeat
  52.     s := Between('{ANSWER_', '}', input);
  53.     if s = '' then
  54.       Break;
  55.  
  56.     if (Pos('~', s) <> 0) then
  57.       skills := Explode('~', s)
  58.     else
  59.       skills := [s];
  60.  
  61.     tmp := skills[Random(Length(skills))] + ' ';
  62.  
  63.     t := Pos('{ANSWER_', input);
  64.     input := Copy(input, 1, t - 1) + tmp + Copy(input, Pos('}', input) + 1, Length(input));
  65.   until False;
  66.  
  67.   Result := input;
  68. end;
  69.  
  70. begin
  71.   ClearDebug;
  72.   Writeln(Parse('Oh hey {ANSWER_meow~woof~bark}there!'));
  73. end.
Add Comment
Please, Sign In to add comment