• coolDownTime: thời gian chờ giữa 2 lần thực hiện hành động.
• description: mô tả hành động (để người chơi mới dễ dàng sử dụng).
• limitNumber: số lần tối đa để thực hiện hành động (nếu có giá trị bằng 0 thì hành động không có giới hạn số lần thực hiện).
• coolDownAmount: lượng đếm ngược hiện tại, có giá trị từ 0 đến 1. Khi hành động đang đếm ngược (cooldown) thì biến này sẽ có giá trị là 1 giảm dần về 0. Nếu bằng 0 xem như việc đếm ngược đã hoàn tất.
• currentNumber: số lần thực hiện còn lại của hành động.
• isDisable: hành động có đang bị vô hiệu hóa không (hành động bị vô hiệu hóa khi số lần thực hiện bằng với limitNumber hoặc khi hành động đang đếm ngược hay coolDownAmount > 0).
• StartAction(), ActionInProgress(), EndAction(): mỗi hành động sẽ được chia thành 3 giai đoạn (bắt đầu, đang thực hiện và kết thúc). Ở giai đoạn bắt đầu, script ứng với hành động sẽ thay đổi UI, animation cũng như bật các skill indicator (các hiệu ứng để người chơi dễ dàng chọn mục tiêu), sau khi chọn mục tiêu xong sẽ chuyển sang giai đoạn đang thực hiện (hành động ngồi không cần chọn mục tiêu). Trong giai đoạn đang thực hiện, nếu mục tiêu nằm ngoài tầm thực hiện hành động thì nhân vật sẽ di chuyển đến mục tiêu và thực hiện hành động lên mục tiêu, nếu mục tiêu nằm trong tầm thực hiện thì nhân vật sẽ thực hiện hành động lên mục tiêu ngay. Sau khi thực hiện hành động xong sẽ chuyển sang giai đoạn kết thúc. Ở giai đoạn kết thúc, script sẽ tiến hành đếm ngược (cooldown) hành động, kiểm tra xem đã hết số lần thực hiện chưa để vô hiệu hóa hành động và thay đổi UI đề người chơi biết được những điều đó và cuối cùng là thay đổi animation và trạng thái của nhân vật trước khi thực hiện hành động. Ví dụ: hành động Stealth Kill, khi bắt đầu thì con trỏ chuột sẽ thay đổi để người chơi biết là hành động đang chờ chọn mục tiêu, sau khi chọn mục tiêu phù hợp thì nhân vật sẽ đi đến sau lưng mục tiêu, khi đã đến sau lưng thì nhân vật thực hiện tiêu diệt mục tiêu và sau khi mục tiêu đã bị tiêu diệt thì hành động bắt đầu cooldown và nhân vật trở về trạng thái trước đó.
Từ abstract class ở trên, em đã tạo ra các class con tương ứng với các hành động như đã được mô tả trong thiết kế của game. Các class con này sẽ có những điểm tương đồng với nhau là các thuộc tính và hàm mà nó thừa kế từ class cha nhưng đồng thời chúng cũng sẽ có những điểm riêng biệt tùy theo hành động mà nó mô tả, bởi các hành động có bản chất khác nhau. Các class con này được mô tả như sau:
• CrouchAction: tương ứng với hành động ngồi chung của các nhân vật. Hành động ngồi không có thời gian chờ cũng không có giới hạn số lần sử dụng. Khi kích hoạt hành động ngồi, nhân vật sẽ dừng bất cứ hành động nào hiện tại bằng cách gọi hàm EndAction của hành động đó và biến currentAction của nhân vật sẽ được gán thành CrouchAction. Trong khi hành động ngồi đang được kích hoạt, nhân vật được tự do di chuyển như khi đang idle nhưng hình thức di chuyển là crouch walk. Ngoài ra, nhân vật cũng có thể chạy bằng cách nhấn đúp chuột vào vị trí thích hợp trong màn chơi nhưng khi này hành động ngồi sẽ bị hủy.