Skip to content
YoungForest edited this page Dec 10, 2017 · 11 revisions

员工系统

主要根据游戏说明书员工部分设计。

人物类 Person

properties:

描述一个人能力的7个属性:
  • gift_ 员工的固有属性,不能改变: number
  • coding_ 编码能力 : number
  • science_ 科研能力 : number
  • art_ 艺术能力 : number
  • creativity_ 创造能力 : number
  • manager_ 管理能力 : number
  • business_ 商业能力 : number
性格:枚举类型
salary_: number

一个人需要的工资

eState state_

这个人目前的状态,可能有:

  • 闲着
  • 工作
  • 休息

状态与这个人物表现出的动作有关(后面加)

具体eState=cc.Enum({ working : 0, free : 1, relaxing : 2

})

雇佣金 employMoney_: number

雇佣这个人时需要的金钱, 雇佣时支付

名字 name_ :string
职业 profession_:枚举类型
index_ 唯一标识码:number
体力:number [0, 100]

初始体力100,开发时每天固定-5,一周恢复满 会有消耗体力的事件,也会有恢复体力的事件

通过休息获得。不同的休息方式获得的体力不同。

休息会损失工作时间,高级的休息方式会消耗金钱。

当体力为0时,员工将自动回家休息一周再满体力回来。

心情:number [0, 10]

不同心情对员工当前工作属性有影响。每次员工上班随机初始化一个心情值,可以通过公司活动来调节员工心情值(可能可以调节一段时间内员工的心情随机初始值)。活动会花费金钱和员工的工作时间。

  • 很差[0-1]:80%
  • 差[2-3]:90%
  • 一般[4-6]:100%
  • 好[7-8]:110%
  • 很好[9-10]:120%

Functions:

double develop(double manager, Number n, Project project, boolean flag)

表示开发工作,manager是项目开发组的最大管理能力最高的人的管理能力,n表示项目开发组的人数,project表示要开发的项目

按照下面的公式,计算增加的点数(不清楚可以查看游戏说明文档)

功能点增加:F = (1 / (n ^ (50 / (manager + 50)))) * (this.coding_ / 10) * (rand(0.9 , 1.1))

性能点增加:P = (1 / (n ^ (50 / (manager + 50)))) * (this.science_ / 10) * (rand(0.9 , 1.1))

体验点增加:E = (1 / (n ^ (50 / (manager + 50)))) * (this.art_ / 10) * (rand(0.9 , 1.1))

创意点增加:I = (1 / (n ^ (50 / (manager + 50)))) * (this.creativity_ / 10) * (rand(0.9 , 1.1))

结算时还要考虑暴击

暴击:结算时有一定的概率产生暴击,产生暴击后该员工产生的点数会变为原来的暴击倍率倍。

暴击率 = this.creativity_ /(this.creativity_ +200)

暴击倍率 = 1+(5*sqrt(this.science_ ))/100

再调用四次project.augment(attribute,increase)方法分别增加对应的点数

其中attribute是一个eAttri枚举变量,规定如下:

var eAttri = cc.Enum({ function : 0, performance : 1, entertainment : 2, innovative : 3, });

只有在员工处于工作状态,且flag为true时才会贡献点数,这里flag表示是否处于开发状态

最后返回增加的功能点数F,以便于bug减少机制的计算

begin()

this.state_ = eState.working

stop()
  1. this.state_ = eState.free
setSalary(double salary) 和 getSalary()
setEmployMoney(double money) 和 getEmployMoney()
setName(string name) 和 getName()
getAbility()和setAbility(object ability)
getProfession()和setProfession(string profession)
init(PersonInfo person)

根据person初始化自己相应的值,PersonInfo是初始人物的属性,具体规定在PersonInfo文件,因为目前人物还没设计详细,故这里先不管

sendSticker(Sticker)
speakSomething(Saying)
moodIncrement(value: number)

枚举类型

性格

  • B级性格: 75%
    • 图王(imageKing):没什么加成,喜欢发表情,这个与UI有关
    • 唠叨(blabla):没什么加成,就是话多,很少看到10个字以内的话
    • 寡言(slience):没什么加成,就是话少,最喜欢省略号
    • 逗逼(funny):集成了图王和唠叨的所有缺(划)优点,以下技能每周触发一次: 有25%概率使项目组中的某一个人心情+1;有25%概率使项目组中的某一个人心情+3; 有5%概率不贡献任何点数
    • 冷静(calm):暴击率-10%,无视20%任务难度
    • 乐天(optimist):心情肯定大于等于5
    • 认真(serious):开发时额外增加5%点数,参与项目bug数量降低30%
    • 好胜(ambition):同项目组中如果有比他能力强的人,则开发时额外增加10%点数
    • 不屈(unyielding):体力为0时仍可以继续工作1周
    • 体贴(thoughtful):同项目组中所有人的心情+1
    • 敏锐(keen):暴击率增加5%,暴击倍率增加5%
    • 执着(persistent):获得科研点数有50%概率增加50%
  • A级性格:25%
    • 稳重(steady):暴击率-5%,无视30%任务难度
    • 乐观(bigOptimist):心情肯定大于等于7
    • 实干(hardWork):开发时额外增加10%点数,参与项目bug数量降低50%
    • 野心(bigAmnition):若是项目组中能力最强的人,将提升所有人10%点数;若不是则自己增加额外10%点数。
    • 逆境(adversity):体力为0时仍可以继续工作1周,且该周暴击倍率增加100%
    • 辅佐(adjuvant):同项目组中所有人的心情+2
    • 鬼才(ghost):暴击率增加10%,暴击倍率增加10%
    • 天才(genius):获得科研点数增加50%
  • S级神秘性格:5%
    • 洞察(insight):如果参与测试阶段,所有bug将被发现
    • 攻坚(storming):无视项目难度20%,结算点数时额外增加剩余功能点数的8%(该点数无视任务难度),一周触发一次。
    • 灵性(spirituality):增加项目点数时有30%概率使增加点数翻倍,可叠加暴击

表情

  • 表情1
  • 表情2

  • ……
  • 话1

活动

  • 活动1
  • 活动2›

职业

  • 营销人员
  • 维护人员
  • 开发人员

员工状态

  • 闲着
  • 工作
  • 休息

Clone this wiki locally