Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 1/Scripts/Special/GreenBlock.txt
1482 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Green Block Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
private alias object.propertyValue : object.colorChangeOffset
13
14
15
// ========================
16
// Function Declarations
17
// ========================
18
19
reserve function GreenBlock_DebugDraw
20
reserve function GreenBlock_DebugSpawn
21
22
23
// ========================
24
// Function Definitions
25
// ========================
26
27
private function GreenBlock_DebugDraw
28
DrawSprite(0)
29
DrawSprite(1)
30
DrawSprite(2)
31
end function
32
33
34
private function GreenBlock_DebugSpawn
35
temp5 = TypeName[Green Block]
36
temp4 = 0
37
CallFunction(DebugMode_PlaceBlock)
38
object[arrayPos0].drawOrder = 4
39
object[arrayPos0].groupID = GROUP_BLOCKS
40
end function
41
42
43
// ========================
44
// Events
45
// ========================
46
47
event ObjectUpdate
48
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
49
CallFunction(SpecialSetup_PlayerBlockCol)
50
next
51
end event
52
53
54
event ObjectDraw
55
if object.colorChangeOffset > 0
56
temp0 = SpecialSetup_blockTimer
57
temp0 >>= 3 // 63 == 7
58
temp1 = object.colorChangeOffset // 0-7
59
temp1 -= temp0
60
switch temp1
61
case 1
62
case 3
63
object.type = TypeName[Pink Block]
64
break
65
66
default
67
break
68
end switch
69
end if
70
71
CallFunction(SpecialSetup_GetBlockPos)
72
DrawSpriteFX(0, FX_ROTATE, temp0, temp1)
73
DrawSpriteXY(1, temp0, temp1)
74
75
temp2 = object.rotation
76
temp2 >>= 3
77
temp2 += 2
78
DrawSpriteFX(temp2, FX_ROTATE, temp0, temp1)
79
80
object.type = TypeName[Green Block]
81
end event
82
83
84
event ObjectStartup
85
LoadSpriteSheet("Special/Objects.gif")
86
SpriteFrame(-12, -12, 24, 24, 126, 376)
87
SpriteFrame(-10, -8, 20, 16, 151, 376)
88
89
temp0 = 1
90
temp1 = 301
91
while temp1 < 400
92
temp0 = 1
93
while temp0 < 500
94
SpriteFrame(-12, -12, 24, 24, temp0, temp1)
95
temp0 += 25
96
loop
97
temp1 += 25
98
loop
99
100
foreach (TypeName[Green Block], arrayPos0, ALL_ENTITIES)
101
object[arrayPos0].groupID = GROUP_BLOCKS
102
next
103
104
SetTableValue(TypeName[Green Block], DebugMode_ObjCount, DebugMode_TypeTable)
105
SetTableValue(GreenBlock_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
106
SetTableValue(GreenBlock_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
107
DebugMode_ObjCount++
108
end event
109
110
111
// ========================
112
// Editor Events
113
// ========================
114
115
event RSDKEdit
116
if editor.returnVariable == true
117
switch editor.variableID
118
case EDIT_VAR_PROPVAL // property value
119
checkResult = object.propertyValue
120
checkResult &= 7
121
break
122
123
case 0 // colorChangeOffset
124
checkResult = object.propertyValue
125
checkResult &= 7
126
break
127
128
end switch
129
else
130
switch editor.variableID
131
case EDIT_VAR_PROPVAL // property value
132
object.propertyValue = editor.variableValue
133
object.propertyValue &= 7
134
break
135
136
case 0 // colorChangeOffset
137
object.propertyValue = editor.variableValue
138
object.propertyValue &= 7
139
break
140
141
end switch
142
end if
143
end event
144
145
146
event RSDKDraw
147
DrawSprite(0)
148
DrawSprite(1)
149
DrawSprite(2)
150
end event
151
152
153
event RSDKLoad
154
LoadSpriteSheet("Special/Objects.gif")
155
SpriteFrame(-12, -12, 24, 24, 126, 376)
156
SpriteFrame(-10, -8, 20, 16, 151, 376)
157
SpriteFrame(-12, -12, 24, 24, 1, 301)
158
159
AddEditorVariable("colorChangeOffset")
160
SetActiveVariable("colorChangeOffset")
161
AddEnumVariable("Frame 0", 0)
162
AddEnumVariable("Frame 1", 1)
163
AddEnumVariable("Frame 2", 2)
164
AddEnumVariable("Frame 3", 3)
165
AddEnumVariable("Frame 4", 4)
166
AddEnumVariable("Frame 5", 5)
167
AddEnumVariable("Frame 6", 6)
168
AddEnumVariable("Frame 7", 7)
169
end event
170
171