Ejemplo n.º 1
0
def use_meat_potostew(item1, item2):
    s = a.Scripts.use_base(item1, item2)
    # do whatever else u need to do
    s.add_action(actions.CallFunc(f=a.Callbacks.rm_from_inventory(item1)))
    s.add_action(actions.CallFunc(f=a.Callbacks.set_item_text(item2, '$objects/stewed_meat')))
    s.add_action(actions.CallFunc(f=a.Callbacks.set_var('@meat_in_pot', True)))
    example.play(s)
Ejemplo n.º 2
0
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'))
Ejemplo n.º 3
0
def init_store():
    # only if storekeeper in store
    if example.get('storekeeper').valid:
        s = Script(uid='_storekeeper')
        s.add_action(
            scumm.actions.Say(tag='storekeeper',
                              font='monkey',
                              lines=a.make_lines(['$dialogues/storekeeper/1'
                                                  ])))
        s.add_action(actions.Delay(sec=5))
        s.add_action(actions.CallFunc(f=say_random))
        s.add_action(actions.CallFunc(f=say_random))
        example.play(s)
Ejemplo n.º 4
0
def init_circus():
    example.get('player').follow(False)
    s = Script(uid='_fettuccini')
    s.on_kill =cane
    rv = monkey.engine.read
    s.add_action(actions.Scroll(pos=(0, 72), cam='maincam', speed=0, relative=False))
    s.add_action(id=1, action=actions.CallFunc(f=a.Callbacks.enable_controls(False)))
    s.add_action(scumm.actions.Walk(tag='player', pos=(178, 9)), after=[1])
    # TODO add after debug
    # if data.circus_data == 0:
    #     s.add_action(asay(1), after=[1])
    #     s.add_action(bsay(2))
    #     s.add_action(asay(3))
    #     s.add_action(bsay(4))
    #     s.add_action(asay(5))
    #     s.add_action(bsay(5))
    #     s.add_action(asay(6))
    #     s.add_action(bsay(7))
    #     s.add_action(asay(8))
    #     s.add_action(bsay(9))
    s.add_action(action=actions.CallFunc(f=a.Callbacks.enable_controls(True)))
    s.add_action(scumm.actions.StartDialogue(dialogue_id='fettuccini'))
    append_script(s)
    s.set_loop(100)
    # --            action.disable_controls
    # {id = 1},
    # --            action.walkto
    # {id = 2, actor = "guybrush", pos = {178, 9}},
    # --            action.say
    # {id = 3, after = {1}, actor = "circus.purpleclown", lines = {d[1]}},
    # --            action.say
    # {id = 4, actor = "circus.greenclown", lines = {d[2]}},
    # --            action.say
    # {id = 5, actor = "circus.purpleclown", lines = {d[3]}},
    # --            action.say
    # {id = 6, actor = "circus.greenclown", lines = {d[4]}},
    # --            action.say
    # {id = 7, actor = "circus.purpleclown", lines = {d[5]}},
    # --            action.say
    # {id = 8, actor = "circus.greenclown", lines = {d[5]}},
    # --            action.say
    # {id = 9, actor = "circus.purpleclown", lines = {d[6]}},
    # --            action.say
    # {id = 10, actor = "circus.greenclown", lines = {d[7]}},
    # --            action.say
    # {id = 11, actor = "circus.purpleclown", lines = {d[8]}},
    # --            action.say
    # {id = 12, actor = "circus.greenclown", lines = {d[9]}},
    # --            action.start_dialogue
    # {id = 13, dialogue = "fettuccini"},
    example.play(s)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
 def f(item_id, entity):
     print('HEY item = ' + item_id)
     s = Scripts.walk(item_id) if item_id else Script()
     s.add_action(
         actions.CallFunc(
             f=Callbacks.set_pos(data.current_player, room, pos, dir)))
     s.add_action(actions.ChangeRoom(room=room))
     example.play(s)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
def pickup_potostew(item, id):
    if vars.meat_in_pot:
        vars.items['meat']['text'] = '$objects/stewed_meat_2'
        vars.items['potostew']['text'] = '$objects/potostew'
        s = a.Scripts.walk(item)
        s.add_action(actions.CallFunc(f=a.Callbacks.pickup_no_remove('meat', id)))
        example.play(s)
    else:
        a.pickup_(item, id)
Ejemplo n.º 9
0
def say_random():
    s = Script(uid='_storekeeper')
    s.add_action(
        scumm.actions.Say(
            tag='storekeeper',
            font='monkey',
            lines=a.make_lines(
                ['$dialogues/storekeeper/' + str(random.randint(2, 9))])))
    s.add_action(actions.Delay(sec=5))
    s.add_action(actions.CallFunc(f=say_random))
    example.play(s)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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')
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
def player_hit_by_enemy(player):

    gl = mopy.monkey.engine.data.globals
    if gl.invincible:
        return
    gl.invincible = True
    if gl.player_mode > 0:
        gl.player_mode -= 1
        player.setModel(gl.player_modes[gl.player_mode]['model'])
        s = Script()
        s.seq([
            act.Blink(duration=gl.invincible_time, blink_duration=0.2, entity_id=player.id),
            act.SetVariable(name='globals.invincible', value=False)])
        example.play(s)
    else:
        player.setState('dead', {})
        s = Script()
        s.seq([
            act.Delay(0.5),
            act.MoveAccelerated(v0=(0, 250), a=(0, -gl.gravity), yStop=0, entity_id=player.id),
            act.CallFunc(restartMario)
        ])
        example.play(s)
Ejemplo n.º 14
0
 def goto_room(cls, room, pos, dir):
     return actions.CallFunc(f=Callbacks.goto_room(room, pos, dir))
Ejemplo n.º 15
0
 def set_follow(cls, value):
     return actions.CallFunc(f=cls._set_follow(value))
Ejemplo n.º 16
0
 def set_timestamp(cls, var):
     return actions.CallFunc(f=cls._set_timestamp(var))
Ejemplo n.º 17
0
 def set_variable(cls, var, value):
     return actions.CallFunc(f=cls._set_variable(var, value))
Ejemplo n.º 18
0
 def rm_from_inventory(cls, item_id):
     return actions.CallFunc(f=Callbacks.rm_from_inventory(item_id))
Ejemplo n.º 19
0
 def update_item(cls, item_id, **kwargs):
     return actions.CallFunc(f=cls._update_item(item_id, **kwargs))
Ejemplo n.º 20
0
 def remove_item(cls, item_id):
     return actions.CallFunc(f=cls._remove_item(item_id))
Ejemplo n.º 21
0
 def f(item_id, entity):
     s = Scripts.walk(item_id)
     s.add_action(actions.CallFunc(f=openDoor(item_id, 'closed')))
     example.play(s)
Ejemplo n.º 22
0
 def enable_controls(cls):
     return actions.CallFunc(f=Callbacks.enable_controls(True))
Ejemplo n.º 23
0
 def add_item(cls, item_id, args=dict()):
     return actions.CallFunc(f=cls._add_item(item_id, args))
Ejemplo n.º 24
0
 def disable_controls(cls):
     return actions.CallFunc(f=Callbacks.enable_controls(False))
Ejemplo n.º 25
0
 def pickup(id, entity_id):
     s = Scripts.walk(id)
     # when you pickup something
     s.add_action(actions.CallFunc(f=Callbacks.pickup(id, entity_id)))
     return s
Ejemplo n.º 26
0
 def pickup_no_remove(id, entity_id):
     s = ScriptFactory.walk(id)
     # when you pickup something
     s.add_action(actions.CallFunc(f=cf_pickup_no_remove(id, entity_id)))
     return s
Ejemplo n.º 27
0
    def f(x, y, z):
        line = l.line
        dialogue = data.dialogues[l.dialogue_id]
        context = dict()
        context['set_text'] = dialogue['text_set']
        if 'activate' in line:
            for node in line['activate']:
                dialogue['lines'][node]['active'] = True
        if 'deactivate' in line:
            for node in line['deactivate']:
                dialogue['lines'][node]['active'] = False
        persist = line.get('persist', False)
        if not persist:
            line['active'] = False
        if 'scr' in line or 'script' in line:
            s = script.Script()
            s.add_action(scumm.actions.HideDialogue())
            if 'scr' in line:
                for a in line['scr']:
                    id = None
                    after = None
                    iafter = 0
                    istart = 0
                    if isinstance(a[0], int):
                        id = a[0]
                        iafter += 1
                        istart += 1
                    if isinstance(a[iafter], list):
                        after = a[iafter]
                        istart += 1
                    action = a[istart]
                    action_factory = dscript.get(action, None)
                    if action_factory is None:
                        print('don''t know action ' + action)
                        exit(1)
                    s.add_action(action_factory(a[istart:], context), id=id, after=after)
                    # if action == 'say':
                    #     ts1 = [str(y) for y in a[4:]]
                    #     s.add_action(scumm.actions.Say(tag=a[3], font='monkey', lines=[monkey.engine.read(x if x[0]=='$' else set_text+'/'+x) for x in ts1]), id=id, after=after)
                    # elif action == 'sayn':
                    #     ts1 = [str(y) for y in a[4:]]
                    #     s.add_action(scumm.actions.Say(animate=False, tag=a[3], font='monkey', lines=[monkey.engine.read(x if x[0]=='$' else set_text+'/'+x) for x in ts1]), id=id, after=after)
                    # elif action == 'set':
                    #     s.add_action(actions.SetVariable(a[3], a[4]))
                    # elif action == 'set_dialogue_root':
                    #     s.add_action(scumm.actions.SetDialogueRoot(a[3], a[4]))
                    # elif action == 'goto':
                    #     scripts.actions.goto_room(s, a[3], monkey.engine.read(a[4]), a[5])

            elif 'script' in line:
                if 'args' in line:
                    getattr(scripts, line['script'])(s, *line['args'])
                else:
                    getattr(scripts, line['script'])(s)
            if 'next' in line:
                s.add_action(scumm.actions.StartDialogue(l.dialogue_id, line['next'], True))
            else:
                # check if dialogue has a on_exit script
                if 'on_exit' in dialogue:
                    s.add_action(actions.CallFunc(f=getattr(scripts, dialogue['on_exit'])))
                else:
                    s.add_action(scumm.actions.ExitDialogue())
            example.play(s)
Ejemplo n.º 28
0
 def add_to_inventory(cls, item_id, qty=1):
     return actions.CallFunc(f=Callbacks.add_to_inventory(item_id, qty))
Ejemplo n.º 29
0
def goto_room(s: Script, room_id, pos, dir):
    print(dir)
    s.add_action(actions.CallFunc(f=f_goto_room(room_id, pos, dir)))
    s.add_action(actions.ChangeRoom(room=room_id))
Ejemplo n.º 30
0
 def f(item_id, entity):
     s = Scripts.walk(item_id)
     aaa = vars.items[item_id]['anim']
     s.add_action(
         actions.CallFunc(f=Callbacks.set_door(entity.id, aaa, value)))
     return s