* GameRule, a lot of prototypes and FTL pending

* some protos

* - add: Magic additions, tweaks and bugfixes.

* - add: Wizard gamerule.

* - tweak: Do not call shuttle.

---------

Co-authored-by: melano <92106367+melanoTurbo@users.noreply.github.com>
This commit is contained in:
Aviu00
2024-06-07 16:02:23 +00:00
committed by GitHub
parent bd60968a9c
commit 4fde7aedee
25 changed files with 6051 additions and 41 deletions

View File

@@ -0,0 +1,17 @@
wizard-title = Wizard
wizard-description = Космический Волшебник посещает станцию, дабы продемонстрировать чудеса своей магии.
objective-issuer-wizards = [color=aqua]Федерация Космических Волшебников[/color]
wizard-not-enough-ready-players = Недостаточно игроков готовы к игре! { $readyPlayersCount } игроков из необходимых { $minimumPlayers } готовы. Нельзя начать режим: Wizard.
wizard-no-one-ready = Нет готовых игроков! Нельзя начать Wizard.
roles-antag-wizard-name = Космический волшебник
roles-antag-wizard-objective = Устройте хаос на станции
wizard-round-end-agent-name = космический волшебник
wizard-welcome = Вы - космический волшебник. Федерация Космических Волшебников отправила вас на станцию {$station}, дабы посеять хаос. Не разочаруйте их.
wizard-no-more-threat-announcement-shuttle-call = Судя по данным наших датчиков дальнего действия, магическая угроза была устранена. Эвакуационный шаттл скоро прибудет. Время прибытия: {$time} {$units}. Вы можете отозвать его, чтобы продлить смену.
wizard-no-more-threat-announcement = Судя по данным наших датчиков дальнего действия, магическая угроза была устранена. Шаттл уже вызван.

File diff suppressed because it is too large Load Diff

View File

@@ -150,6 +150,13 @@
- RitualDagger
- CultRunicMetal20
- type: entity
id: Wizard
parent: BaseGameRule
noSpawn: true
components:
- type: WizardRule
# variation passes
- type: entity
id: BasicRoundstartVariation

View File

@@ -1,4 +1,4 @@
- type: entity
- type: entity
id: ActionKnock
name: Knock
description: This spell opens nearby doors.
@@ -7,6 +7,7 @@
- type: InstantAction
useDelay: 10
itemIconStyle: BigAction
checkCanInteract: false
icon:
sprite: Objects/Magic/magicactions.rsi
state: knock

View File

@@ -1,4 +1,4 @@
- type: entity
- type: entity
id: ActionElectricArcSpell
name: Electric arc
noSpawn: true
@@ -6,10 +6,12 @@
- type: Magic
requiresClothes: true
- type: WorldTargetAction
useDelay: 60
itemIconStyle: BigAction
useDelay: 60
checkCanAccess: false
checkCanInteract: false
range: 10
alwaysPlaySound: false
sound: !type:SoundPathSpecifier
path: /Audio/White/Magic/Arc/cast.ogg
icon:
@@ -26,6 +28,10 @@
speech: "KUH, ABAH'RAH"
prototype: ProjectileTeslaBall
posData: !type:TargetCasterPos
- type: VariableUseDelay
useDelay: 6
altUseDelay: 12
chargeUseDelay: 40
- type: entity
id: ActionForceSpell
@@ -35,10 +41,12 @@
- type: Magic
requiresClothes: true
- type: WorldTargetAction
useDelay: 60
itemIconStyle: BigAction
useDelay: 60
checkCanAccess: false
checkCanInteract: false
range: 10
alwaysPlaySound: false
sound: !type:SoundPathSpecifier
path: /Audio/White/Magic/Force/cast.ogg
icon:
@@ -53,6 +61,10 @@
isAltEnabled: true
event: !type:ForceSpellEvent
speech: "EL DRITCH!"
- type: VariableUseDelay
useDelay: 6
altUseDelay: 12
chargeUseDelay: 40
- type: entity
id: ActionFireballSpell
@@ -62,13 +74,15 @@
- type: Magic
requiresClothes: true
- type: WorldTargetAction
useDelay: 60
itemIconStyle: BigAction
useDelay: 60
checkCanAccess: false
checkCanInteract: false
range: 45
isChargeEnabled: true
chargeProto: MagicFollowerFireEntity
isAltEnabled: true
alwaysPlaySound: false
sound: !type:SoundPathSpecifier
path: /Audio/Magic/fireball.ogg
icon:
@@ -78,6 +92,10 @@
prototype: ProjectileFireball
posData: !type:TargetCasterPos
speech: action-speech-spell-fireball
- type: VariableUseDelay
useDelay: 6
altUseDelay: 12
chargeUseDelay: 40
- type: entity
id: ActionCardSpell
@@ -87,9 +105,10 @@
- type: Magic
requiresClothes: true
- type: WorldTargetAction
useDelay: 60
itemIconStyle: BigAction
useDelay: 60
checkCanAccess: false
checkCanInteract: false
range: 45
isChargeEnabled: true
chargingSound:
@@ -98,6 +117,7 @@
maxChargedSound:
path: /Audio/White/Magic/Cards/max.ogg
isAltEnabled: true
alwaysPlaySound: false
sound: !type:SoundPathSpecifier
path: /Audio/White/Magic/Cards/cast.ogg
icon:
@@ -107,6 +127,10 @@
prototype: ThrowingCard
posData: !type:TargetCasterPos
speech: "SHIZO NERO!"
- type: VariableUseDelay
useDelay: 6
altUseDelay: 1
chargeUseDelay: 40
- type: entity
id: ActionForcewallSpell
@@ -116,10 +140,12 @@
- type: Magic
requiresClothes: true
- type: WorldTargetAction
useDelay: 60
itemIconStyle: BigAction
useDelay: 60
checkCanAccess: false
checkCanInteract: false
range: 10
alwaysPlaySound: false
sound: !type:SoundPathSpecifier
path: /Audio/White/Magic/Force/cast.ogg
icon:
@@ -135,6 +161,10 @@
event: !type:ForceWallSpellEvent
speech: "TARCOL MINTI ZHERI!"
prototype: WallForce
- type: VariableUseDelay
useDelay: 10
altUseDelay: 20
chargeUseDelay: 60
- type: entity
id: ActionBlinkSpell
@@ -142,8 +172,9 @@
noSpawn: true
components:
- type: InstantAction
useDelay: 60
useDelay: 6
itemIconStyle: BigAction
checkCanInteract: false
icon:
sprite: Objects/Magic/magicactions.rsi
state: blink
@@ -158,8 +189,9 @@
- type: Magic
requiresClothes: true
- type: InstantAction
useDelay: 60
useDelay: 30
itemIconStyle: BigAction
checkCanInteract: false
icon:
sprite: Objects/Magic/magicactions.rsi
state: jaunt
@@ -174,8 +206,9 @@
- type: Magic
requiresClothes: true
- type: InstantAction
useDelay: 60
useDelay: 40
itemIconStyle: BigAction
checkCanInteract: false
icon:
sprite: Objects/Magic/magicactions.rsi
state: emp_new
@@ -192,7 +225,7 @@
- type: EntityTargetAction
canTargetSelf: false
range: 2
useDelay: 300
useDelay: 400
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
@@ -210,7 +243,7 @@
- type: EntityTargetAction
canTargetSelf: false
range: 2
useDelay: 300
useDelay: 200
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
@@ -228,7 +261,7 @@
- type: EntityTargetAction
canTargetSelf: false
range: 2
useDelay: 300
useDelay: 200
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi

View File

@@ -340,6 +340,17 @@
allowRepeatedMorphs: true
inventory: Transfer
- type: polymorph
id: MobHumanSpaceWiz
configuration:
entity: MobHuman
forced: true
revertOnCrit: false
revertOnDeath: false
transferDamage: true
allowRepeatedMorphs: true
inventory: Transfer
- type: polymorph
id: MobHumanGhost
configuration:

View File

@@ -0,0 +1,26 @@
- type: weightedRandom
id: WizardObjectiveGroups
weights:
WizardObjectiveGroupSteal: 1
WizardObjectiveGroupKill: 1
- type: weightedRandom
id: WizardObjectiveGroupSteal
weights:
CaptainIDStealObjectiveWiz: 1
CMOHyposprayStealObjectiveWiz: 1
RDHardsuitStealObjectiveWiz: 1
NukeDiskStealObjectiveWiz: 1
MagbootsStealObjectiveWiz: 1
CorgiMeatStealObjectiveWiz: 1
ClipboardStealObjectiveWiz: 1
CaptainGunStealObjectiveWiz: 0.5
CaptainJetpackStealObjectiveWiz: 0.5
HandTeleporterStealObjectiveWiz: 0.5
SecretDocumentsStealObjectiveWiz: 0.5
- type: weightedRandom
id: WizardObjectiveGroupKill
weights:
KillRandomPersonObjectiveWiz: 1
KillRandomHeadObjectiveWiz: 0.25

View File

@@ -0,0 +1,219 @@
#survive
- type: entity
abstract: true
parent: BaseObjective
id: BaseWizardObjective
components:
- type: Objective
issuer: wizards
- type: RoleRequirement
roles:
components:
- WizardRole
- type: entity
noSpawn: true
parent: [BaseWizardObjective, BaseSurviveObjective]
id: WizardSurviveObjective
name: Survive the shift, causing as much chaos as possible.
description: Space Wizards Federation sent you to the Nanotrasen station to wreak havoc. Don't disappoint them.
components:
- type: Objective
difficulty: 2
icon:
sprite: Objects/Fun/figurines.rsi
state: wizard
#steal
- type: entity
abstract: true
parent: [BaseWizardObjective, BaseStealObjective]
id: BaseWizardStealObjective
components:
- type: StealCondition
verifyMapExistence: false
- type: Objective
difficulty: 2.75
## cmo
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: CMOHyposprayStealObjectiveWiz
components:
- type: NotJobRequirement
job: ChiefMedicalOfficer
- type: StealCondition
stealGroup: Hypospray
owner: job-name-cmo
## rd
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: RDHardsuitStealObjectiveWiz
components:
- type: NotJobRequirement
job: ResearchDirector
- type: StealCondition
stealGroup: ClothingOuterHardsuitRd
owner: job-name-rd
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: HandTeleporterStealObjectiveWiz
components:
- type: NotJobRequirement
job: ResearchDirector
- type: StealCondition
stealGroup: HandTeleporter
owner: job-name-rd
## hos
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: SecretDocumentsStealObjectiveWiz
components:
- type: Objective
# hos has a gun ce does not, higher difficulty than most
difficulty: 3
- type: NotJobRequirement
job: HeadOfSecurity
- type: StealCondition
stealGroup: BookSecretDocuments
owner: job-name-hos
## ce
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: MagbootsStealObjectiveWiz
components:
- type: NotJobRequirement
job: ChiefEngineer
- type: StealCondition
stealGroup: ClothingShoesBootsMagAdv
owner: job-name-ce
## qm
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: ClipboardStealObjectiveWiz
components:
- type: NotJobRequirement
job: Quartermaster
- type: StealCondition
stealGroup: BoxFolderQmClipboard
owner: job-name-qm
## hop
- type: entity
noSpawn: true
parent: BaseWizardStealObjective
id: CorgiMeatStealObjectiveWiz
components:
- type: NotJobRequirement
job: HeadOfPersonnel
- type: ObjectiveLimit
limit: 3 # ian only has 2 slices, 3 obj for drama
- type: StealCondition
stealGroup: FoodMeatCorgi
owner: objective-condition-steal-Ian
## cap
- type: entity
abstract: true
parent: BaseWizardStealObjective
id: BaseCaptainObjectiveWiz
components:
- type: Objective
# sorry ce but your jordans are not as high security as the caps gear
difficulty: 3.5
- type: NotJobRequirement
job: Captain
- type: entity
noSpawn: true
parent: BaseCaptainObjectiveWiz
id: CaptainIDStealObjectiveWiz
components:
- type: StealCondition
stealGroup: CaptainIDCard
- type: entity
noSpawn: true
parent: BaseCaptainObjectiveWiz
id: CaptainJetpackStealObjectiveWiz
components:
- type: StealCondition
stealGroup: JetpackCaptainFilled
- type: entity
noSpawn: true
parent: BaseCaptainObjectiveWiz
id: CaptainGunStealObjectiveWiz
components:
- type: StealCondition
stealGroup: WeaponAntiqueLaser
owner: job-name-captain
- type: entity
noSpawn: true
parent: BaseCaptainObjectiveWiz
id: NukeDiskStealObjectiveWiz
components:
- type: Objective
# high difficulty since the hardest item both to steal, and to not get caught down the road,
# since anyone with a pinpointer can track you down and kill you
# it's close to being a stealth loneop
difficulty: 4
- type: NotCommandRequirement
- type: StealCondition
stealGroup: NukeDisk
owner: objective-condition-steal-station
# kill
- type: entity
noSpawn: true
parent: [BaseWizardObjective, BaseKillObjective]
id: KillRandomPersonObjectiveWiz
description: Do it however you like, just make sure they don't make it to centcom.
components:
- type: Objective
difficulty: 1.75
unique: false
- type: TargetObjective
title: objective-condition-kill-person-title
- type: PickRandomPerson
- type: entity
noSpawn: true
parent: [BaseWizardObjective, BaseKillObjective]
id: KillRandomHeadObjectiveWiz
description: We need this head gone and you probably know why. Good luck, agent.
components:
- type: Objective
# technically its still possible for KillRandomPersonObjective to roll a head but this is guaranteed, so higher difficulty
difficulty: 3.0
# killing 1 head is enough
unique: true
- type: TargetObjective
title: objective-condition-kill-head-title
- type: PickRandomHead
- type: KillPersonCondition
# don't count missing evac as killing as heads are higher profile, so you really need to do the dirty work
# if ce flies a shittle to centcom you better find a way onto it
requireDead: true

View File

@@ -0,0 +1,56 @@
- type: antag
id: WizardRole
name: roles-antag-wizard-name
antagonist: true
setPreference: true
objective: roles-antag-wizard-objective
requirements:
- !type:OverallPlaytimeRequirement
time: 18000 # 5h
- type: entity
id: SpawnPointWizard
parent: MarkerBase
name: wizard spawn point
components:
- type: SpawnPoint
- type: Sprite
layers:
- state: green
- sprite: Objects/Fun/figurines.rsi
state: wizard
- type: entity
id: SpawnPointGhostWizard
parent: MarkerBase
name: wizard spawn point (ghost role)
components:
- type: GhostRole
- type: GhostRoleMobSpawner
prototype: MobHumanSpaceWiz
- type: Sprite
layers:
- state: green
- sprite: Objects/Fun/figurines.rsi
state: wizard_fake
- type: startingGear
id: WizardGear
equipment:
jumpsuit: ClothingUniformJumpsuitColorDarkBlue
back: ClothingBackpackFilled
head: ClothingHeadHatRealWizardBlue
outerClothing: ClothingOuterRealWizardBlue
shoes: ClothingShoesWizard
innerClothingSkirt: ClothingUniformJumpskirtColorDarkBlue
satchel: ClothingBackpackSatchelFilled
duffelbag: ClothingBackpackDuffelFilled
- type: entity
noSpawn: true
name: Space Wizard
parent: MobHuman
id: MobHumanSpaceWiz
components:
- type: Wizard
- type: RandomHumanoidAppearance

View File

@@ -16,6 +16,7 @@
- Xeno
- Zombie
- Revolutionary
- Wizard
- type: npcFaction
id: Mouse
@@ -54,6 +55,7 @@
- Xeno
- PetsNT
- Zombie
- Wizard
- type: npcFaction
id: Xeno
@@ -75,6 +77,7 @@
- Passive
- PetsNT
- Revolutionary
- Wizard
- type: npcFaction
id: Revolutionary
@@ -83,6 +86,7 @@
- Zombie
- SimpleHostile
- Dragon
- Wizard
# WD EDIT STARt
- type: npcFaction
@@ -93,4 +97,14 @@
- Xeno
- PetsNT
- Syndicate
- Wizard
- type: npcFaction
id: Wizard
hostile:
- NanoTrasen
- Syndicate
- Cultist
- Revolutionary
- Zombie
# WD EDIT END

View File

@@ -22,6 +22,7 @@
- RampingStationEventScheduler
- Changeling
- Cult
- Wizard
- BasicRoundstartVariation
- type: gamePreset
@@ -197,4 +198,19 @@
- SubGamemodesRule
- BasicStationEventScheduler
- BasicRoundstartVariation
- type: gamePreset
id: Wizard
alias:
- wizard
- wiz
name: wizard-title
description: wizard-description
showInVote: true
minPlayers: 20
rules:
- Wizard
- SubGamemodesRule
- BasicStationEventScheduler
- BasicRoundstartVariation
#WD EDIT END