Jump to content

Power Plant Plight Info


Lemon

Recommended Posts

Where was it before?

Btw, I'll be giving it a try myself today or tomorrow and see if we can get stuff up and running.

Nvm, just downloaded and got to try it.

Few things right away:

- Is it intentional that the description says "Regal"?

- You could disable player's movement when Elly is talking to you at the very beginning in CCA's entrance... so when you skip the chat bubbles, you don't attack.

- I got stuck in the areas 5 - 6 - 7, the portal in 5 was behind the fence and I hit the switch at 7... what to do? /lobby ?

Edited by Soly
  • Like 2
Link to comment
Share on other sites

Where was it before?

Btw, I'll be giving it a try myself today or tomorrow and see if we can get stuff up and running.

Nvm, just downloaded and got to try it.

Few things right away:

- Is it intentional that the description says "Regal"?

- You could disable player's movement when Elly is talking to you at the very beginning in CCA's entrance... so when you skip the chat bubbles, you don't attack.

- I got stuck in the areas 5 - 6 - 7, the portal in 5 was behind the fence and I hit the switch at 7... what to do? /lobby ?

First off, Thank you for the great feedback! I'll go at them 1 at a time.

- No, thanks for catching that typo.

- Never even thought to try that... I put in the fix

- So the switch along the room 7 wall in room 6 actually opens up the laser gate in room 16. You are suppose to split your party in room 3. Half going through the warp and the other half going through the door into room 4. The switches on each path let the other path proceed. It was my attempt at forcing multiplayer and cooperation.

Though now the boss warp doesn't work x,.,x I'll fix before I put up another version.

Edited by Lemon
  • Like 2
Link to comment
Share on other sites

Didn't think I'd need you this quick, but I decided to do away with the boss warp (because I had no idea what was up with it) and put in a computer like the one at the beginning of roct. When you talk to the computer, function 200 is suppose to run. it disables player movement, yet it seems to not thread functions 212 or 210. And even though R76 is equal to 2, it won't continue with function 222 (if it ever gets there, which I'm not sure actually happens). Just freezes them at the computer. Maybe a fresh set of eye's will see the problem. Any ideas?

pasm script below

0:      set_episode 00000001
        set_qt_exit 1
        set_qt_cancel 1
        set_qt_success 20
        set_qt_failure 30
        set_floor_handler 00000000, 1
        set_floor_handler 00000005, 100
        set_floor_handler 0000000C, 9
        BB_Map_Designate 00, 0012, 00, 00
        BB_Map_Designate 05, 0017, 00, 00
        BB_Map_Designate 06, 001E, 00, 00
        initial_floor 00000005
        get_slotnumber R250
        get_difflvl2 R252
        p_disablewarp 
        get_number_of_player1 R251
        ret 
1:      ret 
9:      thread 10
        ret 
10:     jmpi_= R255, 00000001, 1
        leti R2, 00000006
        leti R3, 00000001
        if_zone_clear R2, R3
        let R255, R2
        jmpi_= R255, 00000000, 10
        sync_register R255, 00000001
        jmp 1
20:     window_msg 'You completed the quest.  This is only a beta<cr>so you don't get any prize.<cr>Please post your thoughts on the forums.'
        winend 
        ret 
30:     window_msg 'WOW... you broke the quest.... Please post on the forums what you did<cr>so the creator can fix it.'
        winend 
        ret 
100:    hud_hide 
        freeze_and_hide_equip 
        p_action_disable 
        cine_enable 
        thread 500
        disable_movement1 00000000
        disable_movement1 00000001
        disable_movement1 00000002
        disable_movement1 00000003
        window_msg 'looks like the portal worked.  Elly here.<cr>The power plant has been overrun by monsters.'
        window_msg 'You must clear them out before too much damage is done<cr>if we ever plan on colonizing Regol.'
        window_msg 'Good luck!'
        winend 
        thaw_and_show_equip 
        p_action_enable 
        cine_disable 
        enable_movement1 00000000
        enable_movement1 00000001
        enable_movement1 00000002
        enable_movement1 00000003
        hud_show 
        warp_on 
        p_disablewarp 
        ret 
200:    switch_call R251, 4:1:212:213:214
        thread 210
        disable_movement2 R250
        switch_jmp R250, 4:201:202:203:204
201:    sync_register R70, 00000001
        ret 
202:    sync_register R71, 00000001
        ret 
203:    sync_register R72, 00000001
        ret 
204:    sync_register R73, 00000001
        ret 
500:    sync 
        leti R75, 00000000
        add R75, R70
        add R75, R71
        add R75, R72
        add R75, R73
        let R76, R75
        switch_call R76, 2:10001:10002
        jmp 500
222:    sync 
        jmpi_!= R76, 00000002, 222
        leti R80, 0000000C
        enable_movement2 R250
        go_floor R250, R80
        ret 
10001:  sync_register R76, 00000001
        ret 
10002:  sync_register R76, 00000002
        ret 
223:    sync 
        leti R75, 00000000
        add R75, R70
        add R75, R71
        add R75, R72
        add R75, R73
        let R76, R75
        jmpi_!= R75, 00000003, 223
        leti R80, 0000000C
        winend 
        enable_movement2 R250
        go_floor R250, R80
        ret 
224:    sync 
        leti R75, 00000000
        add R75, R70
        add R75, R71
        add R75, R72
        add R75, R73
        let R76, R75
        jmpi_!= R75, 00000004, 224
        leti R80, 0000000C
        winend 
        enable_movement2 R250
        go_floor R250, R80
        ret 
210:    leti R80, 00000000
        sync 
        scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.'
        sync 
        sync 
        sync 
        winend 
        jmp 210
212:    thread 222
        ret 
213:    thread 223
        ret 
214:    thread 224
        ret 
1000:   window_msg 'R76 = <r76> = <r70> + <r71> + <r72> + <r73><cr>Players = <r251>'
        winend 
        ret 

Link to comment
Share on other sites

Ugh... had some good reply... but a tiny blackout and all to the trashcan...
Here we go again

First of all... the thread is just like any other multi threading in programming? .. the function doing stuff in the background until it finishes?

disable_movement1 00000000
enable_movement1 00000000 

These you should use the other one that takes a register... there is no point in freezing other clients

that might not be there... and the other function seems to be the "standard"

200: switch_call R251, 4:1:212:213:214
  thread 210
  disable_movement2 R250
  switch_jmp R250, 4:201:202:203:204 

What's all this function 200 (and the 21X and 22X) for?
Is just to get all the players in the same place?
I think it could be better but can't think of anything right now looking at the spoiler, need to mess in QEdit with it

210:    leti R80, 00000000
        sync
        scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.'
        sync
        sync
        sync
        winend
        jmp 210
 

That's a loop without exit, because:

-You never really wait until the message is done (check when R85 is set)

-You close the message right away, nobody is gonna see that

-You jump to leti R80, 0 which will then sync and send the message again, aka rinse and repeat getting stuck

You need something like this

210:     sync
         scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.'
// Use other number, I think 211 is taken		 
2100:    sync
         sync
         sync
         jmpi_= R85, 00000000, 2100 // if R85 == 0, jump to the sync, wait again
         winend  //close message
         clear R85 //clear register if needed
         ret

having solved this bug in the scroll_text... I think you could make an easier approach for syncing registers dedicating a single register to all clients (although it could cause issues if someone lags)

For example

R100 = 0; // whether or not a player has gone down a specific pipe

if (player1 goes down)
	R100 += 0x00000001;
	sync_to_all;
if (player2 goes down)
	R100 += 0x00000010;
	sync_to_all;
if (player3 goes down)
	R100 += 0x00000100;
	sync_to_all;
if (player4 goes down)
	R100 += 0x00001000;
	sync_to_all;

switch (number_of_players)
{
	case 1:
		if (R100 == 0x00000001)
			// everybody is down
	case 2:
		if (R100 == 0x00000011)
			// everybody is down
	case 3:
		if (R100 == 0x00000111)
			// everybody is down
	case 4:
		if (R100 == 0x00001111)
			// everybody is down
}

Edited by Soly
  • Like 2
Link to comment
Share on other sites

Ugh... had some good reply... but a tiny blackout and all to the trashcan...

Here we go again

First of all... the thread is just like any other multi threading in programming? .. the function doing stuff in the background until it finishes?

disable_movement1 00000000
enable_movement1 00000000 

These you should use the other one that takes a register... there is no point in freezing other clients

that might not be there... and the other function seems to be the "standard"

200: switch_call R251, 4:1:212:213:214
  thread 210
  disable_movement2 R250
  switch_jmp R250, 4:201:202:203:204 

What's all this function 200 (and the 21X and 22X) for?

Is just to get all the players in the same place?

I think it could be better but can't think of anything right now looking at the spoiler, need to mess in QEdit with it

210:    leti R80, 00000000
        sync
        scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.'
        sync
        sync
        sync
        winend
        jmp 210
 

That's a loop without exit, because:

-You never really wait until the message is done (check when R85 is set)

-You close the message right away, nobody is gonna see that

-You jump to leti R80, 0 which will then sync and send the message again, aka rinse and repeat getting stuck

You need something like this

210:     sync
         scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.'
// Use other number, I think 211 is taken		 
2100:    sync
         sync
         sync
         jmpi_= R85, 00000000, 2100 // if R85 == 0, jump to the sync, wait again
         winend  //close message
         clear R85 //clear register if needed
         ret

having solved this bug in the scroll_text... I think you could make an easier approach for syncing registers dedicating a single register to all clients (although it could cause issues if someone lags)

For example

R100 = 0; // whether or not a player has gone down a specific pipe

if (player1 goes down)
	R100 += 0x00000001;
	sync_to_all;
if (player2 goes down)
	R100 += 0x00000010;
	sync_to_all;
if (player3 goes down)
	R100 += 0x00000100;
	sync_to_all;
if (player4 goes down)
	R100 += 0x00001000;
	sync_to_all;

switch (number_of_players)
{
	case 1:
		if (R100 == 0x00000001)
			// everybody is down
	case 2:
		if (R100 == 0x00000011)
			// everybody is down
	case 3:
		if (R100 == 0x00000111)
			// everybody is down
	case 4:
		if (R100 == 0x00001111)
			// everybody is down
}

Thank you so much, I was thinking about it all wrong. I think I've got it all working now. I'm going to run more tests tonight, and fix those annoyingly green switches in room 9 before I release 1.03.

Link to comment
Share on other sites

Ok, it seemed to work when I was duo\trio\quad logging. I intentionally put it in a loop on solo so that cheaters couldn't win.

Thank you Soly and Mud for all you're help and suggestions!

  • Like 1
Link to comment
Share on other sites

Oh... that would work really well too... can't believe I didn't think of it. Implemented.

Link to comment
Share on other sites

Added a count up timer since time attack seems to be a thing now. I figured I'd do it now while it wasn't a major thing. As of now it counts up until you win, and then freezes the timer (which displays in all areas) so that you can take a picture if you want. v1.04 does not have any of these changes, so it can act as a fallback.

Changes to script.

0:      set_episode 00000001
        set_qt_exit 1
        set_qt_cancel 1
        set_qt_success 20
        set_qt_failure 30
        set_floor_handler 00000000, 2
        set_floor_handler 00000005, 100
        set_floor_handler 0000000C, 9
        BB_Map_Designate 00, 0012, 00, 00
        BB_Map_Designate 05, 0017, 00, 00
        BB_Map_Designate 0C, 001E, 00, 00
        initial_floor 00000005
        get_slotnumber R250
        get_difflvl2 R252
        p_disablewarp 
        get_number_of_player1 R251
        ret 
1:      ret 
// New handler for labo
// This will allow us to display the time
2:      window_time 
        winset_time R51
        thread 20001
        ret
9:      thread_stg 10
        // This lets timer run during Gal fight
        window_time 
        winset_time R51
        thread 20001
        ret 
10:     jmpi_= R255, 00000001, 1
        sync 
        leti R2, 0000000C
        clear R255
        leti R3, 00000001
        if_zone_clear R255, R2
        jmpi_= R255, 00000000, 10
        sync_register R255, 00000001
        jmp 1
20:     window_msg 'You completed the quest.  This is only a beta<cr>so you dont get any prize.<cr>Please post your thoughts on the forums.'
        winend 
        ret 
30:     window_msg 'WOW... you broke the quest.... Please post on the forums what you did<cr>so the creator can fix it.'
        winend 
        ret 
100:    hud_hide 
        freeze_and_hide_equip 
        // start the timer when they start the quest
        thread 20000
        p_action_disable 
        p_disablewarp 
        cine_enable 
        disable_movement2 R250
        jmpi_= R251, 00000001, 10000
        window_msg 'Looks like the portal worked.  Elly here.<cr>The power plant has been overrun by monsters.'
        add_msg 'You must clear them out before too much damage is done<cr>if we ever plan on colonizing Ragol.'
        add_msg 'Good luck!'
        winend 
        thaw_and_show_equip 
        p_action_enable 
        cine_disable 
        enable_movement2 R250
        hud_show 
        warp_on 
        p_disablewarp 
        ret 
10000:  window_msg 'This is a multiplayer quest. <cr>Please find a team to play with.'
        winend 
        QEXIT 
        ret 
200:    thread_stg 210
        switch_call R250, 4:201:202:203:204
2000:   clear R75
        sync 
        get_number_of_player1 R251
        add R75, R70
        add R75, R71
        add R75, R72
        add R75, R73
        get_number_of_player1 R251
        jmp_!= R251, R75, 2000
        leti R80, 0000000C
        go_floor R250, R80
        ret 
201:    sync_register R70, 00000001
        ret 
202:    sync_register R71, 00000001
        ret 
203:    sync_register R72, 00000001
        ret 
204:    sync_register R73, 00000001
        ret 
210:    leti R85, 00000000
        sync 
        scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.'
215:    sync 
        sync 
        sync 
        jmpi_= R85, 00000000, 215
        winend 
        jmp 210



// This starts the timer
20000:  sync 
        clear R50
        window_time 
        // R49 is reserved for start time
        // It never gets changed
        gettime R49
        clear R51
        // Now loop the next 3 lines 30 times
        // since each loop is 1 frame and
        // the game runs 30 frames per second
20001:  sync 
        jmpi_= R255, 00000001, 1
        addi R50, 00000001
        jmpi_< R50, 0000001E, 20001
        // Roughly a second has passed
        // display currentTime - startTime
        gettime R51
        sub R51, R49
        winset_time R51
        // If we havent beaten the quest go back
        // and wait another second and update again
        clear R50
        jmpi_!= R255, 00000001, 20001

Edited by Lemon
  • Like 1
Link to comment
Share on other sites

You left the portal visible at the beginning of CCA xD

oh... wow.... well that would have made for a very short quest...

EDIT: If you haven't already changed that, I just re-uploaded.

Edited by Lemon
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...