def on_kitchen_trap(player, entity, x, y): example.remove(entity.id) s = Script() s.add_action(al.create_item('seagull')) s.add_action(actions.Animate(tag='seagull', anim='fly', sync=True)) s.add_action(actions.Animate(tag='seagull', anim='eat')) s.add_action(actions.SetVariable("game.seagull_on_plank", True)) example.play(s)
def seagull_lands(): s = Script() if 'fish' in mopy.monkey.engine.data.globals.inventory: s.add_action(actions.Animate(tag='seagull', anim='leave', sync=True)) s.add_action(al.remove_item('seagull')) else: s.add_action(actions.Animate(tag='seagull', anim='eat')) example.play(s)
def helper_swordmaster_sign(x, anim, bridge): s = a.Scripts.walk(x) s.add_action(actions.Animate(tag='player', anim='operate_e')) s.add_action(actions.Animate(tag='player', anim='idle_e')) s.add_action(actions.Animate(tag='swordmaster_sign', anim=anim)) s.add_action(actions.Animate(tag='trunk_bridge', anim=anim)) s.add_action(a.custom_actions.set_variable('@vars/forest_bridge', anim)) s.add_action(scumm.actions.SetWall('walkarea_0', 0, bridge)) example.play(s)
def on_kitchen_trap(trap): example.remove(trap.id) s = entity.Sprite(model='01/seagull', tag='seagull',pos=[0, 0, 1]) id = example.get('main').add(s) script = Script() script.add_action(actions.Animate(entity_id=id, anim='fly', sync=True)) script.add_action(actions.Animate(entity_id=id, anim='eat')) script.add_action(actions.CallFunc(f=a.Callbacks.set_var("@seagull_on_plank", True))) example.play(script)
def pickup_fish(item_id, entity): if item_id in vars.inventory: return s = a.Scripts.walk(item_id) s.add_action(actions.Animate(tag='player', anim='kneel_s')) s.add_action(actions.Delay(sec=0.5)) if vars.seagull_on_plank: s.add_action(scumm.actions.Say(lines=[monkey.engine.read(x) for x in ['$lines/38']], font='monkey', tag='player')) else: s.add_action(actions.Animate(tag='player', anim='idle_s')) s.add_action(actions.CallFunc(f=a.Callbacks.pickup(item_id, entity.id))) example.play(s)
def pickup_fish(item_id, e): data = mopy.monkey.engine.data if item_id in data.globals.inventory: return s = sl.walk_to(item_id) s.add_action(actions.Animate(tag='player', anim='kneel_s')) s.add_action(actions.Delay(sec=0.5)) if data.game.seagull_on_plank: s.add_action(actions.Say(lines=['$lines/38'], tag='player')) else: s.add_action(actions.Animate(tag='player', anim='idle_s')) s.add_action(al.pickup_item(item_id, e.id)) s.add_action(actions.SetVariable('game.fish_not_taken', False)) example.play(s)
def open_scummbar_kitchen_door(aa, ba): cook: example.Wrap1 = example.get('cook') if cook.valid: print('Cook is in kitchen @ ' + str(cook.x)) else: print('Cook is not in kitchen') if not cook.valid: s = a.Scripts.walk('scummbar_kitchen_door') s.add_action(actions.Animate(tag='scummbar_kitchen_door', anim='open')) s.add_action(actions.Msg(text=monkey.engine.read('$lines/32'), font='monkey', pos=(609, 78), color=vars.colors.cook_text_color)) s.add_action(actions.Msg(text=monkey.engine.read('$lines/34'), font='monkey', pos=(609, 78), color=vars.colors.cook_text_color)) s.add_action(actions.Animate(tag='scummbar_kitchen_door', anim='closed')) example.play(s) else: cook_upset(aa, ba, True)
def cook_upset(cook, s): f = cook.flipx s.add_action(actions.SuspendScript(s='cook')) s.add_action(actions.Turn(tag='cook', dir='e')) s.add_action(actions.Say(lines=['$lines/32', '$lines/33'], tag='cook')) s.add_action(actions.Turn(tag='cook', dir='w')) s.add_action(actions.Animate(tag='cook', anim='walk_e', flipx=f)) s.add_action(actions.ResumeScript(s='cook'))
def buy_map(s, *args): bb = shc('$dialogues/citizen/') s.add_action(scumm.actions.Say(tag='player', font='monkey', lines=bb([36])), id=1) s.add_action(actions.Animate(tag='player', anim='operate_e'), after=[1]) s.add_action(actions.Animate(tag='citizen', anim='givemap', sync=True), after=[1], id=2) s.add_action(scumm.actions.Say(tag='citizen', font='monkey', lines=bb([37]), animate=False), after=[1]) s.add_action(actions.Animate(tag='player', anim='idle_e'), after=[2]) s.add_action(actions.Animate(tag='citizen', anim='idle_s'), after=[2]) s.add_action(a.custom_actions.add_to_inventory('map'))
def citizen_map(s, *args): bb = shc('$dialogues/citizen/') s.add_action(a.custom_actions.set_variable("@talked_to_citizen", 2)) s.add_action( scumm.actions.Say(tag='player', font='monkey', lines=bb([args[0]]))) s.add_action( scumm.actions.Say(tag='citizen', font='monkey', lines=bb(args[1]))) # # business s.add_action( scumm.actions.Say(tag='citizen', font='monkey', lines=bb([18]))) s.add_action(actions.Animate(tag='citizen', anim='open_jacket', sync=True)) s.add_action(actions.Animate(tag='citizen', anim='idle_e_1', sync=True)) s.add_action(actions.Delay(sec=1)) s.add_action(actions.Animate(tag='citizen', anim='talk_e_1', sync=True)) s.add_action( scumm.actions.Say(tag='citizen', font='monkey', animate=False, lines=bb([19]))) s.add_action(actions.Animate(tag='citizen', anim='idle_e_1', sync=True)) s.add_action(actions.Delay(sec=1)) s.add_action( actions.Animate(tag='citizen', anim='open_jacket', sync=True, fwd=False)) s.add_action( scumm.actions.Say(tag='citizen', font='monkey', lines=bb([20]))) s.add_action(actions.Animate(tag='citizen', anim='rollmap', sync=True)) s.add_action(actions.Animate(tag='citizen', anim='idle_e_2', sync=True)) s.add_action(actions.Delay(sec=1)) s.add_action(actions.Animate(tag='citizen', anim='talk_e_2', sync=True)) s.add_action( scumm.actions.Say(tag='citizen', font='monkey', animate=False, lines=bb([21, 22]))) s.add_action(actions.Animate(tag='citizen', anim='idle_e_2', sync=True)) s.add_action( actions.Animate(tag='citizen', anim='rollmap', sync=True, fwd=False)) s.add_action( scumm.actions.Say(tag='citizen', font='monkey', lines=bb([23]))) example.play(s)
def cook_init_helper(s, id): s.add_action(actions.Delay(sec=5), id=id) s.add_action(actions.CallFunc(f=a.openDoor('scummbar_kitchen_door', 'open'))) s.add_action(actions.CallFunc(f=a.Callbacks.add_item('cook', {'pos': '@pos/scummbar_kitchen_door', 'parent': 'walkarea_0'}))) s.add_action(scumm.actions.Walk(tag='cook', pos=(115, 18))) s.add_action(scumm.actions.Turn(tag='cook', dir='n')) s.add_action(actions.Delay(sec=2)) s.add_action(scumm.actions.Walk(tag='cook', pos=vars.pos.scummbar_kitchen_door)) s.add_action(actions.RemoveEntity(tag='cook')) s.add_action(actions.Animate(tag='scummbar_kitchen_door', anim='closed'))
def pane(a, b, c): s = sl.walk_to('plank') s2 = Script() s2.add_action(actions.Animate(tag='player', anim='push_plank')) s2.add_action(actions.Delay(sec=0.3), id=1) s2.add_action(actions.Animate(tag='player', anim='idle_s'), after=[1]) s2.add_action(actions.Animate(tag='plank', anim='pushed', sync=True), after=[1]) s2.add_action(actions.Animate(tag='plank', anim='idle')) ss = example.get('seagull') if ss.valid: s2.add_action(actions.SetVariable("game.seagull_on_plank", False)) s2.add_action( actions.Animate(tag='seagull', anim='jump' + str(mopy.monkey.engine.data.game.seagull_jump), sync=True)) s2.add_action(actions.SetVariable("game.seagull_on_plank", True)) s2.add_action(actions.CallFunc(f=seagull_lands)) mopy.monkey.engine.data.game.seagull_jump = 2 if mopy.monkey.engine.data.game.seagull_jump == 1 else 1 s.add_action(actions.RunScript(s2)) example.play(s)
def on_load_forest7(): if example.get('storekeeper').valid: s = Script() s.add_action(a.custom_actions.disable_controls) s.add_action(scumm.actions.Walk(tag='storekeeper', pos=(160, 20))) s.add_action(actions.Delay(sec=0.5)) s.add_action(actions.Animate(tag='swordmaster_sign', anim='activated')) s.add_action(actions.Animate(tag='trunk_bridge', anim='activated')) s.add_action( a.custom_actions.set_variable('@forest_bridge', 'activated')) s.add_action(scumm.actions.SetWall('walkarea_0', 0, False)) s.add_action(scumm.actions.Walk(tag='storekeeper', pos=(320, 47))) s.add_action(actions.SetActive(tag='storekeeper', value=False)) s.add_action( a.custom_actions.update_item(item_id='storekeeper', room='swordmaster', pos=(144, 20), dir='e', parent='walkarea_0', size=None)) s.add_action( a.custom_actions.set_timestamp('@storekeeper_last_update')) s.add_action(a.custom_actions.enable_controls) example.play(s)
def enter_door(x): if mopy.monkey.engine.data.globals.active_warp is not None: warp_id =mopy.monkey.engine.data.globals.active_warp mopy.monkey.engine.data.globals.active_warp = None door_info = mopy.monkey.engine.data.globals.doors[warp_id] s = Script() args = door_info.get('args',None) print('args=' +str(args)) s.seq([ act.SetState(tag='player', state='knock'), act.Delay(sec=0.1), act.Animate(tag='door_' + str(warp_id), anim='open'), act.ChangeRoom(room=door_info['room'], args=args) ]) example.play(s)
def cook_upset(aa, ba, open_door): # cook is in scummbar if open_door: s = a.Scripts.set_door('open')(aa, ba) else: s = a.Scripts.walk('scummbar_kitchen_door') rv = monkey.engine.read cook: example.Wrap1 = example.get('cook') if cook.valid and cook.x > 320: s.add_action(actions.SuspendScript(s='cook')) s.add_action(scumm.actions.Turn(tag='cook', dir='e')) s.add_action(scumm.actions.Say(lines=[rv('$lines/32'), rv('$lines/33')], tag='cook', font='monkey')) s.add_action(scumm.actions.Turn(tag='cook', dir='w')) s.add_action(actions.Animate(tag='cook', anim='walk_e')) s.add_action(actions.ResumeScript(s='cook')) example.play(s)
def init_scummbar(): if monkey.engine.previous_room == 'kitchen': s = Script(loop=100, uid='cook') s.add_action(actions.CallFunc(f=a.Callbacks.add_item('cook', {'pos': (115, 18), 'parent': 'walkarea_0'}))) s.add_action(scumm.actions.Turn(tag='cook', dir='n')) s.add_action(actions.Delay(sec=2)) s.add_action(scumm.actions.Walk(tag='cook', pos = vars.pos.scummbar_kitchen_door)) s.add_action(actions.RemoveEntity(tag='cook')) s.add_action(actions.Animate(tag='scummbar_kitchen_door', anim='closed')) cook_init_helper(s, 100) example.play(s) else: s = Script(loop=0, uid='cook') cook_init_helper(s, 0) example.play(s) anim_helper('scummbar_mancomb') anim_helper('scummbar_estevan')
def ask_for_sword_master(s, *args): s.add_action(scumm.actions.Say(tag='player', font='monkey', lines=sh([38]))) #s.add_action(scumm.actions.Say(tag='storekeeper', font='monkey', lines=sh([39, 40, 41, 42, 43, 44, 45, 46, 47]))) s.add_action( scumm.actions.Walk(tag='storekeeper', pos=status.pos.store_entry)) #s.add_action(scumm.actions.Turn(tag='storekeeper', dir='e')) #s.add_action(scumm.actions.Say(tag='storekeeper', font='monkey', lines=sh([52]))) #s.add_action(scumm.actions.Turn(tag='storekeeper', dir='w')) s.add_action(actions.SetActive(tag='storekeeper', value=False)) s.add_action(actions.Animate(tag='store_door', anim='closed')) s.add_action( a.custom_actions.update_item(item_id='storekeeper', room='village3', pos=(683, 10), dir='e', parent='walkarea_0', size=None)) s.add_action(a.custom_actions.set_timestamp('@storekeeper_left_store')) s.add_action(a.custom_actions.set_timestamp('@storekeeper_last_update'))
def on_click_plank(x, y, pippo): s = a.Scripts.walk('plank') s2 = Script() s2.add_action(actions.Animate(tag='player', anim='push_plank')) s2.add_action(actions.Delay(sec=0.3), id=1) s2.add_action(actions.Animate(tag='player', anim='idle_s'), after=[1]) s2.add_action(actions.Animate(tag='plank', anim='pushed', sync=True), after=[1]) s2.add_action(actions.Animate(tag='plank', anim='idle')) s2.add_action(actions.CallFunc(f=a.Callbacks.set_var("@seagull_on_plank", False)), after=[1]) s2.add_action(actions.Animate(tag='seagull', anim='jump' + str(vars.seagull_jump), sync=True)) s2.add_action(actions.CallFunc(f=a.Callbacks.set_var("@seagull_on_plank", True))) s2.add_action(actions.Animate(tag='seagull', anim='eat')) vars.seagull_jump = 2 if vars.seagull_jump == 1 else 1 s.add_action(actions.RunScript(s2)) example.play(s)
def give_pot_alfredo(item, id): s = a.Scripts.walk('alfredo') s.add_action(a.custom_actions.disable_controls) s.add_action(actions.SetVariable('@circus_feat_done', 1)) s.add_action(actions.Animate(tag='player', anim='circus_cutscene_1', sync=True)) s.add_action(scumm.actions.Say(tag='bill', font='monkey', lines=[gl(82)])) s.add_action(actions.Animate(tag='player', anim='circus_cutscene_1', fwd=False, sync=True)) s.add_action(actions.Animate(tag='player', anim='idle_s')) s.add_action(scumm.actions.Say(tag='alfredo', font='monkey', lines=[gl(83)])) s.add_action(scumm.actions.Say(tag='bill', font='monkey', lines=[gl(84)]), id=1) s.add_action(scumm.actions.Walk(tag='alfredo', pos=(333, 1)), after=[1], id=2) s.add_action(scumm.actions.Walk(tag='bill', pos=(296, 24)), after=[1], id=3) s.add_action(scumm.actions.Walk(tag='player', pos=(250, 24)), after=[1], id=4) s.add_action(actions.Scroll(pos=(48, 0), relative=True, speed=50, cam ='maincam'), after=[1]) s.add_action(scumm.actions.Turn(tag='alfredo', dir='n'), after=[2], id=5) s.add_action(scumm.actions.Turn(tag='bill', dir='w'), after=[3], id=6) s.add_action(scumm.actions.Turn(tag='player', dir='s'), after=[4], id=7) s.add_action(scumm.actions.Say(tag='alfredo', font='monkey', lines=[gl(85)]), after=[5,6,7]) s.add_action(scumm.actions.Say(tag='bill', font='monkey', lines=[gl(86)])) s.add_action(scumm.actions.Say(tag='alfredo', font='monkey', lines=[gl(87)])) s.add_action(scumm.actions.Walk(tag='player', pos=(264, 23))) s.add_action(scumm.actions.Turn(tag='player', dir='e')) s.add_action(scumm.actions.Say(tag='player', font='monkey', lines=[gl(88)])) s.add_action(scumm.actions.Walk(tag='player', pos=(250, 24))) s.add_action(scumm.actions.Turn(tag='player', dir='s')) s.add_action(actions.Animate(tag='player', anim='circus_cutscene_2', sync=True)) s.add_action(actions.SetActive(tag='player',value=False)) s.add_action(actions.Delay(sec=1), id=10) s.add_action(a.custom_actions.add_item('circus_explosion'), after=[10]) s.add_action(a.custom_actions.add_item('flying_guybrush'), after=[10]) s.add_action(actions.Animate(tag='circus_explosion', anim='default', sync=True), id=11) s.add_action(actions.Animate(tag='flying_guybrush', anim='default', sync=True), id=12) s.add_action(a.custom_actions.remove_item('circus_explosion'), after=[11]) s.add_action(scumm.actions.Say(tag='alfredo', font='monkey', lines=[gl(89)]), after=[12]) s.add_action(scumm.actions.Say(tag='bill', font='monkey', lines=[gl(90)]), id=13) s.add_action(scumm.actions.Walk(tag='alfredo', pos=(87, 29)), after=[13]) s.add_action(scumm.actions.Turn(tag='alfredo', dir='e'), id=14) s.add_action(scumm.actions.Walk(tag='bill', pos=(126, 29)), after=[13]) s.add_action(scumm.actions.Turn(tag='bill', dir='w')) s.add_action(scumm.actions.Say(tag='alfredo', font='monkey', lines=[gl(91)]), after=[14]) s.add_action(scumm.actions.Say(tag='bill', font='monkey', lines=[gl(92)])) s.add_action(a.custom_actions.add_to_inventory('pieces_of_eight', 478)) #{type = scumm.action.remove_from_inventory, args = {id = "kitchen.pot"}}, s.add_action(a.custom_actions.enable_controls) s.add_action(scumm.actions.StartDialogue('fettuccini', 'm3')) example.play(s)
def anim_helper(tag): s1 = Script(loop=0, uid='_' + tag) s1.add_action(actions.DelayRandom(1.0, 5.0)) s1.add_action(actions.Animate(tag=tag, anim='idle_2', sync=True)) s1.add_action(actions.Animate(tag=tag, anim='idle_1')) example.play(s1)
def lookat_map(x, y): s = Script() s.add_action(actions.Animate(tag='player', anim='open_map', sync=True)) example.play(s)