Community

General and Everything Else => The Games and other Sierra Adventure stuff => Topic started by: Kawa on July 02, 2015, 07:33:44 PM

Title: The Imitation Game - an offer
Post by: Kawa on July 02, 2015, 07:33:44 PM
Long, long ago, long enough for me to have irretrievably lost it all, I implemented a few things in SCI0; a questionnaire ala Larry, and a battle system like in Quest for Glory -- albeit somewhat simplified. Also an even more simplified Mega Man Battle Network system. I did these first two without looking at any code, for I could and can not read SCI machine code and had no decompiler. Thus, the only straight copy (IIRC) was the question format. I might've expanded those battle systems if things hadn't happened.

I do so enjoy a little challenge, so here's the deal: you suggest something like the things above, things like battle systems or minigames, and I'll try to implement it in SCI11, assuming it seems reasonable, then release it with adequate documentation and probably placeholder art.

The challenges:

The downloads:
http://helmet.kafuka.org/sci/
Title: Re: The Imitation Game - an offer
Post by: Collector on July 02, 2015, 10:28:52 PM
Title: Re: The Imitation Game - an offer
Post by: Kawa on July 03, 2015, 04:41:39 AM
  • Health meter - Gumby implemented one for 120 Below (SCI0)
  • Stats building - Don't remember if Doan did one for Betrayed Alliance.
Looking at the screenshots on this page for these two games, I have two thoughts:

Okay, I lied. I had these thoughts long before looking at the screenshots and merely confirmed them just now.
Title: Re: The Imitation Game - an offer
Post by: Kawa on July 04, 2015, 10:10:26 AM
Code: [Select]
= correctAnswer (- (& textBuffer[0] $FF) $30)
= textBuffer[0] (| (& textBuffer[0] $FF00) $20)
This is abuse, I tell you! Abuuuse!

But hey, at least it lets me encode the correct answer in the question, Larry-style, instead of having a separate array like Space Quest 5.

How the hell'd I do it way back then?
Title: Re: The Imitation Game - an offer
Post by: Kawa on July 04, 2015, 09:32:11 PM
Question list is now available!

Features:
Title: Re: The Imitation Game - an offer
Post by: lskovlun on July 04, 2015, 09:40:00 PM
This is abuse, I tell you! Abuuuse!
Seconded.  ;D It can get much worse though... picture this stuff combined with Memory and odd pointer voodoo.
Title: Re: The Imitation Game - an offer
Post by: Kawa on July 05, 2015, 09:14:47 AM
Questionnaire has been updated with more questions -- twenty now -- and a skip cheat.

One of these games is not like the others. One of these games just doesn't belong.
A. Space Quest Ⅲ The Pirates of Pestulon
B. Freddy Pharkas Frontier Pharmacist
C. Monkey Island Ⅱ LeChuck's Revenge
D. King's Quest Ⅴ Absence Makes the Heart Go Yonder
Title: Re: The Imitation Game - an offer
Post by: OmerMor on July 05, 2015, 04:07:54 PM
Questionnaire has been updated with more questions -- twenty now -- and a skip cheat.

One of these games is not like the others. One of these games just doesn't belong.
A. Space Quest Ⅲ The Pirates of Pestulon
B. Freddy Pharkas Frontier Pharmacist
C. Monkey Island Ⅱ LeChuck's Revenge
D. King's Quest Ⅴ Absence Makes the Heart Go Yonder


The answer is (A) Space Quest 3.
Because it's the only game (beside Monkey Island 2) that involves pirates.
 :P
Title: Re: The Imitation Game - an offer
Post by: Kawa on July 05, 2015, 05:05:11 PM
Wrong.
Title: Re: The Imitation Game - an offer
Post by: Collector on July 05, 2015, 05:56:45 PM
Depends on what the criteria are. SQ3 is the only EGA game, MI2 is the only non-SCI game, KQ5 is the only one that is not more comedy than drama, SQ3 is the only one that does not take place in the past.
Title: Re: The Imitation Game - an offer
Post by: Kawa on July 05, 2015, 06:07:29 PM
Freddy Pharkas has no Roman numeral.

Anyway, that's two outta four challenges. Any others?
Title: Re: The Imitation Game - an offer
Post by: Kawa on August 22, 2015, 06:39:06 AM
Who would like to see a GK1-ish dialogue system?
Title: Re: The Imitation Game - an offer
Post by: Kawa on March 26, 2016, 10:33:16 AM
I suppose this counts as "imitation" -- I took this image (https://pbs.twimg.com/media/CeeWpOTWsAATEsH.jpg:orig) from Twitter and implemented it (http://i.imgur.com/hZEIqK1.png) just now.

Code: [Select]
;;; Sierra Script 1.0 - (do not remove this comment)
(script# 130)
(include sci.sh)
(include game.sh)
(use System)
(use Main)
(use Game)
(use Print)

(public
PixelPuzzle 0
)

(define PUZZLE_LEFT 16)
(define PUZZLE_TOP 50)

(local
[image 168] = [
0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1
0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1
0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1
0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1
1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1
1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
]
drawn = 0
)

(procedure (DrawGrid &tmp col row i x y c w h)
(= x PUZZLE_LEFT)
(= y PUZZLE_TOP)
(= i 0)
(= row 0)
(= col 0)
(= w (CelWide 128 0 0))
(= h (CelHigh 128 0 0))
; I find while syntax easier than for, tbh.
(while (<= row 6)
(= col 0)
(while (<= col 23)
(= c [image i])
(DrawCel 128 0 c x y -1)
(= x (+ x w))
(++ i)
(++ col)
)
(= y (+ y h))
(= x PUZZLE_LEFT)
(++ row)
)
)

(instance PixelPuzzle of Rm
(properties
picture 130
)

(method (init)
(super init:)
(gOldMH addToFront: self)
(gRoom setScript: puzzleScript)
)

(method (dispose)
(gOldMH delete: self)
(super dispose: &rest)
)
)

(instance puzzleScript of Script
(method (changeState newState)
(switch (= state newState)
(0
(= gCursorNumber 999)
(gGame setCursor: 999 1)
(Display {Make the following statement true by filling in four of the boxes.} dsCOORD 16 16 dsWIDTH 200 dsFONT 4)
(Display {You should be able to solve this.} dsCOORD 16 128 dsWIDTH 128 dsFONT 4)
(DrawGrid)
)
(1
(DrawGrid)
(++ drawn)
(if (== drawn 4)
; Check if we did right.
(if (and [image 5]
[image 20]
[image 149]
[image 164])
; Your shit here.
(Prints {You did it!})
else
; Your shit here.
(Prints {Are you mad?})
)
else
(self state: 0)
)
)
)
)

(method (handleEvent pEvent &tmp x y i)
(if (== (pEvent type?) evMOUSERELEASE)
(pEvent claimed: 1)
(= x (- (pEvent x?) PUZZLE_LEFT))
(= y (- (pEvent y?) PUZZLE_TOP))
; Convert from pixel to tile coordinates
(= x (/ x (CelWide 128 0 0)))
(= y (/ y (CelHigh 128 0 0)))
; Ignore out-of-bounds clicks
(if (or (< x 0)
(< y 0)
(> x 23)
(> y 6))
(pEvent claimed: 0)
(return)
)
; Calculate offset
(= i (+ (* y 24) x))
; (DebugPrint {Clicked tile %d at %d %d} i x y)
(if (not [image i])
(= [image i] 1)
(self cue:)
)
)
)
)