Skip to content

Commit 376c356

Browse files
committed
Merge branch 'Archipelago' of https://github.com/Z11Coding/Mixtape-Engine-Rework into Archipelago
2 parents f8099a7 + d0c0d73 commit 376c356

File tree

10 files changed

+191
-84
lines changed

10 files changed

+191
-84
lines changed

source/archipelago/APGameState.hx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -937,6 +937,7 @@ class APGameState
937937
waitForPlayState();
938938
case "Instant Death Trap":
939939
archipelago.APItem.createItemByName("Blue Balls Curse").fromTrapLink = true;
940+
backend.COD.COD.COD = "Killed by Blue Balls Curse.\n(Instant Death TrapLink)";
940941
case "Ghost":
941942
archipelago.APItem.createItemByName("Ghost").fromTrapLink = true;
942943
case "My Turn! Trap":
@@ -946,7 +947,7 @@ class APGameState
946947
case "Phone Trap" | "Literature Trap":
947948
archipelago.APItem.createItemByName(trapName).fromTrapLink = true;
948949
case "Home Trap":
949-
archipelago.APItem.createItemByName("Home Trap").fromTrapLink = true;
950+
archipelago.APItem.createItemByName("Tutorial Trap").fromTrapLink = true;
950951
case "Ice Trap":
951952
archipelago.APItem.createItemByName("Ice Trap").fromTrapLink = true;
952953
case "Freeze Trap" | "Frozen Trap":
@@ -962,7 +963,7 @@ class APGameState
962963
case "Eject Ability":
963964
archipelago.APItem.createItemByName("Eject Ability").fromTrapLink = true;
964965
case "Whoops! Trap":
965-
archipelago.APItem.createItemByName("Eject Ability").fromTrapLink = true;
966+
archipelago.APItem.createItemByName("Whoops! Trap").fromTrapLink = true;
966967
case "Zoom Trap":
967968
archipelago.APItem.createItemByName("Zoom Trap").fromTrapLink = true;
968969
case "Posession Trap":

source/archipelago/APItem.hx

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import haxe.ds.StringMap;
55
import cutscenes.DialogueBoxPsych;
66
import flixel.util.FlxDestroyUtil;
77
import archipelago.TrapLinkFunctions;
8+
import openfl.filters.ShaderFilter;
9+
import flixel.addons.display.FlxRuntimeShader;
810

911
typedef Condition = {
1012
var checkFn:APItem->Bool;
@@ -329,22 +331,21 @@ class APItem {
329331
case "Phone Trap" | "Literature Trap":
330332
return new APTrap(name, ConditionHelper.Everywhere(), function() {
331333
APPlayState.instance.inCutscene = true;
332-
APPlayState.instance.paused = true;
334+
APPlayState.instance.pausePlayState();
333335
backend.MusicBeatState.revokeControls = (name == 'Phone Trap');
334336
var psychDialogue:DialogueBoxPsych;
335337
psychDialogue = new DialogueBoxPsych(DialogueBoxPsych.parseDialogue(Paths.json('apthings/dialogue/' + FlxG.random.int(0, 10))));
336338
psychDialogue.scrollFactor.set();
337339
psychDialogue.autoScroller = (name == 'Phone Trap');
338340
psychDialogue.finishThing = function() {
339-
APPlayState.instance.paused = false;
341+
APPlayState.instance.resumePlayState();
340342
APPlayState.instance.inCutscene = false;
341343
backend.MusicBeatState.revokeControls = false;
342344
FlxG.state.remove(psychDialogue);
343345
psychDialogue = null;
344346
}
345-
psychDialogue.screenCenter();
346347
FlxG.state.add(psychDialogue);
347-
popup('You\'ve been Paralyzed!', 'TrapLink: $name');
348+
popup('I hope you like reading...', 'TrapLink: $name');
348349
}, true, true).funcAndReturn(function(t:APItem) {
349350
// Set it as a trap.
350351
t.isTrap = true;
@@ -450,20 +451,39 @@ class APItem {
450451
okayden.push(i);
451452
}
452453

453-
var explosion = new FlxSprite().loadGraphic(Paths.image("streamervschat/explosion"), true, 256, 256);
454-
explosion.animation.add("boom", okayden, 60, false);
455-
explosion.animation.finishCallback = function(name) {
456-
explosion.visible = false;
457-
APPlayState.instance.remove(explosion);
458-
explosion.kill();
459-
};
460-
explosion.cameras = [APPlayState.instance.camHUD];
461-
explosion.animation.play("boom", true);
462-
explosion.x = APPlayState.instance.boyfriend.x + APPlayState.instance.boyfriend.width / 2 - explosion.width / 2;
463-
explosion.y = APPlayState.instance.boyfriend.y + APPlayState.instance.boyfriend.height / 2 - explosion.height / 2;
464-
APPlayState.instance.add(explosion);
465-
APPlayState.instance.boyfriend.animation.play('hurt', true);
466-
APPlayState.instance.boyfriend.specialAnim = true;
454+
if (FlxG.random.bool(18)) {
455+
var explosion = new FlxSprite().loadGraphic(Paths.image("streamervschat/explosion"), true, 256, 256);
456+
explosion.animation.add("boom", okayden, 60, false);
457+
explosion.animation.finishCallback = function(name) {
458+
explosion.visible = false;
459+
APPlayState.instance.remove(explosion);
460+
explosion.kill();
461+
};
462+
//explosion.cameras = [APPlayState.instance.camHUD];
463+
explosion.animation.play("boom", true);
464+
explosion.x = APPlayState.instance.boyfriend.x + APPlayState.instance.boyfriend.width / 2 - explosion.width / 2;
465+
explosion.y = APPlayState.instance.boyfriend.y + APPlayState.instance.boyfriend.height / 2 - explosion.height / 2;
466+
APPlayState.instance.add(explosion);
467+
APPlayState.instance.boyfriend.animation.play('hurt', true);
468+
APPlayState.instance.boyfriend.specialAnim = true;
469+
} else {
470+
var explosion = new FlxSprite().loadGraphic(Paths.image("streamervschat/explosion"), true, 256, 256);
471+
explosion.animation.add("boom", okayden, 60, false);
472+
explosion.animation.finishCallback = function(name) {
473+
explosion.visible = false;
474+
APPlayState.instance.remove(explosion);
475+
explosion.kill();
476+
};
477+
explosion.setGraphicSize(Std.int(explosion.width * 5));
478+
//explosion.cameras = [APPlayState.instance.camHUD];
479+
explosion.animation.play("boom", true);
480+
explosion.x = APPlayState.instance.boyfriend.x + APPlayState.instance.boyfriend.width / 2 - explosion.width / 2;
481+
explosion.y = APPlayState.instance.boyfriend.y + APPlayState.instance.boyfriend.height / 2 - explosion.height / 2;
482+
APPlayState.instance.add(explosion);
483+
APPlayState.instance.boyfriend.animation.play('hurt', true);
484+
APPlayState.instance.boyfriend.specialAnim = true;
485+
APPlayState.instance.health -= 0.4;
486+
}
467487
popup('That looked like it hurt', "TrapLink: Damage Trap");
468488
}, true, true).funcAndReturn(function(t:APItem) {
469489
// Set it as a trap.
@@ -501,12 +521,12 @@ class APItem {
501521
case "Deisometric Trap":
502522
return new APTrap(name, ConditionHelper.PlayState(), function() {
503523
popup('Can you tilt your screen? I can\'t see...', "TrapLink: Deisometric Trap");
504-
for (cam in FlxG.cameras.list) {
505-
if (!cam.filters.contains(shaders.ShadersHandler.perspective))
506-
cam.filters.push(shaders.ShadersHandler.perspective);
507-
}
508-
flixel.tweens.FlxTween.num(shaders.ShadersHandler.perspective.shader.data.zrot.value[0], 0, 15, function(value:Float) {
509-
shaders.ShadersHandler.perspective.shader.data.zrot.value = [value];
524+
var pers:shaders.PerspectiveShader;
525+
pers = new shaders.PerspectiveShader();
526+
for (cam in FlxG.cameras.list)
527+
cam.filters = [new ShaderFilter(pers)];
528+
flixel.tweens.FlxTween.num(pers.xrot, 0.45, 1, function(value:Float) {
529+
pers.xrot = value;
510530
});
511531
}, true, true).funcAndReturn(function(t:APItem) {
512532
// Set it as a trap.
@@ -517,6 +537,7 @@ class APItem {
517537
case "Push Trap":
518538
return new APTrap(name, ConditionHelper.PlayState(), function() {
519539
popup('You go bye bye now :)', "TrapLink: Push Trap");
540+
TrapLinkFunctions.bfPosition = [APPlayState.instance.boyfriend.x ,APPlayState.instance.boyfriend.y];
520541
TrapLinkFunctions.doCarCrash(true);
521542
}, true, true).funcAndReturn(function(t:APItem) {
522543
// Set it as a trap.
@@ -570,7 +591,7 @@ class APItem {
570591
});
571592

572593
case "Zoom Trap":
573-
return new APTrap(name, ConditionHelper.PlayState(), function() {
594+
return new APTrap(name, ConditionHelper.Special(), function() {
574595
popup('ZOOM!', "TrapLink: Zoom Trap");
575596
for (cam in FlxG.cameras.list) {
576597
cam.zoom += 5;
@@ -725,7 +746,7 @@ class APItem {
725746

726747
case "Confound Trap":
727748
return new APTrap(name, ConditionHelper.PlayState(), function() {
728-
popup('FLASHBACG OUT', 'TrapLink: Confound Trap');
749+
popup('FLASHBANG OUT', 'TrapLink: Confound Trap');
729750
APPlayState.instance.doEffect('strongflashbang');
730751
}, true, true).funcAndReturn(function(t:APItem) {
731752
// Set it as a trap.

source/archipelago/APPlayState.hx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -655,15 +655,15 @@ class APPlayState extends PlayState {
655655
'spam' => function() {
656656
var noIcon:Bool = true;
657657
var startingPoint = FlxG.random.int(5, 9);
658-
var endingPoint = FlxG.random.int(startingPoint + 5, startingPoint + 10);
658+
var endingPoint = FlxG.random.int(startingPoint + 5, startingPoint + 30);
659659
for (i in startingPoint...endingPoint) {
660660
addNoteSvCLegacy(0, i, i);
661661
}
662662
},
663663
'insanespam' => function() {
664664
var noIcon:Bool = true;
665-
var startingPoint = FlxG.random.int(5, 39);
666-
var endingPoint = FlxG.random.int(startingPoint + 5, startingPoint + 10);
665+
var startingPoint = FlxG.random.int(5, 9);
666+
var endingPoint = FlxG.random.int(startingPoint + 5, startingPoint + 40);
667667
for (i in startingPoint...endingPoint) {
668668
addNoteSvCLegacy(0, i, i);
669669
}
@@ -703,7 +703,7 @@ class APPlayState extends PlayState {
703703
explosion.kill();
704704
};
705705
explosion.cameras = [camHUD];
706-
explosion.x = playerField.strumNotes[picked].x + playerField.strumNotes[picked].width / 2 - explosion.width / 2;
706+
explosion.x = playerField.baseXPositions[picked] + playerField.strumNotes[picked].width / 2 - explosion.width / 2;
707707
explosion.y = playerField.strumNotes[picked].y + playerField.strumNotes[picked].height / 2 - explosion.height / 2;
708708
explosion.animation.play("boom", true);
709709
add(explosion);
@@ -745,7 +745,7 @@ class APPlayState extends PlayState {
745745
explosion.kill();
746746
};
747747
explosion.cameras = [camHUD];
748-
explosion.x = (playerField.strumNotes[picked].x - playerField.baseXPositions[picked]) + playerField.strumNotes[picked].width / 2 - explosion.width / 2;
748+
explosion.x = (playerField.baseXPositions[picked] - playerField.baseXPositions[picked]) + playerField.strumNotes[picked].width / 2 - explosion.width / 2;
749749
explosion.y = (playerField.strumNotes[picked].y - baseY) + playerField.strumNotes[picked].height / 2 - explosion.height / 2;
750750
explosion.animation.play("boom", true);
751751
add(explosion);
@@ -951,8 +951,8 @@ class APPlayState extends PlayState {
951951
var noIcon:Bool = true;
952952
var lastPoint:Int = 0;
953953
var exList:Array<Int> = [];
954-
for (note in 0...10) {
955-
var startPoint:Int = FlxG.random.int(5, 39, exList);
954+
for (note in 0...50) {
955+
var startPoint:Int = FlxG.random.int(5, 9, exList);
956956
if (lastPoint == 0) {
957957
addNoteSvCLegacy(4, startPoint, startPoint, -1);
958958
lastPoint = startPoint;
@@ -1134,8 +1134,9 @@ class APPlayState extends PlayState {
11341134
},
11351135
'songSwitch' => function() {
11361136
// var haltTween:NumTween = new NumTween(null, null);
1137-
FlxTween.num(playbackRate, 0.0000000000000000001, 0.5, {
1137+
FlxTween.num(playbackRate, 0, 0.5, {
11381138
onComplete: function(e) {
1139+
paused = false;
11391140
FlxG.sound.play(Paths.sound('streamervschat/itcomes'), 1, false, null, true, function() {
11401141
trace('MANUAL OVERRIDE: ' + FlxG.save.data.manualOverride);
11411142
if (!FlxG.save.data.manualOverride) {
@@ -1172,6 +1173,7 @@ class APPlayState extends PlayState {
11721173
var soundOptions:Array<String> = ["delay", "dialup"];
11731174
var selectedSound:String = soundOptions[FlxG.random.int(0, soundOptions.length)];
11741175
var onEnd:(Void->Void) = function() {
1176+
paused = false;
11751177
FlxTween.num(0, oldPlaybackRate, 0.5, {
11761178
onComplete: function(e) {
11771179
playbackRate = oldPlaybackRate;
@@ -1181,8 +1183,9 @@ class APPlayState extends PlayState {
11811183
});
11821184
};
11831185

1184-
FlxTween.num(playbackRate, 0.0000000000000000001, 0.5, {
1186+
FlxTween.num(playbackRate, 0, 0.5, {
11851187
onComplete: function(e) {
1188+
paused = true;
11861189
FlxG.sound.play(Paths.sound('streamervschat/$selectedSound'), 1, false, null, true, function() {
11871190
FlxTween.num(playbackRate, 0, 0.5, {
11881191
onComplete: function(e) {
@@ -2067,7 +2070,7 @@ class APPlayState extends PlayState {
20672070
trace("Ghost Chat Re-activated!");
20682071
}
20692072

2070-
if (bfAscend) boyfriendGroup.y += 0.001;
2073+
if (bfAscend) boyfriendGroup.y += 0.01;
20712074

20722075
super.update(elapsed);
20732076
}

source/archipelago/APSettingsSubState.hx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ class APSettingsSubState extends MusicBeatSubstate {
146146
trapAmount.value = APEntryState.gameSettings.FNF.trapAmount;
147147
bbcWeight.value = APEntryState.gameSettings.FNF.bbcWeight;
148148
ghostChatWeight.value = APEntryState.gameSettings.FNF.ghostChatWeight;
149-
tutorialWeight.value = APEntryState.gameSettings.FNF.svcWeight;
150-
svcWeight.value = APEntryState.gameSettings.FNF.tutorialWeight;
149+
tutorialWeight.value = APEntryState.gameSettings.FNF.tutorialWeight;
150+
svcWeight.value = APEntryState.gameSettings.FNF.svcWeight;
151151
chartmodifierchance.value = APEntryState.gameSettings.FNF.chart_modifier_change_chance;
152152
shieldWeight.value = APEntryState.gameSettings.FNF.shieldWeight;
153153
MHPWeight.value = APEntryState.gameSettings.FNF.MHPWeight;
@@ -281,13 +281,13 @@ class APSettingsSubState extends MusicBeatSubstate {
281281
ghostChatWeight.decimals = 0;
282282

283283
objY += 40;
284-
tutorialWeight = new PsychUISlider(objX, objY, function(v:Float) APEntryState.gameSettings.FNF.svcWeight = Std.int(v));
284+
tutorialWeight = new PsychUISlider(objX, objY, function(v:Float) APEntryState.gameSettings.FNF.tutorialWeight = Std.int(v));
285285
tutorialWeight.min = 0;
286286
tutorialWeight.max = 10;
287287
tutorialWeight.decimals = 0;
288288

289289
objY += 40;
290-
svcWeight = new PsychUISlider(objX, objY, function(v:Float) APEntryState.gameSettings.FNF.tutorialWeight = Std.int(v));
290+
svcWeight = new PsychUISlider(objX, objY, function(v:Float) APEntryState.gameSettings.FNF.svcWeight = Std.int(v));
291291
svcWeight.min = 0;
292292
svcWeight.max = 10;
293293
svcWeight.decimals = 0;

source/archipelago/TrapLinkFunctions.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import flixel.input.keyboard.FlxKey;
77
import archipelago.substates.UnownSubState;
88

99
class TrapLinkFunctions {
10-
static var bfPosition:Array<Float>;
11-
static var bfMaxPos:Array<Float>;
10+
public static var bfPosition:Array<Float>;
11+
public static var bfMaxPos:Array<Float>;
1212
public static function doCarCrash(random:Bool, ?direction:Null<Int>) {
1313
for (i in bfPosition) {
1414
bfMaxPos.push(i+5000);

source/objects/playfields/PlayField.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ class PlayField extends FlxTypedGroup<FlxBasic>
395395
else {
396396
if (note.wasGoodHit)
397397
continue;
398-
noteHitCallback(note, this);
398+
if (!note.blockHit) noteHitCallback(note, this);
399399
return note;
400400
}
401401
}
@@ -719,7 +719,7 @@ class PlayField extends FlxTypedGroup<FlxBasic>
719719
var hitNote = noteList[0];
720720
if(!hitNote.wasGoodHit) // because parent tap notes
721721
{
722-
noteHitCallback(hitNote, this);
722+
if (!hitNote.blockHit) noteHitCallback(hitNote, this);
723723
return hitNote;
724724
}
725725
}else{

source/shaders/PerspectiveShader.hx

Lines changed: 68 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package shaders;
22

3-
import flixel.system.FlxAssets.FlxShader;
4-
5-
class PerspectiveShader extends FlxShader
3+
import flixel.addons.display.FlxRuntimeShader;
4+
class PerspectiveShader extends FlxRuntimeShader
65
{
7-
@:glFragmentSource('
8-
#pragma header
6+
public var xrot(default, set):Float;
7+
public var yrot(default, set):Float;
8+
public var zrot(default, set):Float;
9+
public var xpos(default, set):Float;
10+
public var ypos(default, set):Float;
11+
public var zpos(default, set):Float;
12+
public function new()
13+
{
14+
super("
15+
#pragma header
916
#define PI 3.1415926538
1017
1118
uniform float xrot = 0.0;
@@ -78,10 +85,61 @@ class PerspectiveShader extends FlxShader
7885
7986
gl_FragColor = flixel_texture2D(bitmap, uv);
8087
}
81-
}
82-
')
83-
public function new()
84-
{
85-
super();
88+
}");
89+
90+
xrot = 0.0;
91+
yrot = 0.0;
92+
zrot = 0.0;
93+
xpos = 0.0;
94+
ypos = 0.0;
95+
zpos = 0.0;
8696
}
97+
98+
function set_xrot(value:Float):Float
99+
{
100+
this.setFloat('xrot', value);
101+
this.xrot = value;
102+
103+
return this.xrot;
104+
}
105+
106+
function set_yrot(value:Float):Float
107+
{
108+
this.setFloat('yrot', value);
109+
this.yrot = value;
110+
111+
return this.yrot;
112+
}
113+
114+
function set_zrot(value:Float):Float
115+
{
116+
this.setFloat('zrot', value);
117+
this.zrot = value;
118+
119+
return this.zrot;
120+
}
121+
122+
function set_xpos(value:Float):Float
123+
{
124+
this.setFloat('xpos', value);
125+
this.xpos = value;
126+
127+
return this.xpos;
128+
}
129+
130+
function set_ypos(value:Float):Float
131+
{
132+
this.setFloat('ypos', value);
133+
this.ypos = value;
134+
135+
return this.ypos;
136+
}
137+
138+
function set_zpos(value:Float):Float
139+
{
140+
this.setFloat('zpos', value);
141+
this.zpos = value;
142+
143+
return this.zpos;
144+
}
87145
}

0 commit comments

Comments
 (0)