Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ jobs:
runs-on: ubuntu-22.04
strategy:
matrix:
map_path: [example, tradeship, exodus, ministation, shaded_hills, away_sites_testing, modpack_testing, planets_testing]
map_path: [example, tradeship, exodus, ministation, shaded_hills, karzerfeste, away_sites_testing, modpack_testing, planets_testing]
steps:
- uses: actions/checkout@v3
- name: Setup Cache
Expand Down
7 changes: 7 additions & 0 deletions code/game/turfs/floors/subtypes/floor_natural.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@
color = "#ae9e66"
_flooring = /decl/flooring/sand

/turf/floor/rock/basalt/sand
name = "sand"
icon = 'icons/turf/flooring/sand.dmi'
icon_state = "sand0"
color = "#ae9e66"
_flooring = /decl/flooring/sand

/turf/floor/rock/sand/water
color = COLOR_SKY_BLUE
fill_reagent_type = /decl/material/liquid/water
Expand Down
5 changes: 4 additions & 1 deletion code/modules/mob/living/human/human_attackhand.dm
Original file line number Diff line number Diff line change
Expand Up @@ -228,9 +228,12 @@
rand_damage *= damage_multiplier
real_damage = max(1, real_damage)
// Apply additional unarmed effects.
attack.apply_effects(H, src, rand_damage, hit_zone)
attack.apply_attack_effects(H, src, rand_damage, hit_zone)
// Finally, apply damage to target
apply_damage(real_damage, attack.get_damage_type(), hit_zone, damage_flags=attack.damage_flags())
if(attack.apply_cooldown)
H.setClickCooldown(attack.apply_cooldown)

if(istype(ai))
ai.retaliate(user)
return TRUE
Expand Down
21 changes: 11 additions & 10 deletions code/modules/mob/living/human/unarmed_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
var/eye_attack_text_victim
var/list/usable_with_limbs = list(BP_L_HAND, BP_R_HAND)
var/is_starting_default = FALSE
var/apply_cooldown = DEFAULT_ATTACK_COOLDOWN

/decl/natural_attack/proc/summarize()
var/list/usable_limbs = list()
Expand Down Expand Up @@ -74,7 +75,7 @@
return damage

// Returns TRUE if further affects should be applied.
/decl/natural_attack/proc/apply_effects(mob/living/user, mob/living/target, attack_damage, zone)
/decl/natural_attack/proc/apply_attack_effects(mob/living/user, mob/living/target, attack_damage, zone)

if(target.stat == DEAD)
return FALSE
Expand Down Expand Up @@ -161,16 +162,16 @@
return (src.sharp? DAM_SHARP : 0)|(src.edge? DAM_EDGE : 0)

/decl/natural_attack/bite
name = "bite"
name = "bite"
selector_icon_state = "attack_bite"
attack_verb = list("bit")
attack_noun = list("mouth")
attack_sound = 'sound/weapons/bite.ogg'
shredding = 0
damage = 0
sharp = 0
edge = 0
usable_with_limbs = list(BP_HEAD)
attack_verb = list("bit")
attack_noun = list("mouth")
attack_sound = 'sound/weapons/bite.ogg'
shredding = 0
damage = 5
sharp = 0
edge = 0
usable_with_limbs = list(BP_HEAD)

/decl/natural_attack/bite/sharp
attack_verb = list("bit", "chomped")
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/living.dm
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ default behaviour is:
/mob/living/proc/update_damage_overlays(update_icons = TRUE)

// first check whether something actually changed about damage appearance
var/damage_appearance = ""
var/damage_appearance = get_overlay_state_modifier() || ""
for(var/obj/item/organ/external/O in get_external_organs())
damage_appearance += O.damage_state || "00"

Expand All @@ -426,7 +426,7 @@ default behaviour is:
continue
var/icon/DI
var/use_colour = (BP_IS_PROSTHETIC(O) ? SYNTH_BLOOD_COLOR : O.species.get_species_blood_color(src))
var/cache_index = "[O.damage_state]/[O.bodytype.type]/[O.icon_state]/[use_colour]/[O.species.name]"
var/cache_index = "[O.damage_state]/[O.bodytype.uid]/[O.icon_state]/[use_colour]/[O.species.name]"
if(!(cache_index in damage_icon_parts))
var/damage_overlay_icon = O.bodytype.get_damage_overlays(src)
if(check_state_in_icon(O.damage_state, damage_overlay_icon))
Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/living_attackhand.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
attackby(attacking_with, predator)
else
attack_animal(predator)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
return TRUE
return FALSE

Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/silicon/robot/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,7 @@
var/decl/species/user_species = user.get_species()
if(user_species?.can_shred(user))
attack_generic(user, rand(30,50), "slashed")
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
return TRUE
. = ..()

Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/simple_animal/_simple_animal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@ var/global/list/simplemob_icon_bitflag_cache = list()
take_damage(dealt_damage, damage_type, damage_flags = damage_flags, inflicter = user)
user.visible_message(SPAN_DANGER("\The [user] [harm_verb] \the [src]!"))
user.do_attack_animation(src)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
return TRUE

/mob/living/simple_animal/attackby(var/obj/item/O, var/mob/user)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/species/species_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
damage = 2
usable_with_limbs = list(BP_CHEST, BP_GROIN)

/decl/natural_attack/slime_glomp/apply_effects(mob/living/user, mob/living/target, attack_damage, zone)
/decl/natural_attack/slime_glomp/apply_attack_effects(mob/living/user, mob/living/target, attack_damage, zone)
. = ..()
if(.)
user.apply_stored_shock_to(target)
Expand Down
80 changes: 80 additions & 0 deletions maps/karzerfeste/areas/_area.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/area/karzerfeste
name = "Burg Karzerfeste"
abstract_type = /area/karzerfeste
allow_xenoarchaeology_finds = FALSE
icon = 'maps/karzerfeste/areas/icons.dmi'
icon_state = "area"
base_turf = /turf/floor/rock/basalt
fishing_failure_prob = 5
fishing_results = list(
/mob/living/simple_animal/aquatic/fish = 10,
/mob/living/simple_animal/aquatic/fish/grump = 10,
/obj/item/mollusc = 5,
/obj/item/mollusc/barnacle/fished = 5,
/obj/item/mollusc/clam/fished/pearl = 3,
/obj/item/trash/mollusc_shell/clam = 1,
/obj/item/trash/mollusc_shell/barnacle = 1,
/obj/item/remains/mouse = 1,
/obj/item/remains/lizard = 1,
/obj/item/stick = 1,
/obj/item/trash/mollusc_shell = 1,
)
sound_env = GENERIC
ambience = list()
var/list/additional_fishing_results

/area/karzerfeste/Initialize()
if(additional_fishing_results)
for(var/fish in additional_fishing_results)
fishing_results[fish] = additional_fishing_results[fish]
. = ..()

/area/karzerfeste/outside
name = "\improper Wilderness"
color = COLOR_GREEN
is_outside = OUTSIDE_YES
sound_env = PLAIN
ambience = list(
'sound/effects/wind/wind_2_1.ogg',
'sound/effects/wind/wind_2_2.ogg',
'sound/effects/wind/wind_3_1.ogg',
'sound/effects/wind/wind_4_1.ogg',
'sound/effects/wind/wind_4_2.ogg',
'sound/effects/wind/wind_5_1.ogg'
)
area_blurb_category = /area/karzerfeste/outside
interior_ambient_light_modifier = -0.3
area_flags = AREA_FLAG_EXTERNAL | AREA_FLAG_IS_BACKGROUND
additional_fishing_results = list(
/mob/living/simple_animal/aquatic/fish/large = 5,
/mob/living/simple_animal/aquatic/fish/large/salmon = 5,
/mob/living/simple_animal/aquatic/fish/large/trout = 5,
/mob/living/simple_animal/aquatic/fish/large/pike = 3
)

/area/karzerfeste/outside/above
name = "\improper Heights"
color = COLOR_GRAY80

// Forest level
/area/karzerfeste/outside/forest
name = "\improper Western Forest"
sound_env = FOREST

/area/karzerfeste/outside/forest/woods
name = "\improper Western Woods"

/area/karzerfeste/outside/forest/lake
name = "\improper Western Lake"
additional_fishing_results = list(
/mob/living/simple_animal/aquatic/fish/large/bass = 5,
/mob/living/simple_animal/aquatic/fish/large/trout = 5,
/mob/living/simple_animal/aquatic/fish/large/javelin = 5,
/mob/living/simple_animal/hostile/aquatic/carp = 3,
/mob/living/simple_animal/aquatic/fish/large/koi = 1
)
color = COLOR_BLUE_GRAY

/area/karzerfeste/outside/forest/deep
name = "\improper Western Deepwoods"
color = COLOR_DARK_GREEN_GRAY
35 changes: 35 additions & 0 deletions maps/karzerfeste/areas/caves.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/area/karzerfeste/caves
name = "\improper Subterrain"
color = COLOR_GRAY40
is_outside = OUTSIDE_NO
ambience = list(
'sound/ambience/ambimine.ogg',
'sound/ambience/song_game.ogg'
)
area_blurb_category = /area/karzerfeste/caves
sound_env = CAVE
area_flags = AREA_FLAG_IS_BACKGROUND

/area/karzerfeste/caves/poi
name = "\improper Subterrain - Points Of Interest"

/area/karzerfeste/outside/caves
name = "\improper Subterrain Chasm"
color = COLOR_GRAY80
sound_env = CAVE

/area/karzerfeste/caves/surface_east
name = "\improper Eastern Mountain Caverns"
color = COLOR_GRAY80

/area/karzerfeste/caves/surface_west
name = "\improper Western Mountain Caverns"
color = COLOR_GRAY80

/area/karzerfeste/caves/upper_east
name = "\improper Upper Eastern Caverns"
color = COLOR_GRAY80

/area/karzerfeste/caves/upper_west
name = "\improper Upper Western Caverns"
color = COLOR_GRAY40
Binary file added maps/karzerfeste/areas/icons.dmi
Binary file not shown.
59 changes: 59 additions & 0 deletions maps/karzerfeste/areas/keep.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/area/karzerfeste/keep
name = "\improper Keep Interior"
color = COLOR_GREEN_GRAY

/area/karzerfeste/keep/gatehouse
name = "\improper Eastern Gatehouse"
color = COLOR_BLUE_GRAY

/area/karzerfeste/keep/gatehouse/west
name = "\improper Western Gatehouse"
color = COLOR_BLUE_GRAY

/area/karzerfeste/keep/tower
name = "\improper Northwestern Tower"
color = COLOR_CIVIE_GREEN

/area/karzerfeste/keep/tower/two
name = "\improper Northeastern Tower"
color = COLOR_CIVIE_GREEN

/area/karzerfeste/keep/tower/three
name = "\improper Southwestern Tower"
color = COLOR_CIVIE_GREEN

/area/karzerfeste/keep/tower/four
name = "\improper Southeastern Tower"
color = COLOR_CIVIE_GREEN

/area/karzerfeste/outside/keep
name = "\improper Keep Exterior"
color = COLOR_GREEN

/area/karzerfeste/outside/keep/courtyard
name = "\improper Northern Courtyard"
color = COLOR_GREEN

/area/karzerfeste/outside/keep/above
name = "\improper Keep Heights"
color = COLOR_GREEN

/area/karzerfeste/outside/keep/gatehouse
name = "\improper Upper Gatehouse"
color = COLOR_BLUE_GRAY

/area/karzerfeste/outside/keep/tower
name = "\improper Upper Northwestern Tower"
color = COLOR_BLUE_GRAY

/area/karzerfeste/outside/keep/tower/two
name = "\improper Upper Northeastern Tower"
color = COLOR_BLUE_GRAY

/area/karzerfeste/outside/keep/tower/three
name = "\improper Upper Southwestern Tower"
color = COLOR_BLUE_GRAY

/area/karzerfeste/outside/keep/tower/four
name = "\improper Upper Southeastern Tower"
color = COLOR_BLUE_GRAY
4 changes: 4 additions & 0 deletions maps/karzerfeste/areas/road.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/area/karzerfeste/outside/road
name = "\improper South Road"
color = COLOR_CYAN

47 changes: 47 additions & 0 deletions maps/karzerfeste/areas/ward.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/area/karzerfeste/ward
name = "\improper Karzerfeste Outer Ward"
color = COLOR_BRONZE

/area/karzerfeste/ward/wall
name = "\improper Western Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/ward/wall/two
name = "\improper Southwestern Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/ward/wall/three
name = "\improper Central Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/ward/wall/four
name = "\improper Eastern Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/ward/shrine
name = "\improper Western Shrine"
color = COLOR_BLUE

/area/karzerfeste/ward/shrine/east
name = "\improper Eastern Shrine"
color = COLOR_CYAN_BLUE

/area/karzerfeste/outside/ward
name = "\improper Karzerfest Outer Ward"
color = COLOR_BROWN

/area/karzerfeste/outside/ward/wall
name = "\improper Upper Western Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/outside/ward/wall/two
name = "\improper Upper Southwestern Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/outside/ward/wall/three
name = "\improper Upper Central Outer Wall"
color = COLOR_BROWN

/area/karzerfeste/outside/ward/wall/four
name = "\improper Upper Eastern Outer Wall"
color = COLOR_BROWN
Loading
Loading