summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2013-02-03 22:34:39 +0100
committerTreeki <treeki@gmail.com>2013-02-03 22:34:39 +0100
commit9219c7c840faab57f284802c1bdc1eb1df0579d3 (patch)
treeab357d7b6ae91b72a702b7a88974907cc39d5cd3
parent9254704323d25fcc0cc8881895705e0baa5eeef2 (diff)
downloadkamek-9219c7c840faab57f284802c1bdc1eb1df0579d3.tar.gz
kamek-9219c7c840faab57f284802c1bdc1eb1df0579d3.zip
an attempt to fix the shyguy star bullshit
Diffstat (limited to '')
-rwxr-xr-xinclude/game.h7
-rw-r--r--kamek_pal.x1
-rw-r--r--src/shyguyGiants.cpp20
3 files changed, 26 insertions, 2 deletions
diff --git a/include/game.h b/include/game.h
index 300efec..ce7a672 100755
--- a/include/game.h
+++ b/include/game.h
@@ -3662,5 +3662,12 @@ extern void *SelectCursorPointer;
extern "C" void UpdateSelectCursor(nw4r::lyt::Pane *pane, int whichOne, bool unkBool);
extern "C" void HideSelectCursor(void *scPtr, int whichOne);
+typedef int (*__Player_VF3D4_type)(void*);
+inline int Player_VF3D4(void *self) {
+ VF_BEGIN(__Player_VF3D4_type, self, 245, 0x60)
+ return VF_CALL(self);
+ VF_END;
+}
+
#endif
diff --git a/kamek_pal.x b/kamek_pal.x
index 9b53a8e..67e1186 100644
--- a/kamek_pal.x
+++ b/kamek_pal.x
@@ -729,6 +729,7 @@ SECTIONS {
removeFromList__13ActivePhysicsFv = 0x8008c380;
addToList__13ActivePhysicsFv = 0x8008C330;
initWithStruct__13ActivePhysicsFP8dActor_cPCQ213ActivePhysics4Info = 0x8008C3E0;
+ bottom__13ActivePhysicsFv = 0x8008C4F0;
globalListHead__13ActivePhysics = 0x8042A140;
diff --git a/src/shyguyGiants.cpp b/src/shyguyGiants.cpp
index e2532f1..3088825 100644
--- a/src/shyguyGiants.cpp
+++ b/src/shyguyGiants.cpp
@@ -135,6 +135,21 @@ daShyGuyGiant *daShyGuyGiant::build() {
void daShyGuyGiant::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) {
apOther->someFlagByte |= 2;
+ dStageActor_c *player = apOther->owner;
+
+ if (Player_VF3D4(player)) {
+ // WE'VE GOT A STAR, FOLKS
+ if (apThis->_18 == 1 && !player->collMgr.isOnTopOfTile() && player->pos.y > apThis->bottom()) {
+ bouncePlayer(player, 3.0f);
+ PlaySound(this, SE_EMY_CMN_STEP);
+ } else {
+ dAcPy_vf3F8(player, this, 3);
+ }
+ this->counter_504[apOther->owner->which_player] = 0xA;
+
+ return;
+ }
+
char hitType;
hitType = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0);
if (hitType == 1) { // regular jump
@@ -191,7 +206,7 @@ daShyGuyGiant *daShyGuyGiant::build() {
return true;
}
bool daShyGuyGiant::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){
- int hitType = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0);
+ /*int hitType = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0);
if (hitType == 1 || hitType == 3) {
PlaySound(this, SE_EMY_CMN_STEP);
bouncePlayerWhenJumpedOn(apOther->owner);
@@ -200,7 +215,8 @@ daShyGuyGiant *daShyGuyGiant::build() {
}
this->counter_504[apOther->owner->which_player] = 0xA;
- return true;
+ return true;*/
+ return false;
}
bool daShyGuyGiant::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){