diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2021-03-12 16:41:25 -0500 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2021-03-12 16:41:25 -0500 |
| commit | 065d5dbac17664666d6a83583141d4cdf0bb691c (patch) | |
| tree | dcca0a1495968897d1810eeb04eda968e90ad204 | |
| parent | 680b7b1c8b0f04bcc10d80106819f73501177b48 (diff) | |
| download | tanetane-065d5dbac17664666d6a83583141d4cdf0bb691c.tar.gz tanetane-065d5dbac17664666d6a83583141d4cdf0bb691c.tar.bz2 tanetane-065d5dbac17664666d6a83583141d4cdf0bb691c.zip | |
Interacting with Kuma and Duster in the finale
The hot spring is also a little bigger now, because I'm using an enclosure to keep Lucas in, instead of setting the tiles to being solid or not. #20
| -rw-r--r-- | res/maps/finale.tmx | 3 | ||||
| -rw-r--r-- | res/maps/forest.tsx | 71 | ||||
| -rw-r--r-- | res/scripts/common.lua | 15 | ||||
| -rw-r--r-- | res/scripts/finale.lua | 22 | ||||
| -rw-r--r-- | src/script_system.cpp | 3 |
5 files changed, 44 insertions, 70 deletions
| diff --git a/res/maps/finale.tmx b/res/maps/finale.tmx index 5c48c97..be30d18 100644 --- a/res/maps/finale.tmx +++ b/res/maps/finale.tmx | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="32" height="16" tilewidth="16" tileheight="16" infinite="0" nextlayerid="3" nextobjectid="6"> | 2 | <map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="32" height="16" tilewidth="16" tileheight="16" infinite="0" nextlayerid="3" nextobjectid="7"> |
| 3 | <tileset firstgid="1" source="forest.tsx"/> | 3 | <tileset firstgid="1" source="forest.tsx"/> |
| 4 | <layer id="2" name="Lower" width="32" height="16"> | 4 | <layer id="2" name="Lower" width="32" height="16"> |
| 5 | <data encoding="csv"> | 5 | <data encoding="csv"> |
| @@ -34,6 +34,7 @@ | |||
| 34 | <object id="5" name="boney_start" type="warp" x="197.84" y="144"> | 34 | <object id="5" name="boney_start" type="warp" x="197.84" y="144"> |
| 35 | <point/> | 35 | <point/> |
| 36 | </object> | 36 | </object> |
| 37 | <object id="6" name="hotspring_enclosure" type="zone" x="224" y="104" width="96" height="56"/> | ||
| 37 | </objectgroup> | 38 | </objectgroup> |
| 38 | <layer id="1" name="Upper" width="32" height="16"> | 39 | <layer id="1" name="Upper" width="32" height="16"> |
| 39 | <properties> | 40 | <properties> |
| diff --git a/res/maps/forest.tsx b/res/maps/forest.tsx index bff44a5..633544a 100644 --- a/res/maps/forest.tsx +++ b/res/maps/forest.tsx | |||
| @@ -1,49 +1,19 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <tileset version="1.4" tiledversion="1.4.3" name="forest" tilewidth="16" tileheight="16" tilecount="80" columns="10"> | 2 | <tileset version="1.4" tiledversion="1.4.3" name="forest" tilewidth="16" tileheight="16" tilecount="80" columns="10"> |
| 3 | <image source="forest_tiles.png" width="160" height="128"/> | 3 | <image source="forest_tiles.png" width="160" height="128"/> |
| 4 | <tile id="6"> | ||
| 5 | <properties> | ||
| 6 | <property name="solid" type="bool" value="true"/> | ||
| 7 | </properties> | ||
| 8 | </tile> | ||
| 9 | <tile id="7"> | ||
| 10 | <properties> | ||
| 11 | <property name="solid" type="bool" value="true"/> | ||
| 12 | </properties> | ||
| 13 | </tile> | ||
| 14 | <tile id="8"> | ||
| 15 | <properties> | ||
| 16 | <property name="solid" type="bool" value="true"/> | ||
| 17 | </properties> | ||
| 18 | </tile> | ||
| 19 | <tile id="9"> | ||
| 20 | <properties> | ||
| 21 | <property name="solid" type="bool" value="true"/> | ||
| 22 | </properties> | ||
| 23 | </tile> | ||
| 24 | <tile id="10"> | ||
| 25 | <properties> | ||
| 26 | <property name="solid" type="bool" value="true"/> | ||
| 27 | </properties> | ||
| 28 | </tile> | ||
| 29 | <tile id="11"> | 4 | <tile id="11"> |
| 30 | <properties> | 5 | <properties> |
| 31 | <property name="solid" type="bool" value="true"/> | 6 | <property name="medium" value="water"/> |
| 32 | </properties> | 7 | </properties> |
| 33 | </tile> | 8 | </tile> |
| 34 | <tile id="12"> | 9 | <tile id="12"> |
| 35 | <properties> | 10 | <properties> |
| 36 | <property name="solid" type="bool" value="true"/> | 11 | <property name="medium" value="water"/> |
| 37 | </properties> | 12 | </properties> |
| 38 | </tile> | 13 | </tile> |
| 39 | <tile id="13"> | 14 | <tile id="13"> |
| 40 | <properties> | 15 | <properties> |
| 41 | <property name="solid" type="bool" value="true"/> | 16 | <property name="medium" value="water"/> |
| 42 | </properties> | ||
| 43 | </tile> | ||
| 44 | <tile id="14"> | ||
| 45 | <properties> | ||
| 46 | <property name="solid" type="bool" value="true"/> | ||
| 47 | </properties> | 17 | </properties> |
| 48 | </tile> | 18 | </tile> |
| 49 | <tile id="15"> | 19 | <tile id="15"> |
| @@ -51,44 +21,9 @@ | |||
| 51 | <property name="medium" value="water"/> | 21 | <property name="medium" value="water"/> |
| 52 | </properties> | 22 | </properties> |
| 53 | </tile> | 23 | </tile> |
| 54 | <tile id="16"> | ||
| 55 | <properties> | ||
| 56 | <property name="solid" type="bool" value="true"/> | ||
| 57 | </properties> | ||
| 58 | </tile> | ||
| 59 | <tile id="18"> | ||
| 60 | <properties> | ||
| 61 | <property name="solid" type="bool" value="true"/> | ||
| 62 | </properties> | ||
| 63 | </tile> | ||
| 64 | <tile id="19"> | 24 | <tile id="19"> |
| 65 | <properties> | 25 | <properties> |
| 66 | <property name="medium" value="water"/> | 26 | <property name="medium" value="water"/> |
| 67 | </properties> | 27 | </properties> |
| 68 | </tile> | 28 | </tile> |
| 69 | <tile id="22"> | ||
| 70 | <properties> | ||
| 71 | <property name="solid" type="bool" value="true"/> | ||
| 72 | </properties> | ||
| 73 | </tile> | ||
| 74 | <tile id="23"> | ||
| 75 | <properties> | ||
| 76 | <property name="solid" type="bool" value="true"/> | ||
| 77 | </properties> | ||
| 78 | </tile> | ||
| 79 | <tile id="24"> | ||
| 80 | <properties> | ||
| 81 | <property name="solid" type="bool" value="true"/> | ||
| 82 | </properties> | ||
| 83 | </tile> | ||
| 84 | <tile id="25"> | ||
| 85 | <properties> | ||
| 86 | <property name="solid" type="bool" value="true"/> | ||
| 87 | </properties> | ||
| 88 | </tile> | ||
| 89 | <tile id="26"> | ||
| 90 | <properties> | ||
| 91 | <property name="solid" type="bool" value="true"/> | ||
| 92 | </properties> | ||
| 93 | </tile> | ||
| 94 | </tileset> | 29 | </tileset> |
| diff --git a/res/scripts/common.lua b/res/scripts/common.lua index dbc021c..1d4879f 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua | |||
| @@ -414,6 +414,14 @@ function SetAnimationSlowdown(spriteName, amount) | |||
| 414 | sprite.animSlowdown = amount | 414 | sprite.animSlowdown = amount |
| 415 | end | 415 | end |
| 416 | 416 | ||
| 417 | --- Sets the enclosure zone for a sprite. | ||
| 418 | -- The sprite will be prevented from exiting the area defined by that zone. | ||
| 419 | function AddEnclosureZone(spriteName, zone) | ||
| 420 | local spriteId = getSpriteByAlias(spriteName) | ||
| 421 | local sprite = getSprite(spriteId) | ||
| 422 | sprite.enclosureZone = zone | ||
| 423 | end | ||
| 424 | |||
| 417 | --- Removes the enclosure zone for the specified sprite. | 425 | --- Removes the enclosure zone for the specified sprite. |
| 418 | -- This allows the sprite to move outside of the confines of the zone. | 426 | -- This allows the sprite to move outside of the confines of the zone. |
| 419 | function RemoveEnclosureZone(spriteName) | 427 | function RemoveEnclosureZone(spriteName) |
| @@ -607,3 +615,10 @@ function IsSpriteInZone(spriteName, zoneName) | |||
| 607 | 615 | ||
| 608 | return (pos:x() >= zone.ul:x()) and (pos:x() <= zone.dr:x()) and (pos:y() >= zone.ul:y()) and (pos:y() <= zone.dr:y()) | 616 | return (pos:x() >= zone.ul:x()) and (pos:x() <= zone.dr:x()) and (pos:y() >= zone.ul:y()) and (pos:y() <= zone.dr:y()) |
| 609 | end | 617 | end |
| 618 | |||
| 619 | --- Sets the name of the script on the current map that will be executed when the player interacts with this sprite. | ||
| 620 | function SetInteractionScript(spriteName, scriptName) | ||
| 621 | local spriteId = getSpriteByAlias(spriteName) | ||
| 622 | local sprite = getSprite(spriteId) | ||
| 623 | sprite.interactionScript = scriptName | ||
| 624 | end | ||
| diff --git a/res/scripts/finale.lua b/res/scripts/finale.lua index 2493473..7e23336 100644 --- a/res/scripts/finale.lua +++ b/res/scripts/finale.lua | |||
| @@ -3,15 +3,37 @@ finale = {} | |||
| 3 | function finale.init() | 3 | function finale.init() |
| 4 | character():breakUpParty(getPlayerSprite()) | 4 | character():breakUpParty(getPlayerSprite()) |
| 5 | 5 | ||
| 6 | AddEnclosureZone("lucas", "hotspring_enclosure") | ||
| 7 | |||
| 6 | MoveSpriteToWarp("kuma", "kumatora_start") | 8 | MoveSpriteToWarp("kuma", "kumatora_start") |
| 7 | SetDirection("kuma", Direction.UP) | 9 | SetDirection("kuma", Direction.UP) |
| 8 | SetAnimation("kuma", "swim_still") | 10 | SetAnimation("kuma", "swim_still") |
| 11 | MakeSpriteSolid("kuma") | ||
| 12 | SetInteractionScript("kuma", "talk_to_kuma") | ||
| 9 | 13 | ||
| 10 | MoveSpriteToWarp("duster", "duster_start") | 14 | MoveSpriteToWarp("duster", "duster_start") |
| 11 | SetDirection("duster", Direction.RIGHT) | 15 | SetDirection("duster", Direction.RIGHT) |
| 12 | SetAnimation("duster", "swim_still") | 16 | SetAnimation("duster", "swim_still") |
| 17 | MakeSpriteSolid("duster") | ||
| 18 | SetInteractionScript("duster", "talk_to_duster") | ||
| 13 | 19 | ||
| 14 | MoveSpriteToWarp("boney", "boney_start") | 20 | MoveSpriteToWarp("boney", "boney_start") |
| 15 | SetDirection("boney", Direction.DOWN) | 21 | SetDirection("boney", Direction.DOWN) |
| 16 | SetAnimation("boney", "asleep") | 22 | SetAnimation("boney", "asleep") |
| 17 | end | 23 | end |
| 24 | |||
| 25 | function finale.talk_to_kuma() | ||
| 26 | SetDirection("kuma", Direction.UP) | ||
| 27 | StartCutscene() | ||
| 28 | DisplayMessage("* Kumatora doesn't respond.\n\f* She is grumbling to herself, and picking at the grass growing over the wall.", "", SpeakerType.NONE) | ||
| 29 | WaitForEndOfMessage() | ||
| 30 | HideCutsceneBars() | ||
| 31 | end | ||
| 32 | |||
| 33 | function finale.talk_to_duster() | ||
| 34 | SetDirection("duster", Direction.RIGHT) | ||
| 35 | StartCutscene() | ||
| 36 | DisplayMessage("* Duster doesn't respond.\n\f* He is simply staring at his own reflection in the water.", "", SpeakerType.NONE) | ||
| 37 | WaitForEndOfMessage() | ||
| 38 | HideCutsceneBars() | ||
| 39 | end | ||
| diff --git a/src/script_system.cpp b/src/script_system.cpp index 505957b..b993938 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp | |||
| @@ -54,7 +54,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
| 54 | "movementSpeed", &Sprite::movementSpeed, | 54 | "movementSpeed", &Sprite::movementSpeed, |
| 55 | "solid", &Sprite::solid, | 55 | "solid", &Sprite::solid, |
| 56 | "behaviourType", &Sprite::behaviourType, | 56 | "behaviourType", &Sprite::behaviourType, |
| 57 | "followSpriteId", &Sprite::followSpriteId); | 57 | "followSpriteId", &Sprite::followSpriteId, |
| 58 | "interactionScript", &Sprite::interactionScript); | ||
| 58 | 59 | ||
| 59 | engine_.new_usertype<MessageSystem>( | 60 | engine_.new_usertype<MessageSystem>( |
| 60 | "message", | 61 | "message", |
